diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml new file mode 100644 index 00000000..ee8cb8d5 --- /dev/null +++ b/.bazelci/presubmit.yml @@ -0,0 +1,24 @@ +--- +matrix: + platform: + - ubuntu2004 + - macos + - windows + +tasks: + build: + build_targets: + - "..." + test_targets: + - "..." + +bcr_test_module: + module_path: "example/integration_tests/bzlmod" + matrix: + platform: ["debian10", "macos", "ubuntu2004", "windows"] + tasks: + build_bzlmod_test: + name: "Build test module" + platform: ${{ platform }} + build_targets: + - "//..." diff --git a/.bcr/config.yml b/.bcr/config.yml new file mode 100644 index 00000000..7f4ed383 --- /dev/null +++ b/.bcr/config.yml @@ -0,0 +1,2 @@ +--- +moduleRoots: ["."] diff --git a/.bcr/metadata.template.json b/.bcr/metadata.template.json new file mode 100644 index 00000000..dc2bb2d8 --- /dev/null +++ b/.bcr/metadata.template.json @@ -0,0 +1,13 @@ +{ + "homepage": "https://github.com/sgammon/rules_graalvm", + "maintainers": [ + { + "email": "sam@elide.dev", + "github": "sgammon", + "name": "Sam Gammon" + } + ], + "repository": ["github:sgammon/rules_graalvm"], + "versions": [], + "yanked_versions": {} +} diff --git a/.bcr/presubmit.yml b/.bcr/presubmit.yml new file mode 100644 index 00000000..15198fd1 --- /dev/null +++ b/.bcr/presubmit.yml @@ -0,0 +1,11 @@ +--- +bcr_test_module: + module_path: "example/integration_tests/bzlmod" + matrix: + platform: ["debian10", "macos", "ubuntu2004", "windows"] + tasks: + build_bzlmod_test: + name: "Build test module" + platform: ${{ platform }} + build_targets: + - "//..." diff --git a/.bcr/source.template.json b/.bcr/source.template.json new file mode 100644 index 00000000..4f148199 --- /dev/null +++ b/.bcr/source.template.json @@ -0,0 +1,5 @@ +{ + "integrity": "", + "strip_prefix": "{REPO}-{VERSION}", + "url": "https://github.com/{OWNER}/{REPO}/archive/refs/tags/{TAG}.tar.gz" +} diff --git a/.github/.yamllint.yml b/.github/.yamllint.yml new file mode 100644 index 00000000..5ed03e8c --- /dev/null +++ b/.github/.yamllint.yml @@ -0,0 +1,3 @@ +rules: + line-length: + max: 120 diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 09f80b7b..7de20cef 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -14,21 +14,21 @@ appearance, race, religion, or sexual identity and orientation. Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or +- The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..b55a3a4f --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,144 @@ +## GraalVM Rules for Bazel: Contribution Guide + +This codebase is a conventional Bazel 6 or Bazel 7 codebase, with support for [Bzlmod](https://docs.bazel.build/versions/5.0.0/bzlmod.html). To use it, you build and test from [Bazel](https://bazel.build). + +### Primer: Running Bazel Builds + +You will need a Bazel installation; you could install [Bazel](https://github.com/bazelbuild/bazel/releases) directly, but the best way to do this usually involves a wrapper which manages versions for you. + +There are several good Bazel wrappers. In order of preference for this project (but it's up to you): + +- **Aspect CLI**: [Aspect.dev](https://aspect.dev) makes a fantastic CLI and Bazel wrapper. You can install it [here][1]. +- **[Bazelisk](https://github.com/bazelbuild/bazelisk):** The beloved open-source canonical wrapper for Bazel. You can download it [here][2]. + +Both of these clients use the `.bazelversion` file to determine what version of Bazel to run. On this project, it's a version of Bazel 7, usually. You can check the current Bazel version with: + +``` +➜ rules_graalvm git:(main) cat .bazelversion + +7.0.0-pre.20230724.1 +``` + +Once you have Aspect, Bazelisk, or _that exact Bazel binary version_ installed and ready to go, you can proceed. + +## Running builds + +On this project, you can build with Bazel directly (using the wrappers, etc), or you can use the `Makefile`. They are functionally equivalent, but the `Makefile` conveniently applies various configurations for you, if you want. + +### Using the `Makefile` + +Run `make help` to see available tasks, as the `Makeile` is self-documenting: + +``` +➜ rules_graalvm git:(main) make help + +GraalVM Rules for Bazel: +args Show current build args. +build Build all targets. +clean Clean built targets. +config Show current build configuration. +distclean Clean and expunge; drops all state and kills worker. +docs Build docs. +forceclean Clean, expunge, reset, and drop all ignored files (DANGEROUS). +help Show this help message. +lint-format Run the lint formatter. +lint Run the lint checker. +reset Clean, expunge, and perform a hard Git reset (DANGEROUS). +test Run all tests. +yamllint Run yamllint. +``` + +There are some top-level build variables which configure the `Makefile` (defaults listed): + +``` +CI ?= no # Turns on CI build settings. +DEBUG ?= no # Turns on `verbose_failures`, `sandbox_debug`, etc. +RELEASE ?= no # Builds in release (optimized) mode. +VERBOSE ?= no # Emits commands and applies `verbose_failures`. +BZLMOD ?= no # Builds with `bzlmod` turned on. +COVERAGE ?= yes # Whether to test with the `coverage` command instead. +TARGETS ?= //... # Targets to build via `make build`. +TESTS ?= //... # Tests to run via `make test`. +ARGS ?= # Additional Bazel arguments to pass. +CONFIGS ?= # Additional Bazel `--config=` names to pass. +``` + +Checking the current build configuration with the `Makefile`: + +``` +➜ rules_graalvm git:(main) make config + +Current configuration: +CI: no +Bzlmod: yes +Debug: no +Release: no +Verbose: no +Coverage: yes +Test task: coverage +Configs: bzlmod +Targets: //... +Tests: //... +Args: + --config=bzlmod --config=fastbuild +``` + +As you can see, the `Makefile` has decided to apply the `fastbuild` config based on having no other inputs (it's the default in Bazel too). Let's see what passing `RELEASE=yes` does: + +``` +➜ rules_graalvm git:(main) make config RELEASE=yes + +Current configuration: +CI: no +Bzlmod: no +Debug: no +Release: yes +Verbose: no +Coverage: yes +Test task: coverage +Configs: bzlmod +Targets: //... +Tests: //... +Args: + --config=bzlmod --config=release +``` + +Makes sense, checks out. You can pass these `Args` and `Targets` yourself directly to Bazel if you want, which is all the `Makefile` will do anyway. + +### Using Bazel + +To build directly using Bazel, it's pretty easy: + +``` +bazel build //... +``` + +To run tests: + +``` +bazel test //... +``` + +### Configuring Bazel with local settings + +The Bazel build will look for a user configuration at `local.bazelrc` at the root of the codebase. You can use this file to apply Bazel settings within the scope of only your user. + +This is the best way to configure things like [Buildless](https://less.build) and [BuildBuddy](https://buildbuddy.io), both of which we use on this project. You can use them if you want. + +There is a sample configuration at `local.bazelrc.inert`. You can use it like this: + +``` +cp local.bazelrc.inert local.bazelrc +# now edit it lol +``` + +You will want to add your own API keys, of course. The default configuration is sufficient from there. If you want to, say, enable Bzlmod locally for all your builds, you can add: + +``` +build --config=bzlmod +``` + +And so on. + +[1]: https://www.aspect.build/cli +[2]: https://github.com/bazelbuild/bazelisk/releases diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..253bcb76 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: daily diff --git a/.github/dependency-review-config.yml b/.github/dependency-review-config.yml new file mode 100644 index 00000000..7a9d3688 --- /dev/null +++ b/.github/dependency-review-config.yml @@ -0,0 +1,11 @@ +license-check: true +vulnerability-check: true +fail-on-severity: "low" + +allow-licenses: + - GPL-3.0 + - BSD-3-Clause + - MIT + - Apache-2.0 + +allow-ghsas: [] diff --git a/.github/workflows/BUILD.bazel b/.github/workflows/BUILD.bazel new file mode 100644 index 00000000..adecb144 --- /dev/null +++ b/.github/workflows/BUILD.bazel @@ -0,0 +1,8 @@ +load("@buildifier_prebuilt//:rules.bzl", "buildifier") + +buildifier( + name = "buildifier.check", + exclude_patterns = ["./.git/*"], + lint_mode = "warn", + mode = "diff", +) diff --git a/.github/workflows/bazel.ci.yml b/.github/workflows/bazel.ci.yml new file mode 100644 index 00000000..af19c1dd --- /dev/null +++ b/.github/workflows/bazel.ci.yml @@ -0,0 +1,31 @@ +--- +name: Bazel CI + +# Controls when the action will run. +"on": + push: + branches: [main] + pull_request: + branches: [main] + workflow_dispatch: {} + +concurrency: + # Cancel previous actions from the same PR: https://stackoverflow.com/a/72408109 + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + test: + uses: bazel-contrib/.github/.github/workflows/bazel.yaml@29e53247c6366e30acbedfc767f58f79fc05836c + with: + folders: | + [ + "." + ] + exclude: | + [ + {"bazelversion": "5.4.0", "bzlmodEnabled": true}, + {"bazelversion": "5.4.0", "bzlmodEnabled": false}, + {"bazelversion": "5.4.0", "os": "macos-latest"}, + {"bazelversion": "5.4.0", "os": "windows-latest"} + ] diff --git a/.github/workflows/check.buildifier.yml b/.github/workflows/check.buildifier.yml new file mode 100644 index 00000000..526150bd --- /dev/null +++ b/.github/workflows/check.buildifier.yml @@ -0,0 +1,26 @@ +--- +name: Buildifier + +# Controls when the action will run. +"on": + # Triggers the workflow on push or pull request events but only for the main branch + push: + branches: [main] + pull_request: + branches: [main] + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + check: + runs-on: ubuntu-latest + continue-on-error: true + steps: + - name: Harden Runner + uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1 + with: + egress-policy: audit + - uses: actions/checkout@v3 + - name: buildifier + continue-on-error: true + run: bazel run --enable_bzlmod //.github/workflows:buildifier.check diff --git a/.github/workflows/check.codeql.yml b/.github/workflows/check.codeql.yml new file mode 100644 index 00000000..36e48ba7 --- /dev/null +++ b/.github/workflows/check.codeql.yml @@ -0,0 +1,69 @@ +--- +name: "CodeQL" + +"on": + push: + branches: ["main"] + pull_request: + branches: ["main"] + schedule: + - cron: "0 0 * * 1" + +permissions: + contents: read + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: ["java"] + # CodeQL supports [ $supported-codeql-languages ] + # Learn more about CodeQL language support at: + # https://aka.ms/codeql-docs/language-support + + steps: + - name: Harden Runner + uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1 + with: + egress-policy: audit + + - name: Checkout repository + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@5b6282e01c62d02e720b81eb8a51204f527c3624 # v2.21.3 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@5b6282e01c62d02e720b81eb8a51204f527c3624 # v2.21.3 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@5b6282e01c62d02e720b81eb8a51204f527c3624 # v2.21.3 + continue-on-error: true + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/check.lint-yaml.yml b/.github/workflows/check.lint-yaml.yml new file mode 100644 index 00000000..8778f822 --- /dev/null +++ b/.github/workflows/check.lint-yaml.yml @@ -0,0 +1,94 @@ +--- +name: "Lint: YAML" + +concurrency: + group: lint-yaml-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +"on": + ## Check YAML on merge queue insertion + merge_group: {} + + ## Check on release + release: + types: [created] + + ## Check on push to `main` if modified + push: + branches: + - main + paths: + - ".github/workflows/*.yaml" + - ".github/workflows/*.yml" + - ".bazelci/presubmit.yml" + - ".bcr/*.yml" + + ## Check each PR change against `main` + pull_request: + paths: + - ".github/workflows/*.yaml" + - ".github/workflows/*.yml" + - ".bazelci/presubmit.yml" + - ".bcr/*.yml" + +permissions: + contents: read + +jobs: + ## Task: Lint workflows via Actionlint + lint-workflows: + name: "Lint: Workflows" + uses: elide-dev/build-infra/.github/workflows/check.actions-lint.ci.yml@c54d8227f4bd37839a67ab9cb71fb59a0d197aee + permissions: + checks: write + pull-requests: read + id-token: write + contents: read + + ## Task: Lint Bazel Central Registry config files + lint-bcr-yaml: + name: "Lint: BCR" + runs-on: ubuntu-latest + permissions: + contents: "read" + id-token: "write" + checks: "write" + pull-requests: "read" + steps: + - name: Harden Runner + uses: step-security/harden-runner@cba0d00b1fc9a034e1e642ea0f1103c282990604 # v2.5.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - name: "Lint: YAML" + uses: karancode/yamllint-github-action@master + with: + yamllint_file_or_dir: ".bcr" + yamllint_config_filepath: "./.github/.yamllint.yml" + env: + GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + ## Task: Lint Bazel CI config files + lint-bazelci-yaml: + name: "Lint: Bazel CI" + runs-on: ubuntu-latest + permissions: + contents: "read" + id-token: "write" + checks: "write" + pull-requests: "read" + steps: + - name: Harden Runner + uses: step-security/harden-runner@cba0d00b1fc9a034e1e642ea0f1103c282990604 # v2.5.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - name: "Lint: YAML" + uses: karancode/yamllint-github-action@master + with: + yamllint_file_or_dir: ".bazelci" + yamllint_config_filepath: "./.github/.yamllint.yml" + env: + GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/check.scorecards.yml b/.github/workflows/check.scorecards.yml new file mode 100644 index 00000000..6f88b8b9 --- /dev/null +++ b/.github/workflows/check.scorecards.yml @@ -0,0 +1,77 @@ +--- +# This workflow uses actions that are not certified by GitHub. They are provided +# by a third-party and are governed by separate terms of service, privacy +# policy, and support documentation. + +name: Scorecard +"on": + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: "20 7 * * 2" + push: + branches: ["main"] + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + contents: read + actions: read + + steps: + - name: Harden Runner + uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1 + with: + egress-policy: audit + + - name: "Checkout code" + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@99c53751e09b9529366343771cc321ec74e9bd3d # v2.0.6 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecards on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard. + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@5b6282e01c62d02e720b81eb8a51204f527c3624 # v2.21.3 + with: + sarif_file: results.sarif diff --git a/.github/workflows/ci.bazelrc b/.github/workflows/ci.bazelrc new file mode 100644 index 00000000..60ce7ae8 --- /dev/null +++ b/.github/workflows/ci.bazelrc @@ -0,0 +1,21 @@ +# This file contains Bazel settings to apply on CI only. +# It is referenced with a --bazelrc option in the call to bazel in ci.yaml + +# Debug where options came from +build --announce_rc + +# Apply CI configurations +build --config=ci + +# This directory is configured in GitHub actions to be persisted between runs. +# We do not enable the repository cache to cache downloaded external artifacts +# as these are generally faster to download again than to fetch them from the +# GitHub actions cache. +build --disk_cache=~/.cache/bazel + +# Don't rely on test logs being easily accessible from the test runner, +# though it makes the log noisier. +test --test_output=errors + +# Allows tests to run bazelisk-in-bazel, since this is the cache folder used +test --test_env=XDG_CACHE_HOME diff --git a/.github/workflows/deploy.docs.yml b/.github/workflows/deploy.docs.yml new file mode 100644 index 00000000..7576e465 --- /dev/null +++ b/.github/workflows/deploy.docs.yml @@ -0,0 +1,60 @@ +--- +name: Docs + +"on": + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: {} + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + deployments: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + name: "Build: Docs" + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@v3 + - name: "Setup: Pages" + uses: actions/configure-pages@v3 + - name: "Build: Jekyll" + uses: actions/jekyll-build-pages@v1 + with: + source: ./docs + destination: ./_site + - name: "Artifact: Upload" + uses: actions/upload-pages-artifact@v2 + + deploy: + name: "Deploy: Docs" + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Harden Runner + uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1 + with: + egress-policy: audit + - name: "Deploy: GitHub Pages" + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.github/workflows/module.build.yml b/.github/workflows/module.build.yml index 67ce3445..653b3052 100644 --- a/.github/workflows/module.build.yml +++ b/.github/workflows/module.build.yml @@ -1,74 +1,76 @@ +--- name: "Build" -on: - workflow_dispatch: - inputs: - ## Runner to use - runner: - description: "Runner" - type: string - default: 'ubuntu-latest' +"on": + workflow_dispatch: + inputs: + ## Runner to use + runner: + description: "Runner" + type: string + default: "ubuntu-latest" - ## Whether to build with bzlmod - bzlmod: - description: "Enable Bzlmod" - type: boolean - default: false - workflow_call: - inputs: - runner: - description: "Runner" - type: string - default: 'ubuntu-latest' - label: - description: "Label" - type: string - default: 'Ubuntu' - bzlmod: - description: "Enable Bzlmod" - type: boolean - default: false - labs: - description: "Skip Failures" - type: boolean - default: false - secrets: - BUILDBUDDY_APIKEY: - required: true - BUILDLESS_APIKEY: - required: true + ## Whether to build with bzlmod + bzlmod: + description: "Enable Bzlmod" + type: boolean + default: false + workflow_call: + inputs: + runner: + description: "Runner" + type: string + default: "ubuntu-latest" + label: + description: "Label" + type: string + default: "Ubuntu" + bzlmod: + description: "Enable Bzlmod" + type: boolean + default: false + labs: + description: "Skip Failures" + type: boolean + default: false + secrets: + BUILDBUDDY_APIKEY: + required: true + BUILDLESS_APIKEY: + required: true jobs: - build: - name: "Build: ${{ inputs.label || 'Rules' }}" - runs-on: ${{ inputs.runner || 'ubuntu-latest' }} + build: + name: "Build: ${{ inputs.label || 'Rules' }}" + runs-on: ${{ inputs.runner || 'ubuntu-latest' }} + continue-on-error: ${{ inputs.labs }} + steps: + - name: Harden Runner + uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - name: "Setup: msbuild" + uses: microsoft/setup-msbuild@34cfbaee7f672c76950673338facd8a73f637506 # v1.1.3 + if: ${{ contains(inputs.runner, 'windows') }} + - name: "Setup: Bazel" + uses: bazelbuild/setup-bazelisk@95c9bf48d0c570bb3e28e57108f3450cd67c1a44 # v2.0.0 + - name: "Setup: Cache" + uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + with: + path: "~/.cache/bazel" + key: bazel-v2 + - name: "Configure: Bazel" + shell: bash + run: | + echo "build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_APIKEY }}" >> local.bazelrc + echo "build --remote_header=x-api-key=${{ secrets.BUILDLESS_APIKEY }}" >> local.bazelrc + - name: "Configure: Bzlmod" + if: ${{ inputs.bzlmod }} + run: | + echo "build --config=bzlmod" >> local.bazelrc + - name: "Build: Example" continue-on-error: ${{ inputs.labs }} - steps: - - name: "Setup: Checkout" - uses: actions/checkout@v3 - - name: "Setup: msbuild" - uses: microsoft/setup-msbuild@v1.1 - if: ${{ contains(inputs.runner, 'windows') }} - - name: "Setup: Bazel" - uses: bazelbuild/setup-bazelisk@v2 - - name: "Setup: Cache" - uses: actions/cache@v3 - with: - path: "~/.cache/bazel" - key: bazel-v2 - - name: "Configure: Bazel" - shell: bash - run: | - echo "build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_APIKEY }}" >> local.bazelrc - echo "build --remote_header=x-api-key=${{ secrets.BUILDLESS_APIKEY }}" >> local.bazelrc - - name: "Configure: Bzlmod" - if: ${{ inputs.bzlmod }} - run: | - echo "build --config=bzlmod" >> local.bazelrc - - name: "Build: Example" - continue-on-error: ${{ inputs.labs }} - shell: bash - run: | - bazel build \ - --config=ci \ - //... + shell: bash + run: bazel build --config=ci "//..." diff --git a/.github/workflows/module.test.yml b/.github/workflows/module.test.yml index a428f324..60fb23d7 100644 --- a/.github/workflows/module.test.yml +++ b/.github/workflows/module.test.yml @@ -1,13 +1,14 @@ +--- name: "Test" -on: +"on": workflow_dispatch: inputs: ## Runner to use runner: description: "Runner" type: string - default: 'ubuntu-latest' + default: "ubuntu-latest" ## Whether to build with bzlmod bzlmod: @@ -25,11 +26,11 @@ on: runner: description: "Runner" type: string - default: 'ubuntu-latest' + default: "ubuntu-latest" label: description: "Label" type: string - default: 'Ubuntu' + default: "Ubuntu" bzlmod: description: "Enable Bzlmod" type: boolean @@ -49,37 +50,81 @@ on: required: true jobs: - test: - name: "Test: ${{ inputs.label || 'Rules' }}" - runs-on: ${{ inputs.runner || 'ubuntu-latest' }} + test: + name: "Test: ${{ inputs.label || 'Rules' }}" + runs-on: ${{ inputs.runner || 'ubuntu-latest' }} + continue-on-error: ${{ inputs.labs }} + steps: + - name: Harden Runner + uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - name: "Setup: msbuild" + uses: microsoft/setup-msbuild@34cfbaee7f672c76950673338facd8a73f637506 # v1.1.3 + if: ${{ contains(inputs.runner, 'windows') }} + - name: "Setup: Bazel" + uses: bazelbuild/setup-bazelisk@95c9bf48d0c570bb3e28e57108f3450cd67c1a44 # v2.0.0 + - name: "Setup: Cache" + uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + with: + path: "~/.cache/bazel" + key: bazel-v2 + - name: "Configure: Bazel" + shell: bash + run: | + echo "build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_APIKEY }}" >> local.bazelrc + echo "build --remote_header=x-api-key=${{ secrets.BUILDLESS_APIKEY }}" >> local.bazelrc + - name: "Configure: Bzlmod" + if: ${{ inputs.bzlmod }} + run: | + echo "build --config=bzlmod" >> local.bazelrc + - name: "Build: Example" continue-on-error: ${{ inputs.labs }} - steps: - - name: "Setup: Checkout" - uses: actions/checkout@v3 - - name: "Setup: msbuild" - uses: microsoft/setup-msbuild@v1.1 - if: ${{ contains(inputs.runner, 'windows') }} - - name: "Setup: Bazel" - uses: bazelbuild/setup-bazelisk@v2 - - name: "Setup: Cache" - uses: actions/cache@v3 - with: - path: "~/.cache/bazel" - key: bazel-v2 - - name: "Configure: Bazel" - shell: bash - run: | - echo "build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_APIKEY }}" >> local.bazelrc - echo "build --remote_header=x-api-key=${{ secrets.BUILDLESS_APIKEY }}" >> local.bazelrc - - name: "Configure: Bzlmod" - if: ${{ inputs.bzlmod }} - run: | - echo "build --config=bzlmod" >> local.bazelrc - - name: "Build: Example" - continue-on-error: ${{ inputs.labs }} - shell: bash - run: | - bazel \ - ${{ inputs.coverage && 'coverage' || 'test' }} \ - --config=ci \ - //... + shell: bash + run: | + bazel \ + ${{ inputs.coverage && 'coverage' || 'test' }} \ + --config=ci \ + //... + + integration-tests: + name: "Test: ${{ matrix.label }} (${{ inputs.label || 'Rules' }})" + runs-on: ${{ inputs.runner || 'ubuntu-latest' }} + continue-on-error: ${{ inputs.labs || matrix.labs }} + strategy: + fail-fast: false + matrix: + label: ["BCR"] + target: ["//sample"] + action: ["build"] + directory: ["./example/integration_tests/bzlmod"] + labs: [false] + steps: + - name: Harden Runner + uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@v3 + - name: "Setup: msbuild" + uses: microsoft/setup-msbuild@v1.1 + if: ${{ contains(inputs.runner, 'windows') }} + - name: "Setup: Bazel" + uses: bazelbuild/setup-bazelisk@v2 + - name: "Setup: Cache" + uses: actions/cache@v3 + with: + path: "~/.cache/bazel" + key: bazel-v2 + - name: "Configure: Bazel" + shell: bash + run: | + echo "build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_APIKEY }}" >> local.bazelrc + echo "build --remote_header=x-api-key=${{ secrets.BUILDLESS_APIKEY }}" >> local.bazelrc + - name: "Build: ${{ matrix.label }}" + continue-on-error: ${{ inputs.labs }} + working-directory: ${{ matrix.directory }} + shell: bash + run: bazel ${{ matrix.action || 'build' }} "${{ matrix.target || '//...' }}" diff --git a/.github/workflows/on.pr.yml b/.github/workflows/on.pr.yml index 22b4de9b..9e38b12a 100644 --- a/.github/workflows/on.pr.yml +++ b/.github/workflows/on.pr.yml @@ -1,38 +1,55 @@ +--- name: "PR" -on: - pull_request: {} +"on": + pull_request: + branches: + - main jobs: - test: - name: "Test (${{ matrix.label }})" - uses: ./.github/workflows/module.test.yml - strategy: - fail-fast: false - matrix: - runner: [ubuntu-latest, windows-latest, macos-latest] - bzlmod: [false] - include: - - runner: ubuntu-latest - label: Ubuntu / Standard - labs: false - - runner: ubuntu-latest - label: Ubuntu / Bzlmod - bzlmod: true - labs: true - - runner: windows-latest - label: Windows - bzlmod: false - labs: true - - runner: macos-latest - label: macOS - bzlmod: false - labs: false - - secrets: inherit + dependency-review: + name: "Dependency Review" + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1 + with: + egress-policy: audit + - name: "Checkout Repository" + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - name: "Dependency Review" + uses: actions/dependency-review-action@7d90b4f05fea31dde1c4a1fb3fa787e197ea93ab # v3.0.7 with: - runner: ${{ matrix.runner }} - label: ${{ matrix.label }} - bzlmod: ${{ matrix.bzlmod }} - labs: ${{ matrix.labs }} + config-file: "./.github/dependency-review-config.yml" + + test: + name: "Test (${{ matrix.label }})" + uses: ./.github/workflows/module.test.yml + strategy: + fail-fast: false + matrix: + runner: [ubuntu-latest, windows-latest, macos-latest] + bzlmod: [false] + include: + - runner: ubuntu-latest + label: Ubuntu - Standard + labs: false + - runner: ubuntu-latest + label: Ubuntu - Bzlmod + bzlmod: true + labs: true + - runner: windows-latest + label: Windows + bzlmod: false + labs: true + - runner: macos-latest + label: macOS + bzlmod: false + labs: false + secrets: inherit + with: + runner: ${{ matrix.runner }} + label: ${{ matrix.label }} + bzlmod: ${{ matrix.bzlmod }} + labs: ${{ matrix.labs }} diff --git a/.github/workflows/on.push.yml b/.github/workflows/on.push.yml index ae5be6c1..585d9dfe 100644 --- a/.github/workflows/on.push.yml +++ b/.github/workflows/on.push.yml @@ -1,67 +1,68 @@ +--- name: "CI" -on: - push: - branches: - - main +"on": + push: + branches: + - main jobs: - build: - name: "Build" - uses: ./.github/workflows/module.build.yml - strategy: - fail-fast: false - matrix: - runner: [ubuntu-latest, windows-latest, macos-latest] - include: - - runner: ubuntu-latest - label: Ubuntu - bzlmod: true - labs: false - - runner: windows-latest - label: Windows - bzlmod: false - labs: true - - runner: macos-latest - label: macOS - bzlmod: false - labs: false + build: + name: "Build" + uses: ./.github/workflows/module.build.yml + strategy: + fail-fast: false + matrix: + runner: [ubuntu-latest, windows-latest, macos-latest] + include: + - runner: ubuntu-latest + label: Ubuntu + bzlmod: true + labs: false + - runner: windows-latest + label: Windows + bzlmod: false + labs: true + - runner: macos-latest + label: macOS + bzlmod: false + labs: false - secrets: inherit - with: - runner: ${{ matrix.runner }} - label: ${{ matrix.label }} - bzlmod: ${{ matrix.bzlmod }} - labs: ${{ matrix.labs }} + secrets: inherit + with: + runner: ${{ matrix.runner }} + label: ${{ matrix.label }} + bzlmod: ${{ matrix.bzlmod }} + labs: ${{ matrix.labs }} - test: - name: "Test" - needs: ["build"] - uses: ./.github/workflows/module.test.yml - strategy: - fail-fast: false - matrix: - runner: [ubuntu-latest, windows-latest, macos-latest] - include: - - runner: ubuntu-latest - label: Ubuntu - labs: false - - runner: ubuntu-latest - label: Ubuntu / Bzlmod - bzlmod: true - labs: true - - runner: windows-latest - label: Windows - bzlmod: false - labs: true - - runner: macos-latest - label: macOS - bzlmod: false - labs: false + test: + name: "Test" + needs: ["build"] + uses: ./.github/workflows/module.test.yml + strategy: + fail-fast: false + matrix: + runner: [ubuntu-latest, windows-latest, macos-latest] + include: + - runner: ubuntu-latest + label: Ubuntu + labs: false + - runner: ubuntu-latest + label: Ubuntu - Bzlmod + bzlmod: true + labs: true + - runner: windows-latest + label: Windows + bzlmod: false + labs: true + - runner: macos-latest + label: macOS + bzlmod: false + labs: false - secrets: inherit - with: - runner: ${{ matrix.runner }} - label: ${{ matrix.label }} - bzlmod: ${{ matrix.bzlmod }} - labs: ${{ matrix.labs }} + secrets: inherit + with: + runner: ${{ matrix.runner }} + label: ${{ matrix.label }} + bzlmod: ${{ matrix.bzlmod }} + labs: ${{ matrix.labs }} diff --git a/.github/workflows/on.release.yml b/.github/workflows/on.release.yml new file mode 100644 index 00000000..ed642c37 --- /dev/null +++ b/.github/workflows/on.release.yml @@ -0,0 +1,14 @@ +--- +name: Release + +"on": + push: + tags: + - "v*.*.*" + +jobs: + release: + name: "Release: BCR" + uses: bazel-contrib/.github/.github/workflows/release_ruleset.yaml@v2 + with: + release_files: rules_graalvm-*.tar.gz diff --git a/.github/workflows/release_prep.sh b/.github/workflows/release_prep.sh new file mode 100644 index 00000000..5c8b39a4 --- /dev/null +++ b/.github/workflows/release_prep.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +set -o errexit -o nounset -o pipefail + +# Set by GH actions, see +# https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables +TAG=${GITHUB_REF_NAME} +# The prefix is chosen to match what GitHub generates for source archives +PREFIX="rules_mylang-${TAG:1}" +ARCHIVE="rules_mylang-$TAG.tar.gz" +git archive --format=tar --prefix=${PREFIX}/ ${TAG} | gzip > $ARCHIVE +SHA=$(shasum -a 256 $ARCHIVE | awk '{print $1}') + +cat << EOF +## Using Bzlmod with Bazel 6+ + +1. Enable with \`common --enable_bzlmod\` in \`.bazelrc\`. +2. Add to your \`MODULE.bazel\` file: + +\`\`\`starlark +bazel_dep(name = "rules_graalvm", version = "${TAG:1}") +\`\`\` + +## Using WORKSPACE + +Paste this snippet into your `WORKSPACE.bazel` file: + +\`\`\`starlark +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +http_archive( + name = "rules_graalvm", + sha256 = "${SHA}", + strip_prefix = "${PREFIX}", + url = "https://github.com/sgammon/rules_graalvm/releases/download/${TAG}/${ARCHIVE}", +) +EOF + +awk 'f;/--SNIP--/{f=1}' example/integration_tests/bzlmod/WORKSPACE.bazel +echo "\`\`\`" diff --git a/.gitignore b/.gitignore index 570ce3be..7034d2e4 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ local.bazelrc /.vscode/ /bazel.iml .bazel_cache +node_modules/ diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 00000000..97681ced --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +pnpm exec commitlint --edit ${1} diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..58b1861c --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +pnpm exec lint-staged diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..d21edcc6 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,18 @@ +repos: + - repo: https://github.com/gherynos/pre-commit-java + rev: v0.2.4 + hooks: + - id: Checkstyle + - repo: https://github.com/gitleaks/gitleaks + rev: v8.16.3 + hooks: + - id: gitleaks + - repo: https://github.com/jumanjihouse/pre-commit-hooks + rev: 3.0.0 + hooks: + - id: shellcheck + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: end-of-file-fixer + - id: trailing-whitespace diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..c0bdf38d --- /dev/null +++ b/.prettierignore @@ -0,0 +1,5 @@ +bazel-* +external +node_modules +pnpm-lock.yaml +maven_install.json diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1 @@ +{} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 11d8e30f..00000000 --- a/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -language: nix -jdk: - - oraclejdk8 - -stages: - - name: test - -_linux: &linux - jdk: oraclejdk8 - os: linux - -_osx: &osx - os: osx - osx_image: xcode7.3 - -jobs: - include: - - stage: build - <<: *osx - script: ./tools/bazel run //tasks:ci - - <<: *linux - script: ./tools/bazel run //tasks:ci - -before_install: - - git fetch --tags - -before_script: - - nix-env -iA nixpkgs.shellcheck \ No newline at end of file diff --git a/BUILD.bazel b/BUILD.bazel index e55b9cd1..cf01a49a 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -19,6 +19,12 @@ buildifier( mode = "diff", ) +buildifier( + name = "buildifier.format", + exclude_patterns = ["./.git/*"], + lint_mode = "fix", +) + exports_files([ "maven_install.json", "WORKSPACE.bazel", diff --git a/MODULE.bazel b/MODULE.bazel index 6ae848ea..7623ac72 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -11,42 +11,34 @@ bazel_dep( name = "platforms", version = "0.0.7", ) - bazel_dep( name = "bazel_skylib", version = "1.4.2", ) - bazel_dep( name = "bazel_features", version = "0.2.0", ) - bazel_dep( name = "rules_cc", version = "0.0.8", ) - bazel_dep( name = "rules_java", version = "6.5.0", ) - bazel_dep( name = "rules_license", version = "0.0.7", ) - bazel_dep( name = "aspect_bazel_lib", version = "1.33.0", ) - bazel_dep( name = "rules_jvm_external", version = "5.3", ) - bazel_dep( name = "protobuf", version = "21.7", @@ -59,47 +51,40 @@ bazel_dep( name = "rules_go", version = "0.41.0", dev_dependency = True, - repo_name = "io_bazel_rules_go" + repo_name = "io_bazel_rules_go", ) - bazel_dep( name = "gazelle", version = "0.32.0", dev_dependency = True, repo_name = "bazel_gazelle", ) - bazel_dep( name = "rules_bazel_integration_test", version = "0.15.0", dev_dependency = True, ) - bazel_dep( name = "stardoc", version = "0.5.4", dev_dependency = True, repo_name = "io_bazel_stardoc", ) - bazel_dep( name = "bazel_skylib_gazelle_plugin", version = "1.4.2", dev_dependency = True, ) - bazel_dep( name = "contrib_rules_jvm", version = "0.13.0", dev_dependency = True, ) - bazel_dep( name = "apple_rules_lint", version = "0.3.2", dev_dependency = True, ) - bazel_dep( name = "buildifier_prebuilt", version = "6.1.2.1", @@ -122,14 +107,12 @@ MAVEN_REPOSITORIES = [ ] maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") - maven.install( name = "maven_gvm", artifacts = MAVEN_ARTIFACTS, - repositories = MAVEN_REPOSITORIES, lock_file = "//:maven_install.json", + repositories = MAVEN_REPOSITORIES, ) - use_repo( maven, "maven_gvm", @@ -137,12 +120,11 @@ use_repo( ) gvm = use_extension(":extensions.bzl", "graalvm") - gvm.graalvm( name = "graalvm", - version = "20.0.2", distribution = "oracle", java_version = "20", + version = "20.0.2", ) use_repo( gvm, diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 0c9a8757..d34d8eb6 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1,6 +1,6 @@ { "lockFileVersion": 1, - "moduleFileHash": "618d7112f0da53485db4528465e4f51516c4653069d5247a66abbaf819446878", + "moduleFileHash": "12c44e04b6f7ef89525db362f856460d7ff277138179f9aa3bed852439584fe6", "flags": { "cmdRegistries": [ "https://bcr.bazel.build/" @@ -30,7 +30,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 124, + "line": 109, "column": 22 }, "imports": { @@ -41,11 +41,11 @@ "tags": [ { "tagName": "install", - "attributeValues": {"name":"--maven_gvm","artifacts":["--org.graalvm.nativeimage:svm:23.0.1","--org.graalvm.sdk:graal-sdk:23.0.1"],"repositories":["--https://maven.pkg.st","--https://maven.google.com","--https://repo1.maven.org/maven2"],"lock_file":"--//:maven_install.json"}, + "attributeValues": {"name":"--maven_gvm","artifacts":["--org.graalvm.nativeimage:svm:23.0.1","--org.graalvm.sdk:graal-sdk:23.0.1"],"lock_file":"--//:maven_install.json","repositories":["--https://maven.pkg.st","--https://maven.google.com","--https://repo1.maven.org/maven2"]}, "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 126, + "line": 110, "column": 14 } } @@ -59,7 +59,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 139, + "line": 122, "column": 20 }, "imports": { @@ -69,11 +69,11 @@ "tags": [ { "tagName": "graalvm", - "attributeValues": {"name":"--graalvm","version":"--20.0.2","distribution":"--oracle","java_version":"--20"}, + "attributeValues": {"name":"--graalvm","distribution":"--oracle","java_version":"--20","version":"--20.0.2"}, "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 141, + "line": 123, "column": 12 } } @@ -3347,7 +3347,7 @@ } }, "//:extensions.bzl%graalvm": { - "bzlTransitiveDigest": "yKSZqFgZDsBQJ7idxvtiuwWuk7K9Ym2V3xNPD2f4I4c=", + "bzlTransitiveDigest": "XL2gg8eqwCzRKsgdlxCJ533/zTBnhHcCD4ve9I79d0Y=", "envVariables": {}, "generatedRepoSpecs": { "graalvm": { diff --git a/Makefile b/Makefile index c14335d8..9987816d 100644 --- a/Makefile +++ b/Makefile @@ -23,8 +23,11 @@ CP ?= $(shell which cp) MV ?= $(shell which mv) RM ?= $(shell which rm) GIT ?= $(shell which git) +PNPM ?= $(shell which pnpm) +CHMOD ?= $(shell which chmod) BAZEL ?= $(shell which bazel) MKDIR ?= $(shell which mkdir) +YAMLLINT ?= $(shell which yamllint) # -------------------------------------------------------- @@ -68,14 +71,23 @@ all: build test docs # Targets: Build/Test # -build: ## Build all targets. +deps: node_modules + +node_modules: + $(RULE)$(PNPM) install + +build: deps ## Build all targets. $(RULE)$(BAZEL) $(_STARTUP) build $(TARGETS) $(_ARGS) test: ## Run all tests. $(RULE)$(BAZEL) $(_STARTUP) $(TEST_TASK) $(TESTS) $(_ARGS) docs: ## Build docs. - + @echo "Building docs..." + $(RULE)$(BAZEL) $(_STARTUP) build //docs/... \ + && $(CP) -fv bazel-bin/graalvm/*.md ./docs/api/ \ + && $(CHMOD) -R 755 docs/api/; + @echo "Docs rebuilt." # Targets: Diagnosis # @@ -100,6 +112,19 @@ config: ## Show current build configuration. @echo "$(_ARGS)" +# Targets: Linting +# + +lint: deps ## Run the lint checker. + $(RULE)$(PNPM) run lint:check + +lint-format: deps ## Run the lint formatter. + $(RULE)$(PNPM) run lint:format + +yamllint: deps ## Run yamllint. + $(RULE)$(YAMLLINT) -c .github/.yamllint.yml .bcr .github/workflows .bazelci -s + + # Targets: Clean # @@ -121,5 +146,4 @@ help: ## Show this help message. $(info GraalVM Rules for Bazel:) @grep -E '^[a-z1-9A-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' -.PHONY: all build test docs clean distclean reset forceclean - +.PHONY: all build test docs clean distclean reset forceclean lint lint-format yamllint config args deps diff --git a/README.md b/README.md index 82ba048c..75f63201 100644 --- a/README.md +++ b/README.md @@ -5,25 +5,26 @@ ![Bazel 7](https://img.shields.io/badge/Bazel%207-black?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0My41NyA0My4zNyI%2BCiAgPGRlZnM%2BCiAgICA8c3R5bGU%2BCiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzAwNDMwMDsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjMDA3MDFhOwogICAgICB9CgogICAgICAuY2xzLTMgewogICAgICAgIGZpbGw6ICM0M2EwNDc7CiAgICAgIH0KCiAgICAgIC5jbHMtNCB7CiAgICAgICAgZmlsbDogIzc2ZDI3NTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2RlZnM%2BCiAgPGcgaWQ9IkxheWVyXzEtMiIgZGF0YS1uYW1lPSJMYXllciAxIj4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0ibTIxLjc4LDMyLjY4djEwLjY5bC0xMC44OS0xMC44OXYtMTAuNjlsMTAuODksMTAuODlaIi8%2BCiAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Im0yMS43OCwzMi42OGwxMC45LTEwLjg5djEwLjY5bC0xMC45LDEwLjg5di0xMC42OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0ibTEwLjg5LDIxLjc5djEwLjY5TDAsMjEuNTh2LTEwLjY5bDEwLjg5LDEwLjlaIi8%2BCiAgICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Im00My41NywxMC44OXYxMC42OWwtMTAuODksMTAuOXYtMTAuNjlsMTAuODktMTAuOVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0ibTIxLjc4LDMyLjY4bC0xMC44OS0xMC44OSwxMC44OS0xMC45LDEwLjksMTAuOS0xMC45LDEwLjg5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy00IiBkPSJtMTAuODksMjEuNzlMMCwxMC44OSwxMC44OSwwbDEwLjg5LDEwLjg5LTEwLjg5LDEwLjlaIi8%2BCiAgICA8cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Im0zMi42OCwyMS43OWwtMTAuOS0xMC45TDMyLjY4LDBsMTAuODksMTAuODktMTAuODksMTAuOVoiLz4KICA8L2c%2BCjwvc3ZnPg%3D%3D&logoColor=gray) ![Bzlmod](https://img.shields.io/badge/Bzlmod-black?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0My41NyA0My4zNyI%2BCiAgPGRlZnM%2BCiAgICA8c3R5bGU%2BCiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzAwNDMwMDsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjMDA3MDFhOwogICAgICB9CgogICAgICAuY2xzLTMgewogICAgICAgIGZpbGw6ICM0M2EwNDc7CiAgICAgIH0KCiAgICAgIC5jbHMtNCB7CiAgICAgICAgZmlsbDogIzc2ZDI3NTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2RlZnM%2BCiAgPGcgaWQ9IkxheWVyXzEtMiIgZGF0YS1uYW1lPSJMYXllciAxIj4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0ibTIxLjc4LDMyLjY4djEwLjY5bC0xMC44OS0xMC44OXYtMTAuNjlsMTAuODksMTAuODlaIi8%2BCiAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Im0yMS43OCwzMi42OGwxMC45LTEwLjg5djEwLjY5bC0xMC45LDEwLjg5di0xMC42OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0ibTEwLjg5LDIxLjc5djEwLjY5TDAsMjEuNTh2LTEwLjY5bDEwLjg5LDEwLjlaIi8%2BCiAgICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Im00My41NywxMC44OXYxMC42OWwtMTAuODksMTAuOXYtMTAuNjlsMTAuODktMTAuOVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0ibTIxLjc4LDMyLjY4bC0xMC44OS0xMC44OSwxMC44OS0xMC45LDEwLjksMTAuOS0xMC45LDEwLjg5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy00IiBkPSJtMTAuODksMjEuNzlMMCwxMC44OSwxMC44OSwwbDEwLjg5LDEwLjg5LTEwLjg5LDEwLjlaIi8%2BCiAgICA8cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Im0zMi42OCwyMS43OWwtMTAuOS0xMC45TDMyLjY4LDBsMTAuODksMTAuODktMTAuODksMTAuOVoiLz4KICA8L2c%2BCjwvc3ZnPg%3D%3D&logoColor=gray) ----- +--- > Latest release: `0.9.0` -> [!IMPORTANT] -> Currently in beta. Will probably break +> **Important** +> Currently in beta. Feedback welcome but will probably break your build. -Use [GraalVM](https://graalvm.org) from Bazel, with support for: +Use [GraalVM](https://graalvm.org) from [Bazel](https://bazel.build), with support for: - [Building native image binaries](./docs/native-image.md) - [Installing components with `gu`](./docs/components.md) - [Using GraalVM as a Bazel Java toolchain](./docs/toolchain.md) - [Support for Bazel 6, Bazel 7, and Bzlmod](./docs/modern-bazel.md) -- Support for macOS, Linux, Windows +- Support for macOS, Linux, Windows (including `native-image`!) - Support for latest modern GraalVM releases (Community Edition and Oracle GraalVM) ## Installation **Via `WORKSPACE.bazel`:** + ```starlark http_archive( name = "rules_graalvm", @@ -34,9 +35,11 @@ http_archive( ], ) ``` + ```starlark load("@rules_graalvm//graalvm:repositories.bzl", "graalvm_repository") ``` + ```starlark graalvm_repository( name = "graalvm", @@ -52,11 +55,12 @@ graalvm_repository( **Or, via `MODULE.bazel`:** > [!IMPORTANT] -> To use Bzlmod with `rules_graalvm`, you will need the `archive_override` below (until this package is made available on BCR). +> To use Bzlmod with `rules_graalvm`, you will need the `archive_override` below (until we go live on BCR). ```starlark bazel_dep(name = "rules_graalvm", version = "0.9.0") ``` + ```starlark # Until we ship to BCR: archive_override( @@ -66,6 +70,7 @@ archive_override( integrity = "sha256-ljI6wbeludsa4aOIxe0fuDDUYo06tLfwlThVgyHgMRE=", ) ``` + ```starlark gvm = use_extension("@rules_graalvm//:extensions.bzl", "graalvm") @@ -89,20 +94,23 @@ use_repo( You can use the `graalvm_repository` as a Java toolchain, by registering it like below: **From `WORKSPACE.bazel`:** + ```starlark # graalvm_repository(...) ``` + ```starlark register_toolchains("@graalvm//:toolchain") ``` **From `.bazelrc`:** + ``` build --extra_toolchains=@graalvm//:toolchain build --java_runtime_version=graalvm_20 ``` -> [!NOTE] +> **Note** > If you name your repository `example` and set the Java version to `21`, your `java_runtime_version` would be `example_21`. ## Usage: Build a native binary @@ -110,6 +118,7 @@ build --java_runtime_version=graalvm_20 This example is present in the repository at `//example/native`. You can build it in your own workspace with `bazel build @rules_graalvm//example/native`. **In a `BUILD.bazel` file:** + ```python load("@rules_java//java:defs.bzl", "java_library") load("@rules_graalvm//graalvm:defs.bzl", "native_image") diff --git a/SECURITY.md b/SECURITY.md index e2127341..24b68cf7 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,10 +10,10 @@ in a developer's Bazel workspace. All versions of this package are supported as of the `v0.9.0` release. -| Version | Supported | -| ------- | ------------------ | -| 0.9.0+ | :white_check_mark: Yep | -| `rules_graal` | :x: Deprecated | +| Version | Supported | +| ------------- | ---------------------- | +| 0.9.0+ | :white_check_mark: Yep | +| `rules_graal` | :x: Deprecated | ## Reporting a Vulnerability diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index 7d43867d..ad08007d 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -1,7 +1,7 @@ workspace(name = "rules_graalvm") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("//internal:config.bzl", "RULES_JVM_EXTERNAL_TAG", "RULES_JVM_EXTERNAL_SHA", "PROTOBUF_VERSION", "PROTOBUF_SHA") +load("//internal:config.bzl", "PROTOBUF_SHA", "PROTOBUF_VERSION", "RULES_JVM_EXTERNAL_SHA", "RULES_JVM_EXTERNAL_TAG") http_archive( name = "com_google_protobuf", @@ -28,19 +28,19 @@ http_archive( http_archive( name = "rules_java", + sha256 = "160d1ebf33763124766fb35316329d907ca67f733238aa47624a8e3ff3cf2ef4", urls = [ "https://github.com/bazelbuild/rules_java/releases/download/6.5.0/rules_java-6.5.0.tar.gz", ], - sha256 = "160d1ebf33763124766fb35316329d907ca67f733238aa47624a8e3ff3cf2ef4", ) http_archive( name = "platforms", + sha256 = "3a561c99e7bdbe9173aa653fd579fe849f1d8d67395780ab4770b1f381431d51", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.7/platforms-0.0.7.tar.gz", "https://github.com/bazelbuild/platforms/releases/download/0.0.7/platforms-0.0.7.tar.gz", ], - sha256 = "3a561c99e7bdbe9173aa653fd579fe849f1d8d67395780ab4770b1f381431d51", ) http_archive( @@ -61,7 +61,6 @@ http_archive( ], ) - http_archive( name = "bazel_gazelle", sha256 = "29218f8e0cebe583643cbf93cae6f971be8a2484cdcfa1e45057658df8d54002", @@ -91,16 +90,16 @@ http_archive( http_archive( name = "rules_cc", - urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.0.8/rules_cc-0.0.8.tar.gz"], sha256 = "ae46b722a8b8e9b62170f83bfb040cbf12adb732144e689985a66b26410a7d6f", strip_prefix = "rules_cc-0.0.8", + urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.0.8/rules_cc-0.0.8.tar.gz"], ) http_archive( name = "rules_jvm_external", - strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG, sha256 = RULES_JVM_EXTERNAL_SHA, - url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz" % (RULES_JVM_EXTERNAL_TAG, RULES_JVM_EXTERNAL_TAG) + strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG, + url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz" % (RULES_JVM_EXTERNAL_TAG, RULES_JVM_EXTERNAL_TAG), ) http_archive( @@ -112,8 +111,8 @@ http_archive( http_archive( name = "apple_rules_lint", - strip_prefix = "apple_rules_lint-0.3.2", sha256 = "7c3cc45a95e3ef6fbc484a4234789a027e11519f454df63cbb963ac499f103f9", + strip_prefix = "apple_rules_lint-0.3.2", url = "https://github.com/apple/apple_rules_lint/archive/refs/tags/0.3.2.tar.gz", ) @@ -188,7 +187,7 @@ load("//internal:repositories.bzl", "rules_graalvm_repositories") rules_graalvm_repositories() -load("//internal:setup.bzl", "rules_graalvm_workspace", "rules_graalvm_toolchains") +load("//internal:setup.bzl", "rules_graalvm_toolchains", "rules_graalvm_workspace") rules_graalvm_toolchains() diff --git a/WORKSPACE.bzlmod b/WORKSPACE.bzlmod index faf8a8c3..c5057cbc 100644 --- a/WORKSPACE.bzlmod +++ b/WORKSPACE.bzlmod @@ -112,7 +112,7 @@ load("//internal:setup.bzl", "rules_graalvm_workspace", "rules_graalvm_toolchain rules_graalvm_toolchains() -rules_graalvm_workspace(gazelle = False, maven = False, linters = False) +rules_graalvm_workspace(gazelle = False, maven = False) # Provide a repository hint for Gazelle to inform it that the go package # github.com/bazelbuild/rules_go is available from io_bazel_rules_go and it diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 00000000..5073c20d --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1 @@ +module.exports = { extends: ["@commitlint/config-conventional"] }; diff --git a/docs/api/BUILD.bazel b/docs/api/BUILD.bazel old mode 100644 new mode 100755 diff --git a/docs/api/defs.md b/docs/api/defs.md index ada0fdef..6c1958b3 100755 --- a/docs/api/defs.md +++ b/docs/api/defs.md @@ -12,25 +12,20 @@ native_image(name, native_features, reflection_configuration) - - **ATTRIBUTES** - -| Name | Description | Type | Mandatory | Default | -| :------------- | :------------- | :------------- | :------------- | :------------- | -| name | A unique name for this target. | Name | required | | -| c_compiler_option | - | List of strings | optional | [] | -| data | - | List of labels | optional | [] | -| deps | - | List of labels | optional | [] | -| extra_args | - | List of strings | optional | [] | -| graalvm | - | Label | optional | @graalvm//:bin/native-image | -| include_resources | - | String | optional | "" | -| initialize_at_build_time | - | List of strings | optional | [] | -| initialize_at_run_time | - | List of strings | optional | [] | -| jni_configuration | - | Label | optional | None | -| main_class | - | String | optional | "" | -| native_features | - | List of strings | optional | [] | -| reflection_configuration | - | Label | optional | None | - - +| Name | Description | Type | Mandatory | Default | +| :------------------------------------------------------------------------- | :----------------------------- | :------------------------------------------------------------------ | :-------- | :--------------------------------------- | +| name | A unique name for this target. | Name | required | | +| c_compiler_option | - | List of strings | optional | [] | +| data | - | List of labels | optional | [] | +| deps | - | List of labels | optional | [] | +| extra_args | - | List of strings | optional | [] | +| graalvm | - | Label | optional | @graalvm//:bin/native-image | +| include_resources | - | String | optional | "" | +| initialize_at_build_time | - | List of strings | optional | [] | +| initialize_at_run_time | - | List of strings | optional | [] | +| jni_configuration | - | Label | optional | None | +| main_class | - | String | optional | "" | +| native_features | - | List of strings | optional | [] | +| reflection_configuration | - | Label | optional | None | diff --git a/docs/api/repositories.md b/docs/api/repositories.md index 96018516..748af702 100755 --- a/docs/api/repositories.md +++ b/docs/api/repositories.md @@ -26,22 +26,18 @@ GraalVM matching the provided `java_version`. When installing the `latest` version of GraalVM, it is probably ideal to provide your own `sha256`. In this case, the `rules_graalvm` package does not provide an SHA256 hash otherwise. - **PARAMETERS** - -| Name | Description | Default Value | -| :------------- | :------------- | :------------- | -| name | Name of the VM repository. | none | -| java_version | Java version to use/declare. | none | -| version | Version of the GraalVM release. | "latest" | -| distribution | Which GVM distribution to download - ce, community, or oracle. | "oracle" | -| toolchain | Whether to create a Java toolchain from this GVM installation. | True | -| toolchain_prefix | Name prefix to use for the toolchain; defaults to graalvm. | "graalvm" | -| target_compatible_with | Compatibility tags to apply. | [] | -| components | Components to install in the target GVM installation. | [] | -| setup_actions | GraalVM Updater commands that should be run; pass complete command strings that start with "gu". | [] | -| register_all | Register all GraalVM repositories and use target_compatible_with (experimental). | False | -| kwargs | Passed to the underlying bindist repository rule. | none | - - +| Name | Description | Default Value | +| :--------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------- | :--------------------- | +| name | Name of the VM repository. | none | +| java_version | Java version to use/declare. | none | +| version | Version of the GraalVM release. | "latest" | +| distribution | Which GVM distribution to download - ce, community, or oracle. | "oracle" | +| toolchain | Whether to create a Java toolchain from this GVM installation. | True | +| toolchain_prefix | Name prefix to use for the toolchain; defaults to graalvm. | "graalvm" | +| target_compatible_with | Compatibility tags to apply. | [] | +| components | Components to install in the target GVM installation. | [] | +| setup_actions | GraalVM Updater commands that should be run; pass complete command strings that start with "gu". | [] | +| register_all | Register all GraalVM repositories and use target_compatible_with (experimental). | False | +| kwargs | Passed to the underlying bindist repository rule. | none | diff --git a/docs/components.md b/docs/components.md index 538d7c6b..f2d38120 100644 --- a/docs/components.md +++ b/docs/components.md @@ -1,4 +1,3 @@ - ## Installing and using GraalVM components Some GraalVM distributions make available _components_, which include language implementations, tooling, and other utilities. Your project may need one or more GraalVM components installed in order to build or run correctly. @@ -10,6 +9,7 @@ By default, no components are installed beyond what is present in a given distri ### Installing components **In your `WORKSPACE.bazel`:** + ```starlark load("@rules_graalvm//graalvm:repositories.bzl", "graalvm_repository") @@ -34,12 +34,12 @@ This snippet assumes you've [set up the rules](../README.md). > [!IMPORTANT] > If you declare `components`, make sure to declare the full set you need, including any that may be installed in the base distribution. - ### After-install actions With certain GraalVM components or project configurations, you may need to run post-installation actions with the GraalVM Updater tool (`gu`): **In your `WORKSPACE.bazel`:** + ```starlark load("@rules_graalvm//graalvm:repositories.bzl", "graalvm_repository") diff --git a/docs/index.md b/docs/index.md index 322a2622..949fe3bb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,15 +1,14 @@ - # GraalVM Rules for Bazel > Latest release: `0.9.0` -These rules let you use [GraalVM](https://graalvm.org) from Bazel, with support for: +These rules let you use [GraalVM](https://graalvm.org) from [Bazel](https://bazel.build), with support for: - [Building native image binaries](./native-image.md) - [Installing components with `gu`](./components.md) - [Using GraalVM as a Bazel Java toolchain](./toolchain.md) - [Support for Bazel 6, Bazel 7, and Bzlmod](./modern-bazel.md) -- Support for macOS, Linux, Windows +- Support for macOS, Linux, Windows (including `native-image`!) - Support for latest modern GraalVM releases (Community Edition and Oracle GraalVM) ## Installation @@ -17,7 +16,8 @@ These rules let you use [GraalVM](https://graalvm.org) from Bazel, with support > API docs for [`graalvm_repository`](./api/repositories.md) **Via `WORKSPACE.bazel`:** -```starlark + +```python http_archive( name = "rules_graalvm", sha256 = "96323ac1b7a5b9db1ae1a388c5ed1fb830d4628d3ab4b7f09538558321e03111", @@ -27,10 +27,12 @@ http_archive( ], ) ``` -```starlark + +```python load("@rules_graalvm//graalvm:repositories.bzl", "graalvm_repository") ``` -```starlark + +```python graalvm_repository( name = "graalvm", components = [ @@ -44,13 +46,14 @@ graalvm_repository( **Or, via `MODULE.bazel`:** -> [!IMPORTANT] +> **Important** > To use Bzlmod with `rules_graalvm`, you will need the `archive_override` below (until this package is made available on BCR). -```starlark +```python bazel_dep(name = "rules_graalvm", version = "0.9.0") ``` -```starlark + +```python # Until we ship to BCR: archive_override( module_name = "rules_graalvm", @@ -59,7 +62,8 @@ archive_override( integrity = "sha256-ljI6wbeludsa4aOIxe0fuDDUYo06tLfwlThVgyHgMRE=", ) ``` -```starlark + +```python gvm = use_extension("@rules_graalvm//:extensions.bzl", "graalvm") gvm.graalvm( @@ -89,14 +93,17 @@ These rules are [documented](https://sgammon.github.io/rules_graalvm); you can f You can use the `graalvm_repository` as a Java toolchain, by registering it like below: **From `WORKSPACE.bazel`:** -```starlark + +```python # graalvm_repository(...) ``` -```starlark + +```python register_toolchains("@graalvm//:toolchain") ``` **From `.bazelrc`:** + ``` build --extra_toolchains=@graalvm//:toolchain build --java_runtime_version=graalvm_20 @@ -109,6 +116,7 @@ Read more in the [Toolchain Guide](./toolchain.md). > API docs for [`native_image`](./api/defs.md) **In a `BUILD.bazel` file:** + ```python load("@rules_java//java:defs.bzl", "java_library") load("@rules_graalvm//graalvm:defs.bzl", "native_image") diff --git a/docs/modern-bazel.md b/docs/modern-bazel.md index 8db050ff..c9fb68b1 100644 --- a/docs/modern-bazel.md +++ b/docs/modern-bazel.md @@ -1,4 +1,3 @@ - ## Usage from modern Bazel See instructions below for installation and use of `rules_graalvm` on Bazel 6 or newer, via Bazel Modules: @@ -10,6 +9,7 @@ bazel_dep(name = "rules_graalvm", version = "") ``` **Toolchain registration in `WORKSPACE.bzlmod` (optional):** + ```starlark load("@rules_graalvm//graalvm:repositories.bzl", "graalvm_repository") diff --git a/docs/native-image.md b/docs/native-image.md index b4e6860f..ef3445fb 100644 --- a/docs/native-image.md +++ b/docs/native-image.md @@ -1,4 +1,3 @@ - ## Building GraalVM native images with Bazel After you [install the rules](./modern-bazel.md) and setup your GraalVM repository, you can easily use it to build a native image using the `native-image` tool, from a standard Bazel `java_library` or `java_binary` target. @@ -9,6 +8,7 @@ After you [install the rules](./modern-bazel.md) and setup your GraalVM reposito > This sample is present in the `rules_graalvm` repository at `example/native`. **In `Main.java`:** + ```java public class Main { public static void main(String args[]) { @@ -18,6 +18,7 @@ public class Main { ``` **In `BUILD.bazel`:** + ```starlark load("@rules_java//java:defs.bzl", "java_library") load("@rules_graalvm//graalvm:defs.bzl", "native_image") @@ -35,6 +36,7 @@ native_image( ``` Then, from your terminal: + ``` bazel build //some/package:native ``` diff --git a/docs/toolchain.md b/docs/toolchain.md index 8dcba90a..60be2e4f 100644 --- a/docs/toolchain.md +++ b/docs/toolchain.md @@ -1,4 +1,3 @@ - ## Using GraalVM as a toolchain with Bazel > [!NOTE] @@ -16,6 +15,7 @@ Java toolchains in Bazel are typically used to select a particular JDK to run ag After you've installed `rules_graalvm` and declared a `graalvm_repository`, you can register GraalVM as a Java toolchain using the `:all` target at the repository root: **In your `WORKSPACE.bazel`:** + ```starlark # ... @@ -25,6 +25,7 @@ register_toolchains("@graalvm//:toolchain") ``` **Or, in a `bazel.rc`:** + ``` build --extra_toolchains=@graalvm//:toolchain ``` @@ -43,6 +44,7 @@ You can select GraalVM as the **tooling toolchain**, the **runtime toolchain**, Set **`tool_java_language_version`** to the version matching your GraalVM JDK declared in `graalvm_repository`. **In a `bazel.rc`:** + ``` build --tool_java_language_version=20 build --extra_toolchains=@graalvm//:bootstrap_runtime_toolchain @@ -53,6 +55,7 @@ build --extra_toolchains=@graalvm//:bootstrap_runtime_toolchain Set **`java_runtime_version`** to the version matching your GraalVM JDK declared in `graalvm_repository`. **In a `bazel.rc`:** + ``` build --java_language_version=20 build --java_runtime_version=graalvm_20 diff --git a/example/integration_tests/bzlmod/MODULE.bazel b/example/integration_tests/bzlmod/MODULE.bazel index 21c108b6..2829eb5a 100644 --- a/example/integration_tests/bzlmod/MODULE.bazel +++ b/example/integration_tests/bzlmod/MODULE.bazel @@ -9,24 +9,21 @@ bazel_dep( name = "rules_java", version = "6.5.0", ) - bazel_dep( name = "rules_graalvm", version = "0.9.0", ) - local_path_override( module_name = "rules_graalvm", path = "../../..", ) gvm = use_extension("@rules_graalvm//:extensions.bzl", "graalvm") - gvm.graalvm( name = "graalvm", - version = "20.0.2", distribution = "oracle", java_version = "20", + version = "20.0.2", ) use_repo( gvm, diff --git a/example/integration_tests/bzlmod/WORKSPACE.bazel b/example/integration_tests/bzlmod/WORKSPACE.bazel index 5de029cb..13ea6edd 100644 --- a/example/integration_tests/bzlmod/WORKSPACE.bazel +++ b/example/integration_tests/bzlmod/WORKSPACE.bazel @@ -4,10 +4,10 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "rules_java", + sha256 = "160d1ebf33763124766fb35316329d907ca67f733238aa47624a8e3ff3cf2ef4", urls = [ "https://github.com/bazelbuild/rules_java/releases/download/6.5.0/rules_java-6.5.0.tar.gz", ], - sha256 = "160d1ebf33763124766fb35316329d907ca67f733238aa47624a8e3ff3cf2ef4", ) local_repository( @@ -15,11 +15,13 @@ local_repository( path = "../..", ) +#---SNIP--- Below here is re-used in the workspace snippet published on releases + load("@rules_graalvm//graalvm:repositories.bzl", "graalvm_repository") graalvm_repository( name = "graalvm", - version = "20.0.2", distribution = "oracle", java_version = "20", + version = "20.0.2", ) diff --git a/extensions.bzl b/extensions.bzl index 73432f55..e8ac6cb6 100644 --- a/extensions.bzl +++ b/extensions.bzl @@ -11,13 +11,13 @@ def _gvm_impl(mctx): selected = None all_components = [] for mod in mctx.modules: - for gvm in mod.tags.graalvm: - selected = gvm - if len(gvm.components) > 0: - all_components += [i for i in gvm.components if not i in all_components] - for extra_component in mod.tags.component: - if extra_component.name not in all_components: - all_components.append(extra_component.name) + for gvm in mod.tags.graalvm: + selected = gvm + if len(gvm.components) > 0: + all_components += [i for i in gvm.components if not i in all_components] + for extra_component in mod.tags.component: + if extra_component.name not in all_components: + all_components.append(extra_component.name) graalvm_repository( name = selected.name, @@ -30,7 +30,6 @@ def _gvm_impl(mctx): sha256 = selected.sha256, ) - _graalvm = tag_class(attrs = { "name": attr.string(mandatory = True), "version": attr.string(mandatory = True), @@ -43,13 +42,13 @@ _graalvm = tag_class(attrs = { }) _component = tag_class(attrs = { - "name": attr.string(mandatory = True), + "name": attr.string(mandatory = True), }) graalvm = module_extension( - implementation = _gvm_impl, - tag_classes = { - "graalvm": _graalvm, - "component": _component, - }, + implementation = _gvm_impl, + tag_classes = { + "graalvm": _graalvm, + "component": _component, + }, ) diff --git a/graalvm/defs.bzl b/graalvm/defs.bzl index 0bd2006a..0cb4121a 100644 --- a/graalvm/defs.bzl +++ b/graalvm/defs.bzl @@ -5,6 +5,5 @@ load( _native_image = "native_image", ) - ## Exports native_image = _native_image diff --git a/graalvm/nativeimage/rules.bzl b/graalvm/nativeimage/rules.bzl index a4cd80ea..8d955a0d 100644 --- a/graalvm/nativeimage/rules.bzl +++ b/graalvm/nativeimage/rules.bzl @@ -77,28 +77,30 @@ def _graal_binary_implementation(ctx): for arg in ctx.attr.extra_args: args.add(arg) - args.add_joined(ctx.attr.c_compiler_option, - join_with = " ", - format_joined="-H:CCompilerOption=%s") + args.add_joined( + ctx.attr.c_compiler_option, + join_with = " ", + format_joined = "-H:CCompilerOption=%s", + ) if len(ctx.attr.native_features) > 0: - args.add("-H:Features={entries}".format(entries=",".join(ctx.attr.native_features))) + args.add("-H:Features={entries}".format(entries = ",".join(ctx.attr.native_features))) if len(ctx.attr.initialize_at_build_time) > 0: - args.add("--initialize-at-build-time={entries}".format(entries=",".join(ctx.attr.initialize_at_build_time))) + args.add("--initialize-at-build-time={entries}".format(entries = ",".join(ctx.attr.initialize_at_build_time))) if len(ctx.attr.initialize_at_run_time) > 0: - args.add("--initialize-at-run-time={entries}".format(entries=",".join(ctx.attr.initialize_at_run_time))) + args.add("--initialize-at-run-time={entries}".format(entries = ",".join(ctx.attr.initialize_at_run_time))) if ctx.attr.reflection_configuration != None: - args.add("-H:ReflectionConfigurationFiles={path}".format(path=ctx.file.reflection_configuration.path)) - classpath_depset = depset([ctx.file.reflection_configuration], transitive=[classpath_depset]) + args.add("-H:ReflectionConfigurationFiles={path}".format(path = ctx.file.reflection_configuration.path)) + classpath_depset = depset([ctx.file.reflection_configuration], transitive = [classpath_depset]) if ctx.attr.include_resources != None: - args.add("-H:IncludeResources={path}".format(path=ctx.attr.include_resources)) + args.add("-H:IncludeResources={path}".format(path = ctx.attr.include_resources)) if ctx.attr.jni_configuration != None: - args.add("-H:JNIConfigurationFiles={path}".format(path=ctx.file.jni_configuration.path)) - classpath_depset = depset([ctx.file.jni_configuration], transitive=[classpath_depset]) + args.add("-H:JNIConfigurationFiles={path}".format(path = ctx.file.jni_configuration.path)) + classpath_depset = depset([ctx.file.jni_configuration], transitive = [classpath_depset]) args.add("-H:+JNI") ctx.actions.run( @@ -125,8 +127,8 @@ native_image = rule( implementation = _graal_binary_implementation, attrs = { "deps": attr.label_list(providers = [[JavaInfo]]), - "reflection_configuration": attr.label(mandatory=False, allow_single_file=True), - "jni_configuration": attr.label(mandatory=False, allow_single_file=True), + "reflection_configuration": attr.label(mandatory = False, allow_single_file = True), + "jni_configuration": attr.label(mandatory = False, allow_single_file = True), "main_class": attr.string(), "include_resources": attr.string(), "initialize_at_build_time": attr.string_list(), @@ -139,11 +141,11 @@ native_image = rule( executable = True, ), "_cc_toolchain": attr.label( - default = Label("@bazel_tools//tools/cpp:current_cc_toolchain") + default = Label("@bazel_tools//tools/cpp:current_cc_toolchain"), ), "data": attr.label_list(allow_files = True), - "extra_args": attr.string_list(), - "c_compiler_option": attr.string_list() + "extra_args": attr.string_list(), + "c_compiler_option": attr.string_list(), }, executable = True, fragments = ["cpp"], diff --git a/graalvm/repositories.bzl b/graalvm/repositories.bzl index 1c0eb54b..ecbb44e1 100644 --- a/graalvm/repositories.bzl +++ b/graalvm/repositories.bzl @@ -5,6 +5,5 @@ load( _graalvm_repository = "graalvm_repository", ) - ## Exports graalvm_repository = _graalvm_repository diff --git a/internal/config.bzl b/internal/config.bzl index 1c72f417..f7872fc7 100644 --- a/internal/config.bzl +++ b/internal/config.bzl @@ -12,7 +12,7 @@ GRAALVM_SHA = None RULES_JVM_EXTERNAL_TAG = "5.3" -RULES_JVM_EXTERNAL_SHA ="d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac" +RULES_JVM_EXTERNAL_SHA = "d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac" PROTOBUF_VERSION = "3.20.1" diff --git a/internal/graalvm_bindist.bzl b/internal/graalvm_bindist.bzl index 49383f4e..e6410623 100644 --- a/internal/graalvm_bindist.bzl +++ b/internal/graalvm_bindist.bzl @@ -13,7 +13,7 @@ _graal_archive_internal_prefixes = { _graal_v2_archive_internal_prefixes = { "macos": "Contents/Home", "linux": "", - "windows": "" + "windows": "", } _graal_version_configs = { @@ -75,7 +75,7 @@ _graal_version_configs = { "17": { "darwin-amd64": "60236506920cc84a07ea7602f4514d05da2c07c7176e0634652f8a9c5ad677aa", "linux-amd64": "11d8039e0a7a31b799a6f20a0e806e4128730e9a2595a7ffdec1443539d4c3f6", - } + }, }, }, "22.0.0.2": { @@ -117,13 +117,13 @@ _graal_version_configs = { "macos-x64": "da3c52cc68ce0fb4dcc27dba3c59beadafb7588fec9e9d2812f5bc7c7d00ab63", "linux-x64": "0e638d2b7406fabc15a1079fc65431a4f33f6f754da77e4073de8433b40e7c4a", "linux-aarch64": "506c99fef656653ccbc57facb9f200303bfcc21ea29679e7391046d0990493da", - "windows-x64": "ce02ce51f3339895cfeef5afe5e6caf6a61a165534a4995981de837f4da2e3c6" + "windows-x64": "ce02ce51f3339895cfeef5afe5e6caf6a61a165534a4995981de837f4da2e3c6", }, "17": { "macos-x64": "470d538e34dc168255ee8ceadca74aab4b028ec6c699c4bd8e0226b0a7d3f155", "linux-x64": "e5a5868c9b498643fadebfba2040e4d9a19a13ea58ec77cec8d64ab6ee691d1e", - "windows-x64": "23fcc0ef9d245fc087d2bcefb321d2ef13a87dd10bfc04b2a98c55db7b401732" - } + "windows-x64": "23fcc0ef9d245fc087d2bcefb321d2ef13a87dd10bfc04b2a98c55db7b401732", + }, }, }, "oracle-17.0.7": { @@ -131,45 +131,45 @@ _graal_version_configs = { "prefix": { "macos": "graalvm-jdk-17.0.8+9.1", "linux": "graalvm-jdk-17.0.8+9.1", - "windows": "graalvm-jdk-17.0.8+9.1" + "windows": "graalvm-jdk-17.0.8+9.1", }, "sha256": { "macos-x64": "325c1c5adce1e8b569e87f1e4dffe852f73e7c25e720ea15977f2ca1d7dba1bb", "macos-aarch64": "c73d2917c1b681679d90a7e3851b553c328e4028137e19adb301040fe0d43cfd", "linux-x64": "2d6696aa209daa098c51fefc51906aa7bf0dbe28dcc560ef738328352564181b", "linux-aarch64": "10cb0b61571befb20bf7c11ac4e10ff4e4801065a64ae425b39f34d401e352b1", - "windows-x64": "ea90259f08c7e358bed62c2b48d68d295aa7be38ab3cb922d74bab284e717f64" - } + "windows-x64": "ea90259f08c7e358bed62c2b48d68d295aa7be38ab3cb922d74bab284e717f64", + }, }, "oracle-20.0.1": { "urls": ["https://download.oracle.com/graalvm/{java_version}/archive/graalvm-jdk-{version}_{platform}_bin.{archive}"], "prefix": { "macos": "graalvm-jdk-20.0.1+9.1", "linux": "graalvm-jdk-20.0.1+9.1", - "windows": "graalvm-jdk-20.0.1+9.1" + "windows": "graalvm-jdk-20.0.1+9.1", }, "sha256": { "macos-x64": "b6f14aae4f9d6a1514446f6f2b83685e796ec083a205b613a9873b29454333ef", "macos-aarch64": "b94877df825ccefbe8b6751e087d54aa9b8129f9d2919d29ea18e00900392da1", "linux-x64": "0aef42ae97bc98acbd11dce81018a7916250fced6ee9f95a934816813e48e4f4", "linux-aarch64": "890596363a864bdbe55c6a9678a87384e62660056b6951c385cceaae4807fbb8", - "windows-x64": "d5b915df33d0f959d2d51e67eb1bfa94666443b6e66fa5c7be2b4933ece3cf61" - } + "windows-x64": "d5b915df33d0f959d2d51e67eb1bfa94666443b6e66fa5c7be2b4933ece3cf61", + }, }, "oracle-20.0.2": { "urls": ["https://download.oracle.com/graalvm/{java_version}/archive/graalvm-jdk-{version}_{platform}_bin.{archive}"], "prefix": { "macos": "graalvm-jdk-20.0.2+9.1", "linux": "graalvm-jdk-20.0.2+9.1", - "windows": "graalvm-jdk-20.0.2+9.1" + "windows": "graalvm-jdk-20.0.2+9.1", }, "sha256": { "macos-x64": "72c74c3702437824cba3db3435897cce3643e9443acac59f6cfd43f9444b1004", "macos-aarch64": "f1b1068672feef3dc66cba8ccccc14d623b26e284870a156bb10ea3ea51af706", "linux-x64": "242862bfd2fd2633950a8d85dd1fb4d0307c35cbc7445089aa593a931c8b17db", "linux-aarch64": "890596363a864bdbe55c6a9678a87384e62660056b6951c385cceaae4807fbb8", - "windows-x64": "3ec83085b54a8de7d0c0ca893d225718cf6ff514f406af6d31a615da63ae9019" - } + "windows-x64": "3ec83085b54a8de7d0c0ca893d225718cf6ff514f406af6d31a615da63ae9019", + }, }, "oracle-latest": { "urls": ["https://download.oracle.com/graalvm/{java_version}/latest/graalvm-jdk-{java_version}_{platform}_bin.{archive}"], @@ -184,8 +184,8 @@ _graal_version_configs = { "linux-x64": None, "linux-aarch64": None, "windows-x64": None, - } - } + }, + }, } _graal_native_image_version_configs = { @@ -247,7 +247,7 @@ _graal_native_image_version_configs = { "17": { "darwin-amd64": "80ac09d45f8822413b9f16297da60da196013bbcfbc4bc7721f1257885ebe063", "linux-amd64": "df488a04b5405c6443c90e94710cd3bd2be9adcb3768f91429aa494168d52440", - } + }, }, }, "22.0.0.2": { @@ -289,16 +289,16 @@ _graal_native_image_version_configs = { "darwin-amd64": "ae542383b033576e26d0431b0b62b4f7c048fee3b209dad2a257c4ae6345f1fb", "linux-amd64": "7093522c446e16e7d3db81fbec858ef487709d6f58fe1ee3b654676629d786aa", "linux-aarch64": "6594b5b5558542cd3f30f235967209809924ea2d3fbb75e9a43db7035370416b", - "windows-amd64": "b6be28b7841a5e1e7221c4dd96e5cd6dfcf5d99152564e08e43f02b4b891982c" + "windows-amd64": "b6be28b7841a5e1e7221c4dd96e5cd6dfcf5d99152564e08e43f02b4b891982c", }, "17": { "darwin-amd64": "f3325ba7fbbcb865c3cc38ee531398482344fae2dd364073391568b0e5b0a77a", "linux-amd64": "c70dedcf87f4aad917a5e35a972e7b1bd33f91d4eec35c4dfa4cb4123ad06a2a", "linux-aarch64": "20f69183baeabc3270d056f3caa57bdccb3b0ea130e8773725130f2e60184563", - "windows-amd64": "b6be28b7841a5e1e7221c4dd96e5cd6dfcf5d99152564e08e43f02b4b891982c" - } + "windows-amd64": "b6be28b7841a5e1e7221c4dd96e5cd6dfcf5d99152564e08e43f02b4b891982c", + }, }, - } + }, } def _get_platform(ctx, newdist): @@ -314,15 +314,14 @@ def _get_platform(ctx, newdist): return "darwin-amd64" else: fail("Unsupported operating system: " + ctx.os.name) + elif ctx.os.name == "linux": + return ("linux-%s" % (arch_labels[ctx.os.arch] or ctx.os.arch), "linux", "tar.gz") + elif ctx.os.name == "mac os x": + return ("macos-%s" % (arch_labels[ctx.os.arch] or ctx.os.arch), "macos", "tar.gz") + elif "windows" in ctx.os.name: + return ("windows-%s" % (arch_labels[ctx.os.arch] or ctx.os.arch), "windows", "zip") else: - if ctx.os.name == "linux": - return ("linux-%s" % (arch_labels[ctx.os.arch] or ctx.os.arch), "linux", "tar.gz") - elif ctx.os.name == "mac os x": - return ("macos-%s" % (arch_labels[ctx.os.arch] or ctx.os.arch), "macos", "tar.gz") - elif "windows" in ctx.os.name: - return ("windows-%s" % (arch_labels[ctx.os.arch] or ctx.os.arch), "windows", "zip") - else: - fail("Unsupported operating system: " + ctx.os.name) + fail("Unsupported operating system: " + ctx.os.name) def _check_version(version, java_version, newdist): java_version_numeric = int(java_version) @@ -333,10 +332,11 @@ def _check_version(version, java_version, newdist): if newdist: # rule 1: java less than 17 is not supported in the new distribution - if java_version_numeric < 17: fail("Modern GraalVM distribution not available for Java version: '%s'" % java_version) + if java_version_numeric < 17: + fail("Modern GraalVM distribution not available for Java version: '%s'" % java_version) - else: - if gvm_version_major and gvm_version_major > 22: fail("Legacy GraalVM distributions not available at version '%s'" % version) + elif gvm_version_major and gvm_version_major > 22: + fail("Legacy GraalVM distributions not available at version '%s'" % version) def _toolchain_config_impl(ctx): ctx.file("WORKSPACE", "workspace(name = \"{name}\")\n".format(name = ctx.name)) @@ -354,7 +354,7 @@ def _graal_postinstall_actions(ctx): fail("Unable to run GraalVM setup action '{cmd}':\n{stdout}\n{stderr}".format( cmd = action, stdout = exec_result.stdout, - stderr = exec_result.stderr + stderr = exec_result.stderr, )) def _graal_bindist_repository_impl(ctx): @@ -366,7 +366,7 @@ def _graal_bindist_repository_impl(ctx): "version": version, "platform": platform, "java_version": java_version, - "archive": archive + "archive": archive, } _check_version(ctx.attr.version, ctx.attr.java_version, False) @@ -430,14 +430,17 @@ def _graal_bindist_repository_impl(ctx): "version": version, "platform": platform, "java_version": java_version, - "archive": archive + "archive": archive, } # download graal config = _graal_version_configs[dist_tag] if platform not in config["sha256"]: fail("Platform %s not supported at GraalVM version '%s' (distribution '%s'). Available: %s." % ( - platform, version, distribution, ", ".join(config["sha256"].keys()) + platform, + version, + distribution, + ", ".join(config["sha256"].keys()), )) sha = None @@ -485,18 +488,21 @@ alias( visibility = ["//visibility:public"], ) """.format( - repo = ctx.attr.toolchain_config + repo = ctx.attr.toolchain_config, ) - ctx.file("BUILD.bazel", """ + ctx.file( + "BUILD.bazel", + """ exports_files(glob(["**/*"])) %s %s """ % ( - ctx.attr.enable_toolchain and toolchain_aliases_template or "", - _JDK_BUILD_TEMPLATE.format(RUNTIME_VERSION = java_version)), - ) + ctx.attr.enable_toolchain and toolchain_aliases_template or "", + _JDK_BUILD_TEMPLATE.format(RUNTIME_VERSION = java_version), + ), + ) ctx.file("WORKSPACE.bazel", """ workspace(name = \"{name}\") @@ -529,18 +535,17 @@ _toolchain_config = repository_rule( ) def graalvm_repository( - name, - java_version, - version = "latest", - distribution = "oracle", - toolchain = True, - toolchain_prefix = "graalvm", - target_compatible_with = [], - components = [], - setup_actions = [], - register_all = False, - **kwargs): - + name, + java_version, + version = "latest", + distribution = "oracle", + toolchain = True, + toolchain_prefix = "graalvm", + target_compatible_with = [], + components = [], + setup_actions = [], + register_all = False, + **kwargs): """Declare a GraalVM distribution repository, and optionally a Java toolchain to match. To register and use the GraalVM distribution as a toolchain, follow the Toolchains guide in the docs @@ -555,7 +560,7 @@ def graalvm_repository( When installing the `latest` version of GraalVM, it is probably ideal to provide your own `sha256`. In this case, the `rules_graalvm` package does not provide an SHA256 hash otherwise. - + Args: name: Name of the VM repository. java_version: Java version to use/declare. @@ -628,12 +633,12 @@ toolchain( visibility = ["//visibility:public"], ) """.format( - prefix = toolchain_prefix or "graalvm", - version = java_version, - target_compatible_with = target_compatible_with, - toolchain = "@{repo}//:jdk".format(repo = name), - ), - ) + prefix = toolchain_prefix or "graalvm", + version = java_version, + target_compatible_with = target_compatible_with, + toolchain = "@{repo}//:jdk".format(repo = name), + ), + ) if not register_all: # register a specific GraalVM version at the host OS/arch pair diff --git a/internal/maven.bzl b/internal/maven.bzl index 58773ffc..0b977b3e 100644 --- a/internal/maven.bzl +++ b/internal/maven.bzl @@ -7,7 +7,7 @@ load( def graalvm(artifact, repository = "@maven", version = None, group = None): """Return an artifact coordinate for GraalVM Maven artifact. - + Args: artifact: Group and name of the artifact, separated with `:`. repository: Name of the Maven Bazel repository to pull from; defaults to diff --git a/internal/repositories.bzl b/internal/repositories.bzl index adc6f091..c3b29173 100644 --- a/internal/repositories.bzl +++ b/internal/repositories.bzl @@ -6,92 +6,75 @@ load( "GRAALVM_COMPONENTS", "GRAALVM_DISTRIBUTION", "GRAALVM_JAVA_VERSION", - "GRAALVM_VERSION", "GRAALVM_SHA", + "GRAALVM_VERSION", "MAVEN_ARTIFACTS", "MAVEN_REPOSITORIES", ) - load( "@buildifier_prebuilt//:deps.bzl", "buildifier_prebuilt_deps", ) - load( "@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace", ) - load( "@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains", ) - load( "@//graalvm:repositories.bzl", "graalvm_repository", ) - load( "@aspect_bazel_lib//lib:repositories.bzl", "aspect_bazel_lib_dependencies", ) - load( "@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps", ) - load( "@io_bazel_stardoc//:setup.bzl", "stardoc_repositories", ) - load( "@rules_jvm_external//:defs.bzl", "maven_install", ) - load( "@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies", ) - load( "@bazel_gazelle//:deps.bzl", "gazelle_dependencies", ) - load( "@googleapis//:repository_rules.bzl", "switched_rules_by_language", ) - load( "@contrib_rules_jvm//:repositories.bzl", "contrib_rules_jvm_deps", ) - load( "@apple_rules_lint//lint:repositories.bzl", "lint_deps", ) - - load( "@apple_rules_lint//lint:setup.bzl", "lint_setup", ) - load( "@hermetic_cc_toolchain//toolchain:defs.bzl", zig_toolchains = "toolchains", ) def _setup_rules_graalvm_repositories(maven = True, go_toolchains = True, linters = True): - """Setup dependencies for the GraalVM Rules project.""" # Apple Linting Rules @@ -173,5 +156,4 @@ def _setup_rules_graalvm_repositories(maven = True, go_toolchains = True, linter generate_compat_repositories = True, ) - rules_graalvm_repositories = _setup_rules_graalvm_repositories diff --git a/internal/setup.bzl b/internal/setup.bzl index 1c9839e6..6b34b40b 100644 --- a/internal/setup.bzl +++ b/internal/setup.bzl @@ -4,33 +4,28 @@ load( "@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup", ) - load( "@maven_gvm//:defs.bzl", "pinned_maven_install", ) - load( "@contrib_rules_jvm//:setup.bzl", "contrib_rules_jvm_setup", ) - load( "@bazel_skylib_gazelle_plugin//:setup.bzl", "bazel_skylib_gazelle_plugin_setup", ) - load( "@buildifier_prebuilt//:defs.bzl", "buildifier_prebuilt_register_toolchains", ) def _rules_graalvm_toolchains(): - """Register toolchains for use in the GraalVM Rules codebase.""" native.register_toolchains( - "@graalvm//:toolchain" + "@graalvm//:toolchain", ) native.register_toolchains( @@ -42,8 +37,7 @@ def _rules_graalvm_toolchains(): "@zig_sdk//toolchain:windows_arm64", ) -def _rules_graalvm_setup_workspace(gazelle = True, maven = False, linters = False): - +def _rules_graalvm_setup_workspace(gazelle = True, maven = False): """Perform second-stage setup of the GraalVM Rules codebase.""" # Rules JVM External @@ -66,6 +60,5 @@ def _rules_graalvm_setup_workspace(gazelle = True, maven = False, linters = Fals # Maven: Pinned pinned_maven_install() - rules_graalvm_toolchains = _rules_graalvm_toolchains rules_graalvm_workspace = _rules_graalvm_setup_workspace diff --git a/package.json b/package.json new file mode 100644 index 00000000..b1fc8dce --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "name": "rules_graalvm", + "version": "1.0.0", + "description": "GraalVM Rules for Bazel", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "lint": "pnpm run lint:check", + "lint:check": "prettier . --check", + "lint:format": "prettier . --write", + "prepare": "husky install", + "commitlint": "commitlint --edit" + }, + "keywords": [ + "graalvm", + "bazel", + "native-image" + ], + "author": "Sam Gammon (github.com/sgammon)", + "license": "Apache 2.0", + "lint-staged": { + "**/*": "prettier --write --ignore-unknown" + }, + "devDependencies": { + "@commitlint/cli": "17.7.1", + "@commitlint/config-conventional": "17.7.0", + "husky": "^8.0.3", + "lint-staged": "^14.0.0", + "prettier": "3.0.1", + "prettier-plugin-java": "2.2.0" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..abd25f29 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2150 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +devDependencies: + '@commitlint/cli': + specifier: 17.7.1 + version: registry.npmjs.org/@commitlint/cli@17.7.1 + '@commitlint/config-conventional': + specifier: 17.7.0 + version: registry.npmjs.org/@commitlint/config-conventional@17.7.0 + husky: + specifier: ^8.0.3 + version: registry.npmjs.org/husky@8.0.3 + lint-staged: + specifier: ^14.0.0 + version: registry.npmjs.org/lint-staged@14.0.0 + prettier: + specifier: 3.0.1 + version: registry.npmjs.org/prettier@3.0.1 + prettier-plugin-java: + specifier: 2.2.0 + version: registry.npmjs.org/prettier-plugin-java@2.2.0 + +packages: + + registry.npmjs.org/@babel/code-frame@7.22.10: + resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz} + name: '@babel/code-frame' + version: 7.22.10 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': registry.npmjs.org/@babel/highlight@7.22.10 + chalk: registry.npmjs.org/chalk@2.4.2 + dev: true + + registry.npmjs.org/@babel/helper-validator-identifier@7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz} + name: '@babel/helper-validator-identifier' + version: 7.22.5 + engines: {node: '>=6.9.0'} + dev: true + + registry.npmjs.org/@babel/highlight@7.22.10: + resolution: {integrity: sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz} + name: '@babel/highlight' + version: 7.22.10 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': registry.npmjs.org/@babel/helper-validator-identifier@7.22.5 + chalk: registry.npmjs.org/chalk@2.4.2 + js-tokens: registry.npmjs.org/js-tokens@4.0.0 + dev: true + + registry.npmjs.org/@commitlint/cli@17.7.1: + resolution: {integrity: sha512-BCm/AT06SNCQtvFv921iNhudOHuY16LswT0R3OeolVGLk8oP+Rk9TfQfgjH7QPMjhvp76bNqGFEcpKojxUNW1g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/cli/-/cli-17.7.1.tgz} + name: '@commitlint/cli' + version: 17.7.1 + engines: {node: '>=v14'} + hasBin: true + dependencies: + '@commitlint/format': registry.npmjs.org/@commitlint/format@17.4.4 + '@commitlint/lint': registry.npmjs.org/@commitlint/lint@17.7.0 + '@commitlint/load': registry.npmjs.org/@commitlint/load@17.7.1 + '@commitlint/read': registry.npmjs.org/@commitlint/read@17.5.1 + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + execa: registry.npmjs.org/execa@5.1.1 + lodash.isfunction: registry.npmjs.org/lodash.isfunction@3.0.9 + resolve-from: registry.npmjs.org/resolve-from@5.0.0 + resolve-global: registry.npmjs.org/resolve-global@1.0.0 + yargs: registry.npmjs.org/yargs@17.7.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + dev: true + + registry.npmjs.org/@commitlint/config-conventional@17.7.0: + resolution: {integrity: sha512-iicqh2o6et+9kWaqsQiEYZzfLbtoWv9uZl8kbI8EGfnc0HeGafQBF7AJ0ylN9D/2kj6txltsdyQs8+2fTMwWEw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.7.0.tgz} + name: '@commitlint/config-conventional' + version: 17.7.0 + engines: {node: '>=v14'} + dependencies: + conventional-changelog-conventionalcommits: registry.npmjs.org/conventional-changelog-conventionalcommits@6.1.0 + dev: true + + registry.npmjs.org/@commitlint/config-validator@17.6.7: + resolution: {integrity: sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.6.7.tgz} + name: '@commitlint/config-validator' + version: 17.6.7 + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + ajv: registry.npmjs.org/ajv@8.12.0 + dev: true + + registry.npmjs.org/@commitlint/ensure@17.6.7: + resolution: {integrity: sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.6.7.tgz} + name: '@commitlint/ensure' + version: 17.6.7 + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + lodash.camelcase: registry.npmjs.org/lodash.camelcase@4.3.0 + lodash.kebabcase: registry.npmjs.org/lodash.kebabcase@4.1.1 + lodash.snakecase: registry.npmjs.org/lodash.snakecase@4.1.1 + lodash.startcase: registry.npmjs.org/lodash.startcase@4.4.0 + lodash.upperfirst: registry.npmjs.org/lodash.upperfirst@4.3.1 + dev: true + + registry.npmjs.org/@commitlint/execute-rule@17.4.0: + resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz} + name: '@commitlint/execute-rule' + version: 17.4.0 + engines: {node: '>=v14'} + dev: true + + registry.npmjs.org/@commitlint/format@17.4.4: + resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/format/-/format-17.4.4.tgz} + name: '@commitlint/format' + version: 17.4.4 + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + chalk: registry.npmjs.org/chalk@4.1.2 + dev: true + + registry.npmjs.org/@commitlint/is-ignored@17.7.0: + resolution: {integrity: sha512-043rA7m45tyEfW7Zv2vZHF++176MLHH9h70fnPoYlB1slKBeKl8BwNIlnPg4xBdRBVNPaCqvXxWswx2GR4c9Hw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.7.0.tgz} + name: '@commitlint/is-ignored' + version: 17.7.0 + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + semver: registry.npmjs.org/semver@7.5.4 + dev: true + + registry.npmjs.org/@commitlint/lint@17.7.0: + resolution: {integrity: sha512-TCQihm7/uszA5z1Ux1vw+Nf3yHTgicus/+9HiUQk+kRSQawByxZNESeQoX9ujfVd3r4Sa+3fn0JQAguG4xvvbA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/lint/-/lint-17.7.0.tgz} + name: '@commitlint/lint' + version: 17.7.0 + engines: {node: '>=v14'} + dependencies: + '@commitlint/is-ignored': registry.npmjs.org/@commitlint/is-ignored@17.7.0 + '@commitlint/parse': registry.npmjs.org/@commitlint/parse@17.7.0 + '@commitlint/rules': registry.npmjs.org/@commitlint/rules@17.7.0 + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + dev: true + + registry.npmjs.org/@commitlint/load@17.7.1: + resolution: {integrity: sha512-S/QSOjE1ztdogYj61p6n3UbkUvweR17FQ0zDbNtoTLc+Hz7vvfS7ehoTMQ27hPSjVBpp7SzEcOQu081RLjKHJQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/load/-/load-17.7.1.tgz} + name: '@commitlint/load' + version: 17.7.1 + engines: {node: '>=v14'} + dependencies: + '@commitlint/config-validator': registry.npmjs.org/@commitlint/config-validator@17.6.7 + '@commitlint/execute-rule': registry.npmjs.org/@commitlint/execute-rule@17.4.0 + '@commitlint/resolve-extends': registry.npmjs.org/@commitlint/resolve-extends@17.6.7 + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + '@types/node': registry.npmjs.org/@types/node@20.4.7 + chalk: registry.npmjs.org/chalk@4.1.2 + cosmiconfig: registry.npmjs.org/cosmiconfig@8.2.0 + cosmiconfig-typescript-loader: registry.npmjs.org/cosmiconfig-typescript-loader@4.4.0(@types/node@20.4.7)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.6) + lodash.isplainobject: registry.npmjs.org/lodash.isplainobject@4.0.6 + lodash.merge: registry.npmjs.org/lodash.merge@4.6.2 + lodash.uniq: registry.npmjs.org/lodash.uniq@4.5.0 + resolve-from: registry.npmjs.org/resolve-from@5.0.0 + ts-node: registry.npmjs.org/ts-node@10.9.1(@types/node@20.4.7)(typescript@5.1.6) + typescript: registry.npmjs.org/typescript@5.1.6 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + dev: true + + registry.npmjs.org/@commitlint/message@17.4.2: + resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/message/-/message-17.4.2.tgz} + name: '@commitlint/message' + version: 17.4.2 + engines: {node: '>=v14'} + dev: true + + registry.npmjs.org/@commitlint/parse@17.7.0: + resolution: {integrity: sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/parse/-/parse-17.7.0.tgz} + name: '@commitlint/parse' + version: 17.7.0 + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + conventional-changelog-angular: registry.npmjs.org/conventional-changelog-angular@6.0.0 + conventional-commits-parser: registry.npmjs.org/conventional-commits-parser@4.0.0 + dev: true + + registry.npmjs.org/@commitlint/read@17.5.1: + resolution: {integrity: sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/read/-/read-17.5.1.tgz} + name: '@commitlint/read' + version: 17.5.1 + engines: {node: '>=v14'} + dependencies: + '@commitlint/top-level': registry.npmjs.org/@commitlint/top-level@17.4.0 + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + fs-extra: registry.npmjs.org/fs-extra@11.1.1 + git-raw-commits: registry.npmjs.org/git-raw-commits@2.0.11 + minimist: registry.npmjs.org/minimist@1.2.8 + dev: true + + registry.npmjs.org/@commitlint/resolve-extends@17.6.7: + resolution: {integrity: sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz} + name: '@commitlint/resolve-extends' + version: 17.6.7 + engines: {node: '>=v14'} + dependencies: + '@commitlint/config-validator': registry.npmjs.org/@commitlint/config-validator@17.6.7 + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + import-fresh: registry.npmjs.org/import-fresh@3.3.0 + lodash.mergewith: registry.npmjs.org/lodash.mergewith@4.6.2 + resolve-from: registry.npmjs.org/resolve-from@5.0.0 + resolve-global: registry.npmjs.org/resolve-global@1.0.0 + dev: true + + registry.npmjs.org/@commitlint/rules@17.7.0: + resolution: {integrity: sha512-J3qTh0+ilUE5folSaoK91ByOb8XeQjiGcdIdiB/8UT1/Rd1itKo0ju/eQVGyFzgTMYt8HrDJnGTmNWwcMR1rmA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/rules/-/rules-17.7.0.tgz} + name: '@commitlint/rules' + version: 17.7.0 + engines: {node: '>=v14'} + dependencies: + '@commitlint/ensure': registry.npmjs.org/@commitlint/ensure@17.6.7 + '@commitlint/message': registry.npmjs.org/@commitlint/message@17.4.2 + '@commitlint/to-lines': registry.npmjs.org/@commitlint/to-lines@17.4.0 + '@commitlint/types': registry.npmjs.org/@commitlint/types@17.4.4 + execa: registry.npmjs.org/execa@5.1.1 + dev: true + + registry.npmjs.org/@commitlint/to-lines@17.4.0: + resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.4.0.tgz} + name: '@commitlint/to-lines' + version: 17.4.0 + engines: {node: '>=v14'} + dev: true + + registry.npmjs.org/@commitlint/top-level@17.4.0: + resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.4.0.tgz} + name: '@commitlint/top-level' + version: 17.4.0 + engines: {node: '>=v14'} + dependencies: + find-up: registry.npmjs.org/find-up@5.0.0 + dev: true + + registry.npmjs.org/@commitlint/types@17.4.4: + resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz} + name: '@commitlint/types' + version: 17.4.4 + engines: {node: '>=v14'} + dependencies: + chalk: registry.npmjs.org/chalk@4.1.2 + dev: true + + registry.npmjs.org/@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz} + name: '@cspotcode/source-map-support' + version: 0.8.1 + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': registry.npmjs.org/@jridgewell/trace-mapping@0.3.9 + dev: true + + registry.npmjs.org/@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz} + name: '@jridgewell/resolve-uri' + version: 3.1.1 + engines: {node: '>=6.0.0'} + dev: true + + registry.npmjs.org/@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz} + name: '@jridgewell/sourcemap-codec' + version: 1.4.15 + dev: true + + registry.npmjs.org/@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz} + name: '@jridgewell/trace-mapping' + version: 0.3.9 + dependencies: + '@jridgewell/resolve-uri': registry.npmjs.org/@jridgewell/resolve-uri@3.1.1 + '@jridgewell/sourcemap-codec': registry.npmjs.org/@jridgewell/sourcemap-codec@1.4.15 + dev: true + + registry.npmjs.org/@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz} + name: '@tsconfig/node10' + version: 1.0.9 + dev: true + + registry.npmjs.org/@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz} + name: '@tsconfig/node12' + version: 1.0.11 + dev: true + + registry.npmjs.org/@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz} + name: '@tsconfig/node14' + version: 1.0.3 + dev: true + + registry.npmjs.org/@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz} + name: '@tsconfig/node16' + version: 1.0.4 + dev: true + + registry.npmjs.org/@types/minimist@1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz} + name: '@types/minimist' + version: 1.2.2 + dev: true + + registry.npmjs.org/@types/node@20.4.7: + resolution: {integrity: sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@types/node/-/node-20.4.7.tgz} + name: '@types/node' + version: 20.4.7 + dev: true + + registry.npmjs.org/@types/normalize-package-data@2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz} + name: '@types/normalize-package-data' + version: 2.4.1 + dev: true + + registry.npmjs.org/JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz} + name: JSONStream + version: 1.3.5 + hasBin: true + dependencies: + jsonparse: registry.npmjs.org/jsonparse@1.3.1 + through: registry.npmjs.org/through@2.3.8 + dev: true + + registry.npmjs.org/acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz} + name: acorn-walk + version: 8.2.0 + engines: {node: '>=0.4.0'} + dev: true + + registry.npmjs.org/acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz} + name: acorn + version: 8.10.0 + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + registry.npmjs.org/ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz} + name: ajv + version: 8.12.0 + dependencies: + fast-deep-equal: registry.npmjs.org/fast-deep-equal@3.1.3 + json-schema-traverse: registry.npmjs.org/json-schema-traverse@1.0.0 + require-from-string: registry.npmjs.org/require-from-string@2.0.2 + uri-js: registry.npmjs.org/uri-js@4.4.1 + dev: true + + registry.npmjs.org/ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz} + name: ansi-escapes + version: 5.0.0 + engines: {node: '>=12'} + dependencies: + type-fest: registry.npmjs.org/type-fest@1.4.0 + dev: true + + registry.npmjs.org/ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz} + name: ansi-regex + version: 5.0.1 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz} + name: ansi-regex + version: 6.0.1 + engines: {node: '>=12'} + dev: true + + registry.npmjs.org/ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz} + name: ansi-styles + version: 3.2.1 + engines: {node: '>=4'} + dependencies: + color-convert: registry.npmjs.org/color-convert@1.9.3 + dev: true + + registry.npmjs.org/ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz} + name: ansi-styles + version: 4.3.0 + engines: {node: '>=8'} + dependencies: + color-convert: registry.npmjs.org/color-convert@2.0.1 + dev: true + + registry.npmjs.org/ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz} + name: ansi-styles + version: 6.2.1 + engines: {node: '>=12'} + dev: true + + registry.npmjs.org/arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/arg/-/arg-4.1.3.tgz} + name: arg + version: 4.1.3 + dev: true + + registry.npmjs.org/argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz} + name: argparse + version: 2.0.1 + dev: true + + registry.npmjs.org/array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz} + name: array-ify + version: 1.0.0 + dev: true + + registry.npmjs.org/arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz} + name: arrify + version: 1.0.1 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmjs.org/braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/braces/-/braces-3.0.2.tgz} + name: braces + version: 3.0.2 + engines: {node: '>=8'} + dependencies: + fill-range: registry.npmjs.org/fill-range@7.0.1 + dev: true + + registry.npmjs.org/callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz} + name: callsites + version: 3.1.0 + engines: {node: '>=6'} + dev: true + + registry.npmjs.org/camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz} + name: camelcase-keys + version: 6.2.2 + engines: {node: '>=8'} + dependencies: + camelcase: registry.npmjs.org/camelcase@5.3.1 + map-obj: registry.npmjs.org/map-obj@4.3.0 + quick-lru: registry.npmjs.org/quick-lru@4.0.1 + dev: true + + registry.npmjs.org/camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz} + name: camelcase + version: 5.3.1 + engines: {node: '>=6'} + dev: true + + registry.npmjs.org/chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz} + name: chalk + version: 2.4.2 + engines: {node: '>=4'} + dependencies: + ansi-styles: registry.npmjs.org/ansi-styles@3.2.1 + escape-string-regexp: registry.npmjs.org/escape-string-regexp@1.0.5 + supports-color: registry.npmjs.org/supports-color@5.5.0 + dev: true + + registry.npmjs.org/chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz} + name: chalk + version: 4.1.2 + engines: {node: '>=10'} + dependencies: + ansi-styles: registry.npmjs.org/ansi-styles@4.3.0 + supports-color: registry.npmjs.org/supports-color@7.2.0 + dev: true + + registry.npmjs.org/chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz} + name: chalk + version: 5.3.0 + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + registry.npmjs.org/chevrotain@6.5.0: + resolution: {integrity: sha512-BwqQ/AgmKJ8jcMEjaSnfMybnKMgGTrtDKowfTP3pX4jwVy0kNjRsT/AP6h+wC3+3NC+X8X15VWBnTCQlX+wQFg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz} + name: chevrotain + version: 6.5.0 + dependencies: + regexp-to-ast: registry.npmjs.org/regexp-to-ast@0.4.0 + dev: true + + registry.npmjs.org/cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz} + name: cli-cursor + version: 4.0.0 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + restore-cursor: registry.npmjs.org/restore-cursor@4.0.0 + dev: true + + registry.npmjs.org/cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz} + name: cli-truncate + version: 3.1.0 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + slice-ansi: registry.npmjs.org/slice-ansi@5.0.0 + string-width: registry.npmjs.org/string-width@5.1.2 + dev: true + + registry.npmjs.org/cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz} + name: cliui + version: 8.0.1 + engines: {node: '>=12'} + dependencies: + string-width: registry.npmjs.org/string-width@4.2.3 + strip-ansi: registry.npmjs.org/strip-ansi@6.0.1 + wrap-ansi: registry.npmjs.org/wrap-ansi@7.0.0 + dev: true + + registry.npmjs.org/color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz} + name: color-convert + version: 1.9.3 + dependencies: + color-name: registry.npmjs.org/color-name@1.1.3 + dev: true + + registry.npmjs.org/color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz} + name: color-convert + version: 2.0.1 + engines: {node: '>=7.0.0'} + dependencies: + color-name: registry.npmjs.org/color-name@1.1.4 + dev: true + + registry.npmjs.org/color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz} + name: color-name + version: 1.1.3 + dev: true + + registry.npmjs.org/color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz} + name: color-name + version: 1.1.4 + dev: true + + registry.npmjs.org/colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz} + name: colorette + version: 2.0.20 + dev: true + + registry.npmjs.org/commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/commander/-/commander-11.0.0.tgz} + name: commander + version: 11.0.0 + engines: {node: '>=16'} + dev: true + + registry.npmjs.org/compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz} + name: compare-func + version: 2.0.0 + dependencies: + array-ify: registry.npmjs.org/array-ify@1.0.0 + dot-prop: registry.npmjs.org/dot-prop@5.3.0 + dev: true + + registry.npmjs.org/conventional-changelog-angular@6.0.0: + resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz} + name: conventional-changelog-angular + version: 6.0.0 + engines: {node: '>=14'} + dependencies: + compare-func: registry.npmjs.org/compare-func@2.0.0 + dev: true + + registry.npmjs.org/conventional-changelog-conventionalcommits@6.1.0: + resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz} + name: conventional-changelog-conventionalcommits + version: 6.1.0 + engines: {node: '>=14'} + dependencies: + compare-func: registry.npmjs.org/compare-func@2.0.0 + dev: true + + registry.npmjs.org/conventional-commits-parser@4.0.0: + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz} + name: conventional-commits-parser + version: 4.0.0 + engines: {node: '>=14'} + hasBin: true + dependencies: + JSONStream: registry.npmjs.org/JSONStream@1.3.5 + is-text-path: registry.npmjs.org/is-text-path@1.0.1 + meow: registry.npmjs.org/meow@8.1.2 + split2: registry.npmjs.org/split2@3.2.2 + dev: true + + registry.npmjs.org/cosmiconfig-typescript-loader@4.4.0(@types/node@20.4.7)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.6): + resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz} + id: registry.npmjs.org/cosmiconfig-typescript-loader/4.4.0 + name: cosmiconfig-typescript-loader + version: 4.4.0 + engines: {node: '>=v14.21.3'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' + typescript: '>=4' + dependencies: + '@types/node': registry.npmjs.org/@types/node@20.4.7 + cosmiconfig: registry.npmjs.org/cosmiconfig@8.2.0 + ts-node: registry.npmjs.org/ts-node@10.9.1(@types/node@20.4.7)(typescript@5.1.6) + typescript: registry.npmjs.org/typescript@5.1.6 + dev: true + + registry.npmjs.org/cosmiconfig@8.2.0: + resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz} + name: cosmiconfig + version: 8.2.0 + engines: {node: '>=14'} + dependencies: + import-fresh: registry.npmjs.org/import-fresh@3.3.0 + js-yaml: registry.npmjs.org/js-yaml@4.1.0 + parse-json: registry.npmjs.org/parse-json@5.2.0 + path-type: registry.npmjs.org/path-type@4.0.0 + dev: true + + registry.npmjs.org/create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz} + name: create-require + version: 1.1.1 + dev: true + + registry.npmjs.org/cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz} + name: cross-spawn + version: 7.0.3 + engines: {node: '>= 8'} + dependencies: + path-key: registry.npmjs.org/path-key@3.1.1 + shebang-command: registry.npmjs.org/shebang-command@2.0.0 + which: registry.npmjs.org/which@2.0.2 + dev: true + + registry.npmjs.org/dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz} + name: dargs + version: 7.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/debug/-/debug-4.3.4.tgz} + name: debug + version: 4.3.4 + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: registry.npmjs.org/ms@2.1.2 + dev: true + + registry.npmjs.org/decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz} + name: decamelize-keys + version: 1.1.1 + engines: {node: '>=0.10.0'} + dependencies: + decamelize: registry.npmjs.org/decamelize@1.2.0 + map-obj: registry.npmjs.org/map-obj@1.0.1 + dev: true + + registry.npmjs.org/decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz} + name: decamelize + version: 1.2.0 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmjs.org/diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/diff/-/diff-4.0.2.tgz} + name: diff + version: 4.0.2 + engines: {node: '>=0.3.1'} + dev: true + + registry.npmjs.org/dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz} + name: dot-prop + version: 5.3.0 + engines: {node: '>=8'} + dependencies: + is-obj: registry.npmjs.org/is-obj@2.0.0 + dev: true + + registry.npmjs.org/eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz} + name: eastasianwidth + version: 0.2.0 + dev: true + + registry.npmjs.org/emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz} + name: emoji-regex + version: 8.0.0 + dev: true + + registry.npmjs.org/emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz} + name: emoji-regex + version: 9.2.2 + dev: true + + registry.npmjs.org/error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz} + name: error-ex + version: 1.3.2 + dependencies: + is-arrayish: registry.npmjs.org/is-arrayish@0.2.1 + dev: true + + registry.npmjs.org/escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz} + name: escalade + version: 3.1.1 + engines: {node: '>=6'} + dev: true + + registry.npmjs.org/escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz} + name: escape-string-regexp + version: 1.0.5 + engines: {node: '>=0.8.0'} + dev: true + + registry.npmjs.org/eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz} + name: eventemitter3 + version: 5.0.1 + dev: true + + registry.npmjs.org/execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/execa/-/execa-5.1.1.tgz} + name: execa + version: 5.1.1 + engines: {node: '>=10'} + dependencies: + cross-spawn: registry.npmjs.org/cross-spawn@7.0.3 + get-stream: registry.npmjs.org/get-stream@6.0.1 + human-signals: registry.npmjs.org/human-signals@2.1.0 + is-stream: registry.npmjs.org/is-stream@2.0.1 + merge-stream: registry.npmjs.org/merge-stream@2.0.0 + npm-run-path: registry.npmjs.org/npm-run-path@4.0.1 + onetime: registry.npmjs.org/onetime@5.1.2 + signal-exit: registry.npmjs.org/signal-exit@3.0.7 + strip-final-newline: registry.npmjs.org/strip-final-newline@2.0.0 + dev: true + + registry.npmjs.org/execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/execa/-/execa-7.2.0.tgz} + name: execa + version: 7.2.0 + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: registry.npmjs.org/cross-spawn@7.0.3 + get-stream: registry.npmjs.org/get-stream@6.0.1 + human-signals: registry.npmjs.org/human-signals@4.3.1 + is-stream: registry.npmjs.org/is-stream@3.0.0 + merge-stream: registry.npmjs.org/merge-stream@2.0.0 + npm-run-path: registry.npmjs.org/npm-run-path@5.1.0 + onetime: registry.npmjs.org/onetime@6.0.0 + signal-exit: registry.npmjs.org/signal-exit@3.0.7 + strip-final-newline: registry.npmjs.org/strip-final-newline@3.0.0 + dev: true + + registry.npmjs.org/fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz} + name: fast-deep-equal + version: 3.1.3 + dev: true + + registry.npmjs.org/fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz} + name: fill-range + version: 7.0.1 + engines: {node: '>=8'} + dependencies: + to-regex-range: registry.npmjs.org/to-regex-range@5.0.1 + dev: true + + registry.npmjs.org/find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz} + name: find-up + version: 4.1.0 + engines: {node: '>=8'} + dependencies: + locate-path: registry.npmjs.org/locate-path@5.0.0 + path-exists: registry.npmjs.org/path-exists@4.0.0 + dev: true + + registry.npmjs.org/find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz} + name: find-up + version: 5.0.0 + engines: {node: '>=10'} + dependencies: + locate-path: registry.npmjs.org/locate-path@6.0.0 + path-exists: registry.npmjs.org/path-exists@4.0.0 + dev: true + + registry.npmjs.org/fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz} + name: fs-extra + version: 11.1.1 + engines: {node: '>=14.14'} + dependencies: + graceful-fs: registry.npmjs.org/graceful-fs@4.2.11 + jsonfile: registry.npmjs.org/jsonfile@6.1.0 + universalify: registry.npmjs.org/universalify@2.0.0 + dev: true + + registry.npmjs.org/function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz} + name: function-bind + version: 1.1.1 + dev: true + + registry.npmjs.org/get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz} + name: get-caller-file + version: 2.0.5 + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + registry.npmjs.org/get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz} + name: get-stream + version: 6.0.1 + engines: {node: '>=10'} + dev: true + + registry.npmjs.org/git-raw-commits@2.0.11: + resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz} + name: git-raw-commits + version: 2.0.11 + engines: {node: '>=10'} + hasBin: true + dependencies: + dargs: registry.npmjs.org/dargs@7.0.0 + lodash: registry.npmjs.org/lodash@4.17.21 + meow: registry.npmjs.org/meow@8.1.2 + split2: registry.npmjs.org/split2@3.2.2 + through2: registry.npmjs.org/through2@4.0.2 + dev: true + + registry.npmjs.org/global-dirs@0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz} + name: global-dirs + version: 0.1.1 + engines: {node: '>=4'} + dependencies: + ini: registry.npmjs.org/ini@1.3.8 + dev: true + + registry.npmjs.org/graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz} + name: graceful-fs + version: 4.2.11 + dev: true + + registry.npmjs.org/hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz} + name: hard-rejection + version: 2.1.0 + engines: {node: '>=6'} + dev: true + + registry.npmjs.org/has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz} + name: has-flag + version: 3.0.0 + engines: {node: '>=4'} + dev: true + + registry.npmjs.org/has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz} + name: has-flag + version: 4.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/has/-/has-1.0.3.tgz} + name: has + version: 1.0.3 + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: registry.npmjs.org/function-bind@1.1.1 + dev: true + + registry.npmjs.org/hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz} + name: hosted-git-info + version: 2.8.9 + dev: true + + registry.npmjs.org/hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz} + name: hosted-git-info + version: 4.1.0 + engines: {node: '>=10'} + dependencies: + lru-cache: registry.npmjs.org/lru-cache@6.0.0 + dev: true + + registry.npmjs.org/human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz} + name: human-signals + version: 2.1.0 + engines: {node: '>=10.17.0'} + dev: true + + registry.npmjs.org/human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz} + name: human-signals + version: 4.3.1 + engines: {node: '>=14.18.0'} + dev: true + + registry.npmjs.org/husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/husky/-/husky-8.0.3.tgz} + name: husky + version: 8.0.3 + engines: {node: '>=14'} + hasBin: true + dev: true + + registry.npmjs.org/import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz} + name: import-fresh + version: 3.3.0 + engines: {node: '>=6'} + dependencies: + parent-module: registry.npmjs.org/parent-module@1.0.1 + resolve-from: registry.npmjs.org/resolve-from@4.0.0 + dev: true + + registry.npmjs.org/indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz} + name: indent-string + version: 4.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz} + name: inherits + version: 2.0.4 + dev: true + + registry.npmjs.org/ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz} + name: ini + version: 1.3.8 + dev: true + + registry.npmjs.org/is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz} + name: is-arrayish + version: 0.2.1 + dev: true + + registry.npmjs.org/is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz} + name: is-core-module + version: 2.13.0 + dependencies: + has: registry.npmjs.org/has@1.0.3 + dev: true + + registry.npmjs.org/is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz} + name: is-fullwidth-code-point + version: 3.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz} + name: is-fullwidth-code-point + version: 4.0.0 + engines: {node: '>=12'} + dev: true + + registry.npmjs.org/is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz} + name: is-number + version: 7.0.0 + engines: {node: '>=0.12.0'} + dev: true + + registry.npmjs.org/is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz} + name: is-obj + version: 2.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz} + name: is-plain-obj + version: 1.1.0 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmjs.org/is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz} + name: is-stream + version: 2.0.1 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz} + name: is-stream + version: 3.0.0 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + registry.npmjs.org/is-text-path@1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz} + name: is-text-path + version: 1.0.1 + engines: {node: '>=0.10.0'} + dependencies: + text-extensions: registry.npmjs.org/text-extensions@1.9.0 + dev: true + + registry.npmjs.org/isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz} + name: isexe + version: 2.0.0 + dev: true + + registry.npmjs.org/java-parser@2.0.4: + resolution: {integrity: sha512-8dzy+3lJdSakeXgYArzqJCTy2PuH4iW1WjbhPsDaiYDXPeeroksy0s1/TWoc9Zw8zWzS3x8soanHh0AThwwqrQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/java-parser/-/java-parser-2.0.4.tgz} + name: java-parser + version: 2.0.4 + dependencies: + chevrotain: registry.npmjs.org/chevrotain@6.5.0 + lodash: registry.npmjs.org/lodash@4.17.21 + dev: true + + registry.npmjs.org/js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz} + name: js-tokens + version: 4.0.0 + dev: true + + registry.npmjs.org/js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz} + name: js-yaml + version: 4.1.0 + hasBin: true + dependencies: + argparse: registry.npmjs.org/argparse@2.0.1 + dev: true + + registry.npmjs.org/json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz} + name: json-parse-even-better-errors + version: 2.3.1 + dev: true + + registry.npmjs.org/json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz} + name: json-schema-traverse + version: 1.0.0 + dev: true + + registry.npmjs.org/jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz} + name: jsonfile + version: 6.1.0 + dependencies: + universalify: registry.npmjs.org/universalify@2.0.0 + optionalDependencies: + graceful-fs: registry.npmjs.org/graceful-fs@4.2.11 + dev: true + + registry.npmjs.org/jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz} + name: jsonparse + version: 1.3.1 + engines: {'0': node >= 0.2.0} + dev: true + + registry.npmjs.org/kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz} + name: kind-of + version: 6.0.3 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmjs.org/lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz} + name: lilconfig + version: 2.1.0 + engines: {node: '>=10'} + dev: true + + registry.npmjs.org/lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz} + name: lines-and-columns + version: 1.2.4 + dev: true + + registry.npmjs.org/lint-staged@14.0.0: + resolution: {integrity: sha512-0tLf0pqZYkar/wu3nTctk4rVIG+d7PanDYv4/IQR4qwdqfQkTDziLRFnqMcLuLBTuUqmcLwsHPD2EjQ18d/oaA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.0.tgz} + name: lint-staged + version: 14.0.0 + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + chalk: registry.npmjs.org/chalk@5.3.0 + commander: registry.npmjs.org/commander@11.0.0 + debug: registry.npmjs.org/debug@4.3.4 + execa: registry.npmjs.org/execa@7.2.0 + lilconfig: registry.npmjs.org/lilconfig@2.1.0 + listr2: registry.npmjs.org/listr2@6.6.1 + micromatch: registry.npmjs.org/micromatch@4.0.5 + pidtree: registry.npmjs.org/pidtree@0.6.0 + string-argv: registry.npmjs.org/string-argv@0.3.2 + yaml: registry.npmjs.org/yaml@2.3.1 + transitivePeerDependencies: + - enquirer + - supports-color + dev: true + + registry.npmjs.org/listr2@6.6.1: + resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz} + name: listr2 + version: 6.6.1 + engines: {node: '>=16.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: registry.npmjs.org/cli-truncate@3.1.0 + colorette: registry.npmjs.org/colorette@2.0.20 + eventemitter3: registry.npmjs.org/eventemitter3@5.0.1 + log-update: registry.npmjs.org/log-update@5.0.1 + rfdc: registry.npmjs.org/rfdc@1.3.0 + wrap-ansi: registry.npmjs.org/wrap-ansi@8.1.0 + dev: true + + registry.npmjs.org/locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz} + name: locate-path + version: 5.0.0 + engines: {node: '>=8'} + dependencies: + p-locate: registry.npmjs.org/p-locate@4.1.0 + dev: true + + registry.npmjs.org/locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz} + name: locate-path + version: 6.0.0 + engines: {node: '>=10'} + dependencies: + p-locate: registry.npmjs.org/p-locate@5.0.0 + dev: true + + registry.npmjs.org/lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz} + name: lodash.camelcase + version: 4.3.0 + dev: true + + registry.npmjs.org/lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz} + name: lodash.isfunction + version: 3.0.9 + dev: true + + registry.npmjs.org/lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz} + name: lodash.isplainobject + version: 4.0.6 + dev: true + + registry.npmjs.org/lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz} + name: lodash.kebabcase + version: 4.1.1 + dev: true + + registry.npmjs.org/lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz} + name: lodash.merge + version: 4.6.2 + dev: true + + registry.npmjs.org/lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz} + name: lodash.mergewith + version: 4.6.2 + dev: true + + registry.npmjs.org/lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz} + name: lodash.snakecase + version: 4.1.1 + dev: true + + registry.npmjs.org/lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz} + name: lodash.startcase + version: 4.4.0 + dev: true + + registry.npmjs.org/lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz} + name: lodash.uniq + version: 4.5.0 + dev: true + + registry.npmjs.org/lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz} + name: lodash.upperfirst + version: 4.3.1 + dev: true + + registry.npmjs.org/lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz} + name: lodash + version: 4.17.21 + dev: true + + registry.npmjs.org/log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz} + name: log-update + version: 5.0.1 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + ansi-escapes: registry.npmjs.org/ansi-escapes@5.0.0 + cli-cursor: registry.npmjs.org/cli-cursor@4.0.0 + slice-ansi: registry.npmjs.org/slice-ansi@5.0.0 + strip-ansi: registry.npmjs.org/strip-ansi@7.1.0 + wrap-ansi: registry.npmjs.org/wrap-ansi@8.1.0 + dev: true + + registry.npmjs.org/lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz} + name: lru-cache + version: 6.0.0 + engines: {node: '>=10'} + dependencies: + yallist: registry.npmjs.org/yallist@4.0.0 + dev: true + + registry.npmjs.org/make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz} + name: make-error + version: 1.3.6 + dev: true + + registry.npmjs.org/map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz} + name: map-obj + version: 1.0.1 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmjs.org/map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz} + name: map-obj + version: 4.3.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/meow@8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/meow/-/meow-8.1.2.tgz} + name: meow + version: 8.1.2 + engines: {node: '>=10'} + dependencies: + '@types/minimist': registry.npmjs.org/@types/minimist@1.2.2 + camelcase-keys: registry.npmjs.org/camelcase-keys@6.2.2 + decamelize-keys: registry.npmjs.org/decamelize-keys@1.1.1 + hard-rejection: registry.npmjs.org/hard-rejection@2.1.0 + minimist-options: registry.npmjs.org/minimist-options@4.1.0 + normalize-package-data: registry.npmjs.org/normalize-package-data@3.0.3 + read-pkg-up: registry.npmjs.org/read-pkg-up@7.0.1 + redent: registry.npmjs.org/redent@3.0.0 + trim-newlines: registry.npmjs.org/trim-newlines@3.0.1 + type-fest: registry.npmjs.org/type-fest@0.18.1 + yargs-parser: registry.npmjs.org/yargs-parser@20.2.9 + dev: true + + registry.npmjs.org/merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz} + name: merge-stream + version: 2.0.0 + dev: true + + registry.npmjs.org/micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz} + name: micromatch + version: 4.0.5 + engines: {node: '>=8.6'} + dependencies: + braces: registry.npmjs.org/braces@3.0.2 + picomatch: registry.npmjs.org/picomatch@2.3.1 + dev: true + + registry.npmjs.org/mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz} + name: mimic-fn + version: 2.1.0 + engines: {node: '>=6'} + dev: true + + registry.npmjs.org/mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz} + name: mimic-fn + version: 4.0.0 + engines: {node: '>=12'} + dev: true + + registry.npmjs.org/min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz} + name: min-indent + version: 1.0.1 + engines: {node: '>=4'} + dev: true + + registry.npmjs.org/minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz} + name: minimist-options + version: 4.1.0 + engines: {node: '>= 6'} + dependencies: + arrify: registry.npmjs.org/arrify@1.0.1 + is-plain-obj: registry.npmjs.org/is-plain-obj@1.1.0 + kind-of: registry.npmjs.org/kind-of@6.0.3 + dev: true + + registry.npmjs.org/minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz} + name: minimist + version: 1.2.8 + dev: true + + registry.npmjs.org/ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/ms/-/ms-2.1.2.tgz} + name: ms + version: 2.1.2 + dev: true + + registry.npmjs.org/normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz} + name: normalize-package-data + version: 2.5.0 + dependencies: + hosted-git-info: registry.npmjs.org/hosted-git-info@2.8.9 + resolve: registry.npmjs.org/resolve@1.22.4 + semver: registry.npmjs.org/semver@5.7.2 + validate-npm-package-license: registry.npmjs.org/validate-npm-package-license@3.0.4 + dev: true + + registry.npmjs.org/normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz} + name: normalize-package-data + version: 3.0.3 + engines: {node: '>=10'} + dependencies: + hosted-git-info: registry.npmjs.org/hosted-git-info@4.1.0 + is-core-module: registry.npmjs.org/is-core-module@2.13.0 + semver: registry.npmjs.org/semver@7.5.4 + validate-npm-package-license: registry.npmjs.org/validate-npm-package-license@3.0.4 + dev: true + + registry.npmjs.org/npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz} + name: npm-run-path + version: 4.0.1 + engines: {node: '>=8'} + dependencies: + path-key: registry.npmjs.org/path-key@3.1.1 + dev: true + + registry.npmjs.org/npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz} + name: npm-run-path + version: 5.1.0 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: registry.npmjs.org/path-key@4.0.0 + dev: true + + registry.npmjs.org/onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz} + name: onetime + version: 5.1.2 + engines: {node: '>=6'} + dependencies: + mimic-fn: registry.npmjs.org/mimic-fn@2.1.0 + dev: true + + registry.npmjs.org/onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz} + name: onetime + version: 6.0.0 + engines: {node: '>=12'} + dependencies: + mimic-fn: registry.npmjs.org/mimic-fn@4.0.0 + dev: true + + registry.npmjs.org/p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz} + name: p-limit + version: 2.3.0 + engines: {node: '>=6'} + dependencies: + p-try: registry.npmjs.org/p-try@2.2.0 + dev: true + + registry.npmjs.org/p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz} + name: p-limit + version: 3.1.0 + engines: {node: '>=10'} + dependencies: + yocto-queue: registry.npmjs.org/yocto-queue@0.1.0 + dev: true + + registry.npmjs.org/p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz} + name: p-locate + version: 4.1.0 + engines: {node: '>=8'} + dependencies: + p-limit: registry.npmjs.org/p-limit@2.3.0 + dev: true + + registry.npmjs.org/p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz} + name: p-locate + version: 5.0.0 + engines: {node: '>=10'} + dependencies: + p-limit: registry.npmjs.org/p-limit@3.1.0 + dev: true + + registry.npmjs.org/p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz} + name: p-try + version: 2.2.0 + engines: {node: '>=6'} + dev: true + + registry.npmjs.org/parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz} + name: parent-module + version: 1.0.1 + engines: {node: '>=6'} + dependencies: + callsites: registry.npmjs.org/callsites@3.1.0 + dev: true + + registry.npmjs.org/parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz} + name: parse-json + version: 5.2.0 + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': registry.npmjs.org/@babel/code-frame@7.22.10 + error-ex: registry.npmjs.org/error-ex@1.3.2 + json-parse-even-better-errors: registry.npmjs.org/json-parse-even-better-errors@2.3.1 + lines-and-columns: registry.npmjs.org/lines-and-columns@1.2.4 + dev: true + + registry.npmjs.org/path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz} + name: path-exists + version: 4.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz} + name: path-key + version: 3.1.1 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz} + name: path-key + version: 4.0.0 + engines: {node: '>=12'} + dev: true + + registry.npmjs.org/path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz} + name: path-parse + version: 1.0.7 + dev: true + + registry.npmjs.org/path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz} + name: path-type + version: 4.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz} + name: picomatch + version: 2.3.1 + engines: {node: '>=8.6'} + dev: true + + registry.npmjs.org/pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz} + name: pidtree + version: 0.6.0 + engines: {node: '>=0.10'} + hasBin: true + dev: true + + registry.npmjs.org/prettier-plugin-java@2.2.0: + resolution: {integrity: sha512-AMSWVU6Fmo6H0jbSyE50zVEeZgKcUrIscd/gpTBzUnCHDO/vCk0KUVi/arAenwMEfzMkTp36qCsylJcpjM+dWw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-2.2.0.tgz} + name: prettier-plugin-java + version: 2.2.0 + dependencies: + java-parser: registry.npmjs.org/java-parser@2.0.4 + lodash: registry.npmjs.org/lodash@4.17.21 + prettier: registry.npmjs.org/prettier@3.0.0 + dev: true + + registry.npmjs.org/prettier@3.0.0: + resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz} + name: prettier + version: 3.0.0 + engines: {node: '>=14'} + hasBin: true + dev: true + + registry.npmjs.org/prettier@3.0.1: + resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/prettier/-/prettier-3.0.1.tgz} + name: prettier + version: 3.0.1 + engines: {node: '>=14'} + hasBin: true + dev: true + + registry.npmjs.org/punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz} + name: punycode + version: 2.3.0 + engines: {node: '>=6'} + dev: true + + registry.npmjs.org/quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz} + name: quick-lru + version: 4.0.1 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz} + name: read-pkg-up + version: 7.0.1 + engines: {node: '>=8'} + dependencies: + find-up: registry.npmjs.org/find-up@4.1.0 + read-pkg: registry.npmjs.org/read-pkg@5.2.0 + type-fest: registry.npmjs.org/type-fest@0.8.1 + dev: true + + registry.npmjs.org/read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz} + name: read-pkg + version: 5.2.0 + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': registry.npmjs.org/@types/normalize-package-data@2.4.1 + normalize-package-data: registry.npmjs.org/normalize-package-data@2.5.0 + parse-json: registry.npmjs.org/parse-json@5.2.0 + type-fest: registry.npmjs.org/type-fest@0.6.0 + dev: true + + registry.npmjs.org/readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz} + name: readable-stream + version: 3.6.2 + engines: {node: '>= 6'} + dependencies: + inherits: registry.npmjs.org/inherits@2.0.4 + string_decoder: registry.npmjs.org/string_decoder@1.3.0 + util-deprecate: registry.npmjs.org/util-deprecate@1.0.2 + dev: true + + registry.npmjs.org/redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/redent/-/redent-3.0.0.tgz} + name: redent + version: 3.0.0 + engines: {node: '>=8'} + dependencies: + indent-string: registry.npmjs.org/indent-string@4.0.0 + strip-indent: registry.npmjs.org/strip-indent@3.0.0 + dev: true + + registry.npmjs.org/regexp-to-ast@0.4.0: + resolution: {integrity: sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz} + name: regexp-to-ast + version: 0.4.0 + dev: true + + registry.npmjs.org/require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz} + name: require-directory + version: 2.1.1 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmjs.org/require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz} + name: require-from-string + version: 2.0.2 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmjs.org/resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz} + name: resolve-from + version: 4.0.0 + engines: {node: '>=4'} + dev: true + + registry.npmjs.org/resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz} + name: resolve-from + version: 5.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/resolve-global@1.0.0: + resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz} + name: resolve-global + version: 1.0.0 + engines: {node: '>=8'} + dependencies: + global-dirs: registry.npmjs.org/global-dirs@0.1.1 + dev: true + + registry.npmjs.org/resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz} + name: resolve + version: 1.22.4 + hasBin: true + dependencies: + is-core-module: registry.npmjs.org/is-core-module@2.13.0 + path-parse: registry.npmjs.org/path-parse@1.0.7 + supports-preserve-symlinks-flag: registry.npmjs.org/supports-preserve-symlinks-flag@1.0.0 + dev: true + + registry.npmjs.org/restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz} + name: restore-cursor + version: 4.0.0 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: registry.npmjs.org/onetime@5.1.2 + signal-exit: registry.npmjs.org/signal-exit@3.0.7 + dev: true + + registry.npmjs.org/rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz} + name: rfdc + version: 1.3.0 + dev: true + + registry.npmjs.org/safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz} + name: safe-buffer + version: 5.2.1 + dev: true + + registry.npmjs.org/semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/semver/-/semver-5.7.2.tgz} + name: semver + version: 5.7.2 + hasBin: true + dev: true + + registry.npmjs.org/semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/semver/-/semver-7.5.4.tgz} + name: semver + version: 7.5.4 + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: registry.npmjs.org/lru-cache@6.0.0 + dev: true + + registry.npmjs.org/shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz} + name: shebang-command + version: 2.0.0 + engines: {node: '>=8'} + dependencies: + shebang-regex: registry.npmjs.org/shebang-regex@3.0.0 + dev: true + + registry.npmjs.org/shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz} + name: shebang-regex + version: 3.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz} + name: signal-exit + version: 3.0.7 + dev: true + + registry.npmjs.org/slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz} + name: slice-ansi + version: 5.0.0 + engines: {node: '>=12'} + dependencies: + ansi-styles: registry.npmjs.org/ansi-styles@6.2.1 + is-fullwidth-code-point: registry.npmjs.org/is-fullwidth-code-point@4.0.0 + dev: true + + registry.npmjs.org/spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz} + name: spdx-correct + version: 3.2.0 + dependencies: + spdx-expression-parse: registry.npmjs.org/spdx-expression-parse@3.0.1 + spdx-license-ids: registry.npmjs.org/spdx-license-ids@3.0.13 + dev: true + + registry.npmjs.org/spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz} + name: spdx-exceptions + version: 2.3.0 + dev: true + + registry.npmjs.org/spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz} + name: spdx-expression-parse + version: 3.0.1 + dependencies: + spdx-exceptions: registry.npmjs.org/spdx-exceptions@2.3.0 + spdx-license-ids: registry.npmjs.org/spdx-license-ids@3.0.13 + dev: true + + registry.npmjs.org/spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz} + name: spdx-license-ids + version: 3.0.13 + dev: true + + registry.npmjs.org/split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/split2/-/split2-3.2.2.tgz} + name: split2 + version: 3.2.2 + dependencies: + readable-stream: registry.npmjs.org/readable-stream@3.6.2 + dev: true + + registry.npmjs.org/string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz} + name: string-argv + version: 0.3.2 + engines: {node: '>=0.6.19'} + dev: true + + registry.npmjs.org/string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz} + name: string-width + version: 4.2.3 + engines: {node: '>=8'} + dependencies: + emoji-regex: registry.npmjs.org/emoji-regex@8.0.0 + is-fullwidth-code-point: registry.npmjs.org/is-fullwidth-code-point@3.0.0 + strip-ansi: registry.npmjs.org/strip-ansi@6.0.1 + dev: true + + registry.npmjs.org/string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz} + name: string-width + version: 5.1.2 + engines: {node: '>=12'} + dependencies: + eastasianwidth: registry.npmjs.org/eastasianwidth@0.2.0 + emoji-regex: registry.npmjs.org/emoji-regex@9.2.2 + strip-ansi: registry.npmjs.org/strip-ansi@7.1.0 + dev: true + + registry.npmjs.org/string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz} + name: string_decoder + version: 1.3.0 + dependencies: + safe-buffer: registry.npmjs.org/safe-buffer@5.2.1 + dev: true + + registry.npmjs.org/strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz} + name: strip-ansi + version: 6.0.1 + engines: {node: '>=8'} + dependencies: + ansi-regex: registry.npmjs.org/ansi-regex@5.0.1 + dev: true + + registry.npmjs.org/strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz} + name: strip-ansi + version: 7.1.0 + engines: {node: '>=12'} + dependencies: + ansi-regex: registry.npmjs.org/ansi-regex@6.0.1 + dev: true + + registry.npmjs.org/strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz} + name: strip-final-newline + version: 2.0.0 + engines: {node: '>=6'} + dev: true + + registry.npmjs.org/strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz} + name: strip-final-newline + version: 3.0.0 + engines: {node: '>=12'} + dev: true + + registry.npmjs.org/strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz} + name: strip-indent + version: 3.0.0 + engines: {node: '>=8'} + dependencies: + min-indent: registry.npmjs.org/min-indent@1.0.1 + dev: true + + registry.npmjs.org/supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz} + name: supports-color + version: 5.5.0 + engines: {node: '>=4'} + dependencies: + has-flag: registry.npmjs.org/has-flag@3.0.0 + dev: true + + registry.npmjs.org/supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz} + name: supports-color + version: 7.2.0 + engines: {node: '>=8'} + dependencies: + has-flag: registry.npmjs.org/has-flag@4.0.0 + dev: true + + registry.npmjs.org/supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz} + name: supports-preserve-symlinks-flag + version: 1.0.0 + engines: {node: '>= 0.4'} + dev: true + + registry.npmjs.org/text-extensions@1.9.0: + resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz} + name: text-extensions + version: 1.9.0 + engines: {node: '>=0.10'} + dev: true + + registry.npmjs.org/through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/through2/-/through2-4.0.2.tgz} + name: through2 + version: 4.0.2 + dependencies: + readable-stream: registry.npmjs.org/readable-stream@3.6.2 + dev: true + + registry.npmjs.org/through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/through/-/through-2.3.8.tgz} + name: through + version: 2.3.8 + dev: true + + registry.npmjs.org/to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz} + name: to-regex-range + version: 5.0.1 + engines: {node: '>=8.0'} + dependencies: + is-number: registry.npmjs.org/is-number@7.0.0 + dev: true + + registry.npmjs.org/trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz} + name: trim-newlines + version: 3.0.1 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/ts-node@10.9.1(@types/node@20.4.7)(typescript@5.1.6): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz} + id: registry.npmjs.org/ts-node/10.9.1 + name: ts-node + version: 10.9.1 + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': registry.npmjs.org/@cspotcode/source-map-support@0.8.1 + '@tsconfig/node10': registry.npmjs.org/@tsconfig/node10@1.0.9 + '@tsconfig/node12': registry.npmjs.org/@tsconfig/node12@1.0.11 + '@tsconfig/node14': registry.npmjs.org/@tsconfig/node14@1.0.3 + '@tsconfig/node16': registry.npmjs.org/@tsconfig/node16@1.0.4 + '@types/node': registry.npmjs.org/@types/node@20.4.7 + acorn: registry.npmjs.org/acorn@8.10.0 + acorn-walk: registry.npmjs.org/acorn-walk@8.2.0 + arg: registry.npmjs.org/arg@4.1.3 + create-require: registry.npmjs.org/create-require@1.1.1 + diff: registry.npmjs.org/diff@4.0.2 + make-error: registry.npmjs.org/make-error@1.3.6 + typescript: registry.npmjs.org/typescript@5.1.6 + v8-compile-cache-lib: registry.npmjs.org/v8-compile-cache-lib@3.0.1 + yn: registry.npmjs.org/yn@3.1.1 + dev: true + + registry.npmjs.org/type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz} + name: type-fest + version: 0.18.1 + engines: {node: '>=10'} + dev: true + + registry.npmjs.org/type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz} + name: type-fest + version: 0.6.0 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz} + name: type-fest + version: 0.8.1 + engines: {node: '>=8'} + dev: true + + registry.npmjs.org/type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz} + name: type-fest + version: 1.4.0 + engines: {node: '>=10'} + dev: true + + registry.npmjs.org/typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz} + name: typescript + version: 5.1.6 + engines: {node: '>=14.17'} + hasBin: true + dev: true + + registry.npmjs.org/universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz} + name: universalify + version: 2.0.0 + engines: {node: '>= 10.0.0'} + dev: true + + registry.npmjs.org/uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz} + name: uri-js + version: 4.4.1 + dependencies: + punycode: registry.npmjs.org/punycode@2.3.0 + dev: true + + registry.npmjs.org/util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz} + name: util-deprecate + version: 1.0.2 + dev: true + + registry.npmjs.org/v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz} + name: v8-compile-cache-lib + version: 3.0.1 + dev: true + + registry.npmjs.org/validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz} + name: validate-npm-package-license + version: 3.0.4 + dependencies: + spdx-correct: registry.npmjs.org/spdx-correct@3.2.0 + spdx-expression-parse: registry.npmjs.org/spdx-expression-parse@3.0.1 + dev: true + + registry.npmjs.org/which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/which/-/which-2.0.2.tgz} + name: which + version: 2.0.2 + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: registry.npmjs.org/isexe@2.0.0 + dev: true + + registry.npmjs.org/wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz} + name: wrap-ansi + version: 7.0.0 + engines: {node: '>=10'} + dependencies: + ansi-styles: registry.npmjs.org/ansi-styles@4.3.0 + string-width: registry.npmjs.org/string-width@4.2.3 + strip-ansi: registry.npmjs.org/strip-ansi@6.0.1 + dev: true + + registry.npmjs.org/wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz} + name: wrap-ansi + version: 8.1.0 + engines: {node: '>=12'} + dependencies: + ansi-styles: registry.npmjs.org/ansi-styles@6.2.1 + string-width: registry.npmjs.org/string-width@5.1.2 + strip-ansi: registry.npmjs.org/strip-ansi@7.1.0 + dev: true + + registry.npmjs.org/y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz} + name: y18n + version: 5.0.8 + engines: {node: '>=10'} + dev: true + + registry.npmjs.org/yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz} + name: yallist + version: 4.0.0 + dev: true + + registry.npmjs.org/yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz} + name: yaml + version: 2.3.1 + engines: {node: '>= 14'} + dev: true + + registry.npmjs.org/yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz} + name: yargs-parser + version: 20.2.9 + engines: {node: '>=10'} + dev: true + + registry.npmjs.org/yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz} + name: yargs-parser + version: 21.1.1 + engines: {node: '>=12'} + dev: true + + registry.npmjs.org/yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz} + name: yargs + version: 17.7.2 + engines: {node: '>=12'} + dependencies: + cliui: registry.npmjs.org/cliui@8.0.1 + escalade: registry.npmjs.org/escalade@3.1.1 + get-caller-file: registry.npmjs.org/get-caller-file@2.0.5 + require-directory: registry.npmjs.org/require-directory@2.1.1 + string-width: registry.npmjs.org/string-width@4.2.3 + y18n: registry.npmjs.org/y18n@5.0.8 + yargs-parser: registry.npmjs.org/yargs-parser@21.1.1 + dev: true + + registry.npmjs.org/yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/yn/-/yn-3.1.1.tgz} + name: yn + version: 3.1.1 + engines: {node: '>=6'} + dev: true + + registry.npmjs.org/yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, registry: https://npm.pkg.st/, tarball: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz} + name: yocto-queue + version: 0.1.0 + engines: {node: '>=10'} + dev: true diff --git a/renovate.json b/renovate.json new file mode 100644 index 00000000..9d78c0a0 --- /dev/null +++ b/renovate.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:base"], + "enabledManagers": ["bazel", "git-submodules", "npm", "bazelisk"], + "baseBranches": ["main"], + "pinDigests": true, + "rangeStrategy": "pin", + "updateLockFiles": true, + "dependencyDashboard": true, + "dependencyDashboardApproval": true, + "lockFileMaintenance": { "enabled": true }, + "labels": ["dependencies"] +} diff --git a/tools/bazel/ci.bazelrc b/tools/bazel/ci.bazelrc index bad2f246..b2055123 100644 --- a/tools/bazel/ci.bazelrc +++ b/tools/bazel/ci.bazelrc @@ -1,5 +1,3 @@ -build:ci --stamp build:ci --build_metadata=ROLE=CI build:ci --build_metadata=VISIBILITY=PUBLIC -build:ci --workspace_status_command=$(pwd)/tools/scripts/workspace.sh build:ci --lockfile_mode=error diff --git a/tools/bazel/profiles.bazelrc b/tools/bazel/profiles.bazelrc index 95ed16e3..29fa1ca2 100644 --- a/tools/bazel/profiles.bazelrc +++ b/tools/bazel/profiles.bazelrc @@ -8,6 +8,7 @@ build:debug --compilation_mode=dbg build:release --stamp build:release --strip=always build:release --compilation_mode=opt +build:release --workspace_status_command=$(pwd)/tools/scripts/workspace.sh # Mode: Fastbuild build:fastbuild --compilation_mode=fastbuild