diff --git a/.github/contributing.md b/.github/contributing.md
index c3acae65..77135ef7 100644
--- a/.github/contributing.md
+++ b/.github/contributing.md
@@ -38,6 +38,10 @@ Once you've made your changes on a fork of the Radashi repo, create a pull reque
Once you submit your PR, one of Radashi's maintainers will review it. They might ask questions or request additional information.
+## Your PR gets labeled with `prerelease`
+
+If your PR is labeled with `prerelease` by a maintainer, it will be published in either a `beta` or `next` version to NPM. You should be notified by the Radashi Bot when this happens. PRs for bug fixes are never published as prereleases.
+
## Your PR gets merged!
-Congratulations :tada::tada: Currently, official versions are published manually. But beta versions are published automatically, every day, at 5:00AM UTC (if a PR has been merged). Your PR will be updated with a comment when the next release is published.
+Congratulations :tada::tada: Currently, major and minor versions are published manually. If your PR was a bug fix, it will be immediately published to NPM as a patch version. Otherwise, you can use a `beta` or `next` version if you can't wait for your feature to be released.
diff --git a/.github/next-minor.md b/.github/next-minor.md
index 2b835552..542c8bcd 100644
--- a/.github/next-minor.md
+++ b/.github/next-minor.md
@@ -8,4 +8,10 @@ The `####` headline should be short and descriptive of the new functionality. In
## New Features
-####
+#### Add `signal` option to `retry`
+
+https://github.com/radashi-org/radashi/pull/262
+
+#### Add `signal` option to `parallel`
+
+https://github.com/radashi-org/radashi/pull/262
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 0e96e48e..01f65032 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -4,9 +4,6 @@
Consider opening a feature request first to get your change idea approved.
-->
-> [!TIP]
-> The owner of this PR can publish a _preview release_ by commenting `/publish` in this PR. Afterwards, anyone can try it out by running `pnpm add radashi@pr`.
-
## Summary
diff --git a/.github/workflows/bench-main.yml b/.github/workflows/bench-main.yml
index 5d2bc659..c18ee3a6 100644
--- a/.github/workflows/bench-main.yml
+++ b/.github/workflows/bench-main.yml
@@ -17,16 +17,8 @@ jobs:
node-version: '22.x'
cache: pnpm
- - name: Install dependencies
- run: |
- # Only install Vitest for the root directory.
- echo '{"type":"module","dependencies":{"vitest":"2.0.5"}}' > package.json
- pnpm install --no-frozen-lockfile
- pnpm install -C scripts/benchmarks
- pnpm install -C scripts/radashi-db
-
- name: Run benchmarks
env:
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
run: |
- ./scripts/benchmarks/node_modules/.bin/tsx ./scripts/benchmarks/ci-bench-main.ts
+ node scripts/run bench-main
diff --git a/.github/workflows/bench-pr.yml b/.github/workflows/bench-pr.yml
index c022d550..e442f5ba 100644
--- a/.github/workflows/bench-pr.yml
+++ b/.github/workflows/bench-pr.yml
@@ -15,6 +15,12 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
+ - name: Install pnpm
+ uses: pnpm/action-setup@v4
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ cache: pnpm
- name: Checkout Pull Request
id: checkout
@@ -22,7 +28,7 @@ jobs:
PR_REPO_URL: ${{ github.event.pull_request.head.repo.clone_url }}
PR_HEAD_REF: ${{ github.event.pull_request.head.ref }}
run: |
- bash scripts/checkout-pr.sh src benchmarks
+ node scripts/run checkout-pr src benchmarks
if [ -z "$(git status --porcelain)" ]; then
echo '::set-output name=has_changes::false'
@@ -30,29 +36,9 @@ jobs:
echo '::set-output name=has_changes::true'
fi
- - name: Install pnpm
- if: steps.checkout.outputs.has_changes == 'true'
- uses: pnpm/action-setup@v4
-
- - name: Install Node.js
- if: steps.checkout.outputs.has_changes == 'true'
- uses: actions/setup-node@v4
- with:
- cache: pnpm
-
- - name: Install dependencies
- if: steps.checkout.outputs.has_changes == 'true'
- run: |
- # Only install Vitest for the root directory.
- echo '{"type":"module","dependencies":{"vitest":"2.0.5"}}' > package.json
- pnpm install --no-frozen-lockfile
- pnpm install -C scripts/benchmarks
- pnpm install -C scripts/radashi-db
-
- name: Run benchmarks
if: steps.checkout.outputs.has_changes == 'true'
env:
RADASHI_BOT_TOKEN: ${{ secrets.RADASHI_BOT_TOKEN }}
- SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
run: |
- ./scripts/benchmarks/node_modules/.bin/tsx ./scripts/benchmarks/ci-bench-pr.ts ${{ github.base_ref }} ${{ github.event.number }} ${{ github.event.pull_request.head.repo.html_url }}/blob/${{ github.event.pull_request.head.sha }}
+ node scripts/run bench-pr ${{ github.base_ref }} ${{ github.event.number }} ${{ github.event.pull_request.head.repo.html_url }}/blob/${{ github.event.pull_request.head.sha }}
diff --git a/.github/workflows/bundle-impact.yml b/.github/workflows/bundle-impact.yml
index 62910179..3baf5dd9 100644
--- a/.github/workflows/bundle-impact.yml
+++ b/.github/workflows/bundle-impact.yml
@@ -39,15 +39,10 @@ jobs:
with:
cache: pnpm
- - name: Install dependencies
- if: steps.checkout.outputs.has_changes == 'true'
- run: |
- pnpm install -C scripts/bundle-impact
-
- name: Run Bundle Impact
if: steps.checkout.outputs.has_changes == 'true'
env:
RADASHI_BOT_TOKEN: ${{ secrets.RADASHI_BOT_TOKEN }}
TARGET_BRANCH: ${{ github.base_ref }}
run: |
- ./scripts/bundle-impact/node_modules/.bin/tsx ./scripts/bundle-impact/pr-bundle-impact.ts ${{ github.event.number }}
+ node scripts/run bundle-impact ${{ github.event.number }}
diff --git a/.github/workflows/check-main.yml b/.github/workflows/check-main.yml
new file mode 100644
index 00000000..d15edb57
--- /dev/null
+++ b/.github/workflows/check-main.yml
@@ -0,0 +1,42 @@
+name: Check main branch
+
+on:
+ workflow_dispatch:
+ push:
+ branches: [main]
+ paths: ['src/**', 'tests/**']
+
+jobs:
+ test:
+ name: Test
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ node-version: [18.x, 20.x, 22.x]
+ steps:
+ - uses: actions/checkout@v4
+ - uses: pnpm/action-setup@v4
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v4
+ with:
+ node-version: ${{ matrix.node-version }}
+ cache: pnpm
+ - run: pnpm install
+ - run: pnpm test
+
+ validate:
+ name: Validate
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: pnpm/action-setup@v4
+ - uses: actions/setup-node@v4
+ with:
+ registry-url: 'https://registry.npmjs.org'
+ node-version: '22.x'
+ cache: pnpm
+ - run: pnpm install
+ - name: Lint
+ run: pnpm lint
+ - name: Check Build
+ run: pnpm build
diff --git a/.github/workflows/prerelease-pr.yml b/.github/workflows/prerelease-pr.yml
index 4d14141c..dba0b9c6 100644
--- a/.github/workflows/prerelease-pr.yml
+++ b/.github/workflows/prerelease-pr.yml
@@ -19,11 +19,8 @@ jobs:
node-version: '22.x'
cache: pnpm
- - name: Install script dependencies
- run: |
- pnpm install -C scripts/prerelease
-
- - name: Publish
+ - name: Merge PR into target branch
+ continue-on-error: true
env:
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
PR_NUMBER: ${{ github.event.pull_request.number }}
@@ -31,4 +28,4 @@ jobs:
PR_REPO_URL: ${{ github.event.pull_request.head.repo.clone_url }}
PR_HEAD_REF: ${{ github.event.pull_request.head.ref }}
run: |
- ./scripts/prerelease/node_modules/.bin/tsx ./scripts/prerelease/ci-prerelease.ts
+ node scripts/run prerelease-pr
diff --git a/.github/workflows/publish-beta.yml b/.github/workflows/publish-beta.yml
index be82c505..b6f4f466 100644
--- a/.github/workflows/publish-beta.yml
+++ b/.github/workflows/publish-beta.yml
@@ -2,8 +2,9 @@ name: Publish radashi@beta
on:
workflow_dispatch:
- schedule:
- - cron: '0 5 * * *'
+ push:
+ branches: [beta, next]
+ paths: ['src/**']
jobs:
test:
@@ -22,11 +23,6 @@ jobs:
cache: pnpm
- run: pnpm install
- run: pnpm test
- - if: ${{ matrix.node-version == '22.x' }}
- name: Upload coverage reports to Codecov
- uses: codecov/codecov-action@v4.0.1
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
validate:
name: Validate
@@ -65,11 +61,6 @@ jobs:
- run: pnpm install
- run: pnpm build
- - name: Install script dependencies
- run: |
- pnpm install -C scripts/versions
- pnpm install -C scripts/radashi-db
-
- name: Publish
env:
GIT_CLIFF_PAT: ${{ secrets.GIT_CLIFF_PAT }}
@@ -79,4 +70,4 @@ jobs:
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
NIGHTLY_DEPLOY_KEY: ${{ secrets.NIGHTLY_DEPLOY_KEY }}
run: |
- ./scripts/versions/node_modules/.bin/tsx ./scripts/versions/ci-publish.ts --tag beta
+ node scripts/run publish-version --tag ${{ github.ref_name }}
diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
index ac0d5c64..4ab3ef9c 100644
--- a/.github/workflows/publish-docs.yml
+++ b/.github/workflows/publish-docs.yml
@@ -20,14 +20,9 @@ jobs:
node-version: '22.x'
cache: pnpm
- - name: Install dependencies
- run: |
- pnpm install -C scripts/docs
- pnpm install -C scripts/radashi-db
-
- name: Publish
env:
DOCS_DEPLOY_KEY: ${{ secrets.DOCS_DEPLOY_KEY }}
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
run: |
- ./scripts/docs/node_modules/.bin/tsx ./scripts/docs/ci-publish-docs.ts ${{ github.event.ref }}
+ node scripts/run publish-docs ${{ github.event.ref }}
diff --git a/.github/workflows/publish-latest.yml b/.github/workflows/publish-latest.yml
index 49a97975..fdea1d2b 100644
--- a/.github/workflows/publish-latest.yml
+++ b/.github/workflows/publish-latest.yml
@@ -4,50 +4,10 @@ on:
workflow_dispatch:
jobs:
- test:
- name: Test
- runs-on: ubuntu-latest
- strategy:
- matrix:
- node-version: [18.x, 20.x, 22.x]
- steps:
- - uses: actions/checkout@v4
- - uses: pnpm/action-setup@v4
- - name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v4
- with:
- node-version: ${{ matrix.node-version }}
- cache: pnpm
- - run: pnpm install
- - run: pnpm test
- - if: ${{ matrix.node-version == '22.x' }}
- name: Upload coverage reports to Codecov
- uses: codecov/codecov-action@v4.0.1
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
-
- validate:
- name: Validate
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - uses: pnpm/action-setup@v4
- - uses: actions/setup-node@v4
- with:
- registry-url: 'https://registry.npmjs.org'
- node-version: '22.x'
- cache: pnpm
- - run: pnpm install
- - name: Lint
- run: pnpm lint
- - name: Check Build
- run: pnpm build
-
publish-latest:
+ if: ${{ github.ref == 'refs/heads/main' }}
name: Publish Latest
- needs: [test, validate]
runs-on: ubuntu-latest
- continue-on-error: true
permissions:
id-token: write
steps:
@@ -63,11 +23,6 @@ jobs:
- run: pnpm install
- run: pnpm build
- - name: Install script dependencies
- run: |
- pnpm install -C scripts/versions
- pnpm install -C scripts/radashi-db
-
- name: Publish
env:
GIT_CLIFF_PAT: ${{ secrets.GIT_CLIFF_PAT }}
@@ -76,4 +31,4 @@ jobs:
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
run: |
- ./scripts/versions/node_modules/.bin/tsx ./scripts/versions/ci-publish.ts --latest
+ node scripts/run publish-version --latest
diff --git a/.github/workflows/publish-patch.yml b/.github/workflows/publish-patch.yml
new file mode 100644
index 00000000..ed63cff0
--- /dev/null
+++ b/.github/workflows/publish-patch.yml
@@ -0,0 +1,38 @@
+name: Publish patch
+
+on:
+ workflow_run:
+ workflows: ['Check main branch']
+ types:
+ - completed
+
+jobs:
+ publish:
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ name: Publish
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - uses: pnpm/action-setup@v4
+ - uses: actions/setup-node@v4
+ with:
+ registry-url: 'https://registry.npmjs.org'
+ node-version: '22.x'
+ cache: pnpm
+ - run: pnpm install
+ - run: pnpm build
+
+ - name: Publish
+ env:
+ GIT_CLIFF_PAT: ${{ secrets.GIT_CLIFF_PAT }}
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+ RADASHI_BOT_TOKEN: ${{ secrets.RADASHI_BOT_TOKEN }}
+ SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
+ DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
+ NIGHTLY_DEPLOY_KEY: ${{ secrets.NIGHTLY_DEPLOY_KEY }}
+ run: |
+ node scripts/run publish-version --patch
diff --git a/.github/workflows/publish-pr.yml b/.github/workflows/publish-pr.yml
deleted file mode 100644
index 0a5a9cdb..00000000
--- a/.github/workflows/publish-pr.yml
+++ /dev/null
@@ -1,76 +0,0 @@
-name: Publish Preview Release
-
-on:
- issue_comment:
- types: [created]
-
-jobs:
- publish-preview:
- if: ${{ github.event.issue.pull_request && github.event.comment.user.id == github.event.issue.user.id && startsWith(github.event.comment.body, '/publish') }}
- runs-on: ubuntu-latest
- steps:
- - name: Notify PR owner
- uses: peter-evans/create-or-update-comment@v4
- with:
- issue-number: ${{ github.event.issue.number }}
- comment-id: ${{ github.event.comment.id }}
- body: |
-
- [Your preview release is being published.](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) :hourglass:
- token: ${{ secrets.GITHUB_TOKEN }}
-
- - uses: radashi-org/pull-request-comment-branch@v2
- id: comment-branch
-
- - uses: actions/checkout@v4
- if: success()
- with:
- ref: ${{ steps.comment-branch.outputs.head_ref }}
- repository: ${{ steps.comment-branch.outputs.head_owner }}/${{ steps.comment-branch.outputs.head_repo }}
-
- - uses: pnpm/action-setup@v4
- - uses: actions/setup-node@v4
- with:
- registry-url: 'https://registry.npmjs.org'
- node-version: '22.x'
- cache: pnpm
- - run: pnpm install
- - run: pnpm build
-
- - name: Calculate version
- id: get-version
- run: echo "::set-output name=version::$(node -p "require('./package.json').version")-pr${{ github.event.issue.number }}.$(git rev-parse --short HEAD)"
-
- - name: Update package version
- run: npm version ${{ steps.get-version.outputs.version }} --no-git-tag-version
- - name: Publish to NPM
- run: npm publish --tag pr${{ github.event.issue.number }} --ignore-scripts
- env:
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
-
- - name: Notify PR owner
- uses: peter-evans/create-or-update-comment@v4
- if: success()
- with:
- issue-number: ${{ github.event.issue.number }}
- comment-id: ${{ github.event.comment.id }}
- body: |
-
- Congrats! Your preview release is ready. :rocket:
- ```sh
- pnpm add radashi@pr${{ github.event.issue.number }}
- # or
- pnpm add radashi@${{ steps.get-version.outputs.version }}
- ```
- token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Failure
- uses: peter-evans/create-or-update-comment@v4
- if: failure()
- with:
- issue-number: ${{ github.event.issue.number }}
- comment-id: ${{ github.event.comment.id }}
- body: |
-
- Oops! Your preview release failed to publish. :x:
- token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/register-pr.yml b/.github/workflows/register-pr.yml
index e4be3688..3a6424e7 100644
--- a/.github/workflows/register-pr.yml
+++ b/.github/workflows/register-pr.yml
@@ -13,6 +13,12 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
+ - name: Install pnpm
+ uses: pnpm/action-setup@v4
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ cache: pnpm
- name: Checkout Pull Request
id: checkout
@@ -20,7 +26,7 @@ jobs:
PR_REPO_URL: ${{ github.event.pull_request.head.repo.clone_url }}
PR_HEAD_REF: ${{ github.event.pull_request.head.ref }}
run: |
- bash scripts/checkout-pr.sh src docs
+ node scripts/run checkout-pr src docs
if [ -n "$(git status --porcelain src | grep '^A')" ]; then
echo '::set-output name=has_new_func::true'
@@ -37,32 +43,18 @@ jobs:
repo-token: ${{ secrets.GITHUB_TOKEN }}
allowed-conclusions: success,skipped,failure,timed_out,cancelled
- - name: Install pnpm
- if: steps.checkout.outputs.has_new_func == 'true'
- uses: pnpm/action-setup@v4
-
- name: Install Node.js
if: steps.checkout.outputs.has_new_func == 'true'
uses: actions/setup-node@v4
with:
cache: pnpm
- - name: Install Dependencies
- if: steps.checkout.outputs.has_new_func == 'true'
- run: |
- pnpm install -C scripts/functions
- pnpm install -C scripts/radashi-db
-
- name: Register PR
if: steps.checkout.outputs.has_new_func == 'true'
- uses: actions/github-script@v7
env:
ALGOLIA_KEY: ${{ secrets.ALGOLIA_KEY }}
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- script: |
- const root = '${{ github.workspace }}/scripts/functions'
- const { tsImport } = await import(root + '/node_modules/tsx/dist/esm/api/index.cjs')
- const script = await tsImport(root + '/ci-register-pr.ts', root)
- await script.run(context.payload.pull_request, github.rest)
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PULL_REQUEST: ${{ toJson(github.event.pull_request) }}
+ run: |
+ node scripts/run register-pr
diff --git a/.github/workflows/seed-benchmarks.yml b/.github/workflows/seed-benchmarks.yml
index 2e6bd81b..c2a28144 100644
--- a/.github/workflows/seed-benchmarks.yml
+++ b/.github/workflows/seed-benchmarks.yml
@@ -14,16 +14,8 @@ jobs:
node-version: '22.x'
cache: pnpm
- - name: Install dependencies
- run: |
- # Only install Vitest for the root directory.
- echo '{"type":"module","dependencies":{"vitest":"2.0.5"}}' > package.json
- pnpm install --no-frozen-lockfile
- pnpm install -C scripts/benchmarks
- pnpm install -C scripts/radashi-db
-
- name: Run benchmarks and seed database
env:
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
run: |
- ./scripts/benchmarks/node_modules/.bin/tsx ./scripts/benchmarks/seed-benchmarks.ts
+ node scripts/run seed-benchmarks
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 087352fa..9fb825f7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,9 +5,42 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [radashi@beta]
+## [radashi@12.2.3] - 2024-11-12
+### Details
+#### Fixed
+
+- **(all)** Be more lenient, reduce memory usage by [@aleclarson](https://github.com/aleclarson) in [e6accd8](https://github.com/radashi-org/radashi/commit/e6accd870910f8df9487b6f54e1888bc5ae1ba92)
+
+## [radashi@12.2.2] - 2024-11-10
+### Details
+#### Types
+
+- Export `PromiseWithResolvers` type by [@aleclarson](https://github.com/aleclarson) in [#301](https://github.com/radashi-org/radashi/pull/301)
+
+- Improve `isEmpty` signature by [@MarlonPassos-git](https://github.com/MarlonPassos-git) in [#219](https://github.com/radashi-org/radashi/pull/219)
+
+- Narrow return type of `first` and `last` by [@crishoj](https://github.com/crishoj) in [#160](https://github.com/radashi-org/radashi/pull/160)
+
+- Improve `draw` signature for non-empty arrays by [@crishoj](https://github.com/crishoj) in [#153](https://github.com/radashi-org/radashi/pull/153)
+
+
+## [radashi@12.2.1] - 2024-11-09
+### Details
+#### Types
+
+- Improve signature of `shake` by [@aleclarson](https://github.com/aleclarson) in [#293](https://github.com/radashi-org/radashi/pull/293)
+
+- `mapValues` index signature handling by [@aleclarson](https://github.com/aleclarson) in [#297](https://github.com/radashi-org/radashi/pull/297)
+
+- Let `zipToObject` receive readonly arrays by [@aeharding](https://github.com/aeharding) in [#294](https://github.com/radashi-org/radashi/pull/294)
+
+
+### New Contributors
+* [@aeharding](https://github.com/aeharding) made their first contribution in [#294](https://github.com/radashi-org/radashi/pull/294)
+## [radashi@12.2.0] - 2024-11-01
### Details
#### Added
+
- Add `isIntString` function by [@aleclarson](https://github.com/aleclarson) in [fa500d3](https://github.com/radashi-org/radashi/commit/fa500d329d7e06062e7a42cbf4ff9ad9dcb89191)
- Add `isPlainObject` type guard by [@aleclarson](https://github.com/aleclarson) in [#16](https://github.com/radashi-org/radashi/pull/16)
@@ -59,6 +92,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
#### Changed
+
- **(intersects)** Let `identity` callback return any value by [@aleclarson](https://github.com/aleclarson) in [#11](https://github.com/radashi-org/radashi/pull/11)
- **(unique)** Let `toKey` return any kind of value by [@aleclarson](https://github.com/aleclarson) in [#10](https://github.com/radashi-org/radashi/pull/10)
@@ -78,6 +112,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
#### Fixed
+
- **(retry)** Stop using `range()` by [@aleclarson](https://github.com/aleclarson) in [5d60893](https://github.com/radashi-org/radashi/commit/5d60893471240516a49c6ddf48839165b5961a47)
- **(assign)** Remove inefficiencies in loop by [@aleclarson](https://github.com/aleclarson) in [#13](https://github.com/radashi-org/radashi/pull/13)
@@ -108,6 +143,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
#### Performance
+
- Avoid excessive array allocation in `fork` by [@localusercamp](https://github.com/localusercamp) in [#33](https://github.com/radashi-org/radashi/pull/33)
- Make `template` faster by [@aleclarson](https://github.com/aleclarson) in [#32](https://github.com/radashi-org/radashi/pull/32)
@@ -124,8 +160,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **(shuffle)** Use the Fisher-Yates algorithm by [@eumkz](https://github.com/eumkz) in [#76](https://github.com/radashi-org/radashi/pull/76)
+- **(merge)** Improved handling of large arrays by [@Minhir](https://github.com/Minhir) in [#240](https://github.com/radashi-org/radashi/pull/240)
+
#### Types
+
- Let `filterKey` accept `key: keyof any` by [@aleclarson](https://github.com/aleclarson) in [73ac8bb](https://github.com/radashi-org/radashi/commit/73ac8bba9e2a2a39eb3c117cc940cc2b18199834)
- Add `TryitResult` type by [@aleclarson](https://github.com/aleclarson) in [f044364](https://github.com/radashi-org/radashi/commit/f0443644bace43ad3092751e0ba4193ead336ef6)
- Add `MemoOptions` type by [@aleclarson](https://github.com/aleclarson) in [877a1e4](https://github.com/radashi-org/radashi/commit/877a1e4e4d6fba76eea04731e69f7490d3f3191a)
@@ -148,17 +187,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Align `isPromise` return type with its logic by [@aleclarson](https://github.com/aleclarson) in [#175](https://github.com/radashi-org/radashi/pull/175)
- Publicize the `Falsy` type by [@aleclarson](https://github.com/aleclarson) in [736d334](https://github.com/radashi-org/radashi/commit/736d3342f86cf16199d6d50cacd0cec3f51db078)
+- Avoid inferring `memo` return type from `key` option by [@aleclarson](https://github.com/aleclarson) in [#231](https://github.com/radashi-org/radashi/pull/231)
+
+- Allow readonly array in `omit` function by [@shan-shaji](https://github.com/shan-shaji) in [#272](https://github.com/radashi-org/radashi/pull/272)
+
### New Contributors
-* [@crishoj](https://github.com/crishoj) made their first contribution in [#128](https://github.com/radashi-org/radashi/pull/128)
+* [@shan-shaji](https://github.com/shan-shaji) made their first contribution in [#272](https://github.com/radashi-org/radashi/pull/272)
* [@nnmrts](https://github.com/nnmrts) made their first contribution in [#126](https://github.com/radashi-org/radashi/pull/126)
* [@stefaanv](https://github.com/stefaanv) made their first contribution in [#95](https://github.com/radashi-org/radashi/pull/95)
* [@eumkz](https://github.com/eumkz) made their first contribution in [#76](https://github.com/radashi-org/radashi/pull/76)
* [@cimbraien](https://github.com/cimbraien) made their first contribution in [#58](https://github.com/radashi-org/radashi/pull/58)
-* [@shan-shaji](https://github.com/shan-shaji) made their first contribution in [#53](https://github.com/radashi-org/radashi/pull/53)
* [@cdreeves](https://github.com/cdreeves) made their first contribution in [#37](https://github.com/radashi-org/radashi/pull/37)
* [@localusercamp](https://github.com/localusercamp) made their first contribution in [#33](https://github.com/radashi-org/radashi/pull/33)
-[radashi@beta]: https://github.com/radashi-org/radashi/compare/v12.1.0..HEAD
+[radashi@12.2.3]: https://github.com/radashi-org/radashi/compare/v12.2.2..v12.2.3
+
+[radashi@12.2.2]: https://github.com/radashi-org/radashi/compare/v12.2.1..v12.2.2
+
+[radashi@12.2.1]: https://github.com/radashi-org/radashi/compare/v12.2.0..v12.2.1
+
+[radashi@12.2.0]: https://github.com/radashi-org/radashi/compare/v12.1.0..v12.2.0
diff --git a/README.md b/README.md
index 68a9a315..c9125a01 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
-
+
@@ -60,15 +60,29 @@ yarn add radashi
npm install radashi
```
-### Beta version
+### Beta versions
-The `radashi@beta` version is a nightly release containing everything in the main branch at the time (5:00AM UTC).
+Beta versions are published regularly with new functions and improvements. They never contain breaking changes (see the [Breaking changes](#breaking-changes) section). The [beta](https://github.com/radashi-org/radashi/tree/beta) branch contains the source code for beta versions.
+
+To get notified of a new beta version, watch the [radashi-canary](https://github.com/radashi-org/radashi-canary) repository. You can find release notes for beta versions [here](https://github.com/radashi-org/radashi-canary/releases).
+
+The latest beta version can be installed with:
```sh
-pnpm add radashi@beta
+pnpm add radashi@beta -E
```
-Its changes are documented [here](https://github.com/radashi-org/radashi/blob/main/CHANGELOG.md#radashibeta). If there's no `radashi@beta` section in the changelog, it means no pull requests have been merged since the last stable release.
+The `-E` flag ensures that the `beta` version is installed as an exact version (e.g. `radashi@12.3.0-beta.abc1234`). This is recommended to avoid accidental breakage.
+
+### Breaking changes
+
+Preview releases for the next major version are also announced in the [radashi-canary](https://github.com/radashi-org/radashi-canary/releases) repository. The [next](https://github.com/radashi-org/radashi/tree/next) branch contains the source code for the next major version.
+
+We'd appreciate your help testing the latest `next` version before it's released:
+
+```sh
+pnpm add radashi@next -E
+```
### JSR.io
@@ -102,7 +116,7 @@ deno add @radashi-org/radashi
- **Can I help you maintain this?**
- Yes! I'll add you as a contributor to the repository. You can review pull requests and even merge them. You can help with closing issues, too. Committing directly to the main branch is a privilege you can earn, as is publishing versions to NPM.
+ Yes! I'll add you as a contributor to the repository. You can review pull requests and help with triage. With time, you may earn the ability to merge approved PRs.
@@ -114,15 +128,23 @@ deno add @radashi-org/radashi
- **Automatic releases**
To ensure contributions are quickly rolled out, we have the following automatic processes:
+ - **Patch releases**
+ Whenever the `main` branch receives a `^fix:` commit, a patch release is immediately published to NPM.
+
- **Beta releases**
- Whenever the `main` branch receives a fix or feature, a beta release is automatically published to NPM at 5:00AM UTC.
- Installing `radashi@beta` will always fetch the latest beta release. Beta releases are always audited by the Radashi team.
+ Pull requests that add a new feature can be labeled with `prerelease` by a maintainer. This triggers a GitHub workflow that attempts to copy the PR into the `beta` branch. If that succeeds, a beta release is immediately published to NPM.
+
+ Installing `radashi@beta` will always fetch the latest beta release. Although the name "beta" may suggest unstable code, PRs need tests to be eligible for a prerelease.
+
+ Beta releases provide quick access to new features without waiting for a regular release cycle. They're also an opportunity for the community to provide feedback before the feature is released to the `main` branch.
+
+ - **"Next" releases**
+ Pull requests with breaking changes can also be labeled with `prerelease` by a maintainer. In this case, the PR is copied into the `next` branch. If that succeeds, a "next" release is published to NPM.
- - **Preview releases**
- When the _owner of a PR_ comments `/publish` (and nothing more), the PR is published to NPM under a version like `1.0.0-pr123.f7a9c3b` (i.e. `-pr.`) and a tag like `pr123`. This allows the community to use the changes in the PR without waiting for the PR to be merged.
+ Installing `radashi@next` will always fetch the latest "next" release.
- - ⚠️ **Beware:** Preview releases are not audited by the Radashi team. Always look at their
- changes in the PR to ensure no malicious code was introduced.
+- **Release cycle**
+ Radashi is expected to release a new minor or major version on a monthly basis, but releases are not on a strict schedule. Pre-releases are available for testing and feedback before the final release.
diff --git a/biome.json b/biome.json
index c466eaba..b5ab7fa8 100644
--- a/biome.json
+++ b/biome.json
@@ -2,6 +2,7 @@
"$schema": "https://biomejs.dev/schemas/1.8.3/schema.json",
"extends": ["@radashi-org/biome-config"],
"files": {
+ "include": ["scripts/run.js"],
"ignore": ["**/src/bigint.ts", "**/package.json"]
}
}
diff --git a/cliff.toml b/cliff.toml
index 1097ee79..8eb6c55d 100644
--- a/cliff.toml
+++ b/cliff.toml
@@ -21,16 +21,22 @@ body = """
https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
{%- endmacro -%}
-{% if version -%}
- ## [radashi@{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
-{% else -%}
- ## [radashi@beta]
-{% endif -%}
+{% if get_env(name="STRIP_TAG") != "true" -%}
+ {% if version -%}
+ ## [radashi@{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
+ {% else -%}
+ ## [radashi@beta]
+ {% endif -%}
-### Details\
+ ### Details\
+{% endif -%}
{% for group, commits in commits | group_by(attribute="group") %}
- #### {{ group | upper_first }}
+ {% if get_env(name="STRIP_TAG") == "true" -%}
+ ### {{ group | upper_first }}
+ {% else -%}
+ #### {{ group | upper_first }}
+ {% endif -%}
{%- for commit in commits %}
- {% if commit.scope %}**({{ commit.scope }})** {% endif %}{{ commit.message | upper_first | trim }}\
{% if commit.github.username %} by [@{{ commit.github.username }}](https://github.com/{{ commit.github.username }}){%- endif -%}
diff --git a/deno.json b/deno.json
index 85c7c0b7..1928da15 100644
--- a/deno.json
+++ b/deno.json
@@ -7,11 +7,5 @@
},
"publish": {
"include": ["src", "LICENSE.md", "README.md"]
- },
- "lint": {
- "include": ["src"],
- "rules": {
- "tags": ["jsr"]
- }
}
}
diff --git a/docs/async/parallel.mdx b/docs/async/parallel.mdx
index e710ff62..9899ca18 100644
--- a/docs/async/parallel.mdx
+++ b/docs/async/parallel.mdx
@@ -1,14 +1,12 @@
---
title: parallel
-description: Run many async function in parallel
+description: Parallelize async operations while managing load
since: 12.1.0
---
### Usage
-Like `_.map` but built specifically to run the async callback functions
-in parallel. The first argument is a limit of how many functions should
-be allowed to run at once. Returns an array of results.
+The `parallel` function processes an array with an async callback. The first argument controls how many array items are processed at one time. Similar to `Promise.all`, an ordered array of results is returned.
```ts
import * as _ from 'radashi'
@@ -22,11 +20,34 @@ const users = await _.parallel(3, userIds, async userId => {
})
```
-### Errors
+### Interrupting
-When all work is complete parallel will check for errors. If any
-occurred they will all be thrown in a single `AggregateError` that
-has an `errors` property that is all the errors that were thrown.
+Processing can be manually interrupted. Pass an `AbortController.signal` via the `signal` option. When the signal is aborted, no more calls to your callback will be made. Any in-progress calls will continue to completion, unless you manually connect the signal inside your callback. In other words, `parallel` is only responsible for aborting the array loop, not the async operations themselves.
+
+When `parallel` is interrupted by the signal, it throws a `DOMException` (even in Node.js) with the message `This operation was aborted` and name `AbortError`.
+
+```ts
+import * as _ from 'radashi'
+
+const abortController = new AbortController()
+const signal = abortController.signal
+
+// Pass in the signal:
+const pizzas = await _.parallel(
+ { limit: 2, signal },
+ ['pepperoni', 'cheese', 'mushroom'],
+ async topping => {
+ return await bakePizzaInWoodFiredOven(topping) // each pizza takes 10 minutes!
+ },
+)
+
+// Later on, if you need to abort:
+abortController.abort()
+```
+
+### Aggregate Errors
+
+Once the whole array has been processed, `parallel` will check for errors. If any errors occurred during processing, they are combined into a single `AggregateError`. The `AggregateError` has an `errors` array property which contains all the individual errors that were thrown.
```ts
import * as _ from 'radashi'
@@ -39,5 +60,5 @@ const [err, users] = await _.tryit(_.parallel)(3, userIds, async userId => {
console.log(err) // => AggregateError
console.log(err.errors) // => [Error, Error, Error]
-console.log(err.errors[1].message) // => No, I don't want to find user 2
+console.log(err.errors[1].message) // => "No, I don't want to find user 2"
```
diff --git a/docs/async/retry.mdx b/docs/async/retry.mdx
index 0659e4bf..d115fc49 100644
--- a/docs/async/retry.mdx
+++ b/docs/async/retry.mdx
@@ -1,16 +1,20 @@
---
title: retry
-description: Run an async function retrying if it fails
+description: Retry an async function when it fails
since: 12.1.0
---
### Usage
-The `_.retry` function allows you to run an async function and automagically retry it if it fails. Given the async func to run, an optional max number of retries (`r`), and an optional milliseconds to delay between retries (`d`), the given async function will be called, retrying `r` many times, and waiting `d` milliseconds between retries.
+The `retry` function runs an async function and retries it if it fails. You can specify how many times to retry, how long to wait between retries, and whether to use exponential backoff.
-The `times` option defaults to `3`. The `delay` option (defaults to null) can specify milliseconds to sleep between attempts.
+**Options**
-The `backoff` option is like delay but uses a function to sleep -- makes for easy exponential backoff.
+- `times` is the maximum number of times to retry (default: `3`)
+- `delay` is milliseconds to sleep between retries
+- `backoff` is a function called to calculate the delay between retries
+ - It receives the attempt number (starting with `1`) and returns the delay in milliseconds.
+- `signal` allows you to pass an `AbortController.signal` to interrupt the retry operation
```ts
import * as _ from 'radashi'
@@ -33,3 +37,27 @@ await _.retry({ times: 2, delay: 1000 }, api.users.list) // try 2 times with 1 s
// exponential backoff
await _.retry({ backoff: i => 10 ** i }, api.users.list) // try 3 times with 10, 100, 1000 ms delay
```
+
+### Interrupting
+
+If a `signal` is passed, the retry operation can be interrupted. When the signal is aborted, `retry`'s promise will reject with a `DOMException` (even in Node.js) with the message `This operation was aborted` and name `AbortError`.
+
+```ts
+import * as _ from 'radashi'
+
+const abortController = new AbortController()
+const signal = abortController.signal
+
+const promise = _.retry({ times: 3, delay: 1000, signal }, api.users.list)
+
+// To stop retrying immediately:
+abortController.abort()
+
+try {
+ await promise
+} catch (err) {
+ if (err.message === 'This operation was aborted') {
+ console.log('Retry operation was aborted')
+ }
+}
+```
diff --git a/docs/typed/isEmpty.mdx b/docs/typed/isEmpty.mdx
index 3f61597d..e2f04266 100644
--- a/docs/typed/isEmpty.mdx
+++ b/docs/typed/isEmpty.mdx
@@ -17,3 +17,45 @@ _.isEmpty('') // => true
_.isEmpty('hello') // => false
_.isEmpty(['hello']) // => false
```
+
+Empty values include:
+
+- `null`
+- `undefined`
+- `0`
+- empty string
+- empty array
+- invalid `Date` time
+- object with `length` property of `0`
+- object with `size` property of `0`
+- object with no enumerable keys
+
+### Type Guards
+
+In some cases, `isEmpty` acts as a [type guard](https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards), which helps TypeScript infer more specific types based on the check.
+
+Due to TypeScript limitations, object types cannot be narrowed, except for arrays and functions.
+
+```ts
+import * as _ from 'radashi'
+
+// Example with string
+const value1: string = ''
+if (_.isEmpty(value1)) {
+ // TypeScript infers value1 as ''
+ console.log('Value is an empty string')
+} else {
+ // TypeScript infers value1 as string
+ console.log('Value is a non-empty string')
+}
+
+// Example with array
+const value2: string[] = []
+if (_.isEmpty(value2)) {
+ // TypeScript infers value2 as never[]
+ console.log('Value is an empty array')
+} else {
+ // TypeScript infers value2 as string[]
+ console.log('Value is a non-empty array')
+}
+```
diff --git a/package.json b/package.json
index e566d593..8691bb7c 100644
--- a/package.json
+++ b/package.json
@@ -1,85 +1,85 @@
{
- "name": "radashi",
- "version": "12.2.0",
- "type": "module",
- "description": "The modern, community-first TypeScript toolkit with all of the fast, readable, and minimal utility functions you need. Type-safe, dependency-free, tree-shakeable, fully tested.",
- "repository": {
- "url": "git+https://github.com/radashi-org/radashi.git"
- },
- "homepage": "https://radashi.js.org",
- "author": "Alec Larson",
- "contributors": [
- "Ray Epps"
- ],
- "license": "MIT",
- "packageManager": "pnpm@9.1.3",
- "engines": {
- "node": ">=16.0.0"
- },
- "main": "dist/radashi.cjs",
- "module": "dist/radashi.js",
- "exports": {
- "require": {
- "types": "./dist/radashi.d.cts",
- "default": "./dist/radashi.cjs"
- },
- "types": "./dist/radashi.d.ts",
- "default": "./dist/radashi.js"
- },
- "types": "dist/radashi.d.cts",
- "files": [
- "dist"
- ],
- "scripts": {
- "add-function": "bash ./scripts/add-function.sh",
- "bench": "bash ./scripts/run-bench.sh",
- "build": "tsup --clean",
- "bundle-impact": "bash ./scripts/bundle-impact.sh",
- "dev": "tsup --clean --watch --sourcemap",
- "format": "bash ./scripts/format.sh",
- "lint": "bash ./scripts/lint.sh",
- "move-function": "bash ./scripts/move-function.sh",
- "test": "vitest run --coverage",
- "test-branch": "bash ./scripts/test-branch.sh",
- "test-single": "bash ./scripts/test-single.sh",
- "update-browserslist": "bash ./scripts/update-browserslist.sh"
- },
- "devDependencies": {
- "@biomejs/biome": "^1.8.3",
- "@radashi-org/biome-config": "link:scripts/biome-config",
- "@types/node": "^22.7.5",
- "@vitest/coverage-v8": "2.0.5",
- "cspell": "^8.13.3",
- "prettier": "^3.3.2",
- "prettier-plugin-pkg": "^0.18.1",
- "prettier-plugin-sh": "^0.14.0",
- "radashi-helper": "^0.1.4",
- "tsup": "^8.1.0",
- "typescript": "^5.5.2",
- "vitest": "2.1.4"
- },
- "sideEffects": false,
- "browserslist": [
- "and_chr >= 57",
- "chrome >= 57",
- "and_ff >= 52",
- "android >= 127",
- "edge >= 15",
- "samsung >= 7.4",
- "safari >= 10.1",
- "ios_saf >= 10.3",
- "opera >= 44",
- "firefox >= 52",
- "unreleased and_chr versions",
- "unreleased chrome versions",
- "unreleased and_ff versions",
- "unreleased android versions",
- "unreleased edge versions",
- "unreleased samsung versions",
- "unreleased safari versions",
- "unreleased ios_saf versions",
- "unreleased opera versions",
- "unreleased firefox versions",
- "node >= 16"
- ]
+ "name": "radashi",
+ "version": "12.2.0",
+ "type": "module",
+ "description": "The modern, community-first TypeScript toolkit with all of the fast, readable, and minimal utility functions you need. Type-safe, dependency-free, tree-shakeable, fully tested.",
+ "repository": {
+ "url": "git+https://github.com/radashi-org/radashi.git"
+ },
+ "homepage": "https://radashi.js.org",
+ "author": "Alec Larson",
+ "contributors": [
+ "Ray Epps"
+ ],
+ "license": "MIT",
+ "packageManager": "pnpm@9.1.3",
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "main": "dist/radashi.cjs",
+ "module": "dist/radashi.js",
+ "exports": {
+ "require": {
+ "types": "./dist/radashi.d.cts",
+ "default": "./dist/radashi.cjs"
+ },
+ "types": "./dist/radashi.d.ts",
+ "default": "./dist/radashi.js"
+ },
+ "types": "dist/radashi.d.cts",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "add-function": "radashi fn create",
+ "bench": "vitest bench",
+ "build": "tsup --clean",
+ "bundle-impact": "node scripts/run bundle-impact",
+ "dev": "tsup --clean --watch --sourcemap",
+ "format": "node scripts/run format",
+ "lint": "node scripts/run lint",
+ "move-function": "radashi fn move",
+ "test": "vitest run --coverage",
+ "test-branch": "node scripts/run test-branch",
+ "test-single": "node scripts/run test-single",
+ "update-browserslist": "node scripts/run update-browserslist"
+ },
+ "devDependencies": {
+ "@biomejs/biome": "^1.8.3",
+ "@radashi-org/biome-config": "link:scripts/biome-config",
+ "@types/node": "^22.7.7",
+ "@vitest/coverage-v8": "2.1.5",
+ "cspell": "8.15.4",
+ "prettier": "^3.3.2",
+ "prettier-plugin-pkg": "^0.18.1",
+ "prettier-plugin-sh": "^0.14.0",
+ "radashi-helper": "^0.1.4",
+ "tsup": "^8.1.0",
+ "typescript": "^5.5.2",
+ "vitest": "2.1.5"
+ },
+ "sideEffects": false,
+ "browserslist": [
+ "and_chr >= 57",
+ "chrome >= 57",
+ "and_ff >= 52",
+ "android >= 127",
+ "edge >= 15",
+ "samsung >= 7.4",
+ "safari >= 10.1",
+ "ios_saf >= 10.3",
+ "opera >= 44",
+ "firefox >= 52",
+ "unreleased and_chr versions",
+ "unreleased chrome versions",
+ "unreleased and_ff versions",
+ "unreleased android versions",
+ "unreleased edge versions",
+ "unreleased samsung versions",
+ "unreleased safari versions",
+ "unreleased ios_saf versions",
+ "unreleased opera versions",
+ "unreleased firefox versions",
+ "node >= 16"
+ ]
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 87342cc0..dfadb94c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,7 +5,6 @@ settings:
excludeLinksFromLockfile: false
importers:
-
.:
devDependencies:
'@biomejs/biome':
@@ -15,13 +14,13 @@ importers:
specifier: link:scripts/biome-config
version: link:scripts/biome-config
'@types/node':
- specifier: ^22.7.5
+ specifier: ^22.7.7
version: 22.7.7
'@vitest/coverage-v8':
- specifier: 2.0.5
- version: 2.0.5(vitest@2.1.4(@types/node@22.7.7))
+ specifier: 2.1.5
+ version: 2.1.5(vitest@2.1.5(@types/node@22.7.7))
cspell:
- specifier: ^8.13.3
+ specifier: 8.15.4
version: 8.15.4
prettier:
specifier: ^3.3.2
@@ -42,710 +41,1187 @@ importers:
specifier: ^5.5.2
version: 5.6.3
vitest:
- specifier: 2.1.4
- version: 2.1.4(@types/node@22.7.7)
+ specifier: 2.1.5
+ version: 2.1.5(@types/node@22.7.7)
packages:
-
'@ampproject/remapping@2.3.0':
- resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
- engines: {node: '>=6.0.0'}
-
- '@babel/helper-string-parser@7.25.7':
- resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.25.7':
- resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.25.8':
- resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==}
- engines: {node: '>=6.0.0'}
+ resolution:
+ {
+ integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==,
+ }
+ engines: { node: '>=6.0.0' }
+
+ '@babel/helper-string-parser@7.25.9':
+ resolution:
+ {
+ integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==,
+ }
+ engines: { node: '>=6.9.0' }
+
+ '@babel/helper-validator-identifier@7.25.9':
+ resolution:
+ {
+ integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==,
+ }
+ engines: { node: '>=6.9.0' }
+
+ '@babel/parser@7.26.2':
+ resolution:
+ {
+ integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==,
+ }
+ engines: { node: '>=6.0.0' }
hasBin: true
- '@babel/types@7.25.8':
- resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==}
- engines: {node: '>=6.9.0'}
+ '@babel/types@7.26.0':
+ resolution:
+ {
+ integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==,
+ }
+ engines: { node: '>=6.9.0' }
'@bcoe/v8-coverage@0.2.3':
- resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+ resolution:
+ {
+ integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==,
+ }
'@biomejs/biome@1.9.4':
- resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==}
- engines: {node: '>=14.21.3'}
+ resolution:
+ {
+ integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==,
+ }
+ engines: { node: '>=14.21.3' }
hasBin: true
'@biomejs/cli-darwin-arm64@1.9.4':
- resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==}
- engines: {node: '>=14.21.3'}
+ resolution:
+ {
+ integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==,
+ }
+ engines: { node: '>=14.21.3' }
cpu: [arm64]
os: [darwin]
'@biomejs/cli-darwin-x64@1.9.4':
- resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==}
- engines: {node: '>=14.21.3'}
+ resolution:
+ {
+ integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==,
+ }
+ engines: { node: '>=14.21.3' }
cpu: [x64]
os: [darwin]
'@biomejs/cli-linux-arm64-musl@1.9.4':
- resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==}
- engines: {node: '>=14.21.3'}
+ resolution:
+ {
+ integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==,
+ }
+ engines: { node: '>=14.21.3' }
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-arm64@1.9.4':
- resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==}
- engines: {node: '>=14.21.3'}
+ resolution:
+ {
+ integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==,
+ }
+ engines: { node: '>=14.21.3' }
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-x64-musl@1.9.4':
- resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==}
- engines: {node: '>=14.21.3'}
+ resolution:
+ {
+ integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==,
+ }
+ engines: { node: '>=14.21.3' }
cpu: [x64]
os: [linux]
'@biomejs/cli-linux-x64@1.9.4':
- resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==}
- engines: {node: '>=14.21.3'}
+ resolution:
+ {
+ integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==,
+ }
+ engines: { node: '>=14.21.3' }
cpu: [x64]
os: [linux]
'@biomejs/cli-win32-arm64@1.9.4':
- resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==}
- engines: {node: '>=14.21.3'}
+ resolution:
+ {
+ integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==,
+ }
+ engines: { node: '>=14.21.3' }
cpu: [arm64]
os: [win32]
'@biomejs/cli-win32-x64@1.9.4':
- resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==}
- engines: {node: '>=14.21.3'}
+ resolution:
+ {
+ integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==,
+ }
+ engines: { node: '>=14.21.3' }
cpu: [x64]
os: [win32]
'@cspell/cspell-bundled-dicts@8.15.4':
- resolution: {integrity: sha512-t5b2JwGeUmzmjl319mCuaeKGxTvmzLLRmrpdHr+ZZGRO4nf7L48Lbe9A6uwNUvsZe0cXohiNXsrrsuzRVXswVA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-t5b2JwGeUmzmjl319mCuaeKGxTvmzLLRmrpdHr+ZZGRO4nf7L48Lbe9A6uwNUvsZe0cXohiNXsrrsuzRVXswVA==,
+ }
+ engines: { node: '>=18' }
'@cspell/cspell-json-reporter@8.15.4':
- resolution: {integrity: sha512-solraYhZG4l++NeVCOtpc8DMvwHc46TmJt8DQbgvKtk6wOjTEcFrwKfA6Ei9YKbvyebJlpWMenO3goOll0loYg==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-solraYhZG4l++NeVCOtpc8DMvwHc46TmJt8DQbgvKtk6wOjTEcFrwKfA6Ei9YKbvyebJlpWMenO3goOll0loYg==,
+ }
+ engines: { node: '>=18' }
'@cspell/cspell-pipe@8.15.4':
- resolution: {integrity: sha512-WfCmZVFC6mX6vYlf02hWwelcSBTbDQgc5YqY+1miuMk+OHSUAHSACjZId6/a4IAID94xScvFfj7jgrdejUVvIQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-WfCmZVFC6mX6vYlf02hWwelcSBTbDQgc5YqY+1miuMk+OHSUAHSACjZId6/a4IAID94xScvFfj7jgrdejUVvIQ==,
+ }
+ engines: { node: '>=18' }
'@cspell/cspell-resolver@8.15.4':
- resolution: {integrity: sha512-Zr428o+uUTqywrdKyjluJVnDPVAJEqZ1chQLKIrHggUah1cgs5aQ7rZ+0Rv5euYMlC2idZnP7IL6TDaIib80oA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-Zr428o+uUTqywrdKyjluJVnDPVAJEqZ1chQLKIrHggUah1cgs5aQ7rZ+0Rv5euYMlC2idZnP7IL6TDaIib80oA==,
+ }
+ engines: { node: '>=18' }
'@cspell/cspell-service-bus@8.15.4':
- resolution: {integrity: sha512-pXYofnV/V9Y3LZdfFGbmhdxPX/ABjiD3wFjGHt5YhIU9hjVVuvjFlgY7pH2AvRjs4F8xKXv1ReWl44BJOL9gLA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-pXYofnV/V9Y3LZdfFGbmhdxPX/ABjiD3wFjGHt5YhIU9hjVVuvjFlgY7pH2AvRjs4F8xKXv1ReWl44BJOL9gLA==,
+ }
+ engines: { node: '>=18' }
'@cspell/cspell-types@8.15.4':
- resolution: {integrity: sha512-1hDtgYDQVW11zgtrr12EmGW45Deoi7IjZOhzPFLb+3WkhZ46ggWdbrRalWwBolQPDDo6+B2Q6WXz5hdND+Tpwg==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-1hDtgYDQVW11zgtrr12EmGW45Deoi7IjZOhzPFLb+3WkhZ46ggWdbrRalWwBolQPDDo6+B2Q6WXz5hdND+Tpwg==,
+ }
+ engines: { node: '>=18' }
'@cspell/dict-ada@4.0.5':
- resolution: {integrity: sha512-6/RtZ/a+lhFVmrx/B7bfP7rzC4yjEYe8o74EybXcvu4Oue6J4Ey2WSYj96iuodloj1LWrkNCQyX5h4Pmcj0Iag==}
+ resolution:
+ {
+ integrity: sha512-6/RtZ/a+lhFVmrx/B7bfP7rzC4yjEYe8o74EybXcvu4Oue6J4Ey2WSYj96iuodloj1LWrkNCQyX5h4Pmcj0Iag==,
+ }
'@cspell/dict-aws@4.0.7':
- resolution: {integrity: sha512-PoaPpa2NXtSkhGIMIKhsJUXB6UbtTt6Ao3x9JdU9kn7fRZkwD4RjHDGqulucIOz7KeEX/dNRafap6oK9xHe4RA==}
+ resolution:
+ {
+ integrity: sha512-PoaPpa2NXtSkhGIMIKhsJUXB6UbtTt6Ao3x9JdU9kn7fRZkwD4RjHDGqulucIOz7KeEX/dNRafap6oK9xHe4RA==,
+ }
'@cspell/dict-bash@4.1.8':
- resolution: {integrity: sha512-I2CM2pTNthQwW069lKcrVxchJGMVQBzru2ygsHCwgidXRnJL/NTjAPOFTxN58Jc1bf7THWghfEDyKX/oyfc0yg==}
+ resolution:
+ {
+ integrity: sha512-I2CM2pTNthQwW069lKcrVxchJGMVQBzru2ygsHCwgidXRnJL/NTjAPOFTxN58Jc1bf7THWghfEDyKX/oyfc0yg==,
+ }
'@cspell/dict-companies@3.1.7':
- resolution: {integrity: sha512-ncVs/efuAkP1/tLDhWbXukBjgZ5xOUfe03neHMWsE8zvXXc5+Lw6TX5jaJXZLOoES/f4j4AhRE20jsPCF5pm+A==}
+ resolution:
+ {
+ integrity: sha512-ncVs/efuAkP1/tLDhWbXukBjgZ5xOUfe03neHMWsE8zvXXc5+Lw6TX5jaJXZLOoES/f4j4AhRE20jsPCF5pm+A==,
+ }
'@cspell/dict-cpp@5.1.22':
- resolution: {integrity: sha512-g1/8P5/Q+xnIc8Js4UtBg3XOhcFrFlFbG3UWVtyEx49YTf0r9eyDtDt1qMMDBZT91pyCwLcAEbwS+4i5PIfNZw==}
+ resolution:
+ {
+ integrity: sha512-g1/8P5/Q+xnIc8Js4UtBg3XOhcFrFlFbG3UWVtyEx49YTf0r9eyDtDt1qMMDBZT91pyCwLcAEbwS+4i5PIfNZw==,
+ }
'@cspell/dict-cryptocurrencies@5.0.3':
- resolution: {integrity: sha512-bl5q+Mk+T3xOZ12+FG37dB30GDxStza49Rmoax95n37MTLksk9wBo1ICOlPJ6PnDUSyeuv4SIVKgRKMKkJJglA==}
+ resolution:
+ {
+ integrity: sha512-bl5q+Mk+T3xOZ12+FG37dB30GDxStza49Rmoax95n37MTLksk9wBo1ICOlPJ6PnDUSyeuv4SIVKgRKMKkJJglA==,
+ }
'@cspell/dict-csharp@4.0.5':
- resolution: {integrity: sha512-c/sFnNgtRwRJxtC3JHKkyOm+U3/sUrltFeNwml9VsxKBHVmvlg4tk4ar58PdpW9/zTlGUkWi2i85//DN1EsUCA==}
+ resolution:
+ {
+ integrity: sha512-c/sFnNgtRwRJxtC3JHKkyOm+U3/sUrltFeNwml9VsxKBHVmvlg4tk4ar58PdpW9/zTlGUkWi2i85//DN1EsUCA==,
+ }
'@cspell/dict-css@4.0.16':
- resolution: {integrity: sha512-70qu7L9z/JR6QLyJPk38fNTKitlIHnfunx0wjpWQUQ8/jGADIhMCrz6hInBjqPNdtGpYm8d1dNFyF8taEkOgrQ==}
+ resolution:
+ {
+ integrity: sha512-70qu7L9z/JR6QLyJPk38fNTKitlIHnfunx0wjpWQUQ8/jGADIhMCrz6hInBjqPNdtGpYm8d1dNFyF8taEkOgrQ==,
+ }
'@cspell/dict-dart@2.2.4':
- resolution: {integrity: sha512-of/cVuUIZZK/+iqefGln8G3bVpfyN6ZtH+LyLkHMoR5tEj+2vtilGNk9ngwyR8L4lEqbKuzSkOxgfVjsXf5PsQ==}
+ resolution:
+ {
+ integrity: sha512-of/cVuUIZZK/+iqefGln8G3bVpfyN6ZtH+LyLkHMoR5tEj+2vtilGNk9ngwyR8L4lEqbKuzSkOxgfVjsXf5PsQ==,
+ }
'@cspell/dict-data-science@2.0.5':
- resolution: {integrity: sha512-nNSILXmhSJox9/QoXICPQgm8q5PbiSQP4afpbkBqPi/u/b3K9MbNH5HvOOa6230gxcGdbZ9Argl2hY/U8siBlg==}
+ resolution:
+ {
+ integrity: sha512-nNSILXmhSJox9/QoXICPQgm8q5PbiSQP4afpbkBqPi/u/b3K9MbNH5HvOOa6230gxcGdbZ9Argl2hY/U8siBlg==,
+ }
'@cspell/dict-django@4.1.3':
- resolution: {integrity: sha512-yBspeL3roJlO0a1vKKNaWABURuHdHZ9b1L8d3AukX0AsBy9snSggc8xCavPmSzNfeMDXbH+1lgQiYBd3IW03fg==}
+ resolution:
+ {
+ integrity: sha512-yBspeL3roJlO0a1vKKNaWABURuHdHZ9b1L8d3AukX0AsBy9snSggc8xCavPmSzNfeMDXbH+1lgQiYBd3IW03fg==,
+ }
'@cspell/dict-docker@1.1.11':
- resolution: {integrity: sha512-s0Yhb16/R+UT1y727ekbR/itWQF3Qz275DR1ahOa66wYtPjHUXmhM3B/LT3aPaX+hD6AWmK23v57SuyfYHUjsw==}
+ resolution:
+ {
+ integrity: sha512-s0Yhb16/R+UT1y727ekbR/itWQF3Qz275DR1ahOa66wYtPjHUXmhM3B/LT3aPaX+hD6AWmK23v57SuyfYHUjsw==,
+ }
'@cspell/dict-dotnet@5.0.8':
- resolution: {integrity: sha512-MD8CmMgMEdJAIPl2Py3iqrx3B708MbCIXAuOeZ0Mzzb8YmLmiisY7QEYSZPg08D7xuwARycP0Ki+bb0GAkFSqg==}
+ resolution:
+ {
+ integrity: sha512-MD8CmMgMEdJAIPl2Py3iqrx3B708MbCIXAuOeZ0Mzzb8YmLmiisY7QEYSZPg08D7xuwARycP0Ki+bb0GAkFSqg==,
+ }
'@cspell/dict-elixir@4.0.6':
- resolution: {integrity: sha512-TfqSTxMHZ2jhiqnXlVKM0bUADtCvwKQv2XZL/DI0rx3doG8mEMS8SGPOmiyyGkHpR/pGOq18AFH3BEm4lViHIw==}
+ resolution:
+ {
+ integrity: sha512-TfqSTxMHZ2jhiqnXlVKM0bUADtCvwKQv2XZL/DI0rx3doG8mEMS8SGPOmiyyGkHpR/pGOq18AFH3BEm4lViHIw==,
+ }
'@cspell/dict-en-common-misspellings@2.0.7':
- resolution: {integrity: sha512-qNFo3G4wyabcwnM+hDrMYKN9vNVg/k9QkhqSlSst6pULjdvPyPs1mqz1689xO/v9t8e6sR4IKc3CgUXDMTYOpA==}
+ resolution:
+ {
+ integrity: sha512-qNFo3G4wyabcwnM+hDrMYKN9vNVg/k9QkhqSlSst6pULjdvPyPs1mqz1689xO/v9t8e6sR4IKc3CgUXDMTYOpA==,
+ }
'@cspell/dict-en-gb@1.1.33':
- resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==}
+ resolution:
+ {
+ integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==,
+ }
'@cspell/dict-en_us@4.3.26':
- resolution: {integrity: sha512-hDbHYJsi3UgU1J++B0WLiYhWQdsmve3CH53FIaMRAdhrWOHcuw7h1dYkQXHFEP5lOjaq53KUHp/oh5su6VkIZg==}
+ resolution:
+ {
+ integrity: sha512-hDbHYJsi3UgU1J++B0WLiYhWQdsmve3CH53FIaMRAdhrWOHcuw7h1dYkQXHFEP5lOjaq53KUHp/oh5su6VkIZg==,
+ }
'@cspell/dict-filetypes@3.0.7':
- resolution: {integrity: sha512-/DN0Ujp9/EXvpTcgih9JmBaE8n+G0wtsspyNdvHT5luRfpfol1xm/CIQb6xloCXCiLkWX+EMPeLSiVIZq+24dA==}
+ resolution:
+ {
+ integrity: sha512-/DN0Ujp9/EXvpTcgih9JmBaE8n+G0wtsspyNdvHT5luRfpfol1xm/CIQb6xloCXCiLkWX+EMPeLSiVIZq+24dA==,
+ }
'@cspell/dict-flutter@1.0.3':
- resolution: {integrity: sha512-52C9aUEU22ptpgYh6gQyIdA4MP6NPwzbEqndfgPh3Sra191/kgs7CVqXiO1qbtZa9gnYHUoVApkoxRE7mrXHfg==}
+ resolution:
+ {
+ integrity: sha512-52C9aUEU22ptpgYh6gQyIdA4MP6NPwzbEqndfgPh3Sra191/kgs7CVqXiO1qbtZa9gnYHUoVApkoxRE7mrXHfg==,
+ }
'@cspell/dict-fonts@4.0.3':
- resolution: {integrity: sha512-sPd17kV5qgYXLteuHFPn5mbp/oCHKgitNfsZLFC3W2fWEgZlhg4hK+UGig3KzrYhhvQ8wBnmZrAQm0TFKCKzsA==}
+ resolution:
+ {
+ integrity: sha512-sPd17kV5qgYXLteuHFPn5mbp/oCHKgitNfsZLFC3W2fWEgZlhg4hK+UGig3KzrYhhvQ8wBnmZrAQm0TFKCKzsA==,
+ }
'@cspell/dict-fsharp@1.0.4':
- resolution: {integrity: sha512-G5wk0o1qyHUNi9nVgdE1h5wl5ylq7pcBjX8vhjHcO4XBq20D5eMoXjwqMo/+szKAqzJ+WV3BgAL50akLKrT9Rw==}
+ resolution:
+ {
+ integrity: sha512-G5wk0o1qyHUNi9nVgdE1h5wl5ylq7pcBjX8vhjHcO4XBq20D5eMoXjwqMo/+szKAqzJ+WV3BgAL50akLKrT9Rw==,
+ }
'@cspell/dict-fullstack@3.2.3':
- resolution: {integrity: sha512-62PbndIyQPH11mAv0PyiyT0vbwD0AXEocPpHlCHzfb5v9SspzCCbzQ/LIBiFmyRa+q5LMW35CnSVu6OXdT+LKg==}
+ resolution:
+ {
+ integrity: sha512-62PbndIyQPH11mAv0PyiyT0vbwD0AXEocPpHlCHzfb5v9SspzCCbzQ/LIBiFmyRa+q5LMW35CnSVu6OXdT+LKg==,
+ }
'@cspell/dict-gaming-terms@1.0.8':
- resolution: {integrity: sha512-7OL0zTl93WFWhhtpXFrtm9uZXItC3ncAs8d0iQDMMFVNU1rBr6raBNxJskxE5wx2Ant12fgI66ZGVagXfN+yfA==}
+ resolution:
+ {
+ integrity: sha512-7OL0zTl93WFWhhtpXFrtm9uZXItC3ncAs8d0iQDMMFVNU1rBr6raBNxJskxE5wx2Ant12fgI66ZGVagXfN+yfA==,
+ }
'@cspell/dict-git@3.0.3':
- resolution: {integrity: sha512-LSxB+psZ0qoj83GkyjeEH/ZViyVsGEF/A6BAo8Nqc0w0HjD2qX/QR4sfA6JHUgQ3Yi/ccxdK7xNIo67L2ScW5A==}
+ resolution:
+ {
+ integrity: sha512-LSxB+psZ0qoj83GkyjeEH/ZViyVsGEF/A6BAo8Nqc0w0HjD2qX/QR4sfA6JHUgQ3Yi/ccxdK7xNIo67L2ScW5A==,
+ }
'@cspell/dict-golang@6.0.16':
- resolution: {integrity: sha512-hZOBlgcguv2Hdc93n2zjdAQm1j3grsN9T9WhPnQ1wh2vUDoCLEujg+6gWhjcLb8ECOcwZTWgNyQLWeOxEsAj/w==}
+ resolution:
+ {
+ integrity: sha512-hZOBlgcguv2Hdc93n2zjdAQm1j3grsN9T9WhPnQ1wh2vUDoCLEujg+6gWhjcLb8ECOcwZTWgNyQLWeOxEsAj/w==,
+ }
'@cspell/dict-google@1.0.4':
- resolution: {integrity: sha512-JThUT9eiguCja1mHHLwYESgxkhk17Gv7P3b1S7ZJzXw86QyVHPrbpVoMpozHk0C9o+Ym764B7gZGKmw9uMGduQ==}
+ resolution:
+ {
+ integrity: sha512-JThUT9eiguCja1mHHLwYESgxkhk17Gv7P3b1S7ZJzXw86QyVHPrbpVoMpozHk0C9o+Ym764B7gZGKmw9uMGduQ==,
+ }
'@cspell/dict-haskell@4.0.4':
- resolution: {integrity: sha512-EwQsedEEnND/vY6tqRfg9y7tsnZdxNqOxLXSXTsFA6JRhUlr8Qs88iUUAfsUzWc4nNmmzQH2UbtT25ooG9x4nA==}
+ resolution:
+ {
+ integrity: sha512-EwQsedEEnND/vY6tqRfg9y7tsnZdxNqOxLXSXTsFA6JRhUlr8Qs88iUUAfsUzWc4nNmmzQH2UbtT25ooG9x4nA==,
+ }
'@cspell/dict-html-symbol-entities@4.0.3':
- resolution: {integrity: sha512-aABXX7dMLNFdSE8aY844X4+hvfK7977sOWgZXo4MTGAmOzR8524fjbJPswIBK7GaD3+SgFZ2yP2o0CFvXDGF+A==}
+ resolution:
+ {
+ integrity: sha512-aABXX7dMLNFdSE8aY844X4+hvfK7977sOWgZXo4MTGAmOzR8524fjbJPswIBK7GaD3+SgFZ2yP2o0CFvXDGF+A==,
+ }
'@cspell/dict-html@4.0.9':
- resolution: {integrity: sha512-BNp7w3m910K4qIVyOBOZxHuFNbVojUY6ES8Y8r7YjYgJkm2lCuQoVwwhPjurnomJ7BPmZTb+3LLJ58XIkgF7JQ==}
+ resolution:
+ {
+ integrity: sha512-BNp7w3m910K4qIVyOBOZxHuFNbVojUY6ES8Y8r7YjYgJkm2lCuQoVwwhPjurnomJ7BPmZTb+3LLJ58XIkgF7JQ==,
+ }
'@cspell/dict-java@5.0.10':
- resolution: {integrity: sha512-pVNcOnmoGiNL8GSVq4WbX/Vs2FGS0Nej+1aEeGuUY9CU14X8yAVCG+oih5ZoLt1jaR8YfR8byUF8wdp4qG4XIw==}
+ resolution:
+ {
+ integrity: sha512-pVNcOnmoGiNL8GSVq4WbX/Vs2FGS0Nej+1aEeGuUY9CU14X8yAVCG+oih5ZoLt1jaR8YfR8byUF8wdp4qG4XIw==,
+ }
'@cspell/dict-julia@1.0.4':
- resolution: {integrity: sha512-bFVgNX35MD3kZRbXbJVzdnN7OuEqmQXGpdOi9jzB40TSgBTlJWA4nxeAKV4CPCZxNRUGnLH0p05T/AD7Aom9/w==}
+ resolution:
+ {
+ integrity: sha512-bFVgNX35MD3kZRbXbJVzdnN7OuEqmQXGpdOi9jzB40TSgBTlJWA4nxeAKV4CPCZxNRUGnLH0p05T/AD7Aom9/w==,
+ }
'@cspell/dict-k8s@1.0.9':
- resolution: {integrity: sha512-Q7GELSQIzo+BERl2ya/nBEnZeQC+zJP19SN1pI6gqDYraM51uYJacbbcWLYYO2Y+5joDjNt/sd/lJtLaQwoSlA==}
+ resolution:
+ {
+ integrity: sha512-Q7GELSQIzo+BERl2ya/nBEnZeQC+zJP19SN1pI6gqDYraM51uYJacbbcWLYYO2Y+5joDjNt/sd/lJtLaQwoSlA==,
+ }
'@cspell/dict-latex@4.0.3':
- resolution: {integrity: sha512-2KXBt9fSpymYHxHfvhUpjUFyzrmN4c4P8mwIzweLyvqntBT3k0YGZJSriOdjfUjwSygrfEwiuPI1EMrvgrOMJw==}
+ resolution:
+ {
+ integrity: sha512-2KXBt9fSpymYHxHfvhUpjUFyzrmN4c4P8mwIzweLyvqntBT3k0YGZJSriOdjfUjwSygrfEwiuPI1EMrvgrOMJw==,
+ }
'@cspell/dict-lorem-ipsum@4.0.3':
- resolution: {integrity: sha512-WFpDi/PDYHXft6p0eCXuYnn7mzMEQLVeqpO+wHSUd+kz5ADusZ4cpslAA4wUZJstF1/1kMCQCZM6HLZic9bT8A==}
+ resolution:
+ {
+ integrity: sha512-WFpDi/PDYHXft6p0eCXuYnn7mzMEQLVeqpO+wHSUd+kz5ADusZ4cpslAA4wUZJstF1/1kMCQCZM6HLZic9bT8A==,
+ }
'@cspell/dict-lua@4.0.6':
- resolution: {integrity: sha512-Jwvh1jmAd9b+SP9e1GkS2ACbqKKRo9E1f9GdjF/ijmooZuHU0hPyqvnhZzUAxO1egbnNjxS/J2T6iUtjAUK2KQ==}
+ resolution:
+ {
+ integrity: sha512-Jwvh1jmAd9b+SP9e1GkS2ACbqKKRo9E1f9GdjF/ijmooZuHU0hPyqvnhZzUAxO1egbnNjxS/J2T6iUtjAUK2KQ==,
+ }
'@cspell/dict-makefile@1.0.3':
- resolution: {integrity: sha512-R3U0DSpvTs6qdqfyBATnePj9Q/pypkje0Nj26mQJ8TOBQutCRAJbr2ZFAeDjgRx5EAJU/+8txiyVF97fbVRViw==}
+ resolution:
+ {
+ integrity: sha512-R3U0DSpvTs6qdqfyBATnePj9Q/pypkje0Nj26mQJ8TOBQutCRAJbr2ZFAeDjgRx5EAJU/+8txiyVF97fbVRViw==,
+ }
'@cspell/dict-monkeyc@1.0.9':
- resolution: {integrity: sha512-Jvf6g5xlB4+za3ThvenYKREXTEgzx5gMUSzrAxIiPleVG4hmRb/GBSoSjtkGaibN3XxGx5x809gSTYCA/IHCpA==}
+ resolution:
+ {
+ integrity: sha512-Jvf6g5xlB4+za3ThvenYKREXTEgzx5gMUSzrAxIiPleVG4hmRb/GBSoSjtkGaibN3XxGx5x809gSTYCA/IHCpA==,
+ }
'@cspell/dict-node@5.0.4':
- resolution: {integrity: sha512-Hz5hiuOvZTd7Cp1IBqUZ7/ChwJeQpD5BJuwCaDn4mPNq4iMcQ1iWBYMThvNVqCEDgKv63X52nT8RAWacss98qg==}
+ resolution:
+ {
+ integrity: sha512-Hz5hiuOvZTd7Cp1IBqUZ7/ChwJeQpD5BJuwCaDn4mPNq4iMcQ1iWBYMThvNVqCEDgKv63X52nT8RAWacss98qg==,
+ }
'@cspell/dict-npm@5.1.8':
- resolution: {integrity: sha512-AJELYXeB4fQdIoNfmuaQxB1Hli3cX6XPsQCjfBxlu0QYXhrjB/IrCLLQAjWIywDqJiWyGUFTz4DqaANm8C/r9Q==}
+ resolution:
+ {
+ integrity: sha512-AJELYXeB4fQdIoNfmuaQxB1Hli3cX6XPsQCjfBxlu0QYXhrjB/IrCLLQAjWIywDqJiWyGUFTz4DqaANm8C/r9Q==,
+ }
'@cspell/dict-php@4.0.13':
- resolution: {integrity: sha512-P6sREMZkhElzz/HhXAjahnICYIqB/HSGp1EhZh+Y6IhvC15AzgtDP8B8VYCIsQof6rPF1SQrFwunxOv8H1e2eg==}
+ resolution:
+ {
+ integrity: sha512-P6sREMZkhElzz/HhXAjahnICYIqB/HSGp1EhZh+Y6IhvC15AzgtDP8B8VYCIsQof6rPF1SQrFwunxOv8H1e2eg==,
+ }
'@cspell/dict-powershell@5.0.13':
- resolution: {integrity: sha512-0qdj0XZIPmb77nRTynKidRJKTU0Fl+10jyLbAhFTuBWKMypVY06EaYFnwhsgsws/7nNX8MTEQuewbl9bWFAbsg==}
+ resolution:
+ {
+ integrity: sha512-0qdj0XZIPmb77nRTynKidRJKTU0Fl+10jyLbAhFTuBWKMypVY06EaYFnwhsgsws/7nNX8MTEQuewbl9bWFAbsg==,
+ }
'@cspell/dict-public-licenses@2.0.11':
- resolution: {integrity: sha512-rR5KjRUSnVKdfs5G+gJ4oIvQvm8+NJ6cHWY2N+GE69/FSGWDOPHxulCzeGnQU/c6WWZMSimG9o49i9r//lUQyA==}
+ resolution:
+ {
+ integrity: sha512-rR5KjRUSnVKdfs5G+gJ4oIvQvm8+NJ6cHWY2N+GE69/FSGWDOPHxulCzeGnQU/c6WWZMSimG9o49i9r//lUQyA==,
+ }
'@cspell/dict-python@4.2.12':
- resolution: {integrity: sha512-U25eOFu+RE0aEcF2AsxZmq3Lic7y9zspJ9SzjrC0mfJz+yr3YmSCw4E0blMD3mZoNcf7H/vMshuKIY5AY36U+Q==}
+ resolution:
+ {
+ integrity: sha512-U25eOFu+RE0aEcF2AsxZmq3Lic7y9zspJ9SzjrC0mfJz+yr3YmSCw4E0blMD3mZoNcf7H/vMshuKIY5AY36U+Q==,
+ }
'@cspell/dict-r@2.0.4':
- resolution: {integrity: sha512-cBpRsE/U0d9BRhiNRMLMH1PpWgw+N+1A2jumgt1if9nBGmQw4MUpg2u9I0xlFVhstTIdzXiLXMxP45cABuiUeQ==}
+ resolution:
+ {
+ integrity: sha512-cBpRsE/U0d9BRhiNRMLMH1PpWgw+N+1A2jumgt1if9nBGmQw4MUpg2u9I0xlFVhstTIdzXiLXMxP45cABuiUeQ==,
+ }
'@cspell/dict-ruby@5.0.7':
- resolution: {integrity: sha512-4/d0hcoPzi5Alk0FmcyqlzFW9lQnZh9j07MJzPcyVO62nYJJAGKaPZL2o4qHeCS/od/ctJC5AHRdoUm0ktsw6Q==}
+ resolution:
+ {
+ integrity: sha512-4/d0hcoPzi5Alk0FmcyqlzFW9lQnZh9j07MJzPcyVO62nYJJAGKaPZL2o4qHeCS/od/ctJC5AHRdoUm0ktsw6Q==,
+ }
'@cspell/dict-rust@4.0.9':
- resolution: {integrity: sha512-Dhr6TIZsMV92xcikKIWei6p/qswS4M+gTkivpWwz4/1oaVk2nRrxJmCdRoVkJlZkkAc17rjxrS12mpnJZI0iWw==}
+ resolution:
+ {
+ integrity: sha512-Dhr6TIZsMV92xcikKIWei6p/qswS4M+gTkivpWwz4/1oaVk2nRrxJmCdRoVkJlZkkAc17rjxrS12mpnJZI0iWw==,
+ }
'@cspell/dict-scala@5.0.6':
- resolution: {integrity: sha512-tl0YWAfjUVb4LyyE4JIMVE8DlLzb1ecHRmIWc4eT6nkyDqQgHKzdHsnusxFEFMVLIQomgSg0Zz6hJ5S1E4W4ww==}
+ resolution:
+ {
+ integrity: sha512-tl0YWAfjUVb4LyyE4JIMVE8DlLzb1ecHRmIWc4eT6nkyDqQgHKzdHsnusxFEFMVLIQomgSg0Zz6hJ5S1E4W4ww==,
+ }
'@cspell/dict-software-terms@4.1.11':
- resolution: {integrity: sha512-77CTHxWFTVw6tVoMN8WBMrlNW2F2FbgATwD/6vcOuiyrJUmh8klN5ZK3m+yyK3ZzsnaW2Bduoc0fw2Ckcm/riQ==}
+ resolution:
+ {
+ integrity: sha512-77CTHxWFTVw6tVoMN8WBMrlNW2F2FbgATwD/6vcOuiyrJUmh8klN5ZK3m+yyK3ZzsnaW2Bduoc0fw2Ckcm/riQ==,
+ }
'@cspell/dict-sql@2.1.8':
- resolution: {integrity: sha512-dJRE4JV1qmXTbbGm6WIcg1knmR6K5RXnQxF4XHs5HA3LAjc/zf77F95i5LC+guOGppVF6Hdl66S2UyxT+SAF3A==}
+ resolution:
+ {
+ integrity: sha512-dJRE4JV1qmXTbbGm6WIcg1knmR6K5RXnQxF4XHs5HA3LAjc/zf77F95i5LC+guOGppVF6Hdl66S2UyxT+SAF3A==,
+ }
'@cspell/dict-svelte@1.0.5':
- resolution: {integrity: sha512-sseHlcXOqWE4Ner9sg8KsjxwSJ2yssoJNqFHR9liWVbDV+m7kBiUtn2EB690TihzVsEmDr/0Yxrbb5Bniz70mA==}
+ resolution:
+ {
+ integrity: sha512-sseHlcXOqWE4Ner9sg8KsjxwSJ2yssoJNqFHR9liWVbDV+m7kBiUtn2EB690TihzVsEmDr/0Yxrbb5Bniz70mA==,
+ }
'@cspell/dict-swift@2.0.4':
- resolution: {integrity: sha512-CsFF0IFAbRtYNg0yZcdaYbADF5F3DsM8C4wHnZefQy8YcHP/qjAF/GdGfBFBLx+XSthYuBlo2b2XQVdz3cJZBw==}
+ resolution:
+ {
+ integrity: sha512-CsFF0IFAbRtYNg0yZcdaYbADF5F3DsM8C4wHnZefQy8YcHP/qjAF/GdGfBFBLx+XSthYuBlo2b2XQVdz3cJZBw==,
+ }
'@cspell/dict-terraform@1.0.5':
- resolution: {integrity: sha512-qH3epPB2d6d5w1l4hR2OsnN8qDQ4P0z6oDB7+YiNH+BoECXv4Z38MIV1H8cxIzD2wkzkt2JTcFYaVW72MDZAlg==}
+ resolution:
+ {
+ integrity: sha512-qH3epPB2d6d5w1l4hR2OsnN8qDQ4P0z6oDB7+YiNH+BoECXv4Z38MIV1H8cxIzD2wkzkt2JTcFYaVW72MDZAlg==,
+ }
'@cspell/dict-typescript@3.1.10':
- resolution: {integrity: sha512-7Zek3w4Rh3ZYyhihJ34FdnUBwP3OmRldnEq3hZ+FgQ0PyYZjXv5ztEViRBBxXjiFx1nHozr6pLi74TxToD8xsg==}
+ resolution:
+ {
+ integrity: sha512-7Zek3w4Rh3ZYyhihJ34FdnUBwP3OmRldnEq3hZ+FgQ0PyYZjXv5ztEViRBBxXjiFx1nHozr6pLi74TxToD8xsg==,
+ }
'@cspell/dict-vue@3.0.3':
- resolution: {integrity: sha512-akmYbrgAGumqk1xXALtDJcEcOMYBYMnkjpmGzH13Ozhq1mkPF4VgllFQlm1xYde+BUKNnzMgPEzxrL2qZllgYA==}
+ resolution:
+ {
+ integrity: sha512-akmYbrgAGumqk1xXALtDJcEcOMYBYMnkjpmGzH13Ozhq1mkPF4VgllFQlm1xYde+BUKNnzMgPEzxrL2qZllgYA==,
+ }
'@cspell/dynamic-import@8.15.4':
- resolution: {integrity: sha512-tr0F6EYN6qtniNvt1Uib+PgYQHeo4dQHXE2Optap+hYTOoQ2VoQ+SwBVjZ+Q2bmSAB0fmOyf0AvgsUtnWIpavw==}
- engines: {node: '>=18.0'}
+ resolution:
+ {
+ integrity: sha512-tr0F6EYN6qtniNvt1Uib+PgYQHeo4dQHXE2Optap+hYTOoQ2VoQ+SwBVjZ+Q2bmSAB0fmOyf0AvgsUtnWIpavw==,
+ }
+ engines: { node: '>=18.0' }
'@cspell/filetypes@8.15.4':
- resolution: {integrity: sha512-sNl6jr3ym/4151EY76qlI/00HHsiLZBqW7Vb1tqCzsgSg3EpL30ddjr74So6Sg2PN26Yf09hvxGTJzXn1R4aYw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-sNl6jr3ym/4151EY76qlI/00HHsiLZBqW7Vb1tqCzsgSg3EpL30ddjr74So6Sg2PN26Yf09hvxGTJzXn1R4aYw==,
+ }
+ engines: { node: '>=18' }
'@cspell/strong-weak-map@8.15.4':
- resolution: {integrity: sha512-m5DeQksbhJFqcSYF8Q0Af/WXmXCMAJocCUShkzOXK+uZNXnvhBZN7VyQ9hL+GRzX8JTPEPdVcz2lFyVE5p+LzQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-m5DeQksbhJFqcSYF8Q0Af/WXmXCMAJocCUShkzOXK+uZNXnvhBZN7VyQ9hL+GRzX8JTPEPdVcz2lFyVE5p+LzQ==,
+ }
+ engines: { node: '>=18' }
'@cspell/url@8.15.4':
- resolution: {integrity: sha512-K2oZu/oLQPs5suRpLS8uu04O3YMUioSlEU1D66fRoOxzI5NzLt7i7yMg3HQHjChGa09N5bzqmrVdhmQrRZXwGg==}
- engines: {node: '>=18.0'}
+ resolution:
+ {
+ integrity: sha512-K2oZu/oLQPs5suRpLS8uu04O3YMUioSlEU1D66fRoOxzI5NzLt7i7yMg3HQHjChGa09N5bzqmrVdhmQrRZXwGg==,
+ }
+ engines: { node: '>=18.0' }
'@esbuild/aix-ppc64@0.21.5':
- resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==,
+ }
+ engines: { node: '>=12' }
cpu: [ppc64]
os: [aix]
'@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==,
+ }
+ engines: { node: '>=18' }
cpu: [ppc64]
os: [aix]
'@esbuild/android-arm64@0.21.5':
- resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==,
+ }
+ engines: { node: '>=12' }
cpu: [arm64]
os: [android]
'@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==,
+ }
+ engines: { node: '>=18' }
cpu: [arm64]
os: [android]
'@esbuild/android-arm@0.21.5':
- resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==,
+ }
+ engines: { node: '>=12' }
cpu: [arm]
os: [android]
'@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==,
+ }
+ engines: { node: '>=18' }
cpu: [arm]
os: [android]
'@esbuild/android-x64@0.21.5':
- resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==,
+ }
+ engines: { node: '>=12' }
cpu: [x64]
os: [android]
'@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==,
+ }
+ engines: { node: '>=18' }
cpu: [x64]
os: [android]
'@esbuild/darwin-arm64@0.21.5':
- resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==,
+ }
+ engines: { node: '>=12' }
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==,
+ }
+ engines: { node: '>=18' }
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-x64@0.21.5':
- resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==,
+ }
+ engines: { node: '>=12' }
cpu: [x64]
os: [darwin]
'@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==,
+ }
+ engines: { node: '>=18' }
cpu: [x64]
os: [darwin]
'@esbuild/freebsd-arm64@0.21.5':
- resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==,
+ }
+ engines: { node: '>=12' }
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==,
+ }
+ engines: { node: '>=18' }
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-x64@0.21.5':
- resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==,
+ }
+ engines: { node: '>=12' }
cpu: [x64]
os: [freebsd]
'@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==,
+ }
+ engines: { node: '>=18' }
cpu: [x64]
os: [freebsd]
'@esbuild/linux-arm64@0.21.5':
- resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==,
+ }
+ engines: { node: '>=12' }
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==,
+ }
+ engines: { node: '>=18' }
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm@0.21.5':
- resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==,
+ }
+ engines: { node: '>=12' }
cpu: [arm]
os: [linux]
'@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==,
+ }
+ engines: { node: '>=18' }
cpu: [arm]
os: [linux]
'@esbuild/linux-ia32@0.21.5':
- resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==,
+ }
+ engines: { node: '>=12' }
cpu: [ia32]
os: [linux]
'@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==,
+ }
+ engines: { node: '>=18' }
cpu: [ia32]
os: [linux]
'@esbuild/linux-loong64@0.21.5':
- resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==,
+ }
+ engines: { node: '>=12' }
cpu: [loong64]
os: [linux]
'@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==,
+ }
+ engines: { node: '>=18' }
cpu: [loong64]
os: [linux]
'@esbuild/linux-mips64el@0.21.5':
- resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==,
+ }
+ engines: { node: '>=12' }
cpu: [mips64el]
os: [linux]
'@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==,
+ }
+ engines: { node: '>=18' }
cpu: [mips64el]
os: [linux]
'@esbuild/linux-ppc64@0.21.5':
- resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==,
+ }
+ engines: { node: '>=12' }
cpu: [ppc64]
os: [linux]
'@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==,
+ }
+ engines: { node: '>=18' }
cpu: [ppc64]
os: [linux]
'@esbuild/linux-riscv64@0.21.5':
- resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==,
+ }
+ engines: { node: '>=12' }
cpu: [riscv64]
os: [linux]
'@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==,
+ }
+ engines: { node: '>=18' }
cpu: [riscv64]
os: [linux]
'@esbuild/linux-s390x@0.21.5':
- resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==,
+ }
+ engines: { node: '>=12' }
cpu: [s390x]
os: [linux]
'@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==,
+ }
+ engines: { node: '>=18' }
cpu: [s390x]
os: [linux]
'@esbuild/linux-x64@0.21.5':
- resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==,
+ }
+ engines: { node: '>=12' }
cpu: [x64]
os: [linux]
'@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==,
+ }
+ engines: { node: '>=18' }
cpu: [x64]
os: [linux]
'@esbuild/netbsd-x64@0.21.5':
- resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==,
+ }
+ engines: { node: '>=12' }
cpu: [x64]
os: [netbsd]
'@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==,
+ }
+ engines: { node: '>=18' }
cpu: [x64]
os: [netbsd]
'@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==,
+ }
+ engines: { node: '>=18' }
cpu: [arm64]
os: [openbsd]
'@esbuild/openbsd-x64@0.21.5':
- resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==,
+ }
+ engines: { node: '>=12' }
cpu: [x64]
os: [openbsd]
'@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==,
+ }
+ engines: { node: '>=18' }
cpu: [x64]
os: [openbsd]
'@esbuild/sunos-x64@0.21.5':
- resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==,
+ }
+ engines: { node: '>=12' }
cpu: [x64]
os: [sunos]
'@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==,
+ }
+ engines: { node: '>=18' }
cpu: [x64]
os: [sunos]
'@esbuild/win32-arm64@0.21.5':
- resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==,
+ }
+ engines: { node: '>=12' }
cpu: [arm64]
os: [win32]
'@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==,
+ }
+ engines: { node: '>=18' }
cpu: [arm64]
os: [win32]
'@esbuild/win32-ia32@0.21.5':
- resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==,
+ }
+ engines: { node: '>=12' }
cpu: [ia32]
os: [win32]
'@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==,
+ }
+ engines: { node: '>=18' }
cpu: [ia32]
os: [win32]
'@esbuild/win32-x64@0.21.5':
- resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==,
+ }
+ engines: { node: '>=12' }
cpu: [x64]
os: [win32]
'@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==,
+ }
+ engines: { node: '>=18' }
cpu: [x64]
os: [win32]
'@isaacs/cliui@8.0.2':
- resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==,
+ }
+ engines: { node: '>=12' }
'@istanbuljs/schema@0.1.3':
- resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==,
+ }
+ engines: { node: '>=8' }
'@jridgewell/gen-mapping@0.3.5':
- resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
- engines: {node: '>=6.0.0'}
+ resolution:
+ {
+ integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==,
+ }
+ engines: { node: '>=6.0.0' }
'@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
+ resolution:
+ {
+ integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==,
+ }
+ engines: { node: '>=6.0.0' }
'@jridgewell/set-array@1.2.1':
- resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
- engines: {node: '>=6.0.0'}
+ resolution:
+ {
+ integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==,
+ }
+ engines: { node: '>=6.0.0' }
'@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+ resolution:
+ {
+ integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==,
+ }
'@jridgewell/trace-mapping@0.3.25':
- resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ resolution:
+ {
+ integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==,
+ }
'@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==,
+ }
+ engines: { node: '>= 8' }
'@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==,
+ }
+ engines: { node: '>= 8' }
'@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==,
+ }
+ engines: { node: '>= 8' }
'@pkgjs/parseargs@0.11.0':
- resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
- engines: {node: '>=14'}
+ resolution:
+ {
+ integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==,
+ }
+ engines: { node: '>=14' }
'@rollup/rollup-android-arm-eabi@4.24.0':
- resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==}
+ resolution:
+ {
+ integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==,
+ }
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.24.0':
- resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==}
+ resolution:
+ {
+ integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==,
+ }
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.24.0':
- resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==}
+ resolution:
+ {
+ integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==,
+ }
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.24.0':
- resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==}
+ resolution:
+ {
+ integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==,
+ }
cpu: [x64]
os: [darwin]
'@rollup/rollup-linux-arm-gnueabihf@4.24.0':
- resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==}
+ resolution:
+ {
+ integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==,
+ }
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.24.0':
- resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==}
+ resolution:
+ {
+ integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==,
+ }
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.24.0':
- resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==}
+ resolution:
+ {
+ integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==,
+ }
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.24.0':
- resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==}
+ resolution:
+ {
+ integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==,
+ }
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
- resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==}
+ resolution:
+ {
+ integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==,
+ }
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.24.0':
- resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==}
+ resolution:
+ {
+ integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==,
+ }
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.24.0':
- resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==}
+ resolution:
+ {
+ integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==,
+ }
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.24.0':
- resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==}
+ resolution:
+ {
+ integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==,
+ }
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.24.0':
- resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==}
+ resolution:
+ {
+ integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==,
+ }
cpu: [x64]
os: [linux]
'@rollup/rollup-win32-arm64-msvc@4.24.0':
- resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==}
+ resolution:
+ {
+ integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==,
+ }
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.24.0':
- resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==}
+ resolution:
+ {
+ integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==,
+ }
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.24.0':
- resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==}
+ resolution:
+ {
+ integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==,
+ }
cpu: [x64]
os: [win32]
'@types/estree@1.0.6':
- resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+ resolution:
+ {
+ integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==,
+ }
'@types/node@22.7.7':
- resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==}
-
- '@vitest/coverage-v8@2.0.5':
- resolution: {integrity: sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==}
+ resolution:
+ {
+ integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==,
+ }
+
+ '@vitest/coverage-v8@2.1.5':
+ resolution:
+ {
+ integrity: sha512-/RoopB7XGW7UEkUndRXF87A9CwkoZAJW01pj8/3pgmDVsjMH2IKy6H1A38po9tmUlwhSyYs0az82rbKd9Yaynw==,
+ }
peerDependencies:
- vitest: 2.0.5
-
- '@vitest/expect@2.1.4':
- resolution: {integrity: sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==}
+ '@vitest/browser': 2.1.5
+ vitest: 2.1.5
+ peerDependenciesMeta:
+ '@vitest/browser':
+ optional: true
- '@vitest/mocker@2.1.4':
- resolution: {integrity: sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==}
+ '@vitest/expect@2.1.5':
+ resolution:
+ {
+ integrity: sha512-nZSBTW1XIdpZvEJyoP/Sy8fUg0b8od7ZpGDkTUcfJ7wz/VoZAFzFfLyxVxGFhUjJzhYqSbIpfMtl/+k/dpWa3Q==,
+ }
+
+ '@vitest/mocker@2.1.5':
+ resolution:
+ {
+ integrity: sha512-XYW6l3UuBmitWqSUXTNXcVBUCRytDogBsWuNXQijc00dtnU/9OqpXWp4OJroVrad/gLIomAq9aW8yWDBtMthhQ==,
+ }
peerDependencies:
msw: ^2.4.9
vite: ^5.0.0
@@ -755,175 +1231,307 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@2.1.4':
- resolution: {integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==}
-
- '@vitest/runner@2.1.4':
- resolution: {integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==}
-
- '@vitest/snapshot@2.1.4':
- resolution: {integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==}
-
- '@vitest/spy@2.1.4':
- resolution: {integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==}
-
- '@vitest/utils@2.1.4':
- resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==}
+ '@vitest/pretty-format@2.1.5':
+ resolution:
+ {
+ integrity: sha512-4ZOwtk2bqG5Y6xRGHcveZVr+6txkH7M2e+nPFd6guSoN638v/1XQ0K06eOpi0ptVU/2tW/pIU4IoPotY/GZ9fw==,
+ }
+
+ '@vitest/runner@2.1.5':
+ resolution:
+ {
+ integrity: sha512-pKHKy3uaUdh7X6p1pxOkgkVAFW7r2I818vHDthYLvUyjRfkKOU6P45PztOch4DZarWQne+VOaIMwA/erSSpB9g==,
+ }
+
+ '@vitest/snapshot@2.1.5':
+ resolution:
+ {
+ integrity: sha512-zmYw47mhfdfnYbuhkQvkkzYroXUumrwWDGlMjpdUr4jBd3HZiV2w7CQHj+z7AAS4VOtWxI4Zt4bWt4/sKcoIjg==,
+ }
+
+ '@vitest/spy@2.1.5':
+ resolution:
+ {
+ integrity: sha512-aWZF3P0r3w6DiYTVskOYuhBc7EMc3jvn1TkBg8ttylFFRqNN2XGD7V5a4aQdk6QiUzZQ4klNBSpCLJgWNdIiNw==,
+ }
+
+ '@vitest/utils@2.1.5':
+ resolution:
+ {
+ integrity: sha512-yfj6Yrp0Vesw2cwJbP+cl04OC+IHFsuQsrsJBL9pyGeQXE56v1UAOQco+SR55Vf1nQzfV0QJg1Qum7AaWUwwYg==,
+ }
ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==,
+ }
+ engines: { node: '>=8' }
ansi-regex@6.1.0:
- resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==,
+ }
+ engines: { node: '>=12' }
ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
+ }
+ engines: { node: '>=8' }
ansi-styles@6.2.1:
- resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==,
+ }
+ engines: { node: '>=12' }
any-promise@1.3.0:
- resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+ resolution:
+ {
+ integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==,
+ }
anymatch@3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==,
+ }
+ engines: { node: '>= 8' }
array-timsort@1.0.3:
- resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==}
+ resolution:
+ {
+ integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==,
+ }
assertion-error@2.0.1:
- resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==,
+ }
+ engines: { node: '>=12' }
balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ resolution:
+ {
+ integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
+ }
binary-extensions@2.3.0:
- resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==,
+ }
+ engines: { node: '>=8' }
brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ resolution:
+ {
+ integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==,
+ }
braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==,
+ }
+ engines: { node: '>=8' }
bundle-require@5.0.0:
- resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==,
+ }
+ engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
peerDependencies:
esbuild: '>=0.18'
cac@6.7.14:
- resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==,
+ }
+ engines: { node: '>=8' }
callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
+ }
+ engines: { node: '>=6' }
chai@5.1.2:
- resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==,
+ }
+ engines: { node: '>=12' }
chalk-template@1.1.0:
- resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==}
- engines: {node: '>=14.16'}
+ resolution:
+ {
+ integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==,
+ }
+ engines: { node: '>=14.16' }
chalk@5.3.0:
- resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
- engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==,
+ }
+ engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 }
check-error@2.1.1:
- resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
- engines: {node: '>= 16'}
+ resolution:
+ {
+ integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==,
+ }
+ engines: { node: '>= 16' }
chokidar@3.6.0:
- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
- engines: {node: '>= 8.10.0'}
+ resolution:
+ {
+ integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==,
+ }
+ engines: { node: '>= 8.10.0' }
clear-module@4.1.2:
- resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==,
+ }
+ engines: { node: '>=8' }
color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
+ resolution:
+ {
+ integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
+ }
+ engines: { node: '>=7.0.0' }
color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ resolution:
+ {
+ integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
+ }
commander@12.1.0:
- resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==,
+ }
+ engines: { node: '>=18' }
commander@4.1.1:
- resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
- engines: {node: '>= 6'}
+ resolution:
+ {
+ integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==,
+ }
+ engines: { node: '>= 6' }
comment-json@4.2.5:
- resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==}
- engines: {node: '>= 6'}
+ resolution:
+ {
+ integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==,
+ }
+ engines: { node: '>= 6' }
consola@3.2.3:
- resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
- engines: {node: ^14.18.0 || >=16.10.0}
+ resolution:
+ {
+ integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==,
+ }
+ engines: { node: ^14.18.0 || >=16.10.0 }
core-util-is@1.0.3:
- resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+ resolution:
+ {
+ integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==,
+ }
cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==,
+ }
+ engines: { node: '>= 8' }
cspell-config-lib@8.15.4:
- resolution: {integrity: sha512-vUgikQTRkRMTdkZqSs7F2cTdPpX61cTjr/9L/VCkXkbW38ObCr4650ioiF1Wq3zDF3Gy2bc4ECTpD2PZUXX5SA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-vUgikQTRkRMTdkZqSs7F2cTdPpX61cTjr/9L/VCkXkbW38ObCr4650ioiF1Wq3zDF3Gy2bc4ECTpD2PZUXX5SA==,
+ }
+ engines: { node: '>=18' }
cspell-dictionary@8.15.4:
- resolution: {integrity: sha512-8+p/l9Saac7qyCbqtELneDoT7CwHu9gYmnI8uXMu34/lPGjhVhy10ZeI0+t1djaO2YyASK400YFKq5uP/5KulA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-8+p/l9Saac7qyCbqtELneDoT7CwHu9gYmnI8uXMu34/lPGjhVhy10ZeI0+t1djaO2YyASK400YFKq5uP/5KulA==,
+ }
+ engines: { node: '>=18' }
cspell-gitignore@8.15.4:
- resolution: {integrity: sha512-9n5PpQ8gEf8YcvEtoZGZ2Ma6wnqSFkD2GrmyjISy39DfIX/jNLN7GX2wJm6OD2P4FjXer95ypmIb/JWTlfmbTw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-9n5PpQ8gEf8YcvEtoZGZ2Ma6wnqSFkD2GrmyjISy39DfIX/jNLN7GX2wJm6OD2P4FjXer95ypmIb/JWTlfmbTw==,
+ }
+ engines: { node: '>=18' }
hasBin: true
cspell-glob@8.15.4:
- resolution: {integrity: sha512-TTfRRHRAN+PN9drIz4MAEgKKYnPThBOlPMdFddyuisvU33Do1sPAnqkkOjTEFdi3jAA5KwnSva68SVH6IzzMBQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-TTfRRHRAN+PN9drIz4MAEgKKYnPThBOlPMdFddyuisvU33Do1sPAnqkkOjTEFdi3jAA5KwnSva68SVH6IzzMBQ==,
+ }
+ engines: { node: '>=18' }
cspell-grammar@8.15.4:
- resolution: {integrity: sha512-MKiKyYi05mRtXOxPoTv3Ksi0GwYLiK84Uq0C+5PaMrnIjXeed0bsddSFXCT+7ywFJc7PdjhTtz0M/9WWK3UgbA==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-MKiKyYi05mRtXOxPoTv3Ksi0GwYLiK84Uq0C+5PaMrnIjXeed0bsddSFXCT+7ywFJc7PdjhTtz0M/9WWK3UgbA==,
+ }
+ engines: { node: '>=18' }
hasBin: true
cspell-io@8.15.4:
- resolution: {integrity: sha512-rXIEREPTFV9dwwg4EKfvzqlCNOvT6910AYED5YrSt8Y68usRJ9lbqdx0BrDndVCd33bp1o+9JBfHuRiFIQC81g==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-rXIEREPTFV9dwwg4EKfvzqlCNOvT6910AYED5YrSt8Y68usRJ9lbqdx0BrDndVCd33bp1o+9JBfHuRiFIQC81g==,
+ }
+ engines: { node: '>=18' }
cspell-lib@8.15.4:
- resolution: {integrity: sha512-iLp/625fvCyFFxSyZYLMgqHIKcrhN4hT7Hw5+ySa38Bp/OfA81ANqWHpsDQ0bGsALTRn/DHBpQYj4xCW/aN9tw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-iLp/625fvCyFFxSyZYLMgqHIKcrhN4hT7Hw5+ySa38Bp/OfA81ANqWHpsDQ0bGsALTRn/DHBpQYj4xCW/aN9tw==,
+ }
+ engines: { node: '>=18' }
cspell-trie-lib@8.15.4:
- resolution: {integrity: sha512-sg9klsNHyrfos0Boiio+qy5d6fI9cCNjBqFYrNxvpKpwZ4gEzDzjgEKdZY1C76RD2KoBQ8I1NF5YcGc0+hhhCw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-sg9klsNHyrfos0Boiio+qy5d6fI9cCNjBqFYrNxvpKpwZ4gEzDzjgEKdZY1C76RD2KoBQ8I1NF5YcGc0+hhhCw==,
+ }
+ engines: { node: '>=18' }
cspell@8.15.4:
- resolution: {integrity: sha512-hUOxcwmNWuHzVeGHyN5v/T9MkyCE5gi0mvatxsM794B2wOuR1ZORgjZH62P2HY1uBkXe/x5C6ITWrSyh0WgAcg==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-hUOxcwmNWuHzVeGHyN5v/T9MkyCE5gi0mvatxsM794B2wOuR1ZORgjZH62P2HY1uBkXe/x5C6ITWrSyh0WgAcg==,
+ }
+ engines: { node: '>=18' }
hasBin: true
debug@4.3.7:
- resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
- engines: {node: '>=6.0'}
+ resolution:
+ {
+ integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==,
+ }
+ engines: { node: '>=6.0' }
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
@@ -931,64 +1539,118 @@ packages:
optional: true
deep-eql@5.0.2:
- resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==,
+ }
+ engines: { node: '>=6' }
eastasianwidth@0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ resolution:
+ {
+ integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==,
+ }
emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ resolution:
+ {
+ integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==,
+ }
emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ resolution:
+ {
+ integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==,
+ }
env-paths@3.0.0:
- resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==,
+ }
+ engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
+
+ es-module-lexer@1.5.4:
+ resolution:
+ {
+ integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==,
+ }
esbuild@0.21.5:
- resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==,
+ }
+ engines: { node: '>=12' }
hasBin: true
esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==,
+ }
+ engines: { node: '>=18' }
hasBin: true
esprima@4.0.1:
- resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==,
+ }
+ engines: { node: '>=4' }
hasBin: true
estree-walker@3.0.3:
- resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+ resolution:
+ {
+ integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==,
+ }
execa@5.1.1:
- resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==,
+ }
+ engines: { node: '>=10' }
expect-type@1.1.0:
- resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==}
- engines: {node: '>=12.0.0'}
+ resolution:
+ {
+ integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==,
+ }
+ engines: { node: '>=12.0.0' }
fast-equals@5.0.1:
- resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==}
- engines: {node: '>=6.0.0'}
+ resolution:
+ {
+ integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==,
+ }
+ engines: { node: '>=6.0.0' }
fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
+ resolution:
+ {
+ integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==,
+ }
+ engines: { node: '>=8.6.0' }
fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ resolution:
+ {
+ integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==,
+ }
fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+ resolution:
+ {
+ integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==,
+ }
fdir@6.4.2:
- resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
+ resolution:
+ {
+ integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==,
+ }
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
@@ -996,266 +1658,476 @@ packages:
optional: true
file-entry-cache@9.1.0:
- resolution: {integrity: sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==,
+ }
+ engines: { node: '>=18' }
fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==,
+ }
+ engines: { node: '>=8' }
find-up-simple@1.0.0:
- resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==,
+ }
+ engines: { node: '>=18' }
flat-cache@5.0.0:
- resolution: {integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==,
+ }
+ engines: { node: '>=18' }
flatted@3.3.1:
- resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+ resolution:
+ {
+ integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==,
+ }
foreground-child@3.3.0:
- resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
- engines: {node: '>=14'}
+ resolution:
+ {
+ integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==,
+ }
+ engines: { node: '>=14' }
fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ resolution:
+ {
+ integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
+ }
+ engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
os: [darwin]
gensequence@7.0.0:
- resolution: {integrity: sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==,
+ }
+ engines: { node: '>=18' }
get-stdin@9.0.0:
- resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==,
+ }
+ engines: { node: '>=12' }
get-stream@6.0.1:
- resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==,
+ }
+ engines: { node: '>=10' }
glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
+ resolution:
+ {
+ integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==,
+ }
+ engines: { node: '>= 6' }
glob@10.4.5:
- resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+ resolution:
+ {
+ integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==,
+ }
hasBin: true
global-directory@4.0.1:
- resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==,
+ }
+ engines: { node: '>=18' }
has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==,
+ }
+ engines: { node: '>=8' }
has-own-prop@2.0.0:
- resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==,
+ }
+ engines: { node: '>=8' }
html-escaper@2.0.2:
- resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+ resolution:
+ {
+ integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==,
+ }
human-signals@2.1.0:
- resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
- engines: {node: '>=10.17.0'}
+ resolution:
+ {
+ integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==,
+ }
+ engines: { node: '>=10.17.0' }
import-fresh@3.3.0:
- resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==,
+ }
+ engines: { node: '>=6' }
import-meta-resolve@4.1.0:
- resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
+ resolution:
+ {
+ integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==,
+ }
ini@4.1.1:
- resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ resolution:
+ {
+ integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
is-binary-path@2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==,
+ }
+ engines: { node: '>=8' }
is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
+ }
+ engines: { node: '>=0.10.0' }
is-fullwidth-code-point@3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==,
+ }
+ engines: { node: '>=8' }
is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
+ }
+ engines: { node: '>=0.10.0' }
is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
+ resolution:
+ {
+ integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
+ }
+ engines: { node: '>=0.12.0' }
is-stream@2.0.1:
- resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==,
+ }
+ engines: { node: '>=8' }
isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ resolution:
+ {
+ integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==,
+ }
istanbul-lib-coverage@3.2.2:
- resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==,
+ }
+ engines: { node: '>=8' }
istanbul-lib-report@3.0.1:
- resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==,
+ }
+ engines: { node: '>=10' }
istanbul-lib-source-maps@5.0.6:
- resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==,
+ }
+ engines: { node: '>=10' }
istanbul-reports@3.1.7:
- resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==,
+ }
+ engines: { node: '>=8' }
jackspeak@3.4.3:
- resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+ resolution:
+ {
+ integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==,
+ }
joycon@3.1.1:
- resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==,
+ }
+ engines: { node: '>=10' }
json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ resolution:
+ {
+ integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==,
+ }
keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ resolution:
+ {
+ integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==,
+ }
lilconfig@3.1.2:
- resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
- engines: {node: '>=14'}
+ resolution:
+ {
+ integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==,
+ }
+ engines: { node: '>=14' }
lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ resolution:
+ {
+ integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==,
+ }
load-tsconfig@0.2.5:
- resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==,
+ }
+ engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
lodash.sortby@4.7.0:
- resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
+ resolution:
+ {
+ integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==,
+ }
loupe@3.1.2:
- resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==}
+ resolution:
+ {
+ integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==,
+ }
lru-cache@10.4.3:
- resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+ resolution:
+ {
+ integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==,
+ }
magic-string@0.30.12:
- resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
+ resolution:
+ {
+ integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==,
+ }
magicast@0.3.5:
- resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
+ resolution:
+ {
+ integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==,
+ }
make-dir@4.0.0:
- resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==,
+ }
+ engines: { node: '>=10' }
merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+ resolution:
+ {
+ integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==,
+ }
merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==,
+ }
+ engines: { node: '>= 8' }
micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
+ resolution:
+ {
+ integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==,
+ }
+ engines: { node: '>=8.6' }
mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==,
+ }
+ engines: { node: '>=6' }
minimatch@9.0.5:
- resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
- engines: {node: '>=16 || 14 >=14.17'}
+ resolution:
+ {
+ integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==,
+ }
+ engines: { node: '>=16 || 14 >=14.17' }
minipass@7.1.2:
- resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
- engines: {node: '>=16 || 14 >=14.17'}
+ resolution:
+ {
+ integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==,
+ }
+ engines: { node: '>=16 || 14 >=14.17' }
ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ resolution:
+ {
+ integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
+ }
mvdan-sh@0.10.1:
- resolution: {integrity: sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==}
+ resolution:
+ {
+ integrity: sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==,
+ }
mz@2.7.0:
- resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ resolution:
+ {
+ integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==,
+ }
nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ resolution:
+ {
+ integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==,
+ }
+ engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
hasBin: true
normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==,
+ }
+ engines: { node: '>=0.10.0' }
npm-run-path@4.0.1:
- resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==,
+ }
+ engines: { node: '>=8' }
object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==,
+ }
+ engines: { node: '>=0.10.0' }
onetime@5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==,
+ }
+ engines: { node: '>=6' }
package-json-from-dist@1.0.1:
- resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+ resolution:
+ {
+ integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==,
+ }
parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==,
+ }
+ engines: { node: '>=6' }
parent-module@2.0.0:
- resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==,
+ }
+ engines: { node: '>=8' }
path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
+ }
+ engines: { node: '>=8' }
path-scurry@1.11.1:
- resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
- engines: {node: '>=16 || 14 >=14.18'}
+ resolution:
+ {
+ integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==,
+ }
+ engines: { node: '>=16 || 14 >=14.18' }
pathe@1.1.2:
- resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+ resolution:
+ {
+ integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==,
+ }
pathval@2.0.0:
- resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
- engines: {node: '>= 14.16'}
+ resolution:
+ {
+ integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==,
+ }
+ engines: { node: '>= 14.16' }
picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+ resolution:
+ {
+ integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==,
+ }
picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
+ resolution:
+ {
+ integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==,
+ }
+ engines: { node: '>=8.6' }
picomatch@4.0.2:
- resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==,
+ }
+ engines: { node: '>=12' }
pirates@4.0.6:
- resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
- engines: {node: '>= 6'}
+ resolution:
+ {
+ integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==,
+ }
+ engines: { node: '>= 6' }
postcss-load-config@6.0.1:
- resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
- engines: {node: '>= 18'}
+ resolution:
+ {
+ integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==,
+ }
+ engines: { node: '>= 18' }
peerDependencies:
jiti: '>=1.21.0'
postcss: '>=8.0.9'
@@ -1272,196 +2144,336 @@ packages:
optional: true
postcss@8.4.47:
- resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
- engines: {node: ^10 || ^12 || >=14}
+ resolution:
+ {
+ integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
prettier-plugin-pkg@0.18.1:
- resolution: {integrity: sha512-FuUxvsYZR/8rsLH8s/jbPQmgYvv0yxW8LoIHCy6+Q7p4FBjjdP3DNKx8fMTOsc0SlEB1skB4o1LcahRceIh87A==}
- engines: {node: ^14.18.0 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-FuUxvsYZR/8rsLH8s/jbPQmgYvv0yxW8LoIHCy6+Q7p4FBjjdP3DNKx8fMTOsc0SlEB1skB4o1LcahRceIh87A==,
+ }
+ engines: { node: ^14.18.0 || >=16.0.0 }
peerDependencies:
prettier: ^3.0.3
prettier-plugin-sh@0.14.0:
- resolution: {integrity: sha512-hfXulj5+zEl/ulrO5kMuuTPKmXvOg0bnLHY1hKFNN/N+/903iZbNp8NyZBTsgI8dtkSgFfAEIQq0IQTyP1ZVFQ==}
- engines: {node: '>=16.0.0'}
+ resolution:
+ {
+ integrity: sha512-hfXulj5+zEl/ulrO5kMuuTPKmXvOg0bnLHY1hKFNN/N+/903iZbNp8NyZBTsgI8dtkSgFfAEIQq0IQTyP1ZVFQ==,
+ }
+ engines: { node: '>=16.0.0' }
peerDependencies:
prettier: ^3.0.3
prettier@3.3.3:
- resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
- engines: {node: '>=14'}
+ resolution:
+ {
+ integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==,
+ }
+ engines: { node: '>=14' }
hasBin: true
punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==,
+ }
+ engines: { node: '>=6' }
queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ resolution:
+ {
+ integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==,
+ }
radashi-helper@0.1.4:
- resolution: {integrity: sha512-nfKWmaJ1elFNw+iwmbOz6/Vu9tk6Q8C2zM6ypq4mf4jMTaBDK9abyK3FWeQ3jfPyHzJEjVmK8wdZGmVjVWJ9qw==}
+ resolution:
+ {
+ integrity: sha512-nfKWmaJ1elFNw+iwmbOz6/Vu9tk6Q8C2zM6ypq4mf4jMTaBDK9abyK3FWeQ3jfPyHzJEjVmK8wdZGmVjVWJ9qw==,
+ }
hasBin: true
readdirp@3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
+ resolution:
+ {
+ integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==,
+ }
+ engines: { node: '>=8.10.0' }
repeat-string@1.6.1:
- resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
- engines: {node: '>=0.10'}
+ resolution:
+ {
+ integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==,
+ }
+ engines: { node: '>=0.10' }
resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
+ }
+ engines: { node: '>=4' }
resolve-from@5.0.0:
- resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==,
+ }
+ engines: { node: '>=8' }
reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==,
+ }
+ engines: { iojs: '>=1.0.0', node: '>=0.10.0' }
rollup@4.24.0:
- resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ resolution:
+ {
+ integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==,
+ }
+ engines: { node: '>=18.0.0', npm: '>=8.0.0' }
hasBin: true
run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ resolution:
+ {
+ integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==,
+ }
semver@7.6.3:
- resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==,
+ }
+ engines: { node: '>=10' }
hasBin: true
sh-syntax@0.4.2:
- resolution: {integrity: sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==}
- engines: {node: '>=16.0.0'}
+ resolution:
+ {
+ integrity: sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==,
+ }
+ engines: { node: '>=16.0.0' }
shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
+ }
+ engines: { node: '>=8' }
shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
+ }
+ engines: { node: '>=8' }
siginfo@2.0.0:
- resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
+ resolution:
+ {
+ integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==,
+ }
signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ resolution:
+ {
+ integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==,
+ }
signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
+ resolution:
+ {
+ integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==,
+ }
+ engines: { node: '>=14' }
source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
+ }
+ engines: { node: '>=0.10.0' }
source-map@0.8.0-beta.0:
- resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==,
+ }
+ engines: { node: '>= 8' }
stackback@0.0.2:
- resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+ resolution:
+ {
+ integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==,
+ }
- std-env@3.7.0:
- resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
+ std-env@3.8.0:
+ resolution:
+ {
+ integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==,
+ }
string-width@4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==,
+ }
+ engines: { node: '>=8' }
string-width@5.1.2:
- resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==,
+ }
+ engines: { node: '>=12' }
strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==,
+ }
+ engines: { node: '>=8' }
strip-ansi@7.1.0:
- resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==,
+ }
+ engines: { node: '>=12' }
strip-final-newline@2.0.0:
- resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==,
+ }
+ engines: { node: '>=6' }
sucrase@3.35.0:
- resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
- engines: {node: '>=16 || 14 >=14.17'}
+ resolution:
+ {
+ integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==,
+ }
+ engines: { node: '>=16 || 14 >=14.17' }
hasBin: true
supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==,
+ }
+ engines: { node: '>=8' }
test-exclude@7.0.1:
- resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==,
+ }
+ engines: { node: '>=18' }
thenify-all@1.6.0:
- resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
- engines: {node: '>=0.8'}
+ resolution:
+ {
+ integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==,
+ }
+ engines: { node: '>=0.8' }
thenify@3.3.1:
- resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ resolution:
+ {
+ integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==,
+ }
tinybench@2.9.0:
- resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
+ resolution:
+ {
+ integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==,
+ }
tinyexec@0.3.1:
- resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==}
+ resolution:
+ {
+ integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==,
+ }
tinyglobby@0.2.9:
- resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==}
- engines: {node: '>=12.0.0'}
+ resolution:
+ {
+ integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==,
+ }
+ engines: { node: '>=12.0.0' }
tinypool@1.0.1:
- resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ resolution:
+ {
+ integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==,
+ }
+ engines: { node: ^18.0.0 || >=20.0.0 }
tinyrainbow@1.2.0:
- resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
- engines: {node: '>=14.0.0'}
+ resolution:
+ {
+ integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==,
+ }
+ engines: { node: '>=14.0.0' }
tinyspawn@1.3.3:
- resolution: {integrity: sha512-CvvMFgecnQMyg59nOnAD5O4lV83cVj2ooDniJ3j2bYvMajqlK4wQ13k6OUHfA+J5nkInTxbSGJv2olUJIiAtJg==}
- engines: {node: '>= 18'}
+ resolution:
+ {
+ integrity: sha512-CvvMFgecnQMyg59nOnAD5O4lV83cVj2ooDniJ3j2bYvMajqlK4wQ13k6OUHfA+J5nkInTxbSGJv2olUJIiAtJg==,
+ }
+ engines: { node: '>= 18' }
tinyspy@3.0.2:
- resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
- engines: {node: '>=14.0.0'}
-
- to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==,
+ }
+ engines: { node: '>=14.0.0' }
to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
+ resolution:
+ {
+ integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
+ }
+ engines: { node: '>=8.0' }
tr46@1.0.1:
- resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
+ resolution:
+ {
+ integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==,
+ }
tree-kill@1.2.2:
- resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ resolution:
+ {
+ integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==,
+ }
hasBin: true
ts-interface-checker@0.1.13:
- resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ resolution:
+ {
+ integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==,
+ }
tslib@2.8.0:
- resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==}
+ resolution:
+ {
+ integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==,
+ }
tsup@8.3.0:
- resolution: {integrity: sha512-ALscEeyS03IomcuNdFdc0YWGVIkwH1Ws7nfTbAPuoILvEV2hpGQAY72LIOjglGo4ShWpZfpBqP/jpQVCzqYQag==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-ALscEeyS03IomcuNdFdc0YWGVIkwH1Ws7nfTbAPuoILvEV2hpGQAY72LIOjglGo4ShWpZfpBqP/jpQVCzqYQag==,
+ }
+ engines: { node: '>=18' }
hasBin: true
peerDependencies:
'@microsoft/api-extractor': ^7.36.0
@@ -1479,21 +2491,33 @@ packages:
optional: true
typescript@5.6.3:
- resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
- engines: {node: '>=14.17'}
+ resolution:
+ {
+ integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==,
+ }
+ engines: { node: '>=14.17' }
hasBin: true
undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- vite-node@2.1.4:
- resolution: {integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ resolution:
+ {
+ integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==,
+ }
+
+ vite-node@2.1.5:
+ resolution:
+ {
+ integrity: sha512-rd0QIgx74q4S1Rd56XIiL2cYEdyWn13cunYBIuqh9mpmQr7gGS0IxXoP8R6OaZtNQQLyXSWbd4rXKYUbhFpK5w==,
+ }
+ engines: { node: ^18.0.0 || >=20.0.0 }
hasBin: true
vite@5.4.9:
- resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ resolution:
+ {
+ integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==,
+ }
+ engines: { node: ^18.0.0 || >=20.0.0 }
hasBin: true
peerDependencies:
'@types/node': ^18.0.0 || >=20.0.0
@@ -1522,15 +2546,18 @@ packages:
terser:
optional: true
- vitest@2.1.4:
- resolution: {integrity: sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ vitest@2.1.5:
+ resolution:
+ {
+ integrity: sha512-P4ljsdpuzRTPI/kbND2sDZ4VmieerR2c9szEZpjc+98Z9ebvnXmM5+0tHEKqYZumXqlvnmfWsjeFOjXVriDG7A==,
+ }
+ engines: { node: ^18.0.0 || >=20.0.0 }
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@types/node': ^18.0.0 || >=20.0.0
- '@vitest/browser': 2.1.4
- '@vitest/ui': 2.1.4
+ '@vitest/browser': 2.1.5
+ '@vitest/ui': 2.1.5
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
@@ -1548,64 +2575,92 @@ packages:
optional: true
vscode-languageserver-textdocument@1.0.12:
- resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==}
+ resolution:
+ {
+ integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==,
+ }
vscode-uri@3.0.8:
- resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
+ resolution:
+ {
+ integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==,
+ }
webidl-conversions@4.0.2:
- resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
+ resolution:
+ {
+ integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==,
+ }
whatwg-url@7.1.0:
- resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
+ resolution:
+ {
+ integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==,
+ }
which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==,
+ }
+ engines: { node: '>= 8' }
hasBin: true
why-is-node-running@2.3.0:
- resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==,
+ }
+ engines: { node: '>=8' }
hasBin: true
wrap-ansi@7.0.0:
- resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==,
+ }
+ engines: { node: '>=10' }
wrap-ansi@8.1.0:
- resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==,
+ }
+ engines: { node: '>=12' }
xdg-basedir@5.1.0:
- resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==,
+ }
+ engines: { node: '>=12' }
yaml@2.6.0:
- resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==}
- engines: {node: '>= 14'}
+ resolution:
+ {
+ integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==,
+ }
+ engines: { node: '>= 14' }
hasBin: true
snapshots:
-
'@ampproject/remapping@2.3.0':
dependencies:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
- '@babel/helper-string-parser@7.25.7': {}
+ '@babel/helper-string-parser@7.25.9': {}
- '@babel/helper-validator-identifier@7.25.7': {}
+ '@babel/helper-validator-identifier@7.25.9': {}
- '@babel/parser@7.25.8':
+ '@babel/parser@7.26.2':
dependencies:
- '@babel/types': 7.25.8
+ '@babel/types': 7.26.0
- '@babel/types@7.25.8':
+ '@babel/types@7.26.0':
dependencies:
- '@babel/helper-string-parser': 7.25.7
- '@babel/helper-validator-identifier': 7.25.7
- to-fast-properties: 2.0.0
+ '@babel/helper-string-parser': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
'@bcoe/v8-coverage@0.2.3': {}
@@ -2072,7 +3127,7 @@ snapshots:
dependencies:
undici-types: 6.19.8
- '@vitest/coverage-v8@2.0.5(vitest@2.1.4(@types/node@22.7.7))':
+ '@vitest/coverage-v8@2.1.5(vitest@2.1.5(@types/node@22.7.7))':
dependencies:
'@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 0.2.3
@@ -2083,50 +3138,50 @@ snapshots:
istanbul-reports: 3.1.7
magic-string: 0.30.12
magicast: 0.3.5
- std-env: 3.7.0
+ std-env: 3.8.0
test-exclude: 7.0.1
tinyrainbow: 1.2.0
- vitest: 2.1.4(@types/node@22.7.7)
+ vitest: 2.1.5(@types/node@22.7.7)
transitivePeerDependencies:
- supports-color
- '@vitest/expect@2.1.4':
+ '@vitest/expect@2.1.5':
dependencies:
- '@vitest/spy': 2.1.4
- '@vitest/utils': 2.1.4
+ '@vitest/spy': 2.1.5
+ '@vitest/utils': 2.1.5
chai: 5.1.2
tinyrainbow: 1.2.0
- '@vitest/mocker@2.1.4(vite@5.4.9(@types/node@22.7.7))':
+ '@vitest/mocker@2.1.5(vite@5.4.9(@types/node@22.7.7))':
dependencies:
- '@vitest/spy': 2.1.4
+ '@vitest/spy': 2.1.5
estree-walker: 3.0.3
magic-string: 0.30.12
optionalDependencies:
vite: 5.4.9(@types/node@22.7.7)
- '@vitest/pretty-format@2.1.4':
+ '@vitest/pretty-format@2.1.5':
dependencies:
tinyrainbow: 1.2.0
- '@vitest/runner@2.1.4':
+ '@vitest/runner@2.1.5':
dependencies:
- '@vitest/utils': 2.1.4
+ '@vitest/utils': 2.1.5
pathe: 1.1.2
- '@vitest/snapshot@2.1.4':
+ '@vitest/snapshot@2.1.5':
dependencies:
- '@vitest/pretty-format': 2.1.4
+ '@vitest/pretty-format': 2.1.5
magic-string: 0.30.12
pathe: 1.1.2
- '@vitest/spy@2.1.4':
+ '@vitest/spy@2.1.5':
dependencies:
tinyspy: 3.0.2
- '@vitest/utils@2.1.4':
+ '@vitest/utils@2.1.5':
dependencies:
- '@vitest/pretty-format': 2.1.4
+ '@vitest/pretty-format': 2.1.5
loupe: 3.1.2
tinyrainbow: 1.2.0
@@ -2336,6 +3391,8 @@ snapshots:
env-paths@3.0.0: {}
+ es-module-lexer@1.5.4: {}
+
esbuild@0.21.5:
optionalDependencies:
'@esbuild/aix-ppc64': 0.21.5
@@ -2565,8 +3622,8 @@ snapshots:
magicast@0.3.5:
dependencies:
- '@babel/parser': 7.25.8
- '@babel/types': 7.25.8
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
source-map-js: 1.2.1
make-dir@4.0.0:
@@ -2746,7 +3803,7 @@ snapshots:
stackback@0.0.2: {}
- std-env@3.7.0: {}
+ std-env@3.8.0: {}
string-width@4.2.3:
dependencies:
@@ -2815,8 +3872,6 @@ snapshots:
tinyspy@3.0.2: {}
- to-fast-properties@2.0.0: {}
-
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
@@ -2862,10 +3917,11 @@ snapshots:
undici-types@6.19.8: {}
- vite-node@2.1.4(@types/node@22.7.7):
+ vite-node@2.1.5(@types/node@22.7.7):
dependencies:
cac: 6.7.14
debug: 4.3.7
+ es-module-lexer: 1.5.4
pathe: 1.1.2
vite: 5.4.9(@types/node@22.7.7)
transitivePeerDependencies:
@@ -2888,27 +3944,27 @@ snapshots:
'@types/node': 22.7.7
fsevents: 2.3.3
- vitest@2.1.4(@types/node@22.7.7):
+ vitest@2.1.5(@types/node@22.7.7):
dependencies:
- '@vitest/expect': 2.1.4
- '@vitest/mocker': 2.1.4(vite@5.4.9(@types/node@22.7.7))
- '@vitest/pretty-format': 2.1.4
- '@vitest/runner': 2.1.4
- '@vitest/snapshot': 2.1.4
- '@vitest/spy': 2.1.4
- '@vitest/utils': 2.1.4
+ '@vitest/expect': 2.1.5
+ '@vitest/mocker': 2.1.5(vite@5.4.9(@types/node@22.7.7))
+ '@vitest/pretty-format': 2.1.5
+ '@vitest/runner': 2.1.5
+ '@vitest/snapshot': 2.1.5
+ '@vitest/spy': 2.1.5
+ '@vitest/utils': 2.1.5
chai: 5.1.2
debug: 4.3.7
expect-type: 1.1.0
magic-string: 0.30.12
pathe: 1.1.2
- std-env: 3.7.0
+ std-env: 3.8.0
tinybench: 2.9.0
tinyexec: 0.3.1
tinypool: 1.0.1
tinyrainbow: 1.2.0
vite: 5.4.9(@types/node@22.7.7)
- vite-node: 2.1.4(@types/node@22.7.7)
+ vite-node: 2.1.5(@types/node@22.7.7)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 22.7.7
diff --git a/scripts/add-function.sh b/scripts/add-function.sh
deleted file mode 100644
index 911ac6a8..00000000
--- a/scripts/add-function.sh
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-NAME="$1"
-
-if [ -z "$NAME" ]; then
- echo "Usage: $0 /"
- exit 1
-fi
-
-# Split NAME into GROUP_NAME and FUNC_NAME
-IFS='/' read -r GROUP_NAME FUNC_NAME <<< "$NAME"
-
-if [ -z "$GROUP_NAME" ] || [ -z "$FUNC_NAME" ]; then
- echo "Error: Invalid input format. Please use /"
- exit 1
-fi
-
-# Check if the group directory exists in src
-if [ ! -d "src/$GROUP_NAME" ]; then
- echo "Warning: The group '$GROUP_NAME' does not exist in the src directory."
- read -n 1 -p "Are you sure you want to create a new group? (Y/n) " confirm
- echo
- if [ "$confirm" == "n" ]; then
- echo "Operation cancelled."
- exit 1
- fi
-fi
-
-# Create the function in the following files:
-# - src//.ts
-# - tests//.test.ts
-# - benchmarks//.bench.ts
-# - docs//.mdx
-
-SRC_DIR="src/$GROUP_NAME"
-DOCS_DIR="docs/$GROUP_NAME"
-TESTS_DIR="tests/$GROUP_NAME"
-BENCHMARKS_DIR="benchmarks/$GROUP_NAME"
-
-SRC_FILE="$SRC_DIR/$FUNC_NAME.ts"
-TESTS_FILE="$TESTS_DIR/$FUNC_NAME.test.ts"
-BENCHMARKS_FILE="$BENCHMARKS_DIR/$FUNC_NAME.bench.ts"
-DOCS_FILE="$DOCS_DIR/$FUNC_NAME.mdx"
-
-if [ ! -f "$DOCS_FILE" ]; then
- # Prompt the user for a description:
- echo "Enter a description for $FUNC_NAME:"
- read -r DESCRIPTION
-
- mkdir -p "$DOCS_DIR"
- echo -e "---\ntitle: $FUNC_NAME\ndescription: $DESCRIPTION\n---\n\n### Usage\n\nDoes a thing. Returns a value.\n\n\`\`\`ts\nimport * as _ from 'radashi'\n\n_.$FUNC_NAME()\n\`\`\`" > "$DOCS_FILE"
-else
- echo "Warning: $DOCS_FILE already exists. Skipping."
-fi
-
-if [ ! -f "$SRC_FILE" ]; then
- mkdir -p "$SRC_DIR"
- echo -e "/**\n * Does a thing.\n *\n * @see https://radashi.js.org/reference/$GROUP_NAME/$FUNC_NAME\n * @example\n * \`\`\`ts\n * $FUNC_NAME()\n * \`\`\`\n */\nexport function $FUNC_NAME(): void {}\n" > "$SRC_FILE"
-else
- echo "Warning: $SRC_FILE already exists. Skipping."
-fi
-
-if [ ! -f "$TESTS_FILE" ]; then
- mkdir -p "$TESTS_DIR"
- echo -e "import * as _ from 'radashi'\n\ndescribe('$FUNC_NAME', () => {\n test('does a thing', () => {\n expect(_.$FUNC_NAME()).toBe(undefined)\n })\n})\n" > "$TESTS_FILE"
-else
- echo "Warning: $TESTS_FILE already exists. Skipping."
-fi
-
-if [ ! -f "$BENCHMARKS_FILE" ]; then
- mkdir -p "$BENCHMARKS_DIR"
- echo -e "import * as _ from 'radashi'\n\ndescribe('$FUNC_NAME', () => {\n bench('with no arguments', () => {\n _.$FUNC_NAME()\n })\n})\n" > "$BENCHMARKS_FILE"
-else
- echo "Warning: $BENCHMARKS_FILE already exists. Skipping."
-fi
diff --git a/scripts/bench-file/package.json b/scripts/bench-file/package.json
new file mode 100644
index 00000000..29c0c5e4
--- /dev/null
+++ b/scripts/bench-file/package.json
@@ -0,0 +1,8 @@
+{
+ "type": "module",
+ "private": true,
+ "dependencies": {
+ "@radashi-org/benchmarks": "link:../benchmarks",
+ "vitest": "2.1.5"
+ }
+}
diff --git a/scripts/bench-file/readme.md b/scripts/bench-file/readme.md
new file mode 100644
index 00000000..b630b0ba
--- /dev/null
+++ b/scripts/bench-file/readme.md
@@ -0,0 +1,3 @@
+This script exists to avoid out-of-memory issues when running more than only a couple benchmarks in CI. Ideally, we wouldn't need it.
+
+It acts as an entry point for benchmarking a single file with Vitest.
diff --git a/scripts/benchmarks/vitest-bench.ts b/scripts/bench-file/src/main.ts
similarity index 76%
rename from scripts/benchmarks/vitest-bench.ts
rename to scripts/bench-file/src/main.ts
index 6ac2dfca..10a8cb0b 100644
--- a/scripts/benchmarks/vitest-bench.ts
+++ b/scripts/bench-file/src/main.ts
@@ -1,12 +1,8 @@
-/**
- * This script exists to avoid out-of-memory issues when running more
- * than only a couple benchmarks in CI. Ideally, we wouldn't need it.
- */
-import { createVitest } from 'vitest/node'
import {
type BenchmarkReport,
reportToBenchmarkHandler,
-} from './src/reporter.js'
+} from '@radashi-org/benchmarks/reporter.ts'
+import { createVitest } from 'vitest/node'
main()
@@ -17,6 +13,7 @@ async function main() {
watch: false,
pool: 'vmThreads',
includeTaskLocation: true,
+ config: new URL('../vitest.config.ts', import.meta.url).pathname,
benchmark: {
reporters: [
reportToBenchmarkHandler(report => {
diff --git a/scripts/benchmarks/vitest.config.ts b/scripts/bench-file/vitest.config.ts
similarity index 77%
rename from scripts/benchmarks/vitest.config.ts
rename to scripts/bench-file/vitest.config.ts
index c85b9794..ec3da757 100644
--- a/scripts/benchmarks/vitest.config.ts
+++ b/scripts/bench-file/vitest.config.ts
@@ -6,7 +6,7 @@ const resolve = (specifier: string) =>
export default defineConfig({
resolve: {
alias: {
- 'radashi/typed/isArray.js': resolve('../../src/typed/isArray.ts'),
+ 'radashi/typed/isArray.ts': resolve('../../src/typed/isArray.ts'),
},
},
})
diff --git a/scripts/bench-main/package.json b/scripts/bench-main/package.json
new file mode 100644
index 00000000..f24966b4
--- /dev/null
+++ b/scripts/bench-main/package.json
@@ -0,0 +1,9 @@
+{
+ "type": "module",
+ "private": true,
+ "dependencies": {
+ "@radashi-org/benchmarks": "link:../benchmarks",
+ "execa": "^9.5.1",
+ "radashi-db": "link:../radashi-db"
+ }
+}
diff --git a/scripts/benchmarks/ci-bench-main.ts b/scripts/bench-main/src/main.ts
similarity index 86%
rename from scripts/benchmarks/ci-bench-main.ts
rename to scripts/bench-main/src/main.ts
index ec43f8c9..11a1aa27 100644
--- a/scripts/benchmarks/ci-bench-main.ts
+++ b/scripts/bench-main/src/main.ts
@@ -1,18 +1,14 @@
+import { compareToBaseline } from '@radashi-org/benchmarks/compareToBaseline.ts'
+import { getStagedFiles } from '@radashi-org/benchmarks/getStagedFiles.ts'
+import type { BenchmarkReport } from '@radashi-org/benchmarks/reporter.ts'
+import { runVitest } from '@radashi-org/benchmarks/runner.ts'
import { execa } from 'execa'
import { existsSync } from 'node:fs'
-import { supabase } from 'radashi-db/supabase.js'
-import { compareToBaseline } from './src/compareToBaseline.js'
-import { getStagedFiles } from './src/getStagedFiles.js'
-import type { BenchmarkReport } from './src/reporter.js'
-import { runVitest } from './src/runner.js'
+import { supabase } from 'radashi-db/supabase.ts'
main()
async function main() {
- if (!process.env.SUPABASE_KEY) {
- throw new Error('SUPABASE_KEY is not set')
- }
-
// Get the last benched SHA
const metaResult = await supabase
.from('meta')
diff --git a/scripts/bench-pr/package.json b/scripts/bench-pr/package.json
new file mode 100644
index 00000000..3ae6a5c3
--- /dev/null
+++ b/scripts/bench-pr/package.json
@@ -0,0 +1,10 @@
+{
+ "type": "module",
+ "private": true,
+ "dependencies": {
+ "@octokit/rest": "^21.0.2",
+ "@radashi-org/benchmarks": "link:../benchmarks",
+ "@radashi-org/common": "link:../common",
+ "execa": "^9.5.1"
+ }
+}
diff --git a/scripts/benchmarks/ci-bench-pr.ts b/scripts/bench-pr/src/main.ts
similarity index 90%
rename from scripts/benchmarks/ci-bench-pr.ts
rename to scripts/bench-pr/src/main.ts
index d98ad4f4..73313a75 100644
--- a/scripts/benchmarks/ci-bench-pr.ts
+++ b/scripts/bench-pr/src/main.ts
@@ -1,15 +1,16 @@
import { Octokit } from '@octokit/rest'
+import { benchAddedFiles } from '@radashi-org/benchmarks/benchAddedFiles.ts'
+import { benchChangedFiles } from '@radashi-org/benchmarks/benchChangedFiles.ts'
+import { verifyEnvVars } from '@radashi-org/common/verifyEnvVars.ts'
import { execa } from 'execa'
-import { benchAddedFiles } from './src/benchAddedFiles.js'
-import { benchChangedFiles } from './src/benchChangedFiles.js'
-
-const octokit = new Octokit({
- auth: process.env.RADASHI_BOT_TOKEN,
-})
main()
async function main() {
+ const { radashiBotToken } = verifyEnvVars({
+ radashiBotToken: 'RADASHI_BOT_TOKEN',
+ })
+
const { baseRef, prNumber, prBlobURL } = parseArgv(process.argv.slice(2))
// Run the benchmarks
@@ -92,6 +93,10 @@ async function main() {
commentBody +=
"\n*Performance regressions of 30% or more should be investigated, unless they were anticipated. Smaller regressions may be due to normal variability, as we don't use dedicated CI infrastructure.*"
+ const octokit = new Octokit({
+ auth: radashiBotToken,
+ })
+
// Find and update the existing benchmark comment if it exists, or create a new one
try {
const { data: comments } = await octokit.rest.issues.listComments({
@@ -159,17 +164,6 @@ function formatChange(change: number) {
}
function parseArgv(argv: string[]) {
- if (!process.env.SUPABASE_KEY) {
- throw new Error('SUPABASE_KEY is not set')
- }
- if (!process.env.RADASHI_BOT_TOKEN) {
- throw new Error('RADASHI_BOT_TOKEN is not set')
- }
-
- // Prevent access to secrets from the benchmarks.
- process.env.SUPABASE_KEY = ''
- process.env.RADASHI_BOT_TOKEN = ''
-
const [baseRef, prNumber, prBlobURL] = argv
if (!baseRef || Number.isNaN(+prNumber) || !URL.canParse(prBlobURL)) {
throw new Error(`Invalid arguments: ${argv.join(' ')}`)
diff --git a/scripts/benchmarks/package.json b/scripts/benchmarks/package.json
index 8ecf865d..667f5f90 100644
--- a/scripts/benchmarks/package.json
+++ b/scripts/benchmarks/package.json
@@ -4,20 +4,18 @@
"scripts": {
"test": "vitest"
},
+ "exports": {
+ "./*": "./src/*"
+ },
"dependencies": {
"@babel/parser": "^7.25.3",
"@babel/traverse": "^7.25.3",
"@babel/types": "^7.25.2",
- "@octokit/rest": "^21.0.1",
"@types/babel__traverse": "^7.20.6",
- "@types/node": "^22.2.0",
"esbuild": "^0.23.0",
- "execa": "^9.3.0",
- "fast-glob": "^3.3.2",
+ "execa": "^9.5.1",
"radashi": "link:../../src",
- "radashi-db": "link:../radashi-db",
"ts-morph": "^23.0.0",
- "tsx": "^4.17.0",
- "vitest": "link:../../node_modules/vitest"
+ "vitest": "2.1.5"
}
}
diff --git a/scripts/benchmarks/pnpm-lock.yaml b/scripts/benchmarks/pnpm-lock.yaml
deleted file mode 100644
index 5b20f7d0..00000000
--- a/scripts/benchmarks/pnpm-lock.yaml
+++ /dev/null
@@ -1,1055 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@babel/parser':
- specifier: ^7.25.3
- version: 7.25.8
- '@babel/traverse':
- specifier: ^7.25.3
- version: 7.25.7
- '@babel/types':
- specifier: ^7.25.2
- version: 7.25.8
- '@octokit/rest':
- specifier: ^21.0.1
- version: 21.0.2
- '@types/babel__traverse':
- specifier: ^7.20.6
- version: 7.20.6
- '@types/node':
- specifier: ^22.2.0
- version: 22.7.7
- esbuild:
- specifier: ^0.23.0
- version: 0.23.1
- execa:
- specifier: ^9.3.0
- version: 9.4.1
- fast-glob:
- specifier: ^3.3.2
- version: 3.3.2
- radashi:
- specifier: link:../../src
- version: link:../../src
- radashi-db:
- specifier: link:../radashi-db
- version: link:../radashi-db
- ts-morph:
- specifier: ^23.0.0
- version: 23.0.0
- tsx:
- specifier: ^4.17.0
- version: 4.19.1
- vitest:
- specifier: link:../../node_modules/vitest
- version: link:../../node_modules/vitest
-
-packages:
-
- '@babel/code-frame@7.25.7':
- resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==}
- engines: {node: '>=6.9.0'}
-
- '@babel/generator@7.25.7':
- resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-string-parser@7.25.7':
- resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.25.7':
- resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/highlight@7.25.7':
- resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.25.8':
- resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/template@7.25.7':
- resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/traverse@7.25.7':
- resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.25.8':
- resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==}
- engines: {node: '>=6.9.0'}
-
- '@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@jridgewell/gen-mapping@0.3.5':
- resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/set-array@1.2.1':
- resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
-
- '@jridgewell/trace-mapping@0.3.25':
- resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
-
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
-
- '@octokit/auth-token@5.1.1':
- resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==}
- engines: {node: '>= 18'}
-
- '@octokit/core@6.1.2':
- resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==}
- engines: {node: '>= 18'}
-
- '@octokit/endpoint@10.1.1':
- resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==}
- engines: {node: '>= 18'}
-
- '@octokit/graphql@8.1.1':
- resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==}
- engines: {node: '>= 18'}
-
- '@octokit/openapi-types@22.2.0':
- resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
-
- '@octokit/plugin-paginate-rest@11.3.5':
- resolution: {integrity: sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-request-log@5.3.1':
- resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-rest-endpoint-methods@13.2.6':
- resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/request-error@6.1.5':
- resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==}
- engines: {node: '>= 18'}
-
- '@octokit/request@9.1.3':
- resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==}
- engines: {node: '>= 18'}
-
- '@octokit/rest@21.0.2':
- resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==}
- engines: {node: '>= 18'}
-
- '@octokit/types@13.6.1':
- resolution: {integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==}
-
- '@sec-ant/readable-stream@0.4.1':
- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
-
- '@sindresorhus/merge-streams@4.0.0':
- resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
- engines: {node: '>=18'}
-
- '@ts-morph/common@0.24.0':
- resolution: {integrity: sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==}
-
- '@types/babel__traverse@7.20.6':
- resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
-
- '@types/node@22.7.7':
- resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==}
-
- ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
-
- balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
- before-after-hook@3.0.2:
- resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==}
-
- brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
-
- code-block-writer@13.0.3:
- resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==}
-
- color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
-
- color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- debug@4.3.7:
- resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
- engines: {node: '>=18'}
- hasBin: true
-
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
- execa@9.4.1:
- resolution: {integrity: sha512-5eo/BRqZm3GYce+1jqX/tJ7duA2AnE39i88fuedNFUV8XxGxUpF3aWkBRfbUcjV49gCkvS/pzc0YrCPhaIewdg==}
- engines: {node: ^18.19.0 || >=20.5.0}
-
- fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
-
- fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
-
- figures@6.1.0:
- resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
- engines: {node: '>=18'}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- get-stream@9.0.1:
- resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
- engines: {node: '>=18'}
-
- get-tsconfig@4.8.1:
- resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- globals@11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
-
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
- human-signals@8.0.0:
- resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
- engines: {node: '>=18.18.0'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
- is-stream@4.0.1:
- resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
- engines: {node: '>=18'}
-
- is-unicode-supported@2.1.0:
- resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
- engines: {node: '>=18'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- jsesc@3.0.2:
- resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
- engines: {node: '>=6'}
- hasBin: true
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
-
- minimatch@9.0.5:
- resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- mkdirp@3.0.1:
- resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
- engines: {node: '>=10'}
- hasBin: true
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- npm-run-path@6.0.0:
- resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
- engines: {node: '>=18'}
-
- parse-ms@4.0.0:
- resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
- engines: {node: '>=18'}
-
- path-browserify@1.0.1:
- resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- pretty-ms@9.1.0:
- resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==}
- engines: {node: '>=18'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- strip-final-newline@4.0.0:
- resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
- engines: {node: '>=18'}
-
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
-
- to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- ts-morph@23.0.0:
- resolution: {integrity: sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==}
-
- tsx@4.19.1:
- resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- unicorn-magic@0.3.0:
- resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
- engines: {node: '>=18'}
-
- universal-user-agent@7.0.2:
- resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- yoctocolors@2.1.1:
- resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
- engines: {node: '>=18'}
-
-snapshots:
-
- '@babel/code-frame@7.25.7':
- dependencies:
- '@babel/highlight': 7.25.7
- picocolors: 1.1.1
-
- '@babel/generator@7.25.7':
- dependencies:
- '@babel/types': 7.25.8
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
- jsesc: 3.0.2
-
- '@babel/helper-string-parser@7.25.7': {}
-
- '@babel/helper-validator-identifier@7.25.7': {}
-
- '@babel/highlight@7.25.7':
- dependencies:
- '@babel/helper-validator-identifier': 7.25.7
- chalk: 2.4.2
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/parser@7.25.8':
- dependencies:
- '@babel/types': 7.25.8
-
- '@babel/template@7.25.7':
- dependencies:
- '@babel/code-frame': 7.25.7
- '@babel/parser': 7.25.8
- '@babel/types': 7.25.8
-
- '@babel/traverse@7.25.7':
- dependencies:
- '@babel/code-frame': 7.25.7
- '@babel/generator': 7.25.7
- '@babel/parser': 7.25.8
- '@babel/template': 7.25.7
- '@babel/types': 7.25.8
- debug: 4.3.7
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.25.8':
- dependencies:
- '@babel/helper-string-parser': 7.25.7
- '@babel/helper-validator-identifier': 7.25.7
- to-fast-properties: 2.0.0
-
- '@esbuild/aix-ppc64@0.23.1':
- optional: true
-
- '@esbuild/android-arm64@0.23.1':
- optional: true
-
- '@esbuild/android-arm@0.23.1':
- optional: true
-
- '@esbuild/android-x64@0.23.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.23.1':
- optional: true
-
- '@esbuild/darwin-x64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm@0.23.1':
- optional: true
-
- '@esbuild/linux-ia32@0.23.1':
- optional: true
-
- '@esbuild/linux-loong64@0.23.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.23.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.23.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.23.1':
- optional: true
-
- '@esbuild/linux-s390x@0.23.1':
- optional: true
-
- '@esbuild/linux-x64@0.23.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/sunos-x64@0.23.1':
- optional: true
-
- '@esbuild/win32-arm64@0.23.1':
- optional: true
-
- '@esbuild/win32-ia32@0.23.1':
- optional: true
-
- '@esbuild/win32-x64@0.23.1':
- optional: true
-
- '@jridgewell/gen-mapping@0.3.5':
- dependencies:
- '@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.5.0
- '@jridgewell/trace-mapping': 0.3.25
-
- '@jridgewell/resolve-uri@3.1.2': {}
-
- '@jridgewell/set-array@1.2.1': {}
-
- '@jridgewell/sourcemap-codec@1.5.0': {}
-
- '@jridgewell/trace-mapping@0.3.25':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
-
- '@nodelib/fs.scandir@2.1.5':
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- '@nodelib/fs.stat@2.0.5': {}
-
- '@nodelib/fs.walk@1.2.8':
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.1
-
- '@octokit/auth-token@5.1.1': {}
-
- '@octokit/core@6.1.2':
- dependencies:
- '@octokit/auth-token': 5.1.1
- '@octokit/graphql': 8.1.1
- '@octokit/request': 9.1.3
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- before-after-hook: 3.0.2
- universal-user-agent: 7.0.2
-
- '@octokit/endpoint@10.1.1':
- dependencies:
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/graphql@8.1.1':
- dependencies:
- '@octokit/request': 9.1.3
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/openapi-types@22.2.0': {}
-
- '@octokit/plugin-paginate-rest@11.3.5(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
-
- '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
-
- '@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
-
- '@octokit/request-error@6.1.5':
- dependencies:
- '@octokit/types': 13.6.1
-
- '@octokit/request@9.1.3':
- dependencies:
- '@octokit/endpoint': 10.1.1
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/rest@21.0.2':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/plugin-paginate-rest': 11.3.5(@octokit/core@6.1.2)
- '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.2)
- '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2)
-
- '@octokit/types@13.6.1':
- dependencies:
- '@octokit/openapi-types': 22.2.0
-
- '@sec-ant/readable-stream@0.4.1': {}
-
- '@sindresorhus/merge-streams@4.0.0': {}
-
- '@ts-morph/common@0.24.0':
- dependencies:
- fast-glob: 3.3.2
- minimatch: 9.0.5
- mkdirp: 3.0.1
- path-browserify: 1.0.1
-
- '@types/babel__traverse@7.20.6':
- dependencies:
- '@babel/types': 7.25.8
-
- '@types/node@22.7.7':
- dependencies:
- undici-types: 6.19.8
-
- ansi-styles@3.2.1:
- dependencies:
- color-convert: 1.9.3
-
- balanced-match@1.0.2: {}
-
- before-after-hook@3.0.2: {}
-
- brace-expansion@2.0.1:
- dependencies:
- balanced-match: 1.0.2
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- chalk@2.4.2:
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
-
- code-block-writer@13.0.3: {}
-
- color-convert@1.9.3:
- dependencies:
- color-name: 1.1.3
-
- color-name@1.1.3: {}
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- debug@4.3.7:
- dependencies:
- ms: 2.1.3
-
- esbuild@0.23.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.1
- '@esbuild/android-arm': 0.23.1
- '@esbuild/android-arm64': 0.23.1
- '@esbuild/android-x64': 0.23.1
- '@esbuild/darwin-arm64': 0.23.1
- '@esbuild/darwin-x64': 0.23.1
- '@esbuild/freebsd-arm64': 0.23.1
- '@esbuild/freebsd-x64': 0.23.1
- '@esbuild/linux-arm': 0.23.1
- '@esbuild/linux-arm64': 0.23.1
- '@esbuild/linux-ia32': 0.23.1
- '@esbuild/linux-loong64': 0.23.1
- '@esbuild/linux-mips64el': 0.23.1
- '@esbuild/linux-ppc64': 0.23.1
- '@esbuild/linux-riscv64': 0.23.1
- '@esbuild/linux-s390x': 0.23.1
- '@esbuild/linux-x64': 0.23.1
- '@esbuild/netbsd-x64': 0.23.1
- '@esbuild/openbsd-arm64': 0.23.1
- '@esbuild/openbsd-x64': 0.23.1
- '@esbuild/sunos-x64': 0.23.1
- '@esbuild/win32-arm64': 0.23.1
- '@esbuild/win32-ia32': 0.23.1
- '@esbuild/win32-x64': 0.23.1
-
- escape-string-regexp@1.0.5: {}
-
- execa@9.4.1:
- dependencies:
- '@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
- figures: 6.1.0
- get-stream: 9.0.1
- human-signals: 8.0.0
- is-plain-obj: 4.1.0
- is-stream: 4.0.1
- npm-run-path: 6.0.0
- pretty-ms: 9.1.0
- signal-exit: 4.1.0
- strip-final-newline: 4.0.0
- yoctocolors: 2.1.1
-
- fast-glob@3.3.2:
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.8
-
- fastq@1.17.1:
- dependencies:
- reusify: 1.0.4
-
- figures@6.1.0:
- dependencies:
- is-unicode-supported: 2.1.0
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- fsevents@2.3.3:
- optional: true
-
- get-stream@9.0.1:
- dependencies:
- '@sec-ant/readable-stream': 0.4.1
- is-stream: 4.0.1
-
- get-tsconfig@4.8.1:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- globals@11.12.0: {}
-
- has-flag@3.0.0: {}
-
- human-signals@8.0.0: {}
-
- is-extglob@2.1.1: {}
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-number@7.0.0: {}
-
- is-plain-obj@4.1.0: {}
-
- is-stream@4.0.1: {}
-
- is-unicode-supported@2.1.0: {}
-
- isexe@2.0.0: {}
-
- js-tokens@4.0.0: {}
-
- jsesc@3.0.2: {}
-
- merge2@1.4.1: {}
-
- micromatch@4.0.8:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- minimatch@9.0.5:
- dependencies:
- brace-expansion: 2.0.1
-
- mkdirp@3.0.1: {}
-
- ms@2.1.3: {}
-
- npm-run-path@6.0.0:
- dependencies:
- path-key: 4.0.0
- unicorn-magic: 0.3.0
-
- parse-ms@4.0.0: {}
-
- path-browserify@1.0.1: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- picocolors@1.1.1: {}
-
- picomatch@2.3.1: {}
-
- pretty-ms@9.1.0:
- dependencies:
- parse-ms: 4.0.0
-
- queue-microtask@1.2.3: {}
-
- resolve-pkg-maps@1.0.0: {}
-
- reusify@1.0.4: {}
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- signal-exit@4.1.0: {}
-
- strip-final-newline@4.0.0: {}
-
- supports-color@5.5.0:
- dependencies:
- has-flag: 3.0.0
-
- to-fast-properties@2.0.0: {}
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- ts-morph@23.0.0:
- dependencies:
- '@ts-morph/common': 0.24.0
- code-block-writer: 13.0.3
-
- tsx@4.19.1:
- dependencies:
- esbuild: 0.23.1
- get-tsconfig: 4.8.1
- optionalDependencies:
- fsevents: 2.3.3
-
- undici-types@6.19.8: {}
-
- unicorn-magic@0.3.0: {}
-
- universal-user-agent@7.0.2: {}
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- yoctocolors@2.1.1: {}
diff --git a/scripts/benchmarks/src/benchAddedFiles.ts b/scripts/benchmarks/src/benchAddedFiles.ts
index dcd010a4..d906d38a 100644
--- a/scripts/benchmarks/src/benchAddedFiles.ts
+++ b/scripts/benchmarks/src/benchAddedFiles.ts
@@ -3,9 +3,9 @@
* benchmarks for them.
*/
import { existsSync } from 'node:fs'
-import { getStagedFiles } from './getStagedFiles.js'
-import type { BenchmarkReport } from './reporter.js'
-import { runVitest } from './runner.js'
+import { getStagedFiles } from './getStagedFiles.ts'
+import type { BenchmarkReport } from './reporter.ts'
+import { runVitest } from './runner.ts'
/**
* Given a target branch, run the benchmarks for any source files that have
diff --git a/scripts/benchmarks/src/benchChangedFiles.ts b/scripts/benchmarks/src/benchChangedFiles.ts
index aaa84802..e0c05a7b 100644
--- a/scripts/benchmarks/src/benchChangedFiles.ts
+++ b/scripts/benchmarks/src/benchChangedFiles.ts
@@ -3,10 +3,10 @@
* benchmarks for them.
*/
import { existsSync } from 'node:fs'
-import { group } from 'radashi/array/group.js'
-import { getStagedFiles } from './getStagedFiles.js'
-import type { BenchmarkReport } from './reporter.js'
-import { runVitest } from './runner.js'
+import { group } from 'radashi/array/group.ts'
+import { getStagedFiles } from './getStagedFiles.ts'
+import type { BenchmarkReport } from './reporter.ts'
+import { runVitest } from './runner.ts'
/**
* Given a target branch, run the benchmarks for any source files that have
@@ -31,7 +31,7 @@ export async function benchChangedFiles(
.replace(/\.ts$/, '.bench.ts')
if (existsSync(benchFile)) {
- const { compareToBaseline } = await import('./compareToBaseline.js')
+ const { compareToBaseline } = await import('./compareToBaseline.ts')
const changed = await compareToBaseline(
targetBranch,
diff --git a/scripts/benchmarks/src/compareToBaseline.ts b/scripts/benchmarks/src/compareToBaseline.ts
index 1349bb8d..c10624a2 100644
--- a/scripts/benchmarks/src/compareToBaseline.ts
+++ b/scripts/benchmarks/src/compareToBaseline.ts
@@ -2,8 +2,8 @@ import * as esbuild from 'esbuild'
import { execa } from 'execa'
import fs from 'node:fs/promises'
import { Project, SyntaxKind } from 'ts-morph'
-import { dedent } from './dedent'
-import { normalizeIdentifiers } from './normalizeIdentifiers'
+import { dedent } from './dedent.ts'
+import { normalizeIdentifiers } from './normalizeIdentifiers.ts'
export async function compareToBaseline(
baseRef: string,
diff --git a/scripts/benchmarks/src/dedent.ts b/scripts/benchmarks/src/dedent.ts
index dc974255..131939e9 100644
--- a/scripts/benchmarks/src/dedent.ts
+++ b/scripts/benchmarks/src/dedent.ts
@@ -1,4 +1,4 @@
-import { isArray } from 'radashi/typed/isArray.js'
+import { isArray } from 'radashi/typed/isArray.ts'
/**
* Remove indentation from a string. The given string is expected to
diff --git a/scripts/benchmarks/src/getStagedFiles.ts b/scripts/benchmarks/src/getStagedFiles.ts
index e97d17fd..1cbaa679 100644
--- a/scripts/benchmarks/src/getStagedFiles.ts
+++ b/scripts/benchmarks/src/getStagedFiles.ts
@@ -1,5 +1,5 @@
import { execa } from 'execa'
-import { cluster } from 'radashi/array/cluster.js'
+import { cluster } from 'radashi/array/cluster.ts'
export async function getStagedFiles(
globs: [string, ...string[]],
diff --git a/scripts/benchmarks/src/normalizeIdentifiers.test.ts b/scripts/benchmarks/src/normalizeIdentifiers.test.ts
index d7c26afc..f0e1538a 100644
--- a/scripts/benchmarks/src/normalizeIdentifiers.test.ts
+++ b/scripts/benchmarks/src/normalizeIdentifiers.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
-import { dedent } from './dedent'
-import { normalizeIdentifiers } from './normalizeIdentifiers'
+import { dedent } from './dedent.ts'
+import { normalizeIdentifiers } from './normalizeIdentifiers.ts'
describe('normalizeIdentifiers', () => {
it('should normalize identifiers in a simple code snippet', () => {
diff --git a/scripts/benchmarks/src/runner.ts b/scripts/benchmarks/src/runner.ts
index a6b9adcb..80ce26ef 100644
--- a/scripts/benchmarks/src/runner.ts
+++ b/scripts/benchmarks/src/runner.ts
@@ -1,5 +1,5 @@
import { execa } from 'execa'
-import type { BenchmarkReport } from './reporter'
+import type { BenchmarkReport } from './reporter.ts'
const tsx = './scripts/benchmarks/node_modules/.bin/tsx'
const runner = './scripts/benchmarks/vitest-bench.ts'
diff --git a/scripts/browser-support/pnpm-lock.yaml b/scripts/browser-support/pnpm-lock.yaml
deleted file mode 100644
index e6cb5517..00000000
--- a/scripts/browser-support/pnpm-lock.yaml
+++ /dev/null
@@ -1,561 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@types/node':
- specifier: ^22.4.0
- version: 22.7.7
- browserslist-generator:
- specifier: ^2.1.0
- version: 2.3.0
- dequal:
- specifier: ^2.0.3
- version: 2.0.3
- execa:
- specifier: npm:@esm2cjs/execa@6.1.1-cjs.1
- version: '@esm2cjs/execa@6.1.1-cjs.1'
- tsx:
- specifier: ^4.17.0
- version: 4.19.1
-
-packages:
-
- '@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@esm2cjs/execa@6.1.1-cjs.1':
- resolution: {integrity: sha512-FHxfnmuDIjY1VS/BLzDkL8EkbcFvi8s6x1nYQ1Nyu0An0n88EJcGhDBcRWLFwt3C3nT7xwI+MwHRH1TZcAFW2w==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- '@esm2cjs/human-signals@3.0.1':
- resolution: {integrity: sha512-QZme4eF/PwTpeSbMB4AaWGQ4VSygzE30jI+Oas1NPTtZQAgcHwWVDOQpIW8FUmtzn5Q+2cS7AjnTzbtqtc5P6g==}
- engines: {node: '>=12.20.0'}
-
- '@esm2cjs/is-stream@3.0.0':
- resolution: {integrity: sha512-qcBscHlJpZFOD5nnmMHkzOrq2xyvsp9fbVreQLS8x2LOs8N3CrNi3fqvFY0GVJR+YSOHscwhG9T5t4Ck7R7QGw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- '@esm2cjs/mimic-fn@4.0.0':
- resolution: {integrity: sha512-LIIAjcpjLr4rcbYmRQ+eRu55Upy/MMB78seIlwqbnyiA+cTa1/pxWnJ1NHJQrw6tx2wMQmlYoJj+wf16NjWH6Q==}
- engines: {node: '>=12'}
-
- '@esm2cjs/npm-run-path@5.1.1-cjs.0':
- resolution: {integrity: sha512-CWeAIyE8iNSCgP2ItPE8iPgS+lACqgH+MuFRaWOIl2T7hnHqPFfhAJJ/LcLJJ/RMIxNMeenjFMwc91HW7NWr1A==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- '@esm2cjs/onetime@6.0.1-cjs.0':
- resolution: {integrity: sha512-MkZMZSxrSC/6yUuAw6Azc56XOgwHQQIsNDlO/zgFmOcycJBhRwRuc/gdYUUOFNZIh7y+f0JSIxkNdJPFvJ5W0w==}
- engines: {node: '>=12'}
-
- '@esm2cjs/path-key@4.0.0':
- resolution: {integrity: sha512-fKzZ3uIIP4j+7WfyG0MEkomGHL0hUXWCx1kY2Zct3GTdl4pyY+3k5lCUxjgdDa2Ld1BCjMNorXnRHiBP6jW6CQ==}
- engines: {node: '>=12'}
-
- '@esm2cjs/strip-final-newline@3.0.1-cjs.0':
- resolution: {integrity: sha512-o41riCGPiOEStayoikBCAqwa6igbv9L9rP+k5UCfQ24EJD/wGrdDs/KTNwkHG5JzDK3T60D5dMkWkLKEPy8gjA==}
- engines: {node: '>=12'}
-
- '@mdn/browser-compat-data@5.6.8':
- resolution: {integrity: sha512-ueuvAVqVaPF+bEclXAH/P+qfUJ2IMJDaeUS+j8HC/maWTdV5tcm2eTvlGdXRLiq0rJAZk0Zy22i51rzW0B2izQ==}
-
- '@types/node@22.7.7':
- resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==}
-
- '@types/object-path@0.11.4':
- resolution: {integrity: sha512-4tgJ1Z3elF/tOMpA8JLVuR9spt9Ynsf7+JjqsQ2IqtiPJtcLoHoXcT6qU4E10cPFqyXX5HDm9QwIzZhBSkLxsw==}
-
- '@types/semver@7.5.8':
- resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
-
- '@types/ua-parser-js@0.7.39':
- resolution: {integrity: sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==}
-
- browserslist-generator@2.3.0:
- resolution: {integrity: sha512-NEvS2dNlBKfSL3qDUTM3NkJMfjMAPEjvEGnhMZKql6ZNzJ8asqFpmuTizwOpRQeYA0/VktmOXa+mFPv8nvcIGw==}
- engines: {node: '>=16.15.1', npm: '>=7.0.0', pnpm: '>=3.2.0', yarn: '>=1.13'}
-
- browserslist@4.24.0:
- resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
- caniuse-lite@1.0.30001669:
- resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- dequal@2.0.3:
- resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
- engines: {node: '>=6'}
-
- electron-to-chromium@1.5.41:
- resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==}
-
- esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
- engines: {node: '>=18'}
- hasBin: true
-
- escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- get-stream@6.0.1:
- resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
- engines: {node: '>=10'}
-
- get-tsconfig@4.8.1:
- resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
-
- isbot@3.8.0:
- resolution: {integrity: sha512-vne1mzQUTR+qsMLeCBL9+/tgnDXRyc2pygLGl/WsgA+EZKIiB5Ehu0CiVTHIIk30zhJ24uGz4M5Ppse37aR0Hg==}
- engines: {node: '>=12'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
- node-releases@2.0.18:
- resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
-
- object-path@0.11.8:
- resolution: {integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==}
- engines: {node: '>= 10.12.0'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- semver@7.6.3:
- resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
- engines: {node: '>=10'}
- hasBin: true
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
-
- tsx@4.19.1:
- resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- ua-parser-js@1.0.39:
- resolution: {integrity: sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==}
- hasBin: true
-
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- update-browserslist-db@1.1.1:
- resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
-snapshots:
-
- '@esbuild/aix-ppc64@0.23.1':
- optional: true
-
- '@esbuild/android-arm64@0.23.1':
- optional: true
-
- '@esbuild/android-arm@0.23.1':
- optional: true
-
- '@esbuild/android-x64@0.23.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.23.1':
- optional: true
-
- '@esbuild/darwin-x64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm@0.23.1':
- optional: true
-
- '@esbuild/linux-ia32@0.23.1':
- optional: true
-
- '@esbuild/linux-loong64@0.23.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.23.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.23.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.23.1':
- optional: true
-
- '@esbuild/linux-s390x@0.23.1':
- optional: true
-
- '@esbuild/linux-x64@0.23.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/sunos-x64@0.23.1':
- optional: true
-
- '@esbuild/win32-arm64@0.23.1':
- optional: true
-
- '@esbuild/win32-ia32@0.23.1':
- optional: true
-
- '@esbuild/win32-x64@0.23.1':
- optional: true
-
- '@esm2cjs/execa@6.1.1-cjs.1':
- dependencies:
- '@esm2cjs/human-signals': 3.0.1
- '@esm2cjs/is-stream': 3.0.0
- '@esm2cjs/npm-run-path': 5.1.1-cjs.0
- '@esm2cjs/onetime': 6.0.1-cjs.0
- '@esm2cjs/strip-final-newline': 3.0.1-cjs.0
- cross-spawn: 7.0.3
- get-stream: 6.0.1
- merge-stream: 2.0.0
- signal-exit: 3.0.7
-
- '@esm2cjs/human-signals@3.0.1': {}
-
- '@esm2cjs/is-stream@3.0.0': {}
-
- '@esm2cjs/mimic-fn@4.0.0': {}
-
- '@esm2cjs/npm-run-path@5.1.1-cjs.0':
- dependencies:
- '@esm2cjs/path-key': 4.0.0
-
- '@esm2cjs/onetime@6.0.1-cjs.0':
- dependencies:
- '@esm2cjs/mimic-fn': 4.0.0
-
- '@esm2cjs/path-key@4.0.0': {}
-
- '@esm2cjs/strip-final-newline@3.0.1-cjs.0': {}
-
- '@mdn/browser-compat-data@5.6.8': {}
-
- '@types/node@22.7.7':
- dependencies:
- undici-types: 6.19.8
-
- '@types/object-path@0.11.4': {}
-
- '@types/semver@7.5.8': {}
-
- '@types/ua-parser-js@0.7.39': {}
-
- browserslist-generator@2.3.0:
- dependencies:
- '@mdn/browser-compat-data': 5.6.8
- '@types/object-path': 0.11.4
- '@types/semver': 7.5.8
- '@types/ua-parser-js': 0.7.39
- browserslist: 4.24.0
- caniuse-lite: 1.0.30001669
- isbot: 3.8.0
- object-path: 0.11.8
- semver: 7.6.3
- ua-parser-js: 1.0.39
-
- browserslist@4.24.0:
- dependencies:
- caniuse-lite: 1.0.30001669
- electron-to-chromium: 1.5.41
- node-releases: 2.0.18
- update-browserslist-db: 1.1.1(browserslist@4.24.0)
-
- caniuse-lite@1.0.30001669: {}
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- dequal@2.0.3: {}
-
- electron-to-chromium@1.5.41: {}
-
- esbuild@0.23.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.1
- '@esbuild/android-arm': 0.23.1
- '@esbuild/android-arm64': 0.23.1
- '@esbuild/android-x64': 0.23.1
- '@esbuild/darwin-arm64': 0.23.1
- '@esbuild/darwin-x64': 0.23.1
- '@esbuild/freebsd-arm64': 0.23.1
- '@esbuild/freebsd-x64': 0.23.1
- '@esbuild/linux-arm': 0.23.1
- '@esbuild/linux-arm64': 0.23.1
- '@esbuild/linux-ia32': 0.23.1
- '@esbuild/linux-loong64': 0.23.1
- '@esbuild/linux-mips64el': 0.23.1
- '@esbuild/linux-ppc64': 0.23.1
- '@esbuild/linux-riscv64': 0.23.1
- '@esbuild/linux-s390x': 0.23.1
- '@esbuild/linux-x64': 0.23.1
- '@esbuild/netbsd-x64': 0.23.1
- '@esbuild/openbsd-arm64': 0.23.1
- '@esbuild/openbsd-x64': 0.23.1
- '@esbuild/sunos-x64': 0.23.1
- '@esbuild/win32-arm64': 0.23.1
- '@esbuild/win32-ia32': 0.23.1
- '@esbuild/win32-x64': 0.23.1
-
- escalade@3.2.0: {}
-
- fsevents@2.3.3:
- optional: true
-
- get-stream@6.0.1: {}
-
- get-tsconfig@4.8.1:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- isbot@3.8.0: {}
-
- isexe@2.0.0: {}
-
- merge-stream@2.0.0: {}
-
- node-releases@2.0.18: {}
-
- object-path@0.11.8: {}
-
- path-key@3.1.1: {}
-
- picocolors@1.1.1: {}
-
- resolve-pkg-maps@1.0.0: {}
-
- semver@7.6.3: {}
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- signal-exit@3.0.7: {}
-
- tsx@4.19.1:
- dependencies:
- esbuild: 0.23.1
- get-tsconfig: 4.8.1
- optionalDependencies:
- fsevents: 2.3.3
-
- ua-parser-js@1.0.39: {}
-
- undici-types@6.19.8: {}
-
- update-browserslist-db@1.1.1(browserslist@4.24.0):
- dependencies:
- browserslist: 4.24.0
- escalade: 3.2.0
- picocolors: 1.1.1
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
diff --git a/scripts/bundle-impact.sh b/scripts/bundle-impact.sh
deleted file mode 100644
index 618f71b8..00000000
--- a/scripts/bundle-impact.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-if [ ! -d "scripts/bundle-impact/node_modules" ]; then
- echo "Node modules not found. Installing dependencies..."
- pnpm install -C scripts/bundle-impact
-fi
-
-pnpm -s scripts/bundle-impact/node_modules/.bin/tsx -e "
-import { weighChangedFunctions } from '$PWD/scripts/bundle-impact/src/weigh-changed'
-weighChangedFunctions().then(console.log)
-"
diff --git a/scripts/bundle-impact/package.json b/scripts/bundle-impact/package.json
index 6f51c24f..0244131a 100644
--- a/scripts/bundle-impact/package.json
+++ b/scripts/bundle-impact/package.json
@@ -3,10 +3,9 @@
"private": true,
"dependencies": {
"@octokit/rest": "^21.0.1",
- "@types/node": "^22.4.0",
+ "@radashi-org/common": "link:../common",
"esbuild": "^0.23.0",
- "execa": "^9.3.0",
- "radashi": "link:../../src",
- "tsx": "^4.17.0"
+ "execa": "^9.5.1",
+ "radashi": "link:../../src"
}
}
diff --git a/scripts/bundle-impact/pnpm-lock.yaml b/scripts/bundle-impact/pnpm-lock.yaml
deleted file mode 100644
index 7060fe4f..00000000
--- a/scripts/bundle-impact/pnpm-lock.yaml
+++ /dev/null
@@ -1,615 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@octokit/rest':
- specifier: ^21.0.1
- version: 21.0.2
- '@types/node':
- specifier: ^22.4.0
- version: 22.7.7
- esbuild:
- specifier: ^0.23.0
- version: 0.23.1
- execa:
- specifier: ^9.3.0
- version: 9.4.1
- radashi:
- specifier: link:../../src
- version: link:../../src
- tsx:
- specifier: ^4.17.0
- version: 4.19.1
-
-packages:
-
- '@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@octokit/auth-token@5.1.1':
- resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==}
- engines: {node: '>= 18'}
-
- '@octokit/core@6.1.2':
- resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==}
- engines: {node: '>= 18'}
-
- '@octokit/endpoint@10.1.1':
- resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==}
- engines: {node: '>= 18'}
-
- '@octokit/graphql@8.1.1':
- resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==}
- engines: {node: '>= 18'}
-
- '@octokit/openapi-types@22.2.0':
- resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
-
- '@octokit/plugin-paginate-rest@11.3.5':
- resolution: {integrity: sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-request-log@5.3.1':
- resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-rest-endpoint-methods@13.2.6':
- resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/request-error@6.1.5':
- resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==}
- engines: {node: '>= 18'}
-
- '@octokit/request@9.1.3':
- resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==}
- engines: {node: '>= 18'}
-
- '@octokit/rest@21.0.2':
- resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==}
- engines: {node: '>= 18'}
-
- '@octokit/types@13.6.1':
- resolution: {integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==}
-
- '@sec-ant/readable-stream@0.4.1':
- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
-
- '@sindresorhus/merge-streams@4.0.0':
- resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
- engines: {node: '>=18'}
-
- '@types/node@22.7.7':
- resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==}
-
- before-after-hook@3.0.2:
- resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
- engines: {node: '>=18'}
- hasBin: true
-
- execa@9.4.1:
- resolution: {integrity: sha512-5eo/BRqZm3GYce+1jqX/tJ7duA2AnE39i88fuedNFUV8XxGxUpF3aWkBRfbUcjV49gCkvS/pzc0YrCPhaIewdg==}
- engines: {node: ^18.19.0 || >=20.5.0}
-
- figures@6.1.0:
- resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
- engines: {node: '>=18'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- get-stream@9.0.1:
- resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
- engines: {node: '>=18'}
-
- get-tsconfig@4.8.1:
- resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
-
- human-signals@8.0.0:
- resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
- engines: {node: '>=18.18.0'}
-
- is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
- is-stream@4.0.1:
- resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
- engines: {node: '>=18'}
-
- is-unicode-supported@2.1.0:
- resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
- engines: {node: '>=18'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- npm-run-path@6.0.0:
- resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
- engines: {node: '>=18'}
-
- parse-ms@4.0.0:
- resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
- engines: {node: '>=18'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- pretty-ms@9.1.0:
- resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==}
- engines: {node: '>=18'}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- strip-final-newline@4.0.0:
- resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
- engines: {node: '>=18'}
-
- tsx@4.19.1:
- resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- unicorn-magic@0.3.0:
- resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
- engines: {node: '>=18'}
-
- universal-user-agent@7.0.2:
- resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- yoctocolors@2.1.1:
- resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
- engines: {node: '>=18'}
-
-snapshots:
-
- '@esbuild/aix-ppc64@0.23.1':
- optional: true
-
- '@esbuild/android-arm64@0.23.1':
- optional: true
-
- '@esbuild/android-arm@0.23.1':
- optional: true
-
- '@esbuild/android-x64@0.23.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.23.1':
- optional: true
-
- '@esbuild/darwin-x64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm@0.23.1':
- optional: true
-
- '@esbuild/linux-ia32@0.23.1':
- optional: true
-
- '@esbuild/linux-loong64@0.23.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.23.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.23.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.23.1':
- optional: true
-
- '@esbuild/linux-s390x@0.23.1':
- optional: true
-
- '@esbuild/linux-x64@0.23.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/sunos-x64@0.23.1':
- optional: true
-
- '@esbuild/win32-arm64@0.23.1':
- optional: true
-
- '@esbuild/win32-ia32@0.23.1':
- optional: true
-
- '@esbuild/win32-x64@0.23.1':
- optional: true
-
- '@octokit/auth-token@5.1.1': {}
-
- '@octokit/core@6.1.2':
- dependencies:
- '@octokit/auth-token': 5.1.1
- '@octokit/graphql': 8.1.1
- '@octokit/request': 9.1.3
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- before-after-hook: 3.0.2
- universal-user-agent: 7.0.2
-
- '@octokit/endpoint@10.1.1':
- dependencies:
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/graphql@8.1.1':
- dependencies:
- '@octokit/request': 9.1.3
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/openapi-types@22.2.0': {}
-
- '@octokit/plugin-paginate-rest@11.3.5(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
-
- '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
-
- '@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
-
- '@octokit/request-error@6.1.5':
- dependencies:
- '@octokit/types': 13.6.1
-
- '@octokit/request@9.1.3':
- dependencies:
- '@octokit/endpoint': 10.1.1
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/rest@21.0.2':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/plugin-paginate-rest': 11.3.5(@octokit/core@6.1.2)
- '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.2)
- '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2)
-
- '@octokit/types@13.6.1':
- dependencies:
- '@octokit/openapi-types': 22.2.0
-
- '@sec-ant/readable-stream@0.4.1': {}
-
- '@sindresorhus/merge-streams@4.0.0': {}
-
- '@types/node@22.7.7':
- dependencies:
- undici-types: 6.19.8
-
- before-after-hook@3.0.2: {}
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- esbuild@0.23.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.1
- '@esbuild/android-arm': 0.23.1
- '@esbuild/android-arm64': 0.23.1
- '@esbuild/android-x64': 0.23.1
- '@esbuild/darwin-arm64': 0.23.1
- '@esbuild/darwin-x64': 0.23.1
- '@esbuild/freebsd-arm64': 0.23.1
- '@esbuild/freebsd-x64': 0.23.1
- '@esbuild/linux-arm': 0.23.1
- '@esbuild/linux-arm64': 0.23.1
- '@esbuild/linux-ia32': 0.23.1
- '@esbuild/linux-loong64': 0.23.1
- '@esbuild/linux-mips64el': 0.23.1
- '@esbuild/linux-ppc64': 0.23.1
- '@esbuild/linux-riscv64': 0.23.1
- '@esbuild/linux-s390x': 0.23.1
- '@esbuild/linux-x64': 0.23.1
- '@esbuild/netbsd-x64': 0.23.1
- '@esbuild/openbsd-arm64': 0.23.1
- '@esbuild/openbsd-x64': 0.23.1
- '@esbuild/sunos-x64': 0.23.1
- '@esbuild/win32-arm64': 0.23.1
- '@esbuild/win32-ia32': 0.23.1
- '@esbuild/win32-x64': 0.23.1
-
- execa@9.4.1:
- dependencies:
- '@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
- figures: 6.1.0
- get-stream: 9.0.1
- human-signals: 8.0.0
- is-plain-obj: 4.1.0
- is-stream: 4.0.1
- npm-run-path: 6.0.0
- pretty-ms: 9.1.0
- signal-exit: 4.1.0
- strip-final-newline: 4.0.0
- yoctocolors: 2.1.1
-
- figures@6.1.0:
- dependencies:
- is-unicode-supported: 2.1.0
-
- fsevents@2.3.3:
- optional: true
-
- get-stream@9.0.1:
- dependencies:
- '@sec-ant/readable-stream': 0.4.1
- is-stream: 4.0.1
-
- get-tsconfig@4.8.1:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- human-signals@8.0.0: {}
-
- is-plain-obj@4.1.0: {}
-
- is-stream@4.0.1: {}
-
- is-unicode-supported@2.1.0: {}
-
- isexe@2.0.0: {}
-
- npm-run-path@6.0.0:
- dependencies:
- path-key: 4.0.0
- unicorn-magic: 0.3.0
-
- parse-ms@4.0.0: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- pretty-ms@9.1.0:
- dependencies:
- parse-ms: 4.0.0
-
- resolve-pkg-maps@1.0.0: {}
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- signal-exit@4.1.0: {}
-
- strip-final-newline@4.0.0: {}
-
- tsx@4.19.1:
- dependencies:
- esbuild: 0.23.1
- get-tsconfig: 4.8.1
- optionalDependencies:
- fsevents: 2.3.3
-
- undici-types@6.19.8: {}
-
- unicorn-magic@0.3.0: {}
-
- universal-user-agent@7.0.2: {}
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- yoctocolors@2.1.1: {}
diff --git a/scripts/bundle-impact/src/dedent.ts b/scripts/bundle-impact/src/dedent.ts
index dc974255..131939e9 100644
--- a/scripts/bundle-impact/src/dedent.ts
+++ b/scripts/bundle-impact/src/dedent.ts
@@ -1,4 +1,4 @@
-import { isArray } from 'radashi/typed/isArray.js'
+import { isArray } from 'radashi/typed/isArray.ts'
/**
* Remove indentation from a string. The given string is expected to
diff --git a/scripts/bundle-impact/pr-bundle-impact.ts b/scripts/bundle-impact/src/main.ts
similarity index 59%
rename from scripts/bundle-impact/pr-bundle-impact.ts
rename to scripts/bundle-impact/src/main.ts
index 82016569..20afde98 100644
--- a/scripts/bundle-impact/pr-bundle-impact.ts
+++ b/scripts/bundle-impact/src/main.ts
@@ -1,19 +1,41 @@
-import { Octokit } from '@octokit/rest'
-import { weighChangedFunctions } from './src/weigh-changed'
-
-const octokit = new Octokit({
- auth: process.env.RADASHI_BOT_TOKEN,
-})
+import { weighChangedFunctions } from './weigh-changed.ts'
main()
async function main() {
+ if (process.env.CI) {
+ await updateBundleImpact()
+ } else {
+ await weighChangedFunctions({
+ targetBranch: process.env.TARGET_BRANCH,
+ }).then(console.log)
+ }
+}
+
+async function updateBundleImpact() {
const { prNumber } = parseArgv(process.argv.slice(2))
+ const { verifyEnvVars } = await import('@radashi-org/common/verifyEnvVars.ts')
+ const { radashiBotToken, targetBranch } = verifyEnvVars({
+ radashiBotToken: 'RADASHI_BOT_TOKEN',
+ targetBranch: 'TARGET_BRANCH',
+ })
+
console.log('weighing changed functions...')
- let bundleImpact = await weighChangedFunctions({ verbose: true })
- bundleImpact = bundleImpact ? `## Bundle impact\n\n${bundleImpact}\n\n` : ''
+ let bundleImpact = await weighChangedFunctions({
+ targetBranch,
+ verbose: true,
+ })
+
+ if (bundleImpact) {
+ bundleImpact = `## Bundle impact\n\n${bundleImpact}\n\n`
+ }
+
+ const { Octokit } = await import('@octokit/rest')
+ const octokit = new Octokit({
+ auth: radashiBotToken,
+ })
console.log(`fetching PR #${prNumber} data...`)
@@ -47,13 +69,6 @@ async function main() {
}
function parseArgv(argv: string[]) {
- if (!process.env.RADASHI_BOT_TOKEN) {
- throw new Error('RADASHI_BOT_TOKEN is required')
- }
- if (!process.env.TARGET_BRANCH) {
- throw new Error('TARGET_BRANCH is required')
- }
-
const [prNumber] = argv
if (!Number.isInteger(+prNumber)) {
throw new Error('PR number is required')
diff --git a/scripts/bundle-impact/src/weigh-changed.ts b/scripts/bundle-impact/src/weigh-changed.ts
index 2d36fb5e..fbf5cea6 100644
--- a/scripts/bundle-impact/src/weigh-changed.ts
+++ b/scripts/bundle-impact/src/weigh-changed.ts
@@ -1,11 +1,13 @@
import * as esbuild from 'esbuild'
import { execa } from 'execa'
-import { cluster } from 'radashi/array/cluster.js'
-import { select } from 'radashi/array/select.js'
-import { map } from 'radashi/async/map.js'
-
-export async function weighChangedFunctions(opts: { verbose?: boolean } = {}) {
- const targetBranch = await getTargetBranch()
+import { cluster } from 'radashi/array/cluster.ts'
+import { select } from 'radashi/array/select.ts'
+import { map } from 'radashi/async/map.ts'
+
+export async function weighChangedFunctions(
+ opts: { verbose?: boolean; targetBranch?: string } = {},
+) {
+ const targetBranch = opts.targetBranch ?? (await getTargetBranch())
if (opts.verbose) {
console.log('targetBranch == %O', targetBranch)
}
@@ -80,10 +82,6 @@ export async function weighChangedFunctions(opts: { verbose?: boolean } = {}) {
}
async function getTargetBranch(): Promise {
- if (process.env.TARGET_BRANCH) {
- return process.env.TARGET_BRANCH
- }
-
try {
const { stdout } = await execa('gh', [
'pr',
diff --git a/scripts/changelog/package.json b/scripts/changelog/package.json
new file mode 100644
index 00000000..788b60d7
--- /dev/null
+++ b/scripts/changelog/package.json
@@ -0,0 +1,8 @@
+{
+ "type": "module",
+ "private": true,
+ "main": "./src/changelog.ts",
+ "dependencies": {
+ "execa": "^9.5.1"
+ }
+}
diff --git a/scripts/changelog/src/changelog.ts b/scripts/changelog/src/changelog.ts
new file mode 100644
index 00000000..5b194d40
--- /dev/null
+++ b/scripts/changelog/src/changelog.ts
@@ -0,0 +1,66 @@
+import { execa } from 'execa'
+
+const gitCliffBin = './scripts/versions/node_modules/.bin/git-cliff'
+
+// Start from the Radashi's first commit after forking.
+const changelogBaseSha = '2be4acf455ebec86e846854dbab57bd0bfbbceb7'
+
+export async function generateChangelog(
+ options: {
+ /**
+ * The base commit to start the changelog from. Defaults to the
+ * first commit after forking Radash.
+ */
+ base?: string
+ /**
+ * Minimal formatting for single version changelog.
+ */
+ minimal?: boolean
+ /**
+ * The new version that will be used in the changelog header. Only
+ * necessary if a tag commit hasn't been created.
+ *
+ * This has a "v" prefixed to it.
+ */
+ newVersion?: string
+ /**
+ * By default, the changelog is returned as a string. If an
+ * `outFile` is provided, the changelog is written to the file.
+ */
+ outFile?: string
+ /**
+ * The GitHub token to use for fetching the commit history. If
+ * undefined, the `$GITHUB_TOKEN` environment variable is used.
+ */
+ token?: string
+ } = {},
+) {
+ const gitCliffArgs = [`${options.base ?? changelogBaseSha}..HEAD`]
+ if (options.outFile) {
+ gitCliffArgs.push('-o', options.outFile)
+ }
+ if (options.newVersion) {
+ gitCliffArgs.push('--tag', `v${options.newVersion}`)
+ }
+ if (options.minimal) {
+ gitCliffArgs.push('-s', 'all')
+ }
+ const { stdout } = await execa(gitCliffBin, gitCliffArgs, {
+ env: {
+ GITHUB_TOKEN: options.token,
+ STRIP_TAG: String(options.minimal),
+ },
+ })
+ return stdout
+}
+
+export async function inferNextVersion(
+ options: {
+ token?: string
+ } = {},
+) {
+ const { stdout } = await execa(gitCliffBin, ['--bumped-version'], {
+ env: { GITHUB_TOKEN: options.token },
+ })
+ return stdout.replace(/^v/, '')
+}
diff --git a/scripts/checkout-pr.sh b/scripts/checkout-pr.sh
deleted file mode 100644
index 6985e822..00000000
--- a/scripts/checkout-pr.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env bash
-set -e
-set -x
-
-# Fetch the PR contents
-git remote add pr $PR_REPO_URL
-git fetch pr "$PR_HEAD_REF"
-
-# Import changes from the PR into the current branch without committing
-BASE_COMMIT=$(git merge-base HEAD "pr/$PR_HEAD_REF")
-git cherry-pick -m 1 -n "$BASE_COMMIT..pr/$PR_HEAD_REF"
-
-# List the affected files for debugging purposes
-git diff --name-status --staged
diff --git a/scripts/checkout-pr/package.json b/scripts/checkout-pr/package.json
new file mode 100644
index 00000000..b4216a08
--- /dev/null
+++ b/scripts/checkout-pr/package.json
@@ -0,0 +1,9 @@
+{
+ "type": "module",
+ "private": true,
+ "main": "./src/checkout-pr.ts",
+ "dependencies": {
+ "@radashi-org/common": "link:../common",
+ "execa": "^9.5.1"
+ }
+}
diff --git a/scripts/checkout-pr/src/checkout-pr.ts b/scripts/checkout-pr/src/checkout-pr.ts
new file mode 100644
index 00000000..4532bdd6
--- /dev/null
+++ b/scripts/checkout-pr/src/checkout-pr.ts
@@ -0,0 +1,46 @@
+import { execa } from 'execa'
+
+/**
+ * Fetch the PR, squash it, merge its changes without committing. The
+ * changes are left staged. This also creates a "pr" git remote.
+ */
+export async function checkoutPullRequest({
+ repoUrl,
+ headRef,
+}: { repoUrl: string; headRef: string }) {
+ async function git(...args: string[]) {
+ return execa('git', args, { stdio: 'inherit' })
+ }
+ git.stdout = async (...args: string[]) => {
+ return (await execa('git', args)).stdout
+ }
+
+ // Fetch the PR contents
+ await git('remote', 'add', 'pr', repoUrl)
+ await git('fetch', 'pr', headRef)
+
+ // Get merge base commit
+ const baseCommit = await git.stdout('merge-base', 'HEAD', `pr/${headRef}`)
+
+ // Squash the PR into a single commit
+ await git('checkout', `pr/${headRef}`)
+ await git('reset', '--soft', baseCommit)
+ await git('config', 'user.name', 'Radashi Bot')
+ await git(
+ 'config',
+ 'user.email',
+ '175859458+radashi-bot@users.noreply.github.com',
+ )
+ await git('commit', '-m', 'single commit')
+
+ const squashCommit = await git.stdout('rev-parse', 'HEAD')
+
+ // Return to the original branch
+ await git('checkout', '-')
+
+ // Import changes from the PR into the current branch without committing
+ await git('cherry-pick', '-m', '1', '-n', squashCommit)
+
+ // List the affected files for debugging purposes
+ await git('diff', '--name-status', '--staged')
+}
diff --git a/scripts/checkout-pr/src/main.ts b/scripts/checkout-pr/src/main.ts
new file mode 100644
index 00000000..921e1bf8
--- /dev/null
+++ b/scripts/checkout-pr/src/main.ts
@@ -0,0 +1,13 @@
+import { verifyEnvVars } from '@radashi-org/common/verifyEnvVars.ts'
+import { checkoutPullRequest } from './checkout-pr.ts'
+
+main()
+
+async function main() {
+ const { repoUrl, headRef } = verifyEnvVars({
+ repoUrl: 'PR_REPO_URL',
+ headRef: 'PR_HEAD_REF',
+ })
+
+ await checkoutPullRequest({ repoUrl, headRef })
+}
diff --git a/scripts/common/package.json b/scripts/common/package.json
new file mode 100644
index 00000000..3d808c12
--- /dev/null
+++ b/scripts/common/package.json
@@ -0,0 +1,7 @@
+{
+ "type": "module",
+ "private": true,
+ "exports": {
+ "./*": "./src/*"
+ }
+}
\ No newline at end of file
diff --git a/scripts/common/src/installDeployKey.ts b/scripts/common/src/installDeployKey.ts
new file mode 100644
index 00000000..141e52c6
--- /dev/null
+++ b/scripts/common/src/installDeployKey.ts
@@ -0,0 +1,14 @@
+import fs from 'node:fs/promises'
+import os from 'node:os'
+import path from 'node:path'
+
+export async function installDeployKey(deployKey: string) {
+ const sshDir = path.join(os.homedir(), '.ssh')
+ await fs.mkdir(sshDir, { recursive: true })
+
+ const keyPath = path.join(sshDir, 'deploy_key')
+ await fs.writeFile(keyPath, deployKey, { mode: 0o600 })
+
+ // Set GIT_SSH_COMMAND to use the deploy key
+ process.env.GIT_SSH_COMMAND = `ssh -i ${keyPath} -o StrictHostKeyChecking=no`
+}
diff --git a/scripts/common/src/verifyEnvVars.ts b/scripts/common/src/verifyEnvVars.ts
new file mode 100644
index 00000000..092e4879
--- /dev/null
+++ b/scripts/common/src/verifyEnvVars.ts
@@ -0,0 +1,42 @@
+/**
+ * This ensures that the environment variables are set and returns the
+ * values as a typed object. To ensure sensitive variables are not
+ * accessible to untrusted code, the environment variables are cleared
+ * after they are read.
+ */
+export function verifyEnvVars>(
+ vars: T,
+): {
+ [K in keyof T]: T[K] extends infer TEnvName
+ ? TEnvName extends string
+ ? TEnvName extends `${string}?`
+ ? string | undefined
+ : string
+ : undefined
+ : undefined
+} {
+ return Object.entries(vars).reduce(
+ (acc, [alias, envName]) => {
+ if (!envName) {
+ return acc
+ }
+ let optional: boolean | undefined
+ if (envName.endsWith('?')) {
+ optional = true
+ envName = envName.slice(0, -1)
+ }
+ const value = process.env[envName]
+ if (!value) {
+ if (optional) {
+ return acc
+ }
+ console.error(`Error: ${envName} is not set`)
+ process.exit(1)
+ }
+ process.env[envName] = ''
+ acc[alias] = value
+ return acc
+ },
+ {} as Record,
+ ) as any
+}
diff --git a/scripts/docs/package.json b/scripts/docs/package.json
deleted file mode 100644
index 717dc359..00000000
--- a/scripts/docs/package.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "type": "module",
- "private": true,
- "dependencies": {
- "@types/node": "^22.3.0",
- "execa": "^9.3.1",
- "git-cliff": "2.4.0",
- "kleur": "^4.1.5",
- "mri": "^1.2.0",
- "radashi-db": "link:../radashi-db",
- "tsx": "^4.17.0"
- }
-}
diff --git a/scripts/docs/pnpm-lock.yaml b/scripts/docs/pnpm-lock.yaml
deleted file mode 100644
index 70aa9652..00000000
--- a/scripts/docs/pnpm-lock.yaml
+++ /dev/null
@@ -1,638 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@types/node':
- specifier: ^22.3.0
- version: 22.7.7
- execa:
- specifier: ^9.3.1
- version: 9.4.1
- git-cliff:
- specifier: 2.4.0
- version: 2.4.0
- kleur:
- specifier: ^4.1.5
- version: 4.1.5
- mri:
- specifier: ^1.2.0
- version: 1.2.0
- radashi-db:
- specifier: link:../radashi-db
- version: link:../radashi-db
- tsx:
- specifier: ^4.17.0
- version: 4.19.1
-
-packages:
-
- '@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@sec-ant/readable-stream@0.4.1':
- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
-
- '@sindresorhus/merge-streams@4.0.0':
- resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
- engines: {node: '>=18'}
-
- '@types/node@22.7.7':
- resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
- engines: {node: '>=18'}
- hasBin: true
-
- execa@8.0.1:
- resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
- engines: {node: '>=16.17'}
-
- execa@9.4.1:
- resolution: {integrity: sha512-5eo/BRqZm3GYce+1jqX/tJ7duA2AnE39i88fuedNFUV8XxGxUpF3aWkBRfbUcjV49gCkvS/pzc0YrCPhaIewdg==}
- engines: {node: ^18.19.0 || >=20.5.0}
-
- figures@6.1.0:
- resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
- engines: {node: '>=18'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- get-stream@8.0.1:
- resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
- engines: {node: '>=16'}
-
- get-stream@9.0.1:
- resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
- engines: {node: '>=18'}
-
- get-tsconfig@4.8.1:
- resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
-
- git-cliff-darwin-arm64@2.4.0:
- resolution: {integrity: sha512-KImSJhO8pTkKCauYlKmx7vNz3caIIBs0QW3JIS0uwUXGGJas4uuvGXlGTbLqVxdCur2yBwRDD6xobtuLC0yQ4w==}
- cpu: [arm64]
- os: [darwin]
-
- git-cliff-darwin-x64@2.4.0:
- resolution: {integrity: sha512-KtJ/V0i9xxs5iXl+hh1J4wyhMOrMRNylfSQC0lMJ+ScIIr1sZdF9qz4Mk06ZdJD7HnvPWawBhLcpCKVXkaeufQ==}
- cpu: [x64]
- os: [darwin]
-
- git-cliff-linux-arm64@2.4.0:
- resolution: {integrity: sha512-ZSL5Jw06pgJ0F2e4Dv7j7l69qmq718NA8IKIUscjayc+71iuzyOw0T2tnbkV6H1h1rDjP9LMXGyPtLIvGz62BA==}
- cpu: [arm64]
- os: [linux]
-
- git-cliff-linux-x64@2.4.0:
- resolution: {integrity: sha512-1ckJ+2io52HuBnEeS87PeFanEPt3BuZoHKcXfkQPYFj9C91ckHgY7OCqze38ejy1V/cfKhlVJsbjbVMxixRaog==}
- cpu: [x64]
- os: [linux]
-
- git-cliff-windows-arm64@2.4.0:
- resolution: {integrity: sha512-DZf+C7lTmCvvBjgtOHMcXJC5KaIL+QDE/C6cYxzLMgRcn9wGNTm2ot0jkAN2I1PmSmg4I1/89iiahSWHfG1m4A==}
- cpu: [arm64]
- os: [win32]
-
- git-cliff-windows-x64@2.4.0:
- resolution: {integrity: sha512-bYUQIyG975KdPza/bNDxwBFpqTZEvF1zPKlhThgPgdCKdzbdezsgaFuaDbnM+vsmBD751ZJGWLQ7aJCSBG2s/Q==}
- cpu: [x64]
- os: [win32]
-
- git-cliff@2.4.0:
- resolution: {integrity: sha512-e+4mMArblL4mrD/auUTa3bf3U1ahAuhIRb1bxTIWCBxnR6UqVctGaLf3pJJufaKi3nqTT7JvrSYu9Q+L6yiAaw==}
- engines: {node: '>=18.19 || >=20.6 || >=21'}
- hasBin: true
-
- human-signals@5.0.0:
- resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
- engines: {node: '>=16.17.0'}
-
- human-signals@8.0.0:
- resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
- engines: {node: '>=18.18.0'}
-
- is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
- is-stream@3.0.0:
- resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- is-stream@4.0.1:
- resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
- engines: {node: '>=18'}
-
- is-unicode-supported@2.1.0:
- resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
- engines: {node: '>=18'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- kleur@4.1.5:
- resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
- engines: {node: '>=6'}
-
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
- mimic-fn@4.0.0:
- resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
- engines: {node: '>=12'}
-
- mri@1.2.0:
- resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
- engines: {node: '>=4'}
-
- npm-run-path@5.3.0:
- resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- npm-run-path@6.0.0:
- resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
- engines: {node: '>=18'}
-
- onetime@6.0.0:
- resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
- engines: {node: '>=12'}
-
- parse-ms@4.0.0:
- resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
- engines: {node: '>=18'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- pretty-ms@9.1.0:
- resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==}
- engines: {node: '>=18'}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- strip-final-newline@3.0.0:
- resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
- engines: {node: '>=12'}
-
- strip-final-newline@4.0.0:
- resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
- engines: {node: '>=18'}
-
- tsx@4.19.1:
- resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- unicorn-magic@0.3.0:
- resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
- engines: {node: '>=18'}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- yoctocolors@2.1.1:
- resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
- engines: {node: '>=18'}
-
-snapshots:
-
- '@esbuild/aix-ppc64@0.23.1':
- optional: true
-
- '@esbuild/android-arm64@0.23.1':
- optional: true
-
- '@esbuild/android-arm@0.23.1':
- optional: true
-
- '@esbuild/android-x64@0.23.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.23.1':
- optional: true
-
- '@esbuild/darwin-x64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm@0.23.1':
- optional: true
-
- '@esbuild/linux-ia32@0.23.1':
- optional: true
-
- '@esbuild/linux-loong64@0.23.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.23.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.23.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.23.1':
- optional: true
-
- '@esbuild/linux-s390x@0.23.1':
- optional: true
-
- '@esbuild/linux-x64@0.23.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/sunos-x64@0.23.1':
- optional: true
-
- '@esbuild/win32-arm64@0.23.1':
- optional: true
-
- '@esbuild/win32-ia32@0.23.1':
- optional: true
-
- '@esbuild/win32-x64@0.23.1':
- optional: true
-
- '@sec-ant/readable-stream@0.4.1': {}
-
- '@sindresorhus/merge-streams@4.0.0': {}
-
- '@types/node@22.7.7':
- dependencies:
- undici-types: 6.19.8
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- esbuild@0.23.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.1
- '@esbuild/android-arm': 0.23.1
- '@esbuild/android-arm64': 0.23.1
- '@esbuild/android-x64': 0.23.1
- '@esbuild/darwin-arm64': 0.23.1
- '@esbuild/darwin-x64': 0.23.1
- '@esbuild/freebsd-arm64': 0.23.1
- '@esbuild/freebsd-x64': 0.23.1
- '@esbuild/linux-arm': 0.23.1
- '@esbuild/linux-arm64': 0.23.1
- '@esbuild/linux-ia32': 0.23.1
- '@esbuild/linux-loong64': 0.23.1
- '@esbuild/linux-mips64el': 0.23.1
- '@esbuild/linux-ppc64': 0.23.1
- '@esbuild/linux-riscv64': 0.23.1
- '@esbuild/linux-s390x': 0.23.1
- '@esbuild/linux-x64': 0.23.1
- '@esbuild/netbsd-x64': 0.23.1
- '@esbuild/openbsd-arm64': 0.23.1
- '@esbuild/openbsd-x64': 0.23.1
- '@esbuild/sunos-x64': 0.23.1
- '@esbuild/win32-arm64': 0.23.1
- '@esbuild/win32-ia32': 0.23.1
- '@esbuild/win32-x64': 0.23.1
-
- execa@8.0.1:
- dependencies:
- cross-spawn: 7.0.3
- get-stream: 8.0.1
- human-signals: 5.0.0
- is-stream: 3.0.0
- merge-stream: 2.0.0
- npm-run-path: 5.3.0
- onetime: 6.0.0
- signal-exit: 4.1.0
- strip-final-newline: 3.0.0
-
- execa@9.4.1:
- dependencies:
- '@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
- figures: 6.1.0
- get-stream: 9.0.1
- human-signals: 8.0.0
- is-plain-obj: 4.1.0
- is-stream: 4.0.1
- npm-run-path: 6.0.0
- pretty-ms: 9.1.0
- signal-exit: 4.1.0
- strip-final-newline: 4.0.0
- yoctocolors: 2.1.1
-
- figures@6.1.0:
- dependencies:
- is-unicode-supported: 2.1.0
-
- fsevents@2.3.3:
- optional: true
-
- get-stream@8.0.1: {}
-
- get-stream@9.0.1:
- dependencies:
- '@sec-ant/readable-stream': 0.4.1
- is-stream: 4.0.1
-
- get-tsconfig@4.8.1:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- git-cliff-darwin-arm64@2.4.0:
- optional: true
-
- git-cliff-darwin-x64@2.4.0:
- optional: true
-
- git-cliff-linux-arm64@2.4.0:
- optional: true
-
- git-cliff-linux-x64@2.4.0:
- optional: true
-
- git-cliff-windows-arm64@2.4.0:
- optional: true
-
- git-cliff-windows-x64@2.4.0:
- optional: true
-
- git-cliff@2.4.0:
- dependencies:
- execa: 8.0.1
- optionalDependencies:
- git-cliff-darwin-arm64: 2.4.0
- git-cliff-darwin-x64: 2.4.0
- git-cliff-linux-arm64: 2.4.0
- git-cliff-linux-x64: 2.4.0
- git-cliff-windows-arm64: 2.4.0
- git-cliff-windows-x64: 2.4.0
-
- human-signals@5.0.0: {}
-
- human-signals@8.0.0: {}
-
- is-plain-obj@4.1.0: {}
-
- is-stream@3.0.0: {}
-
- is-stream@4.0.1: {}
-
- is-unicode-supported@2.1.0: {}
-
- isexe@2.0.0: {}
-
- kleur@4.1.5: {}
-
- merge-stream@2.0.0: {}
-
- mimic-fn@4.0.0: {}
-
- mri@1.2.0: {}
-
- npm-run-path@5.3.0:
- dependencies:
- path-key: 4.0.0
-
- npm-run-path@6.0.0:
- dependencies:
- path-key: 4.0.0
- unicorn-magic: 0.3.0
-
- onetime@6.0.0:
- dependencies:
- mimic-fn: 4.0.0
-
- parse-ms@4.0.0: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- pretty-ms@9.1.0:
- dependencies:
- parse-ms: 4.0.0
-
- resolve-pkg-maps@1.0.0: {}
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- signal-exit@4.1.0: {}
-
- strip-final-newline@3.0.0: {}
-
- strip-final-newline@4.0.0: {}
-
- tsx@4.19.1:
- dependencies:
- esbuild: 0.23.1
- get-tsconfig: 4.8.1
- optionalDependencies:
- fsevents: 2.3.3
-
- undici-types@6.19.8: {}
-
- unicorn-magic@0.3.0: {}
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- yoctocolors@2.1.1: {}
diff --git a/scripts/format.sh b/scripts/format.sh
deleted file mode 100644
index 928e9947..00000000
--- a/scripts/format.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-if [ ! -d "scripts/format/node_modules" ]; then
- echo "Node modules not found. Installing dependencies..."
- pnpm install -C scripts/format
-fi
-
-pnpm -s scripts/format/node_modules/.bin/tsx scripts/format/format.ts "$@"
diff --git a/scripts/format/package.json b/scripts/format/package.json
index 57523f4d..d9fbb54e 100644
--- a/scripts/format/package.json
+++ b/scripts/format/package.json
@@ -2,9 +2,7 @@
"type": "module",
"private": true,
"dependencies": {
- "@types/node": "^22.4.0",
- "execa": "^9.3.1",
- "fast-glob": "^3.3.2",
- "tsx": "^4.17.0"
+ "execa": "^9.5.1",
+ "tinyglobby": "^0.2.10"
}
}
diff --git a/scripts/format/pnpm-lock.yaml b/scripts/format/pnpm-lock.yaml
deleted file mode 100644
index 723ac807..00000000
--- a/scripts/format/pnpm-lock.yaml
+++ /dev/null
@@ -1,620 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@types/node':
- specifier: ^22.4.0
- version: 22.7.7
- execa:
- specifier: ^9.3.1
- version: 9.4.1
- fast-glob:
- specifier: ^3.3.2
- version: 3.3.2
- tsx:
- specifier: ^4.17.0
- version: 4.19.1
-
-packages:
-
- '@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
-
- '@sec-ant/readable-stream@0.4.1':
- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
-
- '@sindresorhus/merge-streams@4.0.0':
- resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
- engines: {node: '>=18'}
-
- '@types/node@22.7.7':
- resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
- engines: {node: '>=18'}
- hasBin: true
-
- execa@9.4.1:
- resolution: {integrity: sha512-5eo/BRqZm3GYce+1jqX/tJ7duA2AnE39i88fuedNFUV8XxGxUpF3aWkBRfbUcjV49gCkvS/pzc0YrCPhaIewdg==}
- engines: {node: ^18.19.0 || >=20.5.0}
-
- fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
-
- fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
-
- figures@6.1.0:
- resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
- engines: {node: '>=18'}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- get-stream@9.0.1:
- resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
- engines: {node: '>=18'}
-
- get-tsconfig@4.8.1:
- resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- human-signals@8.0.0:
- resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
- engines: {node: '>=18.18.0'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
- is-stream@4.0.1:
- resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
- engines: {node: '>=18'}
-
- is-unicode-supported@2.1.0:
- resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
- engines: {node: '>=18'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
-
- npm-run-path@6.0.0:
- resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
- engines: {node: '>=18'}
-
- parse-ms@4.0.0:
- resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
- engines: {node: '>=18'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- pretty-ms@9.1.0:
- resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==}
- engines: {node: '>=18'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- strip-final-newline@4.0.0:
- resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
- engines: {node: '>=18'}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- tsx@4.19.1:
- resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- unicorn-magic@0.3.0:
- resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
- engines: {node: '>=18'}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- yoctocolors@2.1.1:
- resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
- engines: {node: '>=18'}
-
-snapshots:
-
- '@esbuild/aix-ppc64@0.23.1':
- optional: true
-
- '@esbuild/android-arm64@0.23.1':
- optional: true
-
- '@esbuild/android-arm@0.23.1':
- optional: true
-
- '@esbuild/android-x64@0.23.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.23.1':
- optional: true
-
- '@esbuild/darwin-x64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm@0.23.1':
- optional: true
-
- '@esbuild/linux-ia32@0.23.1':
- optional: true
-
- '@esbuild/linux-loong64@0.23.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.23.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.23.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.23.1':
- optional: true
-
- '@esbuild/linux-s390x@0.23.1':
- optional: true
-
- '@esbuild/linux-x64@0.23.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/sunos-x64@0.23.1':
- optional: true
-
- '@esbuild/win32-arm64@0.23.1':
- optional: true
-
- '@esbuild/win32-ia32@0.23.1':
- optional: true
-
- '@esbuild/win32-x64@0.23.1':
- optional: true
-
- '@nodelib/fs.scandir@2.1.5':
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- '@nodelib/fs.stat@2.0.5': {}
-
- '@nodelib/fs.walk@1.2.8':
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.1
-
- '@sec-ant/readable-stream@0.4.1': {}
-
- '@sindresorhus/merge-streams@4.0.0': {}
-
- '@types/node@22.7.7':
- dependencies:
- undici-types: 6.19.8
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- esbuild@0.23.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.1
- '@esbuild/android-arm': 0.23.1
- '@esbuild/android-arm64': 0.23.1
- '@esbuild/android-x64': 0.23.1
- '@esbuild/darwin-arm64': 0.23.1
- '@esbuild/darwin-x64': 0.23.1
- '@esbuild/freebsd-arm64': 0.23.1
- '@esbuild/freebsd-x64': 0.23.1
- '@esbuild/linux-arm': 0.23.1
- '@esbuild/linux-arm64': 0.23.1
- '@esbuild/linux-ia32': 0.23.1
- '@esbuild/linux-loong64': 0.23.1
- '@esbuild/linux-mips64el': 0.23.1
- '@esbuild/linux-ppc64': 0.23.1
- '@esbuild/linux-riscv64': 0.23.1
- '@esbuild/linux-s390x': 0.23.1
- '@esbuild/linux-x64': 0.23.1
- '@esbuild/netbsd-x64': 0.23.1
- '@esbuild/openbsd-arm64': 0.23.1
- '@esbuild/openbsd-x64': 0.23.1
- '@esbuild/sunos-x64': 0.23.1
- '@esbuild/win32-arm64': 0.23.1
- '@esbuild/win32-ia32': 0.23.1
- '@esbuild/win32-x64': 0.23.1
-
- execa@9.4.1:
- dependencies:
- '@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
- figures: 6.1.0
- get-stream: 9.0.1
- human-signals: 8.0.0
- is-plain-obj: 4.1.0
- is-stream: 4.0.1
- npm-run-path: 6.0.0
- pretty-ms: 9.1.0
- signal-exit: 4.1.0
- strip-final-newline: 4.0.0
- yoctocolors: 2.1.1
-
- fast-glob@3.3.2:
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.8
-
- fastq@1.17.1:
- dependencies:
- reusify: 1.0.4
-
- figures@6.1.0:
- dependencies:
- is-unicode-supported: 2.1.0
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- fsevents@2.3.3:
- optional: true
-
- get-stream@9.0.1:
- dependencies:
- '@sec-ant/readable-stream': 0.4.1
- is-stream: 4.0.1
-
- get-tsconfig@4.8.1:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- human-signals@8.0.0: {}
-
- is-extglob@2.1.1: {}
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-number@7.0.0: {}
-
- is-plain-obj@4.1.0: {}
-
- is-stream@4.0.1: {}
-
- is-unicode-supported@2.1.0: {}
-
- isexe@2.0.0: {}
-
- merge2@1.4.1: {}
-
- micromatch@4.0.8:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- npm-run-path@6.0.0:
- dependencies:
- path-key: 4.0.0
- unicorn-magic: 0.3.0
-
- parse-ms@4.0.0: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- picomatch@2.3.1: {}
-
- pretty-ms@9.1.0:
- dependencies:
- parse-ms: 4.0.0
-
- queue-microtask@1.2.3: {}
-
- resolve-pkg-maps@1.0.0: {}
-
- reusify@1.0.4: {}
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- signal-exit@4.1.0: {}
-
- strip-final-newline@4.0.0: {}
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- tsx@4.19.1:
- dependencies:
- esbuild: 0.23.1
- get-tsconfig: 4.8.1
- optionalDependencies:
- fsevents: 2.3.3
-
- undici-types@6.19.8: {}
-
- unicorn-magic@0.3.0: {}
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- yoctocolors@2.1.1: {}
diff --git a/scripts/format/format.ts b/scripts/format/src/main.ts
similarity index 98%
rename from scripts/format/format.ts
rename to scripts/format/src/main.ts
index 0f0c5be5..747e003c 100644
--- a/scripts/format/format.ts
+++ b/scripts/format/src/main.ts
@@ -1,5 +1,5 @@
import { execa } from 'execa'
-import glob from 'fast-glob'
+import { glob } from 'tinyglobby'
main()
diff --git a/scripts/functions/package.json b/scripts/functions/package.json
deleted file mode 100644
index 41e25363..00000000
--- a/scripts/functions/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "type": "module",
- "private": true,
- "dependencies": {
- "@octokit/rest": "^21.0.1",
- "@types/markdown-it": "^14.1.2",
- "@types/node": "^22.2.0",
- "execa": "^9.3.0",
- "fast-glob": "^3.3.2",
- "markdown-it": "^14.1.0",
- "markdown-it-front-matter": "^0.2.4",
- "radashi": "link:../../src",
- "radashi-db": "link:../radashi-db",
- "tsx": "^4.17.0",
- "ultrahtml": "^1.5.3",
- "yaml": "^2.5.0"
- }
-}
diff --git a/scripts/functions/pnpm-lock.yaml b/scripts/functions/pnpm-lock.yaml
deleted file mode 100644
index b115cb3f..00000000
--- a/scripts/functions/pnpm-lock.yaml
+++ /dev/null
@@ -1,849 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@octokit/rest':
- specifier: ^21.0.1
- version: 21.0.2
- '@types/markdown-it':
- specifier: ^14.1.2
- version: 14.1.2
- '@types/node':
- specifier: ^22.2.0
- version: 22.7.7
- execa:
- specifier: ^9.3.0
- version: 9.4.1
- fast-glob:
- specifier: ^3.3.2
- version: 3.3.2
- markdown-it:
- specifier: ^14.1.0
- version: 14.1.0
- markdown-it-front-matter:
- specifier: ^0.2.4
- version: 0.2.4
- radashi:
- specifier: link:../../src
- version: link:../../src
- radashi-db:
- specifier: link:../radashi-db
- version: link:../radashi-db
- tsx:
- specifier: ^4.17.0
- version: 4.19.1
- ultrahtml:
- specifier: ^1.5.3
- version: 1.5.3
- yaml:
- specifier: ^2.5.0
- version: 2.6.0
-
-packages:
-
- '@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
-
- '@octokit/auth-token@5.1.1':
- resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==}
- engines: {node: '>= 18'}
-
- '@octokit/core@6.1.2':
- resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==}
- engines: {node: '>= 18'}
-
- '@octokit/endpoint@10.1.1':
- resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==}
- engines: {node: '>= 18'}
-
- '@octokit/graphql@8.1.1':
- resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==}
- engines: {node: '>= 18'}
-
- '@octokit/openapi-types@22.2.0':
- resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
-
- '@octokit/plugin-paginate-rest@11.3.5':
- resolution: {integrity: sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-request-log@5.3.1':
- resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-rest-endpoint-methods@13.2.6':
- resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/request-error@6.1.5':
- resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==}
- engines: {node: '>= 18'}
-
- '@octokit/request@9.1.3':
- resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==}
- engines: {node: '>= 18'}
-
- '@octokit/rest@21.0.2':
- resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==}
- engines: {node: '>= 18'}
-
- '@octokit/types@13.6.1':
- resolution: {integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==}
-
- '@sec-ant/readable-stream@0.4.1':
- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
-
- '@sindresorhus/merge-streams@4.0.0':
- resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
- engines: {node: '>=18'}
-
- '@types/linkify-it@5.0.0':
- resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
-
- '@types/markdown-it@14.1.2':
- resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
-
- '@types/mdurl@2.0.0':
- resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
-
- '@types/node@22.7.7':
- resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==}
-
- argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-
- before-after-hook@3.0.2:
- resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- entities@4.5.0:
- resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
- engines: {node: '>=0.12'}
-
- esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
- engines: {node: '>=18'}
- hasBin: true
-
- execa@9.4.1:
- resolution: {integrity: sha512-5eo/BRqZm3GYce+1jqX/tJ7duA2AnE39i88fuedNFUV8XxGxUpF3aWkBRfbUcjV49gCkvS/pzc0YrCPhaIewdg==}
- engines: {node: ^18.19.0 || >=20.5.0}
-
- fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
-
- fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
-
- figures@6.1.0:
- resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
- engines: {node: '>=18'}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- get-stream@9.0.1:
- resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
- engines: {node: '>=18'}
-
- get-tsconfig@4.8.1:
- resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- human-signals@8.0.0:
- resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
- engines: {node: '>=18.18.0'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
- is-stream@4.0.1:
- resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
- engines: {node: '>=18'}
-
- is-unicode-supported@2.1.0:
- resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
- engines: {node: '>=18'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- linkify-it@5.0.0:
- resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
-
- markdown-it-front-matter@0.2.4:
- resolution: {integrity: sha512-25GUs0yjS2hLl8zAemVndeEzThB1p42yxuDEKbd4JlL3jiz+jsm6e56Ya8B0VREOkNxLYB4TTwaoPJ3ElMmW+w==}
-
- markdown-it@14.1.0:
- resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
- hasBin: true
-
- mdurl@2.0.0:
- resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
-
- npm-run-path@6.0.0:
- resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
- engines: {node: '>=18'}
-
- parse-ms@4.0.0:
- resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
- engines: {node: '>=18'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- pretty-ms@9.1.0:
- resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==}
- engines: {node: '>=18'}
-
- punycode.js@2.3.1:
- resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
- engines: {node: '>=6'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- strip-final-newline@4.0.0:
- resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
- engines: {node: '>=18'}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- tsx@4.19.1:
- resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- uc.micro@2.1.0:
- resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
-
- ultrahtml@1.5.3:
- resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==}
-
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- unicorn-magic@0.3.0:
- resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
- engines: {node: '>=18'}
-
- universal-user-agent@7.0.2:
- resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- yaml@2.6.0:
- resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==}
- engines: {node: '>= 14'}
- hasBin: true
-
- yoctocolors@2.1.1:
- resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
- engines: {node: '>=18'}
-
-snapshots:
-
- '@esbuild/aix-ppc64@0.23.1':
- optional: true
-
- '@esbuild/android-arm64@0.23.1':
- optional: true
-
- '@esbuild/android-arm@0.23.1':
- optional: true
-
- '@esbuild/android-x64@0.23.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.23.1':
- optional: true
-
- '@esbuild/darwin-x64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm@0.23.1':
- optional: true
-
- '@esbuild/linux-ia32@0.23.1':
- optional: true
-
- '@esbuild/linux-loong64@0.23.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.23.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.23.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.23.1':
- optional: true
-
- '@esbuild/linux-s390x@0.23.1':
- optional: true
-
- '@esbuild/linux-x64@0.23.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/sunos-x64@0.23.1':
- optional: true
-
- '@esbuild/win32-arm64@0.23.1':
- optional: true
-
- '@esbuild/win32-ia32@0.23.1':
- optional: true
-
- '@esbuild/win32-x64@0.23.1':
- optional: true
-
- '@nodelib/fs.scandir@2.1.5':
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- '@nodelib/fs.stat@2.0.5': {}
-
- '@nodelib/fs.walk@1.2.8':
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.1
-
- '@octokit/auth-token@5.1.1': {}
-
- '@octokit/core@6.1.2':
- dependencies:
- '@octokit/auth-token': 5.1.1
- '@octokit/graphql': 8.1.1
- '@octokit/request': 9.1.3
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- before-after-hook: 3.0.2
- universal-user-agent: 7.0.2
-
- '@octokit/endpoint@10.1.1':
- dependencies:
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/graphql@8.1.1':
- dependencies:
- '@octokit/request': 9.1.3
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/openapi-types@22.2.0': {}
-
- '@octokit/plugin-paginate-rest@11.3.5(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
-
- '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
-
- '@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
-
- '@octokit/request-error@6.1.5':
- dependencies:
- '@octokit/types': 13.6.1
-
- '@octokit/request@9.1.3':
- dependencies:
- '@octokit/endpoint': 10.1.1
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/rest@21.0.2':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/plugin-paginate-rest': 11.3.5(@octokit/core@6.1.2)
- '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.2)
- '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2)
-
- '@octokit/types@13.6.1':
- dependencies:
- '@octokit/openapi-types': 22.2.0
-
- '@sec-ant/readable-stream@0.4.1': {}
-
- '@sindresorhus/merge-streams@4.0.0': {}
-
- '@types/linkify-it@5.0.0': {}
-
- '@types/markdown-it@14.1.2':
- dependencies:
- '@types/linkify-it': 5.0.0
- '@types/mdurl': 2.0.0
-
- '@types/mdurl@2.0.0': {}
-
- '@types/node@22.7.7':
- dependencies:
- undici-types: 6.19.8
-
- argparse@2.0.1: {}
-
- before-after-hook@3.0.2: {}
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- entities@4.5.0: {}
-
- esbuild@0.23.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.1
- '@esbuild/android-arm': 0.23.1
- '@esbuild/android-arm64': 0.23.1
- '@esbuild/android-x64': 0.23.1
- '@esbuild/darwin-arm64': 0.23.1
- '@esbuild/darwin-x64': 0.23.1
- '@esbuild/freebsd-arm64': 0.23.1
- '@esbuild/freebsd-x64': 0.23.1
- '@esbuild/linux-arm': 0.23.1
- '@esbuild/linux-arm64': 0.23.1
- '@esbuild/linux-ia32': 0.23.1
- '@esbuild/linux-loong64': 0.23.1
- '@esbuild/linux-mips64el': 0.23.1
- '@esbuild/linux-ppc64': 0.23.1
- '@esbuild/linux-riscv64': 0.23.1
- '@esbuild/linux-s390x': 0.23.1
- '@esbuild/linux-x64': 0.23.1
- '@esbuild/netbsd-x64': 0.23.1
- '@esbuild/openbsd-arm64': 0.23.1
- '@esbuild/openbsd-x64': 0.23.1
- '@esbuild/sunos-x64': 0.23.1
- '@esbuild/win32-arm64': 0.23.1
- '@esbuild/win32-ia32': 0.23.1
- '@esbuild/win32-x64': 0.23.1
-
- execa@9.4.1:
- dependencies:
- '@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
- figures: 6.1.0
- get-stream: 9.0.1
- human-signals: 8.0.0
- is-plain-obj: 4.1.0
- is-stream: 4.0.1
- npm-run-path: 6.0.0
- pretty-ms: 9.1.0
- signal-exit: 4.1.0
- strip-final-newline: 4.0.0
- yoctocolors: 2.1.1
-
- fast-glob@3.3.2:
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.8
-
- fastq@1.17.1:
- dependencies:
- reusify: 1.0.4
-
- figures@6.1.0:
- dependencies:
- is-unicode-supported: 2.1.0
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- fsevents@2.3.3:
- optional: true
-
- get-stream@9.0.1:
- dependencies:
- '@sec-ant/readable-stream': 0.4.1
- is-stream: 4.0.1
-
- get-tsconfig@4.8.1:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- human-signals@8.0.0: {}
-
- is-extglob@2.1.1: {}
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-number@7.0.0: {}
-
- is-plain-obj@4.1.0: {}
-
- is-stream@4.0.1: {}
-
- is-unicode-supported@2.1.0: {}
-
- isexe@2.0.0: {}
-
- linkify-it@5.0.0:
- dependencies:
- uc.micro: 2.1.0
-
- markdown-it-front-matter@0.2.4: {}
-
- markdown-it@14.1.0:
- dependencies:
- argparse: 2.0.1
- entities: 4.5.0
- linkify-it: 5.0.0
- mdurl: 2.0.0
- punycode.js: 2.3.1
- uc.micro: 2.1.0
-
- mdurl@2.0.0: {}
-
- merge2@1.4.1: {}
-
- micromatch@4.0.8:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- npm-run-path@6.0.0:
- dependencies:
- path-key: 4.0.0
- unicorn-magic: 0.3.0
-
- parse-ms@4.0.0: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- picomatch@2.3.1: {}
-
- pretty-ms@9.1.0:
- dependencies:
- parse-ms: 4.0.0
-
- punycode.js@2.3.1: {}
-
- queue-microtask@1.2.3: {}
-
- resolve-pkg-maps@1.0.0: {}
-
- reusify@1.0.4: {}
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- signal-exit@4.1.0: {}
-
- strip-final-newline@4.0.0: {}
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- tsx@4.19.1:
- dependencies:
- esbuild: 0.23.1
- get-tsconfig: 4.8.1
- optionalDependencies:
- fsevents: 2.3.3
-
- uc.micro@2.1.0: {}
-
- ultrahtml@1.5.3: {}
-
- undici-types@6.19.8: {}
-
- unicorn-magic@0.3.0: {}
-
- universal-user-agent@7.0.2: {}
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- yaml@2.6.0: {}
-
- yoctocolors@2.1.1: {}
diff --git a/scripts/lint.sh b/scripts/lint.sh
deleted file mode 100644
index 3c409f0f..00000000
--- a/scripts/lint.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-if [ ! -d "scripts/lint/node_modules" ]; then
- echo "Node modules not found. Installing dependencies..."
- pnpm install -C scripts/lint
-fi
-
-pnpm -s scripts/lint/node_modules/.bin/tsx scripts/lint/lint.ts "$@"
diff --git a/scripts/lint/package.json b/scripts/lint/package.json
index d097b64a..a22c8315 100644
--- a/scripts/lint/package.json
+++ b/scripts/lint/package.json
@@ -2,12 +2,10 @@
"type": "module",
"private": true,
"dependencies": {
- "@types/node": "^22.4.0",
- "execa": "^9.3.1",
- "fast-glob": "^3.3.2",
+ "execa": "^9.5.1",
"kleur": "^4.1.5",
"mri": "^1.2.0",
"string-argv": "^0.3.2",
- "tsx": "^4.17.0"
+ "tinyglobby": "^0.2.10"
}
}
diff --git a/scripts/lint/pnpm-lock.yaml b/scripts/lint/pnpm-lock.yaml
deleted file mode 100644
index 35268c7d..00000000
--- a/scripts/lint/pnpm-lock.yaml
+++ /dev/null
@@ -1,647 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@types/node':
- specifier: ^22.4.0
- version: 22.7.7
- execa:
- specifier: ^9.3.1
- version: 9.4.1
- fast-glob:
- specifier: ^3.3.2
- version: 3.3.2
- kleur:
- specifier: ^4.1.5
- version: 4.1.5
- mri:
- specifier: ^1.2.0
- version: 1.2.0
- string-argv:
- specifier: ^0.3.2
- version: 0.3.2
- tsx:
- specifier: ^4.17.0
- version: 4.19.1
-
-packages:
-
- '@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
-
- '@sec-ant/readable-stream@0.4.1':
- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
-
- '@sindresorhus/merge-streams@4.0.0':
- resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
- engines: {node: '>=18'}
-
- '@types/node@22.7.7':
- resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
- engines: {node: '>=18'}
- hasBin: true
-
- execa@9.4.1:
- resolution: {integrity: sha512-5eo/BRqZm3GYce+1jqX/tJ7duA2AnE39i88fuedNFUV8XxGxUpF3aWkBRfbUcjV49gCkvS/pzc0YrCPhaIewdg==}
- engines: {node: ^18.19.0 || >=20.5.0}
-
- fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
-
- fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
-
- figures@6.1.0:
- resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
- engines: {node: '>=18'}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- get-stream@9.0.1:
- resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
- engines: {node: '>=18'}
-
- get-tsconfig@4.8.1:
- resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- human-signals@8.0.0:
- resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
- engines: {node: '>=18.18.0'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
- is-stream@4.0.1:
- resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
- engines: {node: '>=18'}
-
- is-unicode-supported@2.1.0:
- resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
- engines: {node: '>=18'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- kleur@4.1.5:
- resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
- engines: {node: '>=6'}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
-
- mri@1.2.0:
- resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
- engines: {node: '>=4'}
-
- npm-run-path@6.0.0:
- resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
- engines: {node: '>=18'}
-
- parse-ms@4.0.0:
- resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
- engines: {node: '>=18'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- pretty-ms@9.1.0:
- resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==}
- engines: {node: '>=18'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- string-argv@0.3.2:
- resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
- engines: {node: '>=0.6.19'}
-
- strip-final-newline@4.0.0:
- resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
- engines: {node: '>=18'}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- tsx@4.19.1:
- resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- unicorn-magic@0.3.0:
- resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
- engines: {node: '>=18'}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- yoctocolors@2.1.1:
- resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
- engines: {node: '>=18'}
-
-snapshots:
-
- '@esbuild/aix-ppc64@0.23.1':
- optional: true
-
- '@esbuild/android-arm64@0.23.1':
- optional: true
-
- '@esbuild/android-arm@0.23.1':
- optional: true
-
- '@esbuild/android-x64@0.23.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.23.1':
- optional: true
-
- '@esbuild/darwin-x64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm@0.23.1':
- optional: true
-
- '@esbuild/linux-ia32@0.23.1':
- optional: true
-
- '@esbuild/linux-loong64@0.23.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.23.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.23.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.23.1':
- optional: true
-
- '@esbuild/linux-s390x@0.23.1':
- optional: true
-
- '@esbuild/linux-x64@0.23.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/sunos-x64@0.23.1':
- optional: true
-
- '@esbuild/win32-arm64@0.23.1':
- optional: true
-
- '@esbuild/win32-ia32@0.23.1':
- optional: true
-
- '@esbuild/win32-x64@0.23.1':
- optional: true
-
- '@nodelib/fs.scandir@2.1.5':
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- '@nodelib/fs.stat@2.0.5': {}
-
- '@nodelib/fs.walk@1.2.8':
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.1
-
- '@sec-ant/readable-stream@0.4.1': {}
-
- '@sindresorhus/merge-streams@4.0.0': {}
-
- '@types/node@22.7.7':
- dependencies:
- undici-types: 6.19.8
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- esbuild@0.23.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.1
- '@esbuild/android-arm': 0.23.1
- '@esbuild/android-arm64': 0.23.1
- '@esbuild/android-x64': 0.23.1
- '@esbuild/darwin-arm64': 0.23.1
- '@esbuild/darwin-x64': 0.23.1
- '@esbuild/freebsd-arm64': 0.23.1
- '@esbuild/freebsd-x64': 0.23.1
- '@esbuild/linux-arm': 0.23.1
- '@esbuild/linux-arm64': 0.23.1
- '@esbuild/linux-ia32': 0.23.1
- '@esbuild/linux-loong64': 0.23.1
- '@esbuild/linux-mips64el': 0.23.1
- '@esbuild/linux-ppc64': 0.23.1
- '@esbuild/linux-riscv64': 0.23.1
- '@esbuild/linux-s390x': 0.23.1
- '@esbuild/linux-x64': 0.23.1
- '@esbuild/netbsd-x64': 0.23.1
- '@esbuild/openbsd-arm64': 0.23.1
- '@esbuild/openbsd-x64': 0.23.1
- '@esbuild/sunos-x64': 0.23.1
- '@esbuild/win32-arm64': 0.23.1
- '@esbuild/win32-ia32': 0.23.1
- '@esbuild/win32-x64': 0.23.1
-
- execa@9.4.1:
- dependencies:
- '@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
- figures: 6.1.0
- get-stream: 9.0.1
- human-signals: 8.0.0
- is-plain-obj: 4.1.0
- is-stream: 4.0.1
- npm-run-path: 6.0.0
- pretty-ms: 9.1.0
- signal-exit: 4.1.0
- strip-final-newline: 4.0.0
- yoctocolors: 2.1.1
-
- fast-glob@3.3.2:
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.8
-
- fastq@1.17.1:
- dependencies:
- reusify: 1.0.4
-
- figures@6.1.0:
- dependencies:
- is-unicode-supported: 2.1.0
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- fsevents@2.3.3:
- optional: true
-
- get-stream@9.0.1:
- dependencies:
- '@sec-ant/readable-stream': 0.4.1
- is-stream: 4.0.1
-
- get-tsconfig@4.8.1:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- human-signals@8.0.0: {}
-
- is-extglob@2.1.1: {}
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-number@7.0.0: {}
-
- is-plain-obj@4.1.0: {}
-
- is-stream@4.0.1: {}
-
- is-unicode-supported@2.1.0: {}
-
- isexe@2.0.0: {}
-
- kleur@4.1.5: {}
-
- merge2@1.4.1: {}
-
- micromatch@4.0.8:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- mri@1.2.0: {}
-
- npm-run-path@6.0.0:
- dependencies:
- path-key: 4.0.0
- unicorn-magic: 0.3.0
-
- parse-ms@4.0.0: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- picomatch@2.3.1: {}
-
- pretty-ms@9.1.0:
- dependencies:
- parse-ms: 4.0.0
-
- queue-microtask@1.2.3: {}
-
- resolve-pkg-maps@1.0.0: {}
-
- reusify@1.0.4: {}
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- signal-exit@4.1.0: {}
-
- string-argv@0.3.2: {}
-
- strip-final-newline@4.0.0: {}
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- tsx@4.19.1:
- dependencies:
- esbuild: 0.23.1
- get-tsconfig: 4.8.1
- optionalDependencies:
- fsevents: 2.3.3
-
- undici-types@6.19.8: {}
-
- unicorn-magic@0.3.0: {}
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- yoctocolors@2.1.1: {}
diff --git a/scripts/lint/lint.ts b/scripts/lint/src/main.ts
similarity index 86%
rename from scripts/lint/lint.ts
rename to scripts/lint/src/main.ts
index d0eb31e0..7f3172e2 100644
--- a/scripts/lint/lint.ts
+++ b/scripts/lint/src/main.ts
@@ -1,12 +1,12 @@
import { execa, type Subprocess } from 'execa'
-import glob from 'fast-glob'
import kleur from 'kleur'
import mri from 'mri'
-import { existsSync } from 'node:fs'
+import { existsSync, rmSync } from 'node:fs'
import fs from 'node:fs/promises'
import path from 'node:path'
import { Transform } from 'node:stream'
import parseArgsStringToArgv from 'string-argv'
+import { globSync } from 'tinyglobby'
const lint = (scripts: string[]): Command[] => [
{
@@ -22,7 +22,7 @@ const lint = (scripts: string[]): Command[] => [
{
name: 'jsr',
color: 'green',
- command: 'dlx deno-bin@1.44.4 lint',
+ command: 'dlx jsr publish --dry-run --allow-dirty',
},
{
name: 'tsc',
@@ -55,11 +55,17 @@ const lint = (scripts: string[]): Command[] => [
async pre(prefix) {
// Ensure script dependencies are installed.
if (!existsSync(path.join(dir, 'node_modules'))) {
- const installProc = execa('pnpm', ['install'], {
- cwd: dir,
- stdout: 'pipe',
- stderr: 'inherit',
- })
+ const installProc = execa(
+ 'node',
+ ['scripts/run.js', path.basename(dir)],
+ {
+ stdout: 'pipe',
+ stderr: 'inherit',
+ env: {
+ INSTALL_ONLY: 'true',
+ },
+ },
+ )
installProc.stdout
.pipe(createPrefixStream(prefix + ' '))
@@ -80,8 +86,8 @@ const lint = (scripts: string[]): Command[] => [
JSON.stringify(tsconfig, null, 2),
)
},
- async post() {
- await fs.rm(path.join(dir, 'tsconfig.json'))
+ post() {
+ rmSync(path.join(dir, 'tsconfig.json'))
},
}
}),
@@ -106,15 +112,14 @@ async function main() {
const files = baseCommit ? await getChangedFiles(baseCommit) : undefined
let scripts = mightLintScripts(files, ignoreScripts, commandFilters)
- ? glob
- .sync(['scripts/*/package.json', '!scripts/biome-config'])
- .map(p => path.dirname(p))
+ ? globSync('scripts/*/src/main.ts').map(p => path.dirname(path.dirname(p)))
: []
if (files) {
- scripts = scripts.filter(dir =>
- files.some(file => file.startsWith(dir + '/')),
- )
+ scripts = scripts.filter(dir => {
+ dir = path.join(dir, '/')
+ return files.some(file => file.startsWith(dir))
+ })
}
const commands = lint(scripts)
@@ -135,7 +140,8 @@ function mightLintScripts(
return false
}
if (files) {
- return files.some(file => file.startsWith('scripts/'))
+ const scriptsDir = path.join('scripts', '/')
+ return files.some(file => file.startsWith(scriptsDir))
}
return !!process.env.CI || commandFilters.length > 0
}
@@ -170,6 +176,10 @@ async function runConcurrently(
parentPrefix = '',
procs = new Set(),
) {
+ // Ensure the "MaxListenersExceededWarning" is not logged.
+ process.stdout.setMaxListeners(1000)
+ process.stderr.setMaxListeners(1000)
+
await Promise.all(
commands.map(async cmd => {
if (!cmd) {
@@ -275,7 +285,7 @@ function createPrefixStream(prefix: string): Transform {
return new Transform({
encoding: 'utf8',
- transform(chunk: string, encoding, callback) {
+ transform(chunk: string, _encoding, callback) {
const lines = (incompleteLine + chunk).split('\n')
incompleteLine = lines.pop() || ''
diff --git a/scripts/move-function.sh b/scripts/move-function.sh
deleted file mode 100644
index 663a9d67..00000000
--- a/scripts/move-function.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-IFS="/" read -r GROUP FUNC <<< "$1"
-DEST="$2"
-DEST_FUNC="$FUNC"
-
-print_help() {
- echo "Usage: move-function "
- echo ""
- echo "The \$dest can be a group or a group/func pair."
- echo ""
- echo "Examples:"
- echo " move-function array/sum number"
- echo " move-function array/split array/fork"
- echo ""
- exit 1
-}
-
-# If FUNC is empty, throw an error
-if [ -z "$FUNC" ]; then
- echo -e "ERROR: Function is required\n"
- print_help
-fi
-
-# If DEST is empty, throw an error
-if [ -z "$DEST" ]; then
- echo "ERROR: Destination is required\n"
- print_help
-fi
-
-# If DEST contains /, update DEST_FUNC and DEST.
-if [[ "$DEST" == */* ]]; then
- IFS="/" read -r DEST DEST_FUNC <<< "$DEST"
-fi
-
-# Source file
-if [ -f "src/$GROUP/$FUNC.ts" ]; then
- mkdir -p "src/$DEST"
- git mv "src/$GROUP/$FUNC.ts" "src/$DEST/$DEST_FUNC.ts"
-else
- echo -e "ERROR: Source file not found\n"
- exit 1
-fi
-
-# Documentation file
-if [ -f "docs/$GROUP/$FUNC.mdx" ]; then
- mkdir -p "docs/$DEST"
- git mv "docs/$GROUP/$FUNC.mdx" "docs/$DEST/$DEST_FUNC.mdx"
-fi
-
-# Benchmark file
-if [ -f "benchmarks/$GROUP/$FUNC.bench.ts" ]; then
- mkdir -p "benchmarks/$DEST"
- git mv "benchmarks/$GROUP/$FUNC.bench.ts" "benchmarks/$DEST/$DEST_FUNC.bench.ts"
-fi
-
-# Test file
-if [ -f "tests/$GROUP/$FUNC.test.ts" ]; then
- mkdir -p "tests/$DEST"
- git mv "tests/$GROUP/$FUNC.test.ts" "tests/$DEST/$DEST_FUNC.test.ts"
-fi
-
-# Update src/mod.ts
-echo "WARN: You need to update src/mod.ts to export \"$DEST/$DEST_FUNC.ts\""
-echo "WARN: Only the files were renamed. The implementation, tests, and so on "
-echo "WARN: must be updated manually."
diff --git a/scripts/package.json b/scripts/package.json
new file mode 100644
index 00000000..e0f39903
--- /dev/null
+++ b/scripts/package.json
@@ -0,0 +1,4 @@
+{
+ "type": "module",
+ "private": true
+}
\ No newline at end of file
diff --git a/scripts/pnpm-lock.yaml b/scripts/pnpm-lock.yaml
new file mode 100644
index 00000000..8aa98081
--- /dev/null
+++ b/scripts/pnpm-lock.yaml
@@ -0,0 +1,3027 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ bench-file:
+ dependencies:
+ '@radashi-org/benchmarks':
+ specifier: link:../benchmarks
+ version: link:../benchmarks
+ vitest:
+ specifier: 2.1.5
+ version: 2.1.5(@types/node@22.9.0)
+
+ bench-main:
+ dependencies:
+ '@radashi-org/benchmarks':
+ specifier: link:../benchmarks
+ version: link:../benchmarks
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ radashi-db:
+ specifier: link:../radashi-db
+ version: link:../radashi-db
+
+ bench-pr:
+ dependencies:
+ '@octokit/rest':
+ specifier: ^21.0.2
+ version: 21.0.2
+ '@radashi-org/benchmarks':
+ specifier: link:../benchmarks
+ version: link:../benchmarks
+ '@radashi-org/common':
+ specifier: link:../common
+ version: link:../common
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+
+ benchmarks:
+ dependencies:
+ '@babel/parser':
+ specifier: ^7.25.3
+ version: 7.26.2
+ '@babel/traverse':
+ specifier: ^7.25.3
+ version: 7.25.9
+ '@babel/types':
+ specifier: ^7.25.2
+ version: 7.26.0
+ '@types/babel__traverse':
+ specifier: ^7.20.6
+ version: 7.20.6
+ esbuild:
+ specifier: ^0.23.0
+ version: 0.23.1
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ radashi:
+ specifier: link:../../src
+ version: link:../../src
+ ts-morph:
+ specifier: ^23.0.0
+ version: 23.0.0
+ vitest:
+ specifier: 2.1.5
+ version: 2.1.5(@types/node@22.9.0)
+
+ bundle-impact:
+ dependencies:
+ '@octokit/rest':
+ specifier: ^21.0.1
+ version: 21.0.2
+ '@radashi-org/common':
+ specifier: link:../common
+ version: link:../common
+ esbuild:
+ specifier: ^0.23.0
+ version: 0.23.1
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ radashi:
+ specifier: link:../../src
+ version: link:../../src
+
+ changelog:
+ dependencies:
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+
+ checkout-pr:
+ dependencies:
+ '@radashi-org/common':
+ specifier: link:../common
+ version: link:../common
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+
+ common: {}
+
+ format:
+ dependencies:
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ tinyglobby:
+ specifier: ^0.2.10
+ version: 0.2.10
+
+ functions:
+ dependencies:
+ '@octokit/rest':
+ specifier: ^21.0.1
+ version: 21.0.2
+ '@types/markdown-it':
+ specifier: ^14.1.2
+ version: 14.1.2
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ markdown-it:
+ specifier: ^14.1.0
+ version: 14.1.0
+ markdown-it-front-matter:
+ specifier: ^0.2.4
+ version: 0.2.4
+ radashi:
+ specifier: link:../../src
+ version: link:../../src
+ radashi-db:
+ specifier: link:../radashi-db
+ version: link:../radashi-db
+ tinyglobby:
+ specifier: ^0.2.10
+ version: 0.2.10
+ ultrahtml:
+ specifier: ^1.5.3
+ version: 1.5.3
+ yaml:
+ specifier: ^2.5.0
+ version: 2.6.0
+
+ lint:
+ dependencies:
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ kleur:
+ specifier: ^4.1.5
+ version: 4.1.5
+ mri:
+ specifier: ^1.2.0
+ version: 1.2.0
+ string-argv:
+ specifier: ^0.3.2
+ version: 0.3.2
+ tinyglobby:
+ specifier: ^0.2.10
+ version: 0.2.10
+
+ prerelease-pr:
+ dependencies:
+ '@octokit/rest':
+ specifier: ^21.0.2
+ version: 21.0.2
+ '@radashi-org/checkout-pr':
+ specifier: link:../checkout-pr
+ version: link:../checkout-pr
+ '@radashi-org/common':
+ specifier: link:../common
+ version: link:../common
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ mri:
+ specifier: ^1.2.0
+ version: 1.2.0
+
+ publish-docs:
+ dependencies:
+ '@radashi-org/changelog':
+ specifier: link:../changelog
+ version: link:../changelog
+ '@radashi-org/common':
+ specifier: link:../common
+ version: link:../common
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ git-cliff:
+ specifier: 2.4.0
+ version: 2.4.0
+ kleur:
+ specifier: ^4.1.5
+ version: 4.1.5
+ mri:
+ specifier: ^1.2.0
+ version: 1.2.0
+ radashi-db:
+ specifier: link:../radashi-db
+ version: link:../radashi-db
+
+ publish-version:
+ dependencies:
+ '@octokit/rest':
+ specifier: ^21.0.2
+ version: 21.0.2
+ '@radashi-org/changelog':
+ specifier: link:../changelog
+ version: link:../changelog
+ '@radashi-org/common':
+ specifier: link:../common
+ version: link:../common
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ git-cliff:
+ specifier: 2.4.0
+ version: 2.4.0
+ kleur:
+ specifier: ^4.1.5
+ version: 4.1.5
+ mri:
+ specifier: ^1.2.0
+ version: 1.2.0
+ radashi:
+ specifier: link:../../src
+ version: link:../../src
+ radashi-db:
+ specifier: link:../radashi-db
+ version: link:../radashi-db
+ tinyglobby:
+ specifier: ^0.2.10
+ version: 0.2.10
+
+ radashi-db:
+ dependencies:
+ '@supabase/supabase-js':
+ specifier: ^2.45.0
+ version: 2.46.1
+ algoliasearch:
+ specifier: ^4.24.0
+ version: 4.24.0
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+
+ register-pr:
+ dependencies:
+ '@octokit/rest':
+ specifier: ^21.0.1
+ version: 21.0.2
+ '@radashi-org/common':
+ specifier: link:../common
+ version: link:../common
+ '@types/markdown-it':
+ specifier: 14.1.2
+ version: 14.1.2
+ markdown-it:
+ specifier: 14.1.0
+ version: 14.1.0
+ markdown-it-front-matter:
+ specifier: 0.2.4
+ version: 0.2.4
+ radashi:
+ specifier: link:../../src
+ version: link:../../src
+ radashi-db:
+ specifier: link:../radashi-db
+ version: link:../radashi-db
+ ultrahtml:
+ specifier: ^1.5.3
+ version: 1.5.3
+ yaml:
+ specifier: ^2.5.0
+ version: 2.6.0
+
+ release-notes:
+ dependencies:
+ '@anthropic-ai/sdk':
+ specifier: ^0.25.0
+ version: 0.25.2
+ '@octokit/rest':
+ specifier: ^21.0.2
+ version: 21.0.2
+ '@radashi-org/common':
+ specifier: link:../common
+ version: link:../common
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ mri:
+ specifier: ^1.2.0
+ version: 1.2.0
+ octokit:
+ specifier: ^4.0.2
+ version: 4.0.2
+ radashi:
+ specifier: link:../../src
+ version: link:../../src
+
+ seed-benchmarks:
+ dependencies:
+ '@radashi-org/benchmarks':
+ specifier: link:../benchmarks
+ version: link:../benchmarks
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ radashi-db:
+ specifier: link:../radashi-db
+ version: link:../radashi-db
+ tinyglobby:
+ specifier: ^0.2.10
+ version: 0.2.10
+
+ seed-merged-functions:
+ dependencies:
+ '@radashi-org/register-pr':
+ specifier: link:../register-pr
+ version: link:../register-pr
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ radashi-db:
+ specifier: link:../radashi-db
+ version: link:../radashi-db
+ tinyglobby:
+ specifier: ^0.2.10
+ version: 0.2.10
+
+ seed-proposed-functions:
+ dependencies:
+ '@octokit/rest':
+ specifier: ^21.0.2
+ version: 21.0.2
+ '@radashi-org/register-pr':
+ specifier: link:../register-pr
+ version: link:../register-pr
+ radashi:
+ specifier: link:../../src
+ version: link:../../src
+
+ test-branch:
+ dependencies:
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+ meriyah:
+ specifier: ^6.0.3
+ version: 6.0.3
+ tinyglobby:
+ specifier: ^0.2.10
+ version: 0.2.10
+
+ test-single:
+ dependencies:
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+
+ update-browserslist:
+ dependencies:
+ browserslist-generator:
+ specifier: ^2.1.0
+ version: 2.3.0
+ dequal:
+ specifier: ^2.0.3
+ version: 2.0.3
+ execa:
+ specifier: ^9.5.1
+ version: 9.5.1
+
+packages:
+
+ '@algolia/cache-browser-local-storage@4.24.0':
+ resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==}
+
+ '@algolia/cache-common@4.24.0':
+ resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==}
+
+ '@algolia/cache-in-memory@4.24.0':
+ resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==}
+
+ '@algolia/client-account@4.24.0':
+ resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==}
+
+ '@algolia/client-analytics@4.24.0':
+ resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==}
+
+ '@algolia/client-common@4.24.0':
+ resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==}
+
+ '@algolia/client-personalization@4.24.0':
+ resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==}
+
+ '@algolia/client-search@4.24.0':
+ resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==}
+
+ '@algolia/logger-common@4.24.0':
+ resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==}
+
+ '@algolia/logger-console@4.24.0':
+ resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==}
+
+ '@algolia/recommend@4.24.0':
+ resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==}
+
+ '@algolia/requester-browser-xhr@4.24.0':
+ resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==}
+
+ '@algolia/requester-common@4.24.0':
+ resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==}
+
+ '@algolia/requester-node-http@4.24.0':
+ resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==}
+
+ '@algolia/transporter@4.24.0':
+ resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==}
+
+ '@anthropic-ai/sdk@0.25.2':
+ resolution: {integrity: sha512-F1Hck/asswwidFLtGdMg3XYgRxEUfygNbpkq5KEaEGsHNaSfxeX18/uZGQCL0oQNcj/tYNx8BaFXVwRhFDi45g==}
+
+ '@babel/code-frame@7.26.2':
+ resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.26.2':
+ resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.25.9':
+ resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.25.9':
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.26.2':
+ resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/template@7.25.9':
+ resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.25.9':
+ resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.26.0':
+ resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
+ engines: {node: '>=6.9.0'}
+
+ '@esbuild/aix-ppc64@0.21.5':
+ resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/aix-ppc64@0.23.1':
+ resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.21.5':
+ resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm64@0.23.1':
+ resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.21.5':
+ resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-arm@0.23.1':
+ resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.21.5':
+ resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/android-x64@0.23.1':
+ resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.21.5':
+ resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-arm64@0.23.1':
+ resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.21.5':
+ resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.23.1':
+ resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-arm64@0.23.1':
+ resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.21.5':
+ resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.23.1':
+ resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.21.5':
+ resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm64@0.23.1':
+ resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.21.5':
+ resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.23.1':
+ resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.21.5':
+ resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.23.1':
+ resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.21.5':
+ resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.23.1':
+ resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.21.5':
+ resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.23.1':
+ resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.21.5':
+ resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.23.1':
+ resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.21.5':
+ resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.23.1':
+ resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.21.5':
+ resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.23.1':
+ resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.21.5':
+ resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.23.1':
+ resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-x64@0.21.5':
+ resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.23.1':
+ resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-arm64@0.23.1':
+ resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.21.5':
+ resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.23.1':
+ resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/sunos-x64@0.21.5':
+ resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/sunos-x64@0.23.1':
+ resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.21.5':
+ resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-arm64@0.23.1':
+ resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.21.5':
+ resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.23.1':
+ resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.21.5':
+ resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.23.1':
+ resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@jridgewell/gen-mapping@0.3.5':
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
+ '@mdn/browser-compat-data@5.6.15':
+ resolution: {integrity: sha512-OtMTbZT2qN9/mgkHgsN3xdirnjzRtMrR2CndiQbg2tNv3gipdb/7cYhtdloIL0m6UPm049DZCUdxJO/asqNhFw==}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@octokit/app@15.1.0':
+ resolution: {integrity: sha512-TkBr7QgOmE6ORxvIAhDbZsqPkF7RSqTY4pLTtUQCvr6dTXqvi2fFo46q3h1lxlk/sGMQjqyZ0kEahkD/NyzOHg==}
+ engines: {node: '>= 18'}
+
+ '@octokit/auth-app@7.1.3':
+ resolution: {integrity: sha512-GZdkOp2kZTIy5dG9oXqvzUAZiPvDx4C/lMlN6yQjtG9d/+hYa7W8WXTJoOrXE8UdfL9A/sZMl206dmtkl9lwVQ==}
+ engines: {node: '>= 18'}
+
+ '@octokit/auth-oauth-app@8.1.1':
+ resolution: {integrity: sha512-5UtmxXAvU2wfcHIPPDWzVSAWXVJzG3NWsxb7zCFplCWEmMCArSZV0UQu5jw5goLQXbFyOr5onzEH37UJB3zQQg==}
+ engines: {node: '>= 18'}
+
+ '@octokit/auth-oauth-device@7.1.1':
+ resolution: {integrity: sha512-HWl8lYueHonuyjrKKIup/1tiy0xcmQCdq5ikvMO1YwkNNkxb6DXfrPjrMYItNLyCP/o2H87WuijuE+SlBTT8eg==}
+ engines: {node: '>= 18'}
+
+ '@octokit/auth-oauth-user@5.1.1':
+ resolution: {integrity: sha512-rRkMz0ErOppdvEfnemHJXgZ9vTPhBuC6yASeFaB7I2yLMd7QpjfrL1mnvRPlyKo+M6eeLxrKanXJ9Qte29SRsw==}
+ engines: {node: '>= 18'}
+
+ '@octokit/auth-token@5.1.1':
+ resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==}
+ engines: {node: '>= 18'}
+
+ '@octokit/auth-unauthenticated@6.1.0':
+ resolution: {integrity: sha512-zPSmfrUAcspZH/lOFQnVnvjQZsIvmfApQH6GzJrkIunDooU1Su2qt2FfMTSVPRp7WLTQyC20Kd55lF+mIYaohQ==}
+ engines: {node: '>= 18'}
+
+ '@octokit/core@6.1.2':
+ resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==}
+ engines: {node: '>= 18'}
+
+ '@octokit/endpoint@10.1.1':
+ resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==}
+ engines: {node: '>= 18'}
+
+ '@octokit/graphql@8.1.1':
+ resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==}
+ engines: {node: '>= 18'}
+
+ '@octokit/oauth-app@7.1.3':
+ resolution: {integrity: sha512-EHXbOpBkSGVVGF1W+NLMmsnSsJRkcrnVmDKt0TQYRBb6xWfWzoi9sBD4DIqZ8jGhOWO/V8t4fqFyJ4vDQDn9bg==}
+ engines: {node: '>= 18'}
+
+ '@octokit/oauth-authorization-url@7.1.1':
+ resolution: {integrity: sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA==}
+ engines: {node: '>= 18'}
+
+ '@octokit/oauth-methods@5.1.2':
+ resolution: {integrity: sha512-C5lglRD+sBlbrhCUTxgJAFjWgJlmTx5bQ7Ch0+2uqRjYv7Cfb5xpX4WuSC9UgQna3sqRGBL9EImX9PvTpMaQ7g==}
+ engines: {node: '>= 18'}
+
+ '@octokit/openapi-types@22.2.0':
+ resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
+
+ '@octokit/openapi-webhooks-types@8.3.0':
+ resolution: {integrity: sha512-vKLsoR4xQxg4Z+6rU/F65ItTUz/EXbD+j/d4mlq2GW8TsA4Tc8Kdma2JTAAJ5hrKWUQzkR/Esn2fjsqiVRYaQg==}
+
+ '@octokit/plugin-paginate-graphql@5.2.4':
+ resolution: {integrity: sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ '@octokit/core': '>=6'
+
+ '@octokit/plugin-paginate-rest@11.3.5':
+ resolution: {integrity: sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ '@octokit/core': '>=6'
+
+ '@octokit/plugin-request-log@5.3.1':
+ resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ '@octokit/core': '>=6'
+
+ '@octokit/plugin-rest-endpoint-methods@13.2.6':
+ resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ '@octokit/core': '>=6'
+
+ '@octokit/plugin-retry@7.1.2':
+ resolution: {integrity: sha512-XOWnPpH2kJ5VTwozsxGurw+svB2e61aWlmk5EVIYZPwFK5F9h4cyPyj9CIKRyMXMHSwpIsI3mPOdpMmrRhe7UQ==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ '@octokit/core': '>=6'
+
+ '@octokit/plugin-throttling@9.3.2':
+ resolution: {integrity: sha512-FqpvcTpIWFpMMwIeSoypoJXysSAQ3R+ALJhXXSG1HTP3YZOIeLmcNcimKaXxTcws+Sh6yoRl13SJ5r8sXc1Fhw==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ '@octokit/core': ^6.0.0
+
+ '@octokit/request-error@6.1.5':
+ resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==}
+ engines: {node: '>= 18'}
+
+ '@octokit/request@9.1.3':
+ resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==}
+ engines: {node: '>= 18'}
+
+ '@octokit/rest@21.0.2':
+ resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==}
+ engines: {node: '>= 18'}
+
+ '@octokit/types@13.6.1':
+ resolution: {integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==}
+
+ '@octokit/webhooks-methods@5.1.0':
+ resolution: {integrity: sha512-yFZa3UH11VIxYnnoOYCVoJ3q4ChuSOk2IVBBQ0O3xtKX4x9bmKb/1t+Mxixv2iUhzMdOl1qeWJqEhouXXzB3rQ==}
+ engines: {node: '>= 18'}
+
+ '@octokit/webhooks@13.3.0':
+ resolution: {integrity: sha512-TUkJLtI163Bz5+JK0O+zDkQpn4gKwN+BovclUvCj6pI/6RXrFqQvUMRS2M+Rt8Rv0qR3wjoMoOPmpJKeOh0nBg==}
+ engines: {node: '>= 18'}
+
+ '@rollup/rollup-android-arm-eabi@4.27.2':
+ resolution: {integrity: sha512-Tj+j7Pyzd15wAdSJswvs5CJzJNV+qqSUcr/aCD+jpQSBtXvGnV0pnrjoc8zFTe9fcKCatkpFpOO7yAzpO998HA==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.27.2':
+ resolution: {integrity: sha512-xsPeJgh2ThBpUqlLgRfiVYBEf/P1nWlWvReG+aBWfNv3XEBpa6ZCmxSVnxJgLgkNz4IbxpLy64h2gCmAAQLneQ==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.27.2':
+ resolution: {integrity: sha512-KnXU4m9MywuZFedL35Z3PuwiTSn/yqRIhrEA9j+7OSkji39NzVkgxuxTYg5F8ryGysq4iFADaU5osSizMXhU2A==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.27.2':
+ resolution: {integrity: sha512-Hj77A3yTvUeCIx/Vi+4d4IbYhyTwtHj07lVzUgpUq9YpJSEiGJj4vXMKwzJ3w5zp5v3PFvpJNgc/J31smZey6g==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.27.2':
+ resolution: {integrity: sha512-RjgKf5C3xbn8gxvCm5VgKZ4nn0pRAIe90J0/fdHUsgztd3+Zesb2lm2+r6uX4prV2eUByuxJNdt647/1KPRq5g==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.27.2':
+ resolution: {integrity: sha512-duq21FoXwQtuws+V9H6UZ+eCBc7fxSpMK1GQINKn3fAyd9DFYKPJNcUhdIKOrMFjLEJgQskoMoiuizMt+dl20g==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.27.2':
+ resolution: {integrity: sha512-6npqOKEPRZkLrMcvyC/32OzJ2srdPzCylJjiTJT2c0bwwSGm7nz2F9mNQ1WrAqCBZROcQn91Fno+khFhVijmFA==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.27.2':
+ resolution: {integrity: sha512-V9Xg6eXtgBtHq2jnuQwM/jr2mwe2EycnopO8cbOvpzFuySCGtKlPCI3Hj9xup/pJK5Q0388qfZZy2DqV2J8ftw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.27.2':
+ resolution: {integrity: sha512-uCFX9gtZJoQl2xDTpRdseYuNqyKkuMDtH6zSrBTA28yTfKyjN9hQ2B04N5ynR8ILCoSDOrG/Eg+J2TtJ1e/CSA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.27.2':
+ resolution: {integrity: sha512-/PU9P+7Rkz8JFYDHIi+xzHabOu9qEWR07L5nWLIUsvserrxegZExKCi2jhMZRd0ATdboKylu/K5yAXbp7fYFvA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.27.2':
+ resolution: {integrity: sha512-eCHmol/dT5odMYi/N0R0HC8V8QE40rEpkyje/ZAXJYNNoSfrObOvG/Mn+s1F/FJyB7co7UQZZf6FuWnN6a7f4g==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.27.2':
+ resolution: {integrity: sha512-DEP3Njr9/ADDln3kNi76PXonLMSSMiCir0VHXxmGSHxCxDfQ70oWjHcJGfiBugzaqmYdTC7Y+8Int6qbnxPBIQ==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.27.2':
+ resolution: {integrity: sha512-NHGo5i6IE/PtEPh5m0yw5OmPMpesFnzMIS/lzvN5vknnC1sXM5Z/id5VgcNPgpD+wHmIcuYYgW+Q53v+9s96lQ==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.27.2':
+ resolution: {integrity: sha512-PaW2DY5Tan+IFvNJGHDmUrORadbe/Ceh8tQxi8cmdQVCCYsLoQo2cuaSj+AU+YRX8M4ivS2vJ9UGaxfuNN7gmg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.27.2':
+ resolution: {integrity: sha512-dOlWEMg2gI91Qx5I/HYqOD6iqlJspxLcS4Zlg3vjk1srE67z5T2Uz91yg/qA8sY0XcwQrFzWWiZhMNERylLrpQ==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-win32-arm64-msvc@4.27.2':
+ resolution: {integrity: sha512-euMIv/4x5Y2/ImlbGl88mwKNXDsvzbWUlT7DFky76z2keajCtcbAsN9LUdmk31hAoVmJJYSThgdA0EsPeTr1+w==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.27.2':
+ resolution: {integrity: sha512-RsnE6LQkUHlkC10RKngtHNLxb7scFykEbEwOFDjr3CeCMG+Rr+cKqlkKc2/wJ1u4u990urRHCbjz31x84PBrSQ==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.27.2':
+ resolution: {integrity: sha512-foJM5vv+z2KQmn7emYdDLyTbkoO5bkHZE1oth2tWbQNGW7mX32d46Hz6T0MqXdWS2vBZhaEtHqdy9WYwGfiliA==}
+ cpu: [x64]
+ os: [win32]
+
+ '@sec-ant/readable-stream@0.4.1':
+ resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
+
+ '@sindresorhus/merge-streams@4.0.0':
+ resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
+ engines: {node: '>=18'}
+
+ '@supabase/auth-js@2.65.1':
+ resolution: {integrity: sha512-IA7i2Xq2SWNCNMKxwmPlHafBQda0qtnFr8QnyyBr+KaSxoXXqEzFCnQ1dGTy6bsZjVBgXu++o3qrDypTspaAPw==}
+
+ '@supabase/functions-js@2.4.3':
+ resolution: {integrity: sha512-sOLXy+mWRyu4LLv1onYydq+10mNRQ4rzqQxNhbrKLTLTcdcmS9hbWif0bGz/NavmiQfPs4ZcmQJp4WqOXlR4AQ==}
+
+ '@supabase/node-fetch@2.6.15':
+ resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==}
+ engines: {node: 4.x || >=6.0.0}
+
+ '@supabase/postgrest-js@1.16.3':
+ resolution: {integrity: sha512-HI6dsbW68AKlOPofUjDTaosiDBCtW4XAm0D18pPwxoW3zKOE2Ru13Z69Wuys9fd6iTpfDViNco5sgrtnP0666A==}
+
+ '@supabase/realtime-js@2.10.7':
+ resolution: {integrity: sha512-OLI0hiSAqQSqRpGMTUwoIWo51eUivSYlaNBgxsXZE7PSoWh12wPRdVt0psUMaUzEonSB85K21wGc7W5jHnT6uA==}
+
+ '@supabase/storage-js@2.7.1':
+ resolution: {integrity: sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==}
+
+ '@supabase/supabase-js@2.46.1':
+ resolution: {integrity: sha512-HiBpd8stf7M6+tlr+/82L8b2QmCjAD8ex9YdSAKU+whB/SHXXJdus1dGlqiH9Umy9ePUuxaYmVkGd9BcvBnNvg==}
+
+ '@ts-morph/common@0.24.0':
+ resolution: {integrity: sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==}
+
+ '@types/aws-lambda@8.10.145':
+ resolution: {integrity: sha512-dtByW6WiFk5W5Jfgz1VM+YPA21xMXTuSFoLYIDY0L44jDLLflVPtZkYuu3/YxpGcvjzKFBZLU+GyKjR0HOYtyw==}
+
+ '@types/babel__traverse@7.20.6':
+ resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
+
+ '@types/estree@1.0.6':
+ resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+
+ '@types/linkify-it@5.0.0':
+ resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
+
+ '@types/markdown-it@14.1.2':
+ resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
+
+ '@types/mdurl@2.0.0':
+ resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
+
+ '@types/node-fetch@2.6.12':
+ resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==}
+
+ '@types/node@18.19.64':
+ resolution: {integrity: sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ==}
+
+ '@types/node@22.9.0':
+ resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==}
+
+ '@types/object-path@0.11.4':
+ resolution: {integrity: sha512-4tgJ1Z3elF/tOMpA8JLVuR9spt9Ynsf7+JjqsQ2IqtiPJtcLoHoXcT6qU4E10cPFqyXX5HDm9QwIzZhBSkLxsw==}
+
+ '@types/phoenix@1.6.5':
+ resolution: {integrity: sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==}
+
+ '@types/semver@7.5.8':
+ resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
+
+ '@types/ua-parser-js@0.7.39':
+ resolution: {integrity: sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==}
+
+ '@types/ws@8.5.13':
+ resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==}
+
+ '@vitest/expect@2.1.5':
+ resolution: {integrity: sha512-nZSBTW1XIdpZvEJyoP/Sy8fUg0b8od7ZpGDkTUcfJ7wz/VoZAFzFfLyxVxGFhUjJzhYqSbIpfMtl/+k/dpWa3Q==}
+
+ '@vitest/mocker@2.1.5':
+ resolution: {integrity: sha512-XYW6l3UuBmitWqSUXTNXcVBUCRytDogBsWuNXQijc00dtnU/9OqpXWp4OJroVrad/gLIomAq9aW8yWDBtMthhQ==}
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^5.0.0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+
+ '@vitest/pretty-format@2.1.5':
+ resolution: {integrity: sha512-4ZOwtk2bqG5Y6xRGHcveZVr+6txkH7M2e+nPFd6guSoN638v/1XQ0K06eOpi0ptVU/2tW/pIU4IoPotY/GZ9fw==}
+
+ '@vitest/runner@2.1.5':
+ resolution: {integrity: sha512-pKHKy3uaUdh7X6p1pxOkgkVAFW7r2I818vHDthYLvUyjRfkKOU6P45PztOch4DZarWQne+VOaIMwA/erSSpB9g==}
+
+ '@vitest/snapshot@2.1.5':
+ resolution: {integrity: sha512-zmYw47mhfdfnYbuhkQvkkzYroXUumrwWDGlMjpdUr4jBd3HZiV2w7CQHj+z7AAS4VOtWxI4Zt4bWt4/sKcoIjg==}
+
+ '@vitest/spy@2.1.5':
+ resolution: {integrity: sha512-aWZF3P0r3w6DiYTVskOYuhBc7EMc3jvn1TkBg8ttylFFRqNN2XGD7V5a4aQdk6QiUzZQ4klNBSpCLJgWNdIiNw==}
+
+ '@vitest/utils@2.1.5':
+ resolution: {integrity: sha512-yfj6Yrp0Vesw2cwJbP+cl04OC+IHFsuQsrsJBL9pyGeQXE56v1UAOQco+SR55Vf1nQzfV0QJg1Qum7AaWUwwYg==}
+
+ abort-controller@3.0.0:
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
+
+ agentkeepalive@4.5.0:
+ resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
+ engines: {node: '>= 8.0.0'}
+
+ algoliasearch@4.24.0:
+ resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ assertion-error@2.0.1:
+ resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
+ engines: {node: '>=12'}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ before-after-hook@3.0.2:
+ resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==}
+
+ bottleneck@2.19.5:
+ resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist-generator@2.3.0:
+ resolution: {integrity: sha512-NEvS2dNlBKfSL3qDUTM3NkJMfjMAPEjvEGnhMZKql6ZNzJ8asqFpmuTizwOpRQeYA0/VktmOXa+mFPv8nvcIGw==}
+ engines: {node: '>=16.15.1', npm: '>=7.0.0', pnpm: '>=3.2.0', yarn: '>=1.13'}
+
+ browserslist@4.24.2:
+ resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ cac@6.7.14:
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
+
+ caniuse-lite@1.0.30001680:
+ resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==}
+
+ chai@5.1.2:
+ resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==}
+ engines: {node: '>=12'}
+
+ check-error@2.1.1:
+ resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
+ engines: {node: '>= 16'}
+
+ code-block-writer@13.0.3:
+ resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ cross-spawn@7.0.5:
+ resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==}
+ engines: {node: '>= 8'}
+
+ debug@4.3.7:
+ resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ deep-eql@5.0.2:
+ resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
+ engines: {node: '>=6'}
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ electron-to-chromium@1.5.62:
+ resolution: {integrity: sha512-t8c+zLmJHa9dJy96yBZRXGQYoiCEnHYgFwn1asvSPZSUdVxnB62A4RASd7k41ytG3ErFBA0TpHlKg9D9SQBmLg==}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ es-module-lexer@1.5.4:
+ resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
+
+ esbuild@0.21.5:
+ resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ esbuild@0.23.1:
+ resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+ event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+
+ execa@8.0.1:
+ resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
+ engines: {node: '>=16.17'}
+
+ execa@9.5.1:
+ resolution: {integrity: sha512-QY5PPtSonnGwhhHDNI7+3RvY285c7iuJFFB+lU+oEzMY/gEGJ808owqJsrr8Otd1E/x07po1LkUBmdAc5duPAg==}
+ engines: {node: ^18.19.0 || >=20.5.0}
+
+ expect-type@1.1.0:
+ resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==}
+ engines: {node: '>=12.0.0'}
+
+ fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ engines: {node: '>=8.6.0'}
+
+ fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+
+ fdir@6.4.2:
+ resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ figures@6.1.0:
+ resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
+ engines: {node: '>=18'}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ form-data-encoder@1.7.2:
+ resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==}
+
+ form-data@4.0.1:
+ resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
+ engines: {node: '>= 6'}
+
+ formdata-node@4.4.1:
+ resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==}
+ engines: {node: '>= 12.20'}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ get-stream@8.0.1:
+ resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
+ engines: {node: '>=16'}
+
+ get-stream@9.0.1:
+ resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
+ engines: {node: '>=18'}
+
+ git-cliff-darwin-arm64@2.4.0:
+ resolution: {integrity: sha512-KImSJhO8pTkKCauYlKmx7vNz3caIIBs0QW3JIS0uwUXGGJas4uuvGXlGTbLqVxdCur2yBwRDD6xobtuLC0yQ4w==}
+ cpu: [arm64]
+ os: [darwin]
+
+ git-cliff-darwin-x64@2.4.0:
+ resolution: {integrity: sha512-KtJ/V0i9xxs5iXl+hh1J4wyhMOrMRNylfSQC0lMJ+ScIIr1sZdF9qz4Mk06ZdJD7HnvPWawBhLcpCKVXkaeufQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ git-cliff-linux-arm64@2.4.0:
+ resolution: {integrity: sha512-ZSL5Jw06pgJ0F2e4Dv7j7l69qmq718NA8IKIUscjayc+71iuzyOw0T2tnbkV6H1h1rDjP9LMXGyPtLIvGz62BA==}
+ cpu: [arm64]
+ os: [linux]
+
+ git-cliff-linux-x64@2.4.0:
+ resolution: {integrity: sha512-1ckJ+2io52HuBnEeS87PeFanEPt3BuZoHKcXfkQPYFj9C91ckHgY7OCqze38ejy1V/cfKhlVJsbjbVMxixRaog==}
+ cpu: [x64]
+ os: [linux]
+
+ git-cliff-windows-arm64@2.4.0:
+ resolution: {integrity: sha512-DZf+C7lTmCvvBjgtOHMcXJC5KaIL+QDE/C6cYxzLMgRcn9wGNTm2ot0jkAN2I1PmSmg4I1/89iiahSWHfG1m4A==}
+ cpu: [arm64]
+ os: [win32]
+
+ git-cliff-windows-x64@2.4.0:
+ resolution: {integrity: sha512-bYUQIyG975KdPza/bNDxwBFpqTZEvF1zPKlhThgPgdCKdzbdezsgaFuaDbnM+vsmBD751ZJGWLQ7aJCSBG2s/Q==}
+ cpu: [x64]
+ os: [win32]
+
+ git-cliff@2.4.0:
+ resolution: {integrity: sha512-e+4mMArblL4mrD/auUTa3bf3U1ahAuhIRb1bxTIWCBxnR6UqVctGaLf3pJJufaKi3nqTT7JvrSYu9Q+L6yiAaw==}
+ engines: {node: '>=18.19 || >=20.6 || >=21'}
+ hasBin: true
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
+ human-signals@5.0.0:
+ resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
+ engines: {node: '>=16.17.0'}
+
+ human-signals@8.0.0:
+ resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
+ engines: {node: '>=18.18.0'}
+
+ humanize-ms@1.2.1:
+ resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+
+ is-stream@3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ is-stream@4.0.1:
+ resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
+ engines: {node: '>=18'}
+
+ is-unicode-supported@2.1.0:
+ resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
+ engines: {node: '>=18'}
+
+ isbot@3.8.0:
+ resolution: {integrity: sha512-vne1mzQUTR+qsMLeCBL9+/tgnDXRyc2pygLGl/WsgA+EZKIiB5Ehu0CiVTHIIk30zhJ24uGz4M5Ppse37aR0Hg==}
+ engines: {node: '>=12'}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+
+ linkify-it@5.0.0:
+ resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
+
+ loupe@3.1.2:
+ resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==}
+
+ magic-string@0.30.12:
+ resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
+
+ markdown-it-front-matter@0.2.4:
+ resolution: {integrity: sha512-25GUs0yjS2hLl8zAemVndeEzThB1p42yxuDEKbd4JlL3jiz+jsm6e56Ya8B0VREOkNxLYB4TTwaoPJ3ElMmW+w==}
+
+ markdown-it@14.1.0:
+ resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
+ hasBin: true
+
+ mdurl@2.0.0:
+ resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ meriyah@6.0.3:
+ resolution: {integrity: sha512-NqUbuQIjIH8dxUBPTMHS1kwIHd6n6nF3F7oeLXGWqBkpVP2lZxVHdab5JxbFBisIB4axZ9b/lT4HLJfZxmFK7Q==}
+ engines: {node: '>=18.0.0'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mimic-fn@4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+
+ minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ mkdirp@3.0.1:
+ resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ node-domexception@1.0.0:
+ resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
+ engines: {node: '>=10.5.0'}
+
+ node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
+ node-releases@2.0.18:
+ resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
+
+ npm-run-path@5.3.0:
+ resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ npm-run-path@6.0.0:
+ resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
+ engines: {node: '>=18'}
+
+ object-path@0.11.8:
+ resolution: {integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==}
+ engines: {node: '>= 10.12.0'}
+
+ octokit@4.0.2:
+ resolution: {integrity: sha512-wbqF4uc1YbcldtiBFfkSnquHtECEIpYD78YUXI6ri1Im5OO2NLo6ZVpRdbJpdnpZ05zMrVPssNiEo6JQtea+Qg==}
+ engines: {node: '>= 18'}
+
+ onetime@6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+
+ parse-ms@4.0.0:
+ resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
+ engines: {node: '>=18'}
+
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-key@4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
+ pathval@2.0.0:
+ resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
+ engines: {node: '>= 14.16'}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ picomatch@4.0.2:
+ resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
+ engines: {node: '>=12'}
+
+ postcss@8.4.49:
+ resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ pretty-ms@9.2.0:
+ resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==}
+ engines: {node: '>=18'}
+
+ punycode.js@2.3.1:
+ resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
+ engines: {node: '>=6'}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rollup@4.27.2:
+ resolution: {integrity: sha512-KreA+PzWmk2yaFmZVwe6GB2uBD86nXl86OsDkt1bJS9p3vqWuEQ6HnJJ+j/mZi/q0920P99/MVRlB4L3crpF5w==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ semver@7.6.3:
+ resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ siginfo@2.0.0:
+ resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ stackback@0.0.2:
+ resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+
+ std-env@3.8.0:
+ resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==}
+
+ string-argv@0.3.2:
+ resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
+ engines: {node: '>=0.6.19'}
+
+ strip-final-newline@3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+
+ strip-final-newline@4.0.0:
+ resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
+ engines: {node: '>=18'}
+
+ tinybench@2.9.0:
+ resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
+
+ tinyexec@0.3.1:
+ resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==}
+
+ tinyglobby@0.2.10:
+ resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==}
+ engines: {node: '>=12.0.0'}
+
+ tinypool@1.0.2:
+ resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+
+ tinyrainbow@1.2.0:
+ resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
+ engines: {node: '>=14.0.0'}
+
+ tinyspy@3.0.2:
+ resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
+ engines: {node: '>=14.0.0'}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ toad-cache@3.7.0:
+ resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
+ engines: {node: '>=12'}
+
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ ts-morph@23.0.0:
+ resolution: {integrity: sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==}
+
+ ua-parser-js@1.0.39:
+ resolution: {integrity: sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==}
+ hasBin: true
+
+ uc.micro@2.1.0:
+ resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
+
+ ultrahtml@1.5.3:
+ resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==}
+
+ undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
+ undici-types@6.19.8:
+ resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+
+ unicorn-magic@0.3.0:
+ resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
+ engines: {node: '>=18'}
+
+ universal-github-app-jwt@2.2.0:
+ resolution: {integrity: sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ==}
+
+ universal-user-agent@7.0.2:
+ resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
+
+ update-browserslist-db@1.1.1:
+ resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ vite-node@2.1.5:
+ resolution: {integrity: sha512-rd0QIgx74q4S1Rd56XIiL2cYEdyWn13cunYBIuqh9mpmQr7gGS0IxXoP8R6OaZtNQQLyXSWbd4rXKYUbhFpK5w==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+
+ vite@5.4.11:
+ resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ vitest@2.1.5:
+ resolution: {integrity: sha512-P4ljsdpuzRTPI/kbND2sDZ4VmieerR2c9szEZpjc+98Z9ebvnXmM5+0tHEKqYZumXqlvnmfWsjeFOjXVriDG7A==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@types/node': ^18.0.0 || >=20.0.0
+ '@vitest/browser': 2.1.5
+ '@vitest/ui': 2.1.5
+ happy-dom: '*'
+ jsdom: '*'
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@types/node':
+ optional: true
+ '@vitest/browser':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
+ web-streams-polyfill@4.0.0-beta.3:
+ resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==}
+ engines: {node: '>= 14'}
+
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ why-is-node-running@2.3.0:
+ resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ ws@8.18.0:
+ resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ yaml@2.6.0:
+ resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==}
+ engines: {node: '>= 14'}
+ hasBin: true
+
+ yoctocolors@2.1.1:
+ resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
+ engines: {node: '>=18'}
+
+snapshots:
+
+ '@algolia/cache-browser-local-storage@4.24.0':
+ dependencies:
+ '@algolia/cache-common': 4.24.0
+
+ '@algolia/cache-common@4.24.0': {}
+
+ '@algolia/cache-in-memory@4.24.0':
+ dependencies:
+ '@algolia/cache-common': 4.24.0
+
+ '@algolia/client-account@4.24.0':
+ dependencies:
+ '@algolia/client-common': 4.24.0
+ '@algolia/client-search': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/client-analytics@4.24.0':
+ dependencies:
+ '@algolia/client-common': 4.24.0
+ '@algolia/client-search': 4.24.0
+ '@algolia/requester-common': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/client-common@4.24.0':
+ dependencies:
+ '@algolia/requester-common': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/client-personalization@4.24.0':
+ dependencies:
+ '@algolia/client-common': 4.24.0
+ '@algolia/requester-common': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/client-search@4.24.0':
+ dependencies:
+ '@algolia/client-common': 4.24.0
+ '@algolia/requester-common': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/logger-common@4.24.0': {}
+
+ '@algolia/logger-console@4.24.0':
+ dependencies:
+ '@algolia/logger-common': 4.24.0
+
+ '@algolia/recommend@4.24.0':
+ dependencies:
+ '@algolia/cache-browser-local-storage': 4.24.0
+ '@algolia/cache-common': 4.24.0
+ '@algolia/cache-in-memory': 4.24.0
+ '@algolia/client-common': 4.24.0
+ '@algolia/client-search': 4.24.0
+ '@algolia/logger-common': 4.24.0
+ '@algolia/logger-console': 4.24.0
+ '@algolia/requester-browser-xhr': 4.24.0
+ '@algolia/requester-common': 4.24.0
+ '@algolia/requester-node-http': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/requester-browser-xhr@4.24.0':
+ dependencies:
+ '@algolia/requester-common': 4.24.0
+
+ '@algolia/requester-common@4.24.0': {}
+
+ '@algolia/requester-node-http@4.24.0':
+ dependencies:
+ '@algolia/requester-common': 4.24.0
+
+ '@algolia/transporter@4.24.0':
+ dependencies:
+ '@algolia/cache-common': 4.24.0
+ '@algolia/logger-common': 4.24.0
+ '@algolia/requester-common': 4.24.0
+
+ '@anthropic-ai/sdk@0.25.2':
+ dependencies:
+ '@types/node': 18.19.64
+ '@types/node-fetch': 2.6.12
+ abort-controller: 3.0.0
+ agentkeepalive: 4.5.0
+ form-data-encoder: 1.7.2
+ formdata-node: 4.4.1
+ node-fetch: 2.7.0
+ transitivePeerDependencies:
+ - encoding
+
+ '@babel/code-frame@7.26.2':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.25.9
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/generator@7.26.2':
+ dependencies:
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 3.0.2
+
+ '@babel/helper-string-parser@7.25.9': {}
+
+ '@babel/helper-validator-identifier@7.25.9': {}
+
+ '@babel/parser@7.26.2':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/template@7.25.9':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+
+ '@babel/traverse@7.25.9':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.0
+ debug: 4.3.7
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.26.0':
+ dependencies:
+ '@babel/helper-string-parser': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/aix-ppc64@0.23.1':
+ optional: true
+
+ '@esbuild/android-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm64@0.23.1':
+ optional: true
+
+ '@esbuild/android-arm@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm@0.23.1':
+ optional: true
+
+ '@esbuild/android-x64@0.21.5':
+ optional: true
+
+ '@esbuild/android-x64@0.23.1':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.23.1':
+ optional: true
+
+ '@esbuild/darwin-x64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-x64@0.23.1':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.23.1':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.23.1':
+ optional: true
+
+ '@esbuild/linux-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm64@0.23.1':
+ optional: true
+
+ '@esbuild/linux-arm@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm@0.23.1':
+ optional: true
+
+ '@esbuild/linux-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ia32@0.23.1':
+ optional: true
+
+ '@esbuild/linux-loong64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-loong64@0.23.1':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.21.5':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.23.1':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.23.1':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.23.1':
+ optional: true
+
+ '@esbuild/linux-s390x@0.21.5':
+ optional: true
+
+ '@esbuild/linux-s390x@0.23.1':
+ optional: true
+
+ '@esbuild/linux-x64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-x64@0.23.1':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.23.1':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.23.1':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.23.1':
+ optional: true
+
+ '@esbuild/sunos-x64@0.21.5':
+ optional: true
+
+ '@esbuild/sunos-x64@0.23.1':
+ optional: true
+
+ '@esbuild/win32-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-arm64@0.23.1':
+ optional: true
+
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/win32-ia32@0.23.1':
+ optional: true
+
+ '@esbuild/win32-x64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-x64@0.23.1':
+ optional: true
+
+ '@jridgewell/gen-mapping@0.3.5':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@mdn/browser-compat-data@5.6.15': {}
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
+
+ '@octokit/app@15.1.0':
+ dependencies:
+ '@octokit/auth-app': 7.1.3
+ '@octokit/auth-unauthenticated': 6.1.0
+ '@octokit/core': 6.1.2
+ '@octokit/oauth-app': 7.1.3
+ '@octokit/plugin-paginate-rest': 11.3.5(@octokit/core@6.1.2)
+ '@octokit/types': 13.6.1
+ '@octokit/webhooks': 13.3.0
+
+ '@octokit/auth-app@7.1.3':
+ dependencies:
+ '@octokit/auth-oauth-app': 8.1.1
+ '@octokit/auth-oauth-user': 5.1.1
+ '@octokit/request': 9.1.3
+ '@octokit/request-error': 6.1.5
+ '@octokit/types': 13.6.1
+ toad-cache: 3.7.0
+ universal-github-app-jwt: 2.2.0
+ universal-user-agent: 7.0.2
+
+ '@octokit/auth-oauth-app@8.1.1':
+ dependencies:
+ '@octokit/auth-oauth-device': 7.1.1
+ '@octokit/auth-oauth-user': 5.1.1
+ '@octokit/request': 9.1.3
+ '@octokit/types': 13.6.1
+ universal-user-agent: 7.0.2
+
+ '@octokit/auth-oauth-device@7.1.1':
+ dependencies:
+ '@octokit/oauth-methods': 5.1.2
+ '@octokit/request': 9.1.3
+ '@octokit/types': 13.6.1
+ universal-user-agent: 7.0.2
+
+ '@octokit/auth-oauth-user@5.1.1':
+ dependencies:
+ '@octokit/auth-oauth-device': 7.1.1
+ '@octokit/oauth-methods': 5.1.2
+ '@octokit/request': 9.1.3
+ '@octokit/types': 13.6.1
+ universal-user-agent: 7.0.2
+
+ '@octokit/auth-token@5.1.1': {}
+
+ '@octokit/auth-unauthenticated@6.1.0':
+ dependencies:
+ '@octokit/request-error': 6.1.5
+ '@octokit/types': 13.6.1
+
+ '@octokit/core@6.1.2':
+ dependencies:
+ '@octokit/auth-token': 5.1.1
+ '@octokit/graphql': 8.1.1
+ '@octokit/request': 9.1.3
+ '@octokit/request-error': 6.1.5
+ '@octokit/types': 13.6.1
+ before-after-hook: 3.0.2
+ universal-user-agent: 7.0.2
+
+ '@octokit/endpoint@10.1.1':
+ dependencies:
+ '@octokit/types': 13.6.1
+ universal-user-agent: 7.0.2
+
+ '@octokit/graphql@8.1.1':
+ dependencies:
+ '@octokit/request': 9.1.3
+ '@octokit/types': 13.6.1
+ universal-user-agent: 7.0.2
+
+ '@octokit/oauth-app@7.1.3':
+ dependencies:
+ '@octokit/auth-oauth-app': 8.1.1
+ '@octokit/auth-oauth-user': 5.1.1
+ '@octokit/auth-unauthenticated': 6.1.0
+ '@octokit/core': 6.1.2
+ '@octokit/oauth-authorization-url': 7.1.1
+ '@octokit/oauth-methods': 5.1.2
+ '@types/aws-lambda': 8.10.145
+ universal-user-agent: 7.0.2
+
+ '@octokit/oauth-authorization-url@7.1.1': {}
+
+ '@octokit/oauth-methods@5.1.2':
+ dependencies:
+ '@octokit/oauth-authorization-url': 7.1.1
+ '@octokit/request': 9.1.3
+ '@octokit/request-error': 6.1.5
+ '@octokit/types': 13.6.1
+
+ '@octokit/openapi-types@22.2.0': {}
+
+ '@octokit/openapi-webhooks-types@8.3.0': {}
+
+ '@octokit/plugin-paginate-graphql@5.2.4(@octokit/core@6.1.2)':
+ dependencies:
+ '@octokit/core': 6.1.2
+
+ '@octokit/plugin-paginate-rest@11.3.5(@octokit/core@6.1.2)':
+ dependencies:
+ '@octokit/core': 6.1.2
+ '@octokit/types': 13.6.1
+
+ '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.2)':
+ dependencies:
+ '@octokit/core': 6.1.2
+
+ '@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)':
+ dependencies:
+ '@octokit/core': 6.1.2
+ '@octokit/types': 13.6.1
+
+ '@octokit/plugin-retry@7.1.2(@octokit/core@6.1.2)':
+ dependencies:
+ '@octokit/core': 6.1.2
+ '@octokit/request-error': 6.1.5
+ '@octokit/types': 13.6.1
+ bottleneck: 2.19.5
+
+ '@octokit/plugin-throttling@9.3.2(@octokit/core@6.1.2)':
+ dependencies:
+ '@octokit/core': 6.1.2
+ '@octokit/types': 13.6.1
+ bottleneck: 2.19.5
+
+ '@octokit/request-error@6.1.5':
+ dependencies:
+ '@octokit/types': 13.6.1
+
+ '@octokit/request@9.1.3':
+ dependencies:
+ '@octokit/endpoint': 10.1.1
+ '@octokit/request-error': 6.1.5
+ '@octokit/types': 13.6.1
+ universal-user-agent: 7.0.2
+
+ '@octokit/rest@21.0.2':
+ dependencies:
+ '@octokit/core': 6.1.2
+ '@octokit/plugin-paginate-rest': 11.3.5(@octokit/core@6.1.2)
+ '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.2)
+ '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2)
+
+ '@octokit/types@13.6.1':
+ dependencies:
+ '@octokit/openapi-types': 22.2.0
+
+ '@octokit/webhooks-methods@5.1.0': {}
+
+ '@octokit/webhooks@13.3.0':
+ dependencies:
+ '@octokit/openapi-webhooks-types': 8.3.0
+ '@octokit/request-error': 6.1.5
+ '@octokit/webhooks-methods': 5.1.0
+
+ '@rollup/rollup-android-arm-eabi@4.27.2':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.27.2':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.27.2':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.27.2':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.27.2':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.27.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.27.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.27.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.27.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.27.2':
+ optional: true
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.27.2':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.27.2':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.27.2':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.27.2':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.27.2':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.27.2':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.27.2':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.27.2':
+ optional: true
+
+ '@sec-ant/readable-stream@0.4.1': {}
+
+ '@sindresorhus/merge-streams@4.0.0': {}
+
+ '@supabase/auth-js@2.65.1':
+ dependencies:
+ '@supabase/node-fetch': 2.6.15
+
+ '@supabase/functions-js@2.4.3':
+ dependencies:
+ '@supabase/node-fetch': 2.6.15
+
+ '@supabase/node-fetch@2.6.15':
+ dependencies:
+ whatwg-url: 5.0.0
+
+ '@supabase/postgrest-js@1.16.3':
+ dependencies:
+ '@supabase/node-fetch': 2.6.15
+
+ '@supabase/realtime-js@2.10.7':
+ dependencies:
+ '@supabase/node-fetch': 2.6.15
+ '@types/phoenix': 1.6.5
+ '@types/ws': 8.5.13
+ ws: 8.18.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@supabase/storage-js@2.7.1':
+ dependencies:
+ '@supabase/node-fetch': 2.6.15
+
+ '@supabase/supabase-js@2.46.1':
+ dependencies:
+ '@supabase/auth-js': 2.65.1
+ '@supabase/functions-js': 2.4.3
+ '@supabase/node-fetch': 2.6.15
+ '@supabase/postgrest-js': 1.16.3
+ '@supabase/realtime-js': 2.10.7
+ '@supabase/storage-js': 2.7.1
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@ts-morph/common@0.24.0':
+ dependencies:
+ fast-glob: 3.3.2
+ minimatch: 9.0.5
+ mkdirp: 3.0.1
+ path-browserify: 1.0.1
+
+ '@types/aws-lambda@8.10.145': {}
+
+ '@types/babel__traverse@7.20.6':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@types/estree@1.0.6': {}
+
+ '@types/linkify-it@5.0.0': {}
+
+ '@types/markdown-it@14.1.2':
+ dependencies:
+ '@types/linkify-it': 5.0.0
+ '@types/mdurl': 2.0.0
+
+ '@types/mdurl@2.0.0': {}
+
+ '@types/node-fetch@2.6.12':
+ dependencies:
+ '@types/node': 22.9.0
+ form-data: 4.0.1
+
+ '@types/node@18.19.64':
+ dependencies:
+ undici-types: 5.26.5
+
+ '@types/node@22.9.0':
+ dependencies:
+ undici-types: 6.19.8
+
+ '@types/object-path@0.11.4': {}
+
+ '@types/phoenix@1.6.5': {}
+
+ '@types/semver@7.5.8': {}
+
+ '@types/ua-parser-js@0.7.39': {}
+
+ '@types/ws@8.5.13':
+ dependencies:
+ '@types/node': 22.9.0
+
+ '@vitest/expect@2.1.5':
+ dependencies:
+ '@vitest/spy': 2.1.5
+ '@vitest/utils': 2.1.5
+ chai: 5.1.2
+ tinyrainbow: 1.2.0
+
+ '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.9.0))':
+ dependencies:
+ '@vitest/spy': 2.1.5
+ estree-walker: 3.0.3
+ magic-string: 0.30.12
+ optionalDependencies:
+ vite: 5.4.11(@types/node@22.9.0)
+
+ '@vitest/pretty-format@2.1.5':
+ dependencies:
+ tinyrainbow: 1.2.0
+
+ '@vitest/runner@2.1.5':
+ dependencies:
+ '@vitest/utils': 2.1.5
+ pathe: 1.1.2
+
+ '@vitest/snapshot@2.1.5':
+ dependencies:
+ '@vitest/pretty-format': 2.1.5
+ magic-string: 0.30.12
+ pathe: 1.1.2
+
+ '@vitest/spy@2.1.5':
+ dependencies:
+ tinyspy: 3.0.2
+
+ '@vitest/utils@2.1.5':
+ dependencies:
+ '@vitest/pretty-format': 2.1.5
+ loupe: 3.1.2
+ tinyrainbow: 1.2.0
+
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
+ agentkeepalive@4.5.0:
+ dependencies:
+ humanize-ms: 1.2.1
+
+ algoliasearch@4.24.0:
+ dependencies:
+ '@algolia/cache-browser-local-storage': 4.24.0
+ '@algolia/cache-common': 4.24.0
+ '@algolia/cache-in-memory': 4.24.0
+ '@algolia/client-account': 4.24.0
+ '@algolia/client-analytics': 4.24.0
+ '@algolia/client-common': 4.24.0
+ '@algolia/client-personalization': 4.24.0
+ '@algolia/client-search': 4.24.0
+ '@algolia/logger-common': 4.24.0
+ '@algolia/logger-console': 4.24.0
+ '@algolia/recommend': 4.24.0
+ '@algolia/requester-browser-xhr': 4.24.0
+ '@algolia/requester-common': 4.24.0
+ '@algolia/requester-node-http': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ argparse@2.0.1: {}
+
+ assertion-error@2.0.1: {}
+
+ asynckit@0.4.0: {}
+
+ balanced-match@1.0.2: {}
+
+ before-after-hook@3.0.2: {}
+
+ bottleneck@2.19.5: {}
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist-generator@2.3.0:
+ dependencies:
+ '@mdn/browser-compat-data': 5.6.15
+ '@types/object-path': 0.11.4
+ '@types/semver': 7.5.8
+ '@types/ua-parser-js': 0.7.39
+ browserslist: 4.24.2
+ caniuse-lite: 1.0.30001680
+ isbot: 3.8.0
+ object-path: 0.11.8
+ semver: 7.6.3
+ ua-parser-js: 1.0.39
+
+ browserslist@4.24.2:
+ dependencies:
+ caniuse-lite: 1.0.30001680
+ electron-to-chromium: 1.5.62
+ node-releases: 2.0.18
+ update-browserslist-db: 1.1.1(browserslist@4.24.2)
+
+ cac@6.7.14: {}
+
+ caniuse-lite@1.0.30001680: {}
+
+ chai@5.1.2:
+ dependencies:
+ assertion-error: 2.0.1
+ check-error: 2.1.1
+ deep-eql: 5.0.2
+ loupe: 3.1.2
+ pathval: 2.0.0
+
+ check-error@2.1.1: {}
+
+ code-block-writer@13.0.3: {}
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ cross-spawn@7.0.5:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ debug@4.3.7:
+ dependencies:
+ ms: 2.1.3
+
+ deep-eql@5.0.2: {}
+
+ delayed-stream@1.0.0: {}
+
+ dequal@2.0.3: {}
+
+ electron-to-chromium@1.5.62: {}
+
+ entities@4.5.0: {}
+
+ es-module-lexer@1.5.4: {}
+
+ esbuild@0.21.5:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.21.5
+ '@esbuild/android-arm': 0.21.5
+ '@esbuild/android-arm64': 0.21.5
+ '@esbuild/android-x64': 0.21.5
+ '@esbuild/darwin-arm64': 0.21.5
+ '@esbuild/darwin-x64': 0.21.5
+ '@esbuild/freebsd-arm64': 0.21.5
+ '@esbuild/freebsd-x64': 0.21.5
+ '@esbuild/linux-arm': 0.21.5
+ '@esbuild/linux-arm64': 0.21.5
+ '@esbuild/linux-ia32': 0.21.5
+ '@esbuild/linux-loong64': 0.21.5
+ '@esbuild/linux-mips64el': 0.21.5
+ '@esbuild/linux-ppc64': 0.21.5
+ '@esbuild/linux-riscv64': 0.21.5
+ '@esbuild/linux-s390x': 0.21.5
+ '@esbuild/linux-x64': 0.21.5
+ '@esbuild/netbsd-x64': 0.21.5
+ '@esbuild/openbsd-x64': 0.21.5
+ '@esbuild/sunos-x64': 0.21.5
+ '@esbuild/win32-arm64': 0.21.5
+ '@esbuild/win32-ia32': 0.21.5
+ '@esbuild/win32-x64': 0.21.5
+
+ esbuild@0.23.1:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.23.1
+ '@esbuild/android-arm': 0.23.1
+ '@esbuild/android-arm64': 0.23.1
+ '@esbuild/android-x64': 0.23.1
+ '@esbuild/darwin-arm64': 0.23.1
+ '@esbuild/darwin-x64': 0.23.1
+ '@esbuild/freebsd-arm64': 0.23.1
+ '@esbuild/freebsd-x64': 0.23.1
+ '@esbuild/linux-arm': 0.23.1
+ '@esbuild/linux-arm64': 0.23.1
+ '@esbuild/linux-ia32': 0.23.1
+ '@esbuild/linux-loong64': 0.23.1
+ '@esbuild/linux-mips64el': 0.23.1
+ '@esbuild/linux-ppc64': 0.23.1
+ '@esbuild/linux-riscv64': 0.23.1
+ '@esbuild/linux-s390x': 0.23.1
+ '@esbuild/linux-x64': 0.23.1
+ '@esbuild/netbsd-x64': 0.23.1
+ '@esbuild/openbsd-arm64': 0.23.1
+ '@esbuild/openbsd-x64': 0.23.1
+ '@esbuild/sunos-x64': 0.23.1
+ '@esbuild/win32-arm64': 0.23.1
+ '@esbuild/win32-ia32': 0.23.1
+ '@esbuild/win32-x64': 0.23.1
+
+ escalade@3.2.0: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.6
+
+ event-target-shim@5.0.1: {}
+
+ execa@8.0.1:
+ dependencies:
+ cross-spawn: 7.0.5
+ get-stream: 8.0.1
+ human-signals: 5.0.0
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.3.0
+ onetime: 6.0.0
+ signal-exit: 4.1.0
+ strip-final-newline: 3.0.0
+
+ execa@9.5.1:
+ dependencies:
+ '@sindresorhus/merge-streams': 4.0.0
+ cross-spawn: 7.0.5
+ figures: 6.1.0
+ get-stream: 9.0.1
+ human-signals: 8.0.0
+ is-plain-obj: 4.1.0
+ is-stream: 4.0.1
+ npm-run-path: 6.0.0
+ pretty-ms: 9.2.0
+ signal-exit: 4.1.0
+ strip-final-newline: 4.0.0
+ yoctocolors: 2.1.1
+
+ expect-type@1.1.0: {}
+
+ fast-glob@3.3.2:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fastq@1.17.1:
+ dependencies:
+ reusify: 1.0.4
+
+ fdir@6.4.2(picomatch@4.0.2):
+ optionalDependencies:
+ picomatch: 4.0.2
+
+ figures@6.1.0:
+ dependencies:
+ is-unicode-supported: 2.1.0
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ form-data-encoder@1.7.2: {}
+
+ form-data@4.0.1:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+
+ formdata-node@4.4.1:
+ dependencies:
+ node-domexception: 1.0.0
+ web-streams-polyfill: 4.0.0-beta.3
+
+ fsevents@2.3.3:
+ optional: true
+
+ get-stream@8.0.1: {}
+
+ get-stream@9.0.1:
+ dependencies:
+ '@sec-ant/readable-stream': 0.4.1
+ is-stream: 4.0.1
+
+ git-cliff-darwin-arm64@2.4.0:
+ optional: true
+
+ git-cliff-darwin-x64@2.4.0:
+ optional: true
+
+ git-cliff-linux-arm64@2.4.0:
+ optional: true
+
+ git-cliff-linux-x64@2.4.0:
+ optional: true
+
+ git-cliff-windows-arm64@2.4.0:
+ optional: true
+
+ git-cliff-windows-x64@2.4.0:
+ optional: true
+
+ git-cliff@2.4.0:
+ dependencies:
+ execa: 8.0.1
+ optionalDependencies:
+ git-cliff-darwin-arm64: 2.4.0
+ git-cliff-darwin-x64: 2.4.0
+ git-cliff-linux-arm64: 2.4.0
+ git-cliff-linux-x64: 2.4.0
+ git-cliff-windows-arm64: 2.4.0
+ git-cliff-windows-x64: 2.4.0
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ globals@11.12.0: {}
+
+ human-signals@5.0.0: {}
+
+ human-signals@8.0.0: {}
+
+ humanize-ms@1.2.1:
+ dependencies:
+ ms: 2.1.3
+
+ is-extglob@2.1.1: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-number@7.0.0: {}
+
+ is-plain-obj@4.1.0: {}
+
+ is-stream@3.0.0: {}
+
+ is-stream@4.0.1: {}
+
+ is-unicode-supported@2.1.0: {}
+
+ isbot@3.8.0: {}
+
+ isexe@2.0.0: {}
+
+ js-tokens@4.0.0: {}
+
+ jsesc@3.0.2: {}
+
+ kleur@4.1.5: {}
+
+ linkify-it@5.0.0:
+ dependencies:
+ uc.micro: 2.1.0
+
+ loupe@3.1.2: {}
+
+ magic-string@0.30.12:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ markdown-it-front-matter@0.2.4: {}
+
+ markdown-it@14.1.0:
+ dependencies:
+ argparse: 2.0.1
+ entities: 4.5.0
+ linkify-it: 5.0.0
+ mdurl: 2.0.0
+ punycode.js: 2.3.1
+ uc.micro: 2.1.0
+
+ mdurl@2.0.0: {}
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ meriyah@6.0.3: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mimic-fn@4.0.0: {}
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ mkdirp@3.0.1: {}
+
+ mri@1.2.0: {}
+
+ ms@2.1.3: {}
+
+ nanoid@3.3.7: {}
+
+ node-domexception@1.0.0: {}
+
+ node-fetch@2.7.0:
+ dependencies:
+ whatwg-url: 5.0.0
+
+ node-releases@2.0.18: {}
+
+ npm-run-path@5.3.0:
+ dependencies:
+ path-key: 4.0.0
+
+ npm-run-path@6.0.0:
+ dependencies:
+ path-key: 4.0.0
+ unicorn-magic: 0.3.0
+
+ object-path@0.11.8: {}
+
+ octokit@4.0.2:
+ dependencies:
+ '@octokit/app': 15.1.0
+ '@octokit/core': 6.1.2
+ '@octokit/oauth-app': 7.1.3
+ '@octokit/plugin-paginate-graphql': 5.2.4(@octokit/core@6.1.2)
+ '@octokit/plugin-paginate-rest': 11.3.5(@octokit/core@6.1.2)
+ '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2)
+ '@octokit/plugin-retry': 7.1.2(@octokit/core@6.1.2)
+ '@octokit/plugin-throttling': 9.3.2(@octokit/core@6.1.2)
+ '@octokit/request-error': 6.1.5
+ '@octokit/types': 13.6.1
+
+ onetime@6.0.0:
+ dependencies:
+ mimic-fn: 4.0.0
+
+ parse-ms@4.0.0: {}
+
+ path-browserify@1.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-key@4.0.0: {}
+
+ pathe@1.1.2: {}
+
+ pathval@2.0.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ picomatch@4.0.2: {}
+
+ postcss@8.4.49:
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ pretty-ms@9.2.0:
+ dependencies:
+ parse-ms: 4.0.0
+
+ punycode.js@2.3.1: {}
+
+ queue-microtask@1.2.3: {}
+
+ reusify@1.0.4: {}
+
+ rollup@4.27.2:
+ dependencies:
+ '@types/estree': 1.0.6
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.27.2
+ '@rollup/rollup-android-arm64': 4.27.2
+ '@rollup/rollup-darwin-arm64': 4.27.2
+ '@rollup/rollup-darwin-x64': 4.27.2
+ '@rollup/rollup-freebsd-arm64': 4.27.2
+ '@rollup/rollup-freebsd-x64': 4.27.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.27.2
+ '@rollup/rollup-linux-arm-musleabihf': 4.27.2
+ '@rollup/rollup-linux-arm64-gnu': 4.27.2
+ '@rollup/rollup-linux-arm64-musl': 4.27.2
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.27.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.27.2
+ '@rollup/rollup-linux-s390x-gnu': 4.27.2
+ '@rollup/rollup-linux-x64-gnu': 4.27.2
+ '@rollup/rollup-linux-x64-musl': 4.27.2
+ '@rollup/rollup-win32-arm64-msvc': 4.27.2
+ '@rollup/rollup-win32-ia32-msvc': 4.27.2
+ '@rollup/rollup-win32-x64-msvc': 4.27.2
+ fsevents: 2.3.3
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ semver@7.6.3: {}
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ siginfo@2.0.0: {}
+
+ signal-exit@4.1.0: {}
+
+ source-map-js@1.2.1: {}
+
+ stackback@0.0.2: {}
+
+ std-env@3.8.0: {}
+
+ string-argv@0.3.2: {}
+
+ strip-final-newline@3.0.0: {}
+
+ strip-final-newline@4.0.0: {}
+
+ tinybench@2.9.0: {}
+
+ tinyexec@0.3.1: {}
+
+ tinyglobby@0.2.10:
+ dependencies:
+ fdir: 6.4.2(picomatch@4.0.2)
+ picomatch: 4.0.2
+
+ tinypool@1.0.2: {}
+
+ tinyrainbow@1.2.0: {}
+
+ tinyspy@3.0.2: {}
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toad-cache@3.7.0: {}
+
+ tr46@0.0.3: {}
+
+ ts-morph@23.0.0:
+ dependencies:
+ '@ts-morph/common': 0.24.0
+ code-block-writer: 13.0.3
+
+ ua-parser-js@1.0.39: {}
+
+ uc.micro@2.1.0: {}
+
+ ultrahtml@1.5.3: {}
+
+ undici-types@5.26.5: {}
+
+ undici-types@6.19.8: {}
+
+ unicorn-magic@0.3.0: {}
+
+ universal-github-app-jwt@2.2.0: {}
+
+ universal-user-agent@7.0.2: {}
+
+ update-browserslist-db@1.1.1(browserslist@4.24.2):
+ dependencies:
+ browserslist: 4.24.2
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ vite-node@2.1.5(@types/node@22.9.0):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.3.7
+ es-module-lexer: 1.5.4
+ pathe: 1.1.2
+ vite: 5.4.11(@types/node@22.9.0)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ vite@5.4.11(@types/node@22.9.0):
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.4.49
+ rollup: 4.27.2
+ optionalDependencies:
+ '@types/node': 22.9.0
+ fsevents: 2.3.3
+
+ vitest@2.1.5(@types/node@22.9.0):
+ dependencies:
+ '@vitest/expect': 2.1.5
+ '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.9.0))
+ '@vitest/pretty-format': 2.1.5
+ '@vitest/runner': 2.1.5
+ '@vitest/snapshot': 2.1.5
+ '@vitest/spy': 2.1.5
+ '@vitest/utils': 2.1.5
+ chai: 5.1.2
+ debug: 4.3.7
+ expect-type: 1.1.0
+ magic-string: 0.30.12
+ pathe: 1.1.2
+ std-env: 3.8.0
+ tinybench: 2.9.0
+ tinyexec: 0.3.1
+ tinypool: 1.0.2
+ tinyrainbow: 1.2.0
+ vite: 5.4.11(@types/node@22.9.0)
+ vite-node: 2.1.5(@types/node@22.9.0)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/node': 22.9.0
+ transitivePeerDependencies:
+ - less
+ - lightningcss
+ - msw
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ web-streams-polyfill@4.0.0-beta.3: {}
+
+ webidl-conversions@3.0.1: {}
+
+ whatwg-url@5.0.0:
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ why-is-node-running@2.3.0:
+ dependencies:
+ siginfo: 2.0.0
+ stackback: 0.0.2
+
+ ws@8.18.0: {}
+
+ yaml@2.6.0: {}
+
+ yoctocolors@2.1.1: {}
diff --git a/scripts/prerelease-pr/package.json b/scripts/prerelease-pr/package.json
new file mode 100644
index 00000000..32a0bd96
--- /dev/null
+++ b/scripts/prerelease-pr/package.json
@@ -0,0 +1,11 @@
+{
+ "type": "module",
+ "private": true,
+ "dependencies": {
+ "@octokit/rest": "^21.0.2",
+ "@radashi-org/checkout-pr": "link:../checkout-pr",
+ "@radashi-org/common": "link:../common",
+ "execa": "^9.5.1",
+ "mri": "^1.2.0"
+ }
+}
diff --git a/scripts/prerelease-pr/src/main.ts b/scripts/prerelease-pr/src/main.ts
new file mode 100644
index 00000000..7dcf1356
--- /dev/null
+++ b/scripts/prerelease-pr/src/main.ts
@@ -0,0 +1,17 @@
+import { verifyEnvVars } from '@radashi-org/common/verifyEnvVars.ts'
+
+main()
+
+async function main() {
+ const args = verifyEnvVars({
+ deployKey: 'DEPLOY_KEY',
+ prNumber: 'PR_NUMBER',
+ prTitle: 'PR_TITLE',
+ prRepoUrl: 'PR_REPO_URL',
+ prHeadRef: 'PR_HEAD_REF',
+ })
+
+ const { prerelease } = await import('./prerelease.ts')
+
+ await prerelease(args)
+}
diff --git a/scripts/prerelease-pr/src/prerelease.ts b/scripts/prerelease-pr/src/prerelease.ts
new file mode 100644
index 00000000..7b6dfbdf
--- /dev/null
+++ b/scripts/prerelease-pr/src/prerelease.ts
@@ -0,0 +1,131 @@
+import { checkoutPullRequest } from '@radashi-org/checkout-pr'
+import { installDeployKey } from '@radashi-org/common/installDeployKey.ts'
+import { execa, type Options as ExecaOptions } from 'execa'
+
+export async function prerelease({
+ deployKey,
+ prNumber,
+ prTitle,
+ prRepoUrl,
+ prHeadRef,
+}: {
+ deployKey: string
+ prNumber: string
+ prTitle: string
+ prRepoUrl: string
+ prHeadRef: string
+}) {
+ let targetBranch = await get('git', ['rev-parse', '--abbrev-ref', 'HEAD'])
+
+ // If targeting the main branch, release from the beta branch instead.
+ if (targetBranch === 'main') {
+ targetBranch = 'beta'
+
+ await exec('git', ['fetch', 'origin', targetBranch])
+ await exec('git', ['checkout', targetBranch])
+ }
+ // Otherwise, fetch the main branch for rebasing the next branch.
+ else {
+ await exec('git', ['fetch', 'origin', 'main'])
+ }
+
+ // Check if this PR was already merged
+ const existingCommit = await get('git', [
+ 'log',
+ '2be4acf455ebec86e846854dbab57bd0bfbbceb7..HEAD',
+ '--format=%H',
+ '-1',
+ '--grep',
+ `(#${prNumber})$`,
+ ])
+
+ if (existingCommit) {
+ // TODO: filter out the old commit for a new release?
+ console.error(
+ `PR #${prNumber} was already merged in commit ${existingCommit}`,
+ )
+ process.exit(0)
+ }
+
+ // Set git user (needed by git rebase).
+ await exec('git', ['config', '--global', 'user.name', 'Radashi Bot'])
+ await exec('git', [
+ 'config',
+ '--global',
+ 'user.email',
+ '175859458+radashi-bot@users.noreply.github.com',
+ ])
+
+ // Ensure all patches from main are applied to the target branch. If
+ // a merge conflict occurs, a manual rebase is required.
+ await exec('git', ['rebase', '-X', 'ours', 'origin/main'])
+
+ await mergePullRequest({
+ targetBranch,
+ prHeadRef,
+ prRepoUrl,
+ message: `${prTitle} (#${prNumber})`,
+ })
+
+ await installDeployKey(deployKey)
+
+ // The origin must use SSH for the deploy key to work.
+ await execa('git', [
+ 'remote',
+ 'set-url',
+ 'origin',
+ 'git@github.com:radashi-org/radashi.git',
+ ])
+
+ // Push the commit to the target branch
+ await exec('git', ['push', 'origin', targetBranch, '--force'])
+}
+
+async function mergePullRequest({
+ targetBranch,
+ prHeadRef,
+ prRepoUrl,
+ message,
+}: {
+ targetBranch: string
+ prHeadRef: string
+ prRepoUrl: string
+ message: string
+}) {
+ // This creates a "pr" git remote, which we use in the next steps.
+ await checkoutPullRequest({
+ repoUrl: prRepoUrl,
+ headRef: prHeadRef,
+ })
+
+ // Get the commit where the PR branch diverged from the target
+ // branch.
+ const baseCommit = await get('git', [
+ 'merge-base',
+ targetBranch,
+ `pr/${prHeadRef}`,
+ ])
+
+ // Get the first commit author from the PR branch
+ const prAuthor = await get('git', [
+ 'log',
+ '--format=%an <%ae>',
+ '-1',
+ baseCommit + '..' + `pr/${prHeadRef}`,
+ ])
+
+ // Create commit with PR title and number
+ await exec('git', ['commit', '-m', message, '--author', prAuthor])
+}
+
+async function get(cmd: string, args: readonly string[]) {
+ return (await execa(cmd, args)).stdout
+}
+
+function exec(cmd: string, args: readonly string[], opts?: ExecaOptions) {
+ const quotedArgs = args.map(arg =>
+ arg.includes(' ') ? JSON.stringify(arg) : arg,
+ )
+ console.log(`> ${cmd} ${quotedArgs.join(' ')}`)
+ return execa(cmd, args, { stdio: 'inherit', ...opts })
+}
diff --git a/scripts/publish-docs/package.json b/scripts/publish-docs/package.json
new file mode 100644
index 00000000..b7f26a4c
--- /dev/null
+++ b/scripts/publish-docs/package.json
@@ -0,0 +1,13 @@
+{
+ "type": "module",
+ "private": true,
+ "dependencies": {
+ "@radashi-org/changelog": "link:../changelog",
+ "@radashi-org/common": "link:../common",
+ "execa": "^9.5.1",
+ "git-cliff": "2.4.0",
+ "kleur": "^4.1.5",
+ "mri": "^1.2.0",
+ "radashi-db": "link:../radashi-db"
+ }
+}
diff --git a/scripts/docs/ci-publish-docs.ts b/scripts/publish-docs/src/main.ts
similarity index 94%
rename from scripts/docs/ci-publish-docs.ts
rename to scripts/publish-docs/src/main.ts
index df412a9a..b7f8b2d1 100644
--- a/scripts/docs/ci-publish-docs.ts
+++ b/scripts/publish-docs/src/main.ts
@@ -1,10 +1,12 @@
+import { inferNextVersion } from '@radashi-org/changelog'
+import { verifyEnvVars } from '@radashi-org/common/verifyEnvVars.ts'
import { execa } from 'execa'
import { green } from 'kleur/colors'
import mri from 'mri'
import fs from 'node:fs/promises'
import os from 'node:os'
import path from 'node:path'
-import { supabase } from 'radashi-db/supabase.js'
+import { supabase } from 'radashi-db/supabase.ts'
main()
@@ -23,6 +25,10 @@ async function main() {
process.exit(1)
}
+ const { docsDeployKey } = verifyEnvVars({
+ docsDeployKey: 'DOCS_DEPLOY_KEY?',
+ })
+
let metaId: string
if (newVersion.startsWith('refs/tags/')) {
const tag = newVersion.slice('refs/tags/'.length)
@@ -97,8 +103,8 @@ async function main() {
}
}
- if (process.env.DOCS_DEPLOY_KEY) {
- await installDeployKey(process.env.DOCS_DEPLOY_KEY)
+ if (docsDeployKey) {
+ await installDeployKey(docsDeployKey)
}
log('Publishing docs for version:', newVersion)
@@ -222,11 +228,7 @@ async function coerceTagToVersion(tag: string) {
version = tag.slice(1)
metaId = 'stable_version'
} else if (tag === 'beta' || tag === 'next') {
- const gitCliffBin = './scripts/docs/node_modules/.bin/git-cliff'
-
- version = await execa(gitCliffBin, ['--bumped-version']).then(r =>
- r.stdout.replace(/^v/, ''),
- )
+ version = await inferNextVersion()
if (tag === 'next') {
version += '-alpha'
diff --git a/scripts/versions/package.json b/scripts/publish-version/package.json
similarity index 62%
rename from scripts/versions/package.json
rename to scripts/publish-version/package.json
index 437e6a30..99964c5f 100644
--- a/scripts/versions/package.json
+++ b/scripts/publish-version/package.json
@@ -3,18 +3,14 @@
"private": true,
"dependencies": {
"@octokit/rest": "^21.0.2",
- "execa": "^9.3.0",
- "fast-glob": "^3.3.2",
+ "@radashi-org/changelog": "link:../changelog",
+ "@radashi-org/common": "link:../common",
+ "execa": "^9.5.1",
"git-cliff": "2.4.0",
"kleur": "^4.1.5",
"mri": "^1.2.0",
"radashi": "link:../../src",
"radashi-db": "link:../radashi-db",
- "tsx": "^4.17.0"
- },
- "pnpm": {
- "overrides": {
- "execa": "^9.3.0"
- }
+ "tinyglobby": "^0.2.10"
}
}
diff --git a/scripts/versions/src/dedent.ts b/scripts/publish-version/src/dedent.ts
similarity index 97%
rename from scripts/versions/src/dedent.ts
rename to scripts/publish-version/src/dedent.ts
index dc974255..131939e9 100644
--- a/scripts/versions/src/dedent.ts
+++ b/scripts/publish-version/src/dedent.ts
@@ -1,4 +1,4 @@
-import { isArray } from 'radashi/typed/isArray.js'
+import { isArray } from 'radashi/typed/isArray.ts'
/**
* Remove indentation from a string. The given string is expected to
diff --git a/scripts/versions/ci-publish.ts b/scripts/publish-version/src/main.ts
similarity index 69%
rename from scripts/versions/ci-publish.ts
rename to scripts/publish-version/src/main.ts
index 14aa4478..82c294c1 100644
--- a/scripts/versions/ci-publish.ts
+++ b/scripts/publish-version/src/main.ts
@@ -1,11 +1,11 @@
-import { verifyEnvVars } from '../common/verifyEnvVars'
+import { verifyEnvVars } from '@radashi-org/common/verifyEnvVars.ts'
main()
async function main() {
const args = await parseArgs()
- const { publishVersion, VALID_TAGS } = await import('./src/publishVersion')
+ const { publishVersion, VALID_TAGS } = await import('./publishVersion.ts')
if (args.tag && !VALID_TAGS.includes(args.tag)) {
console.error(`Error: --tag must be one of [${VALID_TAGS.join(', ')}]`)
@@ -21,20 +21,20 @@ async function parseArgs() {
npmToken,
radashiBotToken,
deployKey,
- nightlyDeployKey,
+ canaryDeployKey,
} = verifyEnvVars({
gitCliffToken: 'GIT_CLIFF_PAT',
npmToken: 'NPM_TOKEN',
radashiBotToken: 'RADASHI_BOT_TOKEN',
deployKey: 'DEPLOY_KEY',
- nightlyDeployKey: 'NIGHTLY_DEPLOY_KEY',
+ canaryDeployKey: 'NIGHTLY_DEPLOY_KEY',
})
const { default: mri } = await import('mri')
const argv = mri(process.argv.slice(2), {
- boolean: ['no-push'],
- string: ['tag', 'latest'],
+ boolean: ['no-push', 'patch', 'latest'],
+ string: ['tag'],
})
if (argv.latest && argv.tag) {
@@ -42,15 +42,16 @@ async function parseArgs() {
process.exit(1)
}
- type ValidTag = typeof import('./src/publishVersion').VALID_TAGS[number]
+ type ValidTag = typeof import('./publishVersion.ts').VALID_TAGS[number]
return {
push: !argv['no-push'],
tag: argv.tag as ValidTag,
+ patch: argv.patch,
gitCliffToken,
npmToken,
radashiBotToken,
deployKey,
- nightlyDeployKey,
+ canaryDeployKey,
}
}
diff --git a/scripts/versions/src/publishVersion.ts b/scripts/publish-version/src/publishVersion.ts
similarity index 67%
rename from scripts/versions/src/publishVersion.ts
rename to scripts/publish-version/src/publishVersion.ts
index c98d77ac..16008bd7 100644
--- a/scripts/versions/src/publishVersion.ts
+++ b/scripts/publish-version/src/publishVersion.ts
@@ -1,16 +1,16 @@
import { Octokit } from '@octokit/rest'
+import { generateChangelog, inferNextVersion } from '@radashi-org/changelog'
+import { installDeployKey } from '@radashi-org/common/installDeployKey.ts'
import { execa } from 'execa'
-import glob from 'fast-glob'
import { green } from 'kleur/colors'
import crypto from 'node:crypto'
import fs from 'node:fs/promises'
-import { sift } from 'radashi/array/sift.js'
-import { installDeployKey } from '../../common/installDeployKey'
-import { dedent } from './dedent'
-import { trackVersion } from './trackVersion'
+import { sift } from 'radashi/array/sift.ts'
+import { glob } from 'tinyglobby'
+import { dedent } from './dedent.ts'
+import { trackVersion } from './trackVersion.ts'
-// This is the commit that Radashi's changelog is based on.
-const changelogBaseSha = '2be4acf455ebec86e846854dbab57bd0bfbbceb7'
+export const VALID_TAGS = ['beta', 'next'] as const
export const VALID_TAGS = ['beta', 'next'] as const
@@ -26,7 +26,7 @@ export async function publishVersion(args: {
npmToken?: string
radashiBotToken: string
deployKey?: string
- nightlyDeployKey?: string
+ canaryDeployKey?: string
}) {
if (!process.env.CI) {
throw new Error(
@@ -43,12 +43,10 @@ export async function publishVersion(args: {
log(`Last stable version: ${stableVersion}`)
- const gitCliffBin = './scripts/versions/node_modules/.bin/git-cliff'
-
// Determine the next version
- let newVersion = await execa(gitCliffBin, ['--bumped-version'], {
- env: { GITHUB_TOKEN: args.gitCliffToken },
- }).then(r => r.stdout.replace(/^v/, ''))
+ let newVersion = await inferNextVersion({
+ token: args.gitCliffToken,
+ })
if (stableVersion === newVersion) {
log('🚫 No version bump detected')
@@ -56,40 +54,18 @@ export async function publishVersion(args: {
}
const [newMajorVersion, newMinorVersion] = newVersion.split('.')
+ const [lastMajorVersion, lastMinorVersion] = stableVersion.split('.')
if (args.patch) {
- // Get the list of commits that have been added since the last
- // stable version.
- const commits = await execa('git', [
- 'log',
- 'v' + stableVersion + '..HEAD',
- '--pretty=format:%h\t%s',
- ]).then(r =>
- r.stdout
- .split('\n')
- .map(line => line.split('\t') as [commit: string, subject: string]),
- )
-
- // Use the patch branch for patch releases, since we need to
- // filter out feature commits.
- await execa('git', ['fetch', 'origin', 'patch'])
- await execa('git', ['checkout', 'patch'])
-
- // Apply every commit except feature commits and breaking changes.
- for (const [commit, subject] of commits) {
- if (/^(feat|[^ ]+!:)/.test(subject)) {
- continue
- }
- try {
- await execa('git', ['cherry-pick', commit])
- } catch (error) {
- // Log and reset, then continue to the next commit.
- console.error(error)
- await execa('git', ['cherry-pick', '--abort'])
- }
+ if (lastMajorVersion !== newMajorVersion) {
+ log('🚫 Breaking change detected. Patch cannot be published.')
+ process.exit(1)
+ }
+ if (lastMinorVersion !== newMinorVersion) {
+ log('🚫 Feature commit detected. Patch cannot be published.')
+ process.exit(1)
}
} else if (args.tag) {
- const [lastMajorVersion] = stableVersion.split('.')
if (lastMajorVersion !== newMajorVersion && args.tag === 'beta') {
log('🚫 Expected a patch or minor increment for "beta" tag')
process.exit(1)
@@ -100,7 +76,7 @@ export async function publishVersion(args: {
}
const buildDigest = (await computeBuildDigest()).slice(0, 7)
- newVersion = `${newVersion}-${args.tag}.${buildDigest}`
+ newVersion = `${newVersion}-beta.${buildDigest}`
}
log(`Determined new version: ${newVersion}`)
@@ -149,23 +125,19 @@ export async function publishVersion(args: {
const changelogFile = `CHANGELOG${args.tag === 'next' ? '-next' : ''}.md`
- // Generate Changelog
- log(`Generating changelog from ${changelogBaseSha.slice(0, 7)} to HEAD`)
- const gitCliffArgs = [`${changelogBaseSha}..HEAD`, '-o', changelogFile]
- if (!args.tag) {
- gitCliffArgs.push('--tag', `v${newVersion}`)
- }
- await execa(gitCliffBin, gitCliffArgs, {
- env: { GITHUB_TOKEN: args.gitCliffToken },
+ log('Generating changelog')
+ await generateChangelog({
+ token: args.gitCliffToken,
+ outFile: changelogFile,
+ newVersion,
})
// Check if CHANGELOG.md has changed
- await execa('git', ['status', '--porcelain', changelogFile]).then(status => {
+ await execa('git', ['status', '--porcelain', changelogFile]).then(status =>
if (!status.stdout.trim()) {
log('No changes detected in %s', changelogFile)
process.exit(1)
- }
- })
+ })
// Commit files
const committedFiles = [changelogFile]
@@ -198,22 +170,12 @@ export async function publishVersion(args: {
log('Would have pushed to origin, but --no-push was set')
}
- const exactTag = `v${newVersion}`
- const preReleaseTag =
- args.tag === 'next' ? `v${newMajorVersion}-next` : args.tag
+ // The "canary" remote is where exact pre-release tags are pushed,
+ // so that they don't clutter the main repo.
+ const remoteName = args.tag ? 'canary' : 'origin'
+ const newTag = `v${newVersion}`
if (args.push) {
- if (preReleaseTag) {
- log(`Force-pushing ${preReleaseTag} tag`)
- await execa('git', ['tag', preReleaseTag, '-f'])
- await execa('git', ['push', 'origin', preReleaseTag, '-f'], {
- stdio: 'inherit',
- })
- }
-
- // The "nightly" remote is where exact pre-release tags are
- // pushed, so that they don't clutter the main repo.
- const remoteName = args.tag ? 'nightly' : 'origin'
if (args.tag) {
await execa(
'git',
@@ -221,21 +183,20 @@ export async function publishVersion(args: {
'remote',
'add',
remoteName,
- 'git@github.com:radashi-org/radashi-nightly.git',
+ 'git@github.com:radashi-org/radashi-canary.git',
],
{ reject: false },
)
- // Use the nightly deploy key if we're pushing a nightly tag.
- if (args.nightlyDeployKey) {
- await installDeployKey(args.nightlyDeployKey)
+ // Use the canary deploy key if we're pushing a canary tag.
+ if (args.canaryDeployKey) {
+ await installDeployKey(args.canaryDeployKey)
}
}
- log(`Pushing new tag ${exactTag}`)
-
- await execa('git', ['tag', exactTag])
- await execa('git', ['push', remoteName, exactTag], {
+ log(`Pushing new tag ${newTag}`)
+ await execa('git', ['tag', newTag])
+ await execa('git', ['push', remoteName, newTag], {
stdio: 'inherit',
})
} else {
@@ -276,28 +237,51 @@ export async function publishVersion(args: {
const octokit = new Octokit({ auth: args.radashiBotToken })
- log('Dispatching publish-docs workflow')
- await octokit.actions.createWorkflowDispatch({
- owner: 'radashi-org',
- repo: 'radashi',
- workflow_id: 'publish-docs.yml',
- ref: 'refs/tags/' + (preReleaseTag ?? exactTag),
- })
+ if (args.push && (args.patch || args.tag)) {
+ log('Creating a release on GitHub')
+ await octokit.rest.repos.createRelease({
+ owner: 'radashi-org',
+ repo: args.tag ? 'radashi-canary' : 'radashi',
+ tag_name: newTag,
+ body: await generateChangelog({
+ minimal: true,
+ base: 'v' + stableVersion,
+ token: args.gitCliffToken,
+ }),
+ })
+ }
- log('Updating version in deno.json')
- const denoJson = {
- ...JSON.parse(await fs.readFile('deno.json', 'utf8')),
- version: newVersion,
+ if (args.push && !args.tag) {
+ log('Dispatching publish-docs workflow')
+ await octokit.actions.createWorkflowDispatch({
+ owner: 'radashi-org',
+ repo: 'radashi',
+ workflow_id: 'publish-docs.yml',
+ ref: 'refs/tags/' + newTag,
+ })
+ } else {
+ log('Would have dispatched publish-docs workflow, but --no-push was set')
}
- await fs.writeFile('deno.json', JSON.stringify(denoJson, null, 2))
- log('Publishing to JSR.io')
- await execa('pnpm', ['dlx', 'jsr', 'publish', '--allow-dirty'], {
- stdio: 'inherit',
- }).catch(error => {
- // Don't exit early if JSR publish fails
- console.error('Failed to publish to JSR:', error)
- })
+ // Skip JSR dry-run publish, since `pnpm lint` already does that.
+ if (args.push) {
+ log('Updating version in deno.json')
+ const denoJson = {
+ ...JSON.parse(await fs.readFile('deno.json', 'utf8')),
+ version: newVersion,
+ }
+ await fs.writeFile('deno.json', JSON.stringify(denoJson, null, 2))
+
+ log('Publishing to JSR.io')
+ await execa('pnpm', ['dlx', 'jsr', 'publish', '--allow-dirty'], {
+ stdio: 'inherit',
+ }).catch(error => {
+ // Don't exit early if JSR publish fails
+ console.error('Failed to publish to JSR:', error)
+ })
+ } else {
+ log('Would have published to JSR.io, but --no-push was set')
+ }
const prNumbers = await getPrNumbers(`${latestTagSha}..${currentSha}`)
log(
@@ -310,7 +294,7 @@ export async function publishVersion(args: {
// Comment on Pull Requests
if (args.push) {
for (const prNumber of prNumbers) {
- const adjective = args.tag ? 'nightly' : 'stable'
+ const adjective = args.tag ? 'canary' : 'stable'
let body = dedent`
A ${adjective} release \`${newVersion}\` has been published to NPM. :rocket:
diff --git a/scripts/versions/src/trackVersion.ts b/scripts/publish-version/src/trackVersion.ts
similarity index 92%
rename from scripts/versions/src/trackVersion.ts
rename to scripts/publish-version/src/trackVersion.ts
index b506c71c..4c00177b 100644
--- a/scripts/versions/src/trackVersion.ts
+++ b/scripts/publish-version/src/trackVersion.ts
@@ -1,4 +1,4 @@
-import { supabase } from 'radashi-db/supabase.js'
+import { supabase } from 'radashi-db/supabase.ts'
export async function trackVersion(
version: string,
diff --git a/scripts/radashi-db/gen-types.ts b/scripts/radashi-db/gen-types.ts
new file mode 100644
index 00000000..55240df8
--- /dev/null
+++ b/scripts/radashi-db/gen-types.ts
@@ -0,0 +1,31 @@
+import { execa } from 'execa'
+import { writeFile } from 'node:fs/promises'
+import { dirname } from 'node:path'
+import { fileURLToPath } from 'node:url'
+
+// Get the directory of this script
+const scriptDir = dirname(fileURLToPath(import.meta.url))
+
+// cSpell:disable-next-line
+const projectId = 'yucyhkpmrdbucitpovyj'
+
+// This script generates the ./src/supabase.types.ts module to provide
+// type-safe access to Radashi's Supabase instance.
+await execa(
+ 'pnpm',
+ [
+ 'dlx',
+ 'supabase@1.187.10',
+ 'gen',
+ 'types',
+ '--lang=typescript',
+ `--project-id=${projectId}`,
+ '--schema=public',
+ ],
+ {
+ stdio: ['inherit', 'pipe', 'inherit'],
+ },
+).then(async result => {
+ // Write output to file
+ await writeFile(`${scriptDir}/src/supabase-types.ts`, result.stdout)
+})
diff --git a/scripts/radashi-db/package.json b/scripts/radashi-db/package.json
index 9c28c889..8fd269eb 100644
--- a/scripts/radashi-db/package.json
+++ b/scripts/radashi-db/package.json
@@ -3,6 +3,13 @@
"private": true,
"dependencies": {
"@supabase/supabase-js": "^2.45.0",
- "algoliasearch": "^4.24.0"
+ "algoliasearch": "^4.24.0",
+ "execa": "^9.5.1"
+ },
+ "exports": {
+ "./*": "./src/*"
+ },
+ "scripts": {
+ "gen-types": "node --experimental-strip-types ./gen-types.ts"
}
}
diff --git a/scripts/radashi-db/pnpm-lock.yaml b/scripts/radashi-db/pnpm-lock.yaml
deleted file mode 100644
index d5135896..00000000
--- a/scripts/radashi-db/pnpm-lock.yaml
+++ /dev/null
@@ -1,282 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@supabase/supabase-js':
- specifier: ^2.45.0
- version: 2.45.6
- algoliasearch:
- specifier: ^4.24.0
- version: 4.24.0
-
-packages:
-
- '@algolia/cache-browser-local-storage@4.24.0':
- resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==}
-
- '@algolia/cache-common@4.24.0':
- resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==}
-
- '@algolia/cache-in-memory@4.24.0':
- resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==}
-
- '@algolia/client-account@4.24.0':
- resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==}
-
- '@algolia/client-analytics@4.24.0':
- resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==}
-
- '@algolia/client-common@4.24.0':
- resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==}
-
- '@algolia/client-personalization@4.24.0':
- resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==}
-
- '@algolia/client-search@4.24.0':
- resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==}
-
- '@algolia/logger-common@4.24.0':
- resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==}
-
- '@algolia/logger-console@4.24.0':
- resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==}
-
- '@algolia/recommend@4.24.0':
- resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==}
-
- '@algolia/requester-browser-xhr@4.24.0':
- resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==}
-
- '@algolia/requester-common@4.24.0':
- resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==}
-
- '@algolia/requester-node-http@4.24.0':
- resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==}
-
- '@algolia/transporter@4.24.0':
- resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==}
-
- '@supabase/auth-js@2.65.1':
- resolution: {integrity: sha512-IA7i2Xq2SWNCNMKxwmPlHafBQda0qtnFr8QnyyBr+KaSxoXXqEzFCnQ1dGTy6bsZjVBgXu++o3qrDypTspaAPw==}
-
- '@supabase/functions-js@2.4.3':
- resolution: {integrity: sha512-sOLXy+mWRyu4LLv1onYydq+10mNRQ4rzqQxNhbrKLTLTcdcmS9hbWif0bGz/NavmiQfPs4ZcmQJp4WqOXlR4AQ==}
-
- '@supabase/node-fetch@2.6.15':
- resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==}
- engines: {node: 4.x || >=6.0.0}
-
- '@supabase/postgrest-js@1.16.3':
- resolution: {integrity: sha512-HI6dsbW68AKlOPofUjDTaosiDBCtW4XAm0D18pPwxoW3zKOE2Ru13Z69Wuys9fd6iTpfDViNco5sgrtnP0666A==}
-
- '@supabase/realtime-js@2.10.7':
- resolution: {integrity: sha512-OLI0hiSAqQSqRpGMTUwoIWo51eUivSYlaNBgxsXZE7PSoWh12wPRdVt0psUMaUzEonSB85K21wGc7W5jHnT6uA==}
-
- '@supabase/storage-js@2.7.1':
- resolution: {integrity: sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==}
-
- '@supabase/supabase-js@2.45.6':
- resolution: {integrity: sha512-qVXSSUhhIqdFnF2VUGgeecPvw1cDW6+avcTbRgur4LaGnzrJCbM3Rx7g81/SSZjjeqYOtmHuKWhiHzV/EN8Ktw==}
-
- '@types/node@22.7.7':
- resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==}
-
- '@types/phoenix@1.6.5':
- resolution: {integrity: sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==}
-
- '@types/ws@8.5.12':
- resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==}
-
- algoliasearch@4.24.0:
- resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==}
-
- tr46@0.0.3:
- resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
-
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- webidl-conversions@3.0.1:
- resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
-
- whatwg-url@5.0.0:
- resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
-
- ws@8.18.0:
- resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: '>=5.0.2'
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
-
-snapshots:
-
- '@algolia/cache-browser-local-storage@4.24.0':
- dependencies:
- '@algolia/cache-common': 4.24.0
-
- '@algolia/cache-common@4.24.0': {}
-
- '@algolia/cache-in-memory@4.24.0':
- dependencies:
- '@algolia/cache-common': 4.24.0
-
- '@algolia/client-account@4.24.0':
- dependencies:
- '@algolia/client-common': 4.24.0
- '@algolia/client-search': 4.24.0
- '@algolia/transporter': 4.24.0
-
- '@algolia/client-analytics@4.24.0':
- dependencies:
- '@algolia/client-common': 4.24.0
- '@algolia/client-search': 4.24.0
- '@algolia/requester-common': 4.24.0
- '@algolia/transporter': 4.24.0
-
- '@algolia/client-common@4.24.0':
- dependencies:
- '@algolia/requester-common': 4.24.0
- '@algolia/transporter': 4.24.0
-
- '@algolia/client-personalization@4.24.0':
- dependencies:
- '@algolia/client-common': 4.24.0
- '@algolia/requester-common': 4.24.0
- '@algolia/transporter': 4.24.0
-
- '@algolia/client-search@4.24.0':
- dependencies:
- '@algolia/client-common': 4.24.0
- '@algolia/requester-common': 4.24.0
- '@algolia/transporter': 4.24.0
-
- '@algolia/logger-common@4.24.0': {}
-
- '@algolia/logger-console@4.24.0':
- dependencies:
- '@algolia/logger-common': 4.24.0
-
- '@algolia/recommend@4.24.0':
- dependencies:
- '@algolia/cache-browser-local-storage': 4.24.0
- '@algolia/cache-common': 4.24.0
- '@algolia/cache-in-memory': 4.24.0
- '@algolia/client-common': 4.24.0
- '@algolia/client-search': 4.24.0
- '@algolia/logger-common': 4.24.0
- '@algolia/logger-console': 4.24.0
- '@algolia/requester-browser-xhr': 4.24.0
- '@algolia/requester-common': 4.24.0
- '@algolia/requester-node-http': 4.24.0
- '@algolia/transporter': 4.24.0
-
- '@algolia/requester-browser-xhr@4.24.0':
- dependencies:
- '@algolia/requester-common': 4.24.0
-
- '@algolia/requester-common@4.24.0': {}
-
- '@algolia/requester-node-http@4.24.0':
- dependencies:
- '@algolia/requester-common': 4.24.0
-
- '@algolia/transporter@4.24.0':
- dependencies:
- '@algolia/cache-common': 4.24.0
- '@algolia/logger-common': 4.24.0
- '@algolia/requester-common': 4.24.0
-
- '@supabase/auth-js@2.65.1':
- dependencies:
- '@supabase/node-fetch': 2.6.15
-
- '@supabase/functions-js@2.4.3':
- dependencies:
- '@supabase/node-fetch': 2.6.15
-
- '@supabase/node-fetch@2.6.15':
- dependencies:
- whatwg-url: 5.0.0
-
- '@supabase/postgrest-js@1.16.3':
- dependencies:
- '@supabase/node-fetch': 2.6.15
-
- '@supabase/realtime-js@2.10.7':
- dependencies:
- '@supabase/node-fetch': 2.6.15
- '@types/phoenix': 1.6.5
- '@types/ws': 8.5.12
- ws: 8.18.0
- transitivePeerDependencies:
- - bufferutil
- - utf-8-validate
-
- '@supabase/storage-js@2.7.1':
- dependencies:
- '@supabase/node-fetch': 2.6.15
-
- '@supabase/supabase-js@2.45.6':
- dependencies:
- '@supabase/auth-js': 2.65.1
- '@supabase/functions-js': 2.4.3
- '@supabase/node-fetch': 2.6.15
- '@supabase/postgrest-js': 1.16.3
- '@supabase/realtime-js': 2.10.7
- '@supabase/storage-js': 2.7.1
- transitivePeerDependencies:
- - bufferutil
- - utf-8-validate
-
- '@types/node@22.7.7':
- dependencies:
- undici-types: 6.19.8
-
- '@types/phoenix@1.6.5': {}
-
- '@types/ws@8.5.12':
- dependencies:
- '@types/node': 22.7.7
-
- algoliasearch@4.24.0:
- dependencies:
- '@algolia/cache-browser-local-storage': 4.24.0
- '@algolia/cache-common': 4.24.0
- '@algolia/cache-in-memory': 4.24.0
- '@algolia/client-account': 4.24.0
- '@algolia/client-analytics': 4.24.0
- '@algolia/client-common': 4.24.0
- '@algolia/client-personalization': 4.24.0
- '@algolia/client-search': 4.24.0
- '@algolia/logger-common': 4.24.0
- '@algolia/logger-console': 4.24.0
- '@algolia/recommend': 4.24.0
- '@algolia/requester-browser-xhr': 4.24.0
- '@algolia/requester-common': 4.24.0
- '@algolia/requester-node-http': 4.24.0
- '@algolia/transporter': 4.24.0
-
- tr46@0.0.3: {}
-
- undici-types@6.19.8: {}
-
- webidl-conversions@3.0.1: {}
-
- whatwg-url@5.0.0:
- dependencies:
- tr46: 0.0.3
- webidl-conversions: 3.0.1
-
- ws@8.18.0: {}
diff --git a/scripts/radashi-db/algolia.ts b/scripts/radashi-db/src/algolia.ts
similarity index 100%
rename from scripts/radashi-db/algolia.ts
rename to scripts/radashi-db/src/algolia.ts
diff --git a/scripts/radashi-db/supabase.types.ts b/scripts/radashi-db/src/supabase-types.ts
similarity index 100%
rename from scripts/radashi-db/supabase.types.ts
rename to scripts/radashi-db/src/supabase-types.ts
diff --git a/scripts/radashi-db/src/supabase.ts b/scripts/radashi-db/src/supabase.ts
new file mode 100644
index 00000000..5a5ce145
--- /dev/null
+++ b/scripts/radashi-db/src/supabase.ts
@@ -0,0 +1,15 @@
+import { createClient } from '@supabase/supabase-js'
+import type { Database } from './supabase-types.ts'
+
+if (!process.env.SUPABASE_KEY) {
+ throw new Error('SUPABASE_KEY is not set')
+}
+
+export const supabase = createClient(
+ 'https://yucyhkpmrdbucitpovyj.supabase.co',
+ process.env.SUPABASE_KEY,
+)
+
+process.env.SUPABASE_KEY = ''
+
+export * from './supabase-types.ts'
diff --git a/scripts/radashi-db/supabase-gen-types.sh b/scripts/radashi-db/supabase-gen-types.sh
deleted file mode 100644
index 0da36234..00000000
--- a/scripts/radashi-db/supabase-gen-types.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-
-# Get the directory of this script
-SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
-# cSpell:disable-next-line
-PROJECT_ID="yucyhkpmrdbucitpovyj"
-
-pnpm dlx supabase@1.187.10 gen types --lang=typescript --project-id=$PROJECT_ID --schema=public > $SCRIPT_DIR/supabase.types.ts
diff --git a/scripts/radashi-db/supabase.ts b/scripts/radashi-db/supabase.ts
deleted file mode 100644
index c8af189d..00000000
--- a/scripts/radashi-db/supabase.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { createClient } from '@supabase/supabase-js'
-import type { Database } from './supabase.types'
-
-export const supabase = createClient(
- 'https://yucyhkpmrdbucitpovyj.supabase.co',
- process.env.SUPABASE_KEY!,
-)
-
-export * from './supabase.types'
diff --git a/scripts/readme.md b/scripts/readme.md
new file mode 100644
index 00000000..13c5f5dc
--- /dev/null
+++ b/scripts/readme.md
@@ -0,0 +1,99 @@
+Radashi maintains a plethora of custom scripts to help with development and maintenance. Many of them can be run through the `pnpm` CLI. Others are used by the GitHub Actions workflows. Some are executed manually by the maintainers.
+
+Below is a list of all the scripts in this directory, categorized by purpose. If you're looking to contribute to Radashi, you may find the scripts with a `🏎` icon to be useful, while the rest are likely irrelevant to you.
+
+**Legend:**
+- 🏎 = Contribution scripts
+- 🔧 = Maintenance scripts
+
+## Scripts
+
+- `format` 🏎
+ Format the codebase using Biome and/or Prettier, depending on which files are being formatted. You may pass filter patterns to only format certain files. If the repository is in a clean state, formatting fixes are automatically committed.
+ ```
+ pnpm format
+ pnpm format src
+ ```
+
+- `lint` 🏎
+ Lint the codebase using Biome, CSpell, TypeScript's compiler, and/or the JSR.io CLI. You may pass filter patterns to only lint certain files. The `--base` option can be used to lint only the files that have changed since the specified commit. The `./scripts/` directory won't be linted if you pass `--ignore-scripts`.
+ ```
+ pnpm lint
+ pnpm lint src
+ pnpm lint --base
+ pnpm lint --ignore-scripts
+ ```
+
+- `test-branch` 🏎
+ Run tests affected by changes made in the current branch.
+ ```
+ pnpm test-branch
+ ```
+
+- `test-single` 🏎
+ Run tests for a single function. While you *could* use `pnpm test `, this script will also run tests for functions that depend on the specified function, and test coverage will only be reported for the tested functions.
+ ```
+ pnpm test-single
+ ```
+
+- `bench-file` 🔧
+ Used by the `bench-main` and `bench-pr` workflows to run benchmarks for a single file. This is a workaround for out-of-memory issues with Vitest.
+
+- `checkout-pr` 🔧
+ Checkout a pull request into the current branch, but don't commit it. This is used by the `bench-pr` and `register-pr` workflows.
+
+- `publish-version` 🔧
+ Publish a new version to NPM. Used by the `publish-beta`, `publish-latest`, and `publish-patch` workflows.
+
+- `release-notes` 🔧
+ Generate an initial draft of release notes using `git log -p` output and Anthropic Claude.
+
+- `seed-benchmarks` 🔧
+ Seed the `benchmarks` table in Radashi's Supabase instance with benchmark results.
+
+- `seed-merged-functions` 🔧
+ Seed the `merged_functions` table in Radashi's Supabase instance with merged functions.
+
+- `seed-proposed-functions` 🔧
+ Seed the `proposed_functions` table in Radashi's Supabase instance with proposed functions.
+
+- `update-browserslist` 🔧
+ Update the `browserslist` property of `package.json` using the `browserslist-generator` package, so browsers with ES2017 support and Node.js 16+ are included.
+ ```
+ pnpm update-browserslist
+ ```
+
+## Workflows
+
+- `bench-main`
+ Run benchmarks on the `main` branch.
+
+- `bench-pr`
+ Run benchmarks on a pull request.
+
+- `bundle-impact`
+ Analyze the impact of a pull request on the bundle size.
+ You can run this locally with `pnpm bundle-impact` to check the impact of your changes (e.g. before opening a pull request).
+
+- `prerelease-pr`
+ Copy a pull request into the `beta` or `next` branch.
+
+- `register-pr`
+ Register a pull request with Radashi's Supabase instance and its Algolia instance. This registry is used by the [Radashi VSCode extension](https://github.com/radashi-org/radashi-tools/tree/master/packages/radashi-vscode)'s `Search Functions` command, which not only searches official functions, but also includes proposed functions from the Pull Requests tab!
+
+## Packages
+
+- `benchmarks`
+ Functions for benchmarking Radashi's performance.
+
+- `biome-config`
+ Biome configuration for Radashi.
+
+- `changelog`
+ Functions for generating a changelog and inferring the next version based on conventional commits. We use the amazing [git-cliff](https://github.com/orhun/git-cliff) package for changelog generation and conventional commit parsing.
+
+- `common`
+ Various utilities used by Radashi scripts.
+
+- `radashi-db`
+ Client libraries for Radashi's Supabase and Algolia databases.
diff --git a/scripts/register-pr/package.json b/scripts/register-pr/package.json
new file mode 100644
index 00000000..228d4d88
--- /dev/null
+++ b/scripts/register-pr/package.json
@@ -0,0 +1,19 @@
+{
+ "type": "module",
+ "private": true,
+ "exports": {
+ ".": "./src/register-pr.ts",
+ "./*": "./src/*"
+ },
+ "dependencies": {
+ "@octokit/rest": "^21.0.1",
+ "@radashi-org/common": "link:../common",
+ "@types/markdown-it": "14.1.2",
+ "markdown-it": "14.1.0",
+ "markdown-it-front-matter": "0.2.4",
+ "radashi": "link:../../src",
+ "radashi-db": "link:../radashi-db",
+ "ultrahtml": "^1.5.3",
+ "yaml": "^2.5.0"
+ }
+}
diff --git a/scripts/functions/ci-register-pr.ts b/scripts/register-pr/src/main.ts
similarity index 82%
rename from scripts/functions/ci-register-pr.ts
rename to scripts/register-pr/src/main.ts
index 30e33357..7acc6cc6 100644
--- a/scripts/functions/ci-register-pr.ts
+++ b/scripts/register-pr/src/main.ts
@@ -1,8 +1,21 @@
-import type { Octokit } from '@octokit/rest'
+import { Octokit } from '@octokit/rest'
+import { verifyEnvVars } from '@radashi-org/common/verifyEnvVars.ts'
import fs from 'node:fs/promises'
-import { registerPullRequest } from './src/register-pr'
+import { registerPullRequest } from './register-pr.ts'
-export async function run(pr: PullRequest, octokit: Octokit) {
+main()
+
+async function main() {
+ const { githubToken, prPayload } = verifyEnvVars({
+ githubToken: 'GITHUB_TOKEN',
+ prPayload: 'PULL_REQUEST',
+ })
+
+ const octokit = new Octokit({
+ auth: githubToken,
+ })
+
+ const pr: PullRequest = JSON.parse(prPayload)
const owner = pr.head.repo.owner.login
const repo = pr.head.repo.name
diff --git a/scripts/functions/src/util/markdown.ts b/scripts/register-pr/src/markdown.ts
similarity index 100%
rename from scripts/functions/src/util/markdown.ts
rename to scripts/register-pr/src/markdown.ts
diff --git a/scripts/functions/src/register-pr.ts b/scripts/register-pr/src/register-pr.ts
similarity index 98%
rename from scripts/functions/src/register-pr.ts
rename to scripts/register-pr/src/register-pr.ts
index 924e84c5..c44c7fa2 100644
--- a/scripts/functions/src/register-pr.ts
+++ b/scripts/register-pr/src/register-pr.ts
@@ -1,8 +1,8 @@
import path from 'node:path'
-import { algolia } from 'radashi-db/algolia'
-import { supabase, type TablesInsert } from 'radashi-db/supabase'
-import { memo } from 'radashi/curry/memo.js'
-import { renderPageMarkdown } from './util/markdown'
+import { algolia } from 'radashi-db/algolia.ts'
+import { supabase, type TablesInsert } from 'radashi-db/supabase.ts'
+import { memo } from 'radashi/curry/memo.ts'
+import { renderPageMarkdown } from './markdown.ts'
type PrFileStatus =
| 'added'
diff --git a/scripts/release-notes.sh b/scripts/release-notes.sh
deleted file mode 100755
index 239932b1..00000000
--- a/scripts/release-notes.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-if [ ! -d "scripts/release-notes/node_modules" ]; then
- echo "Node modules not found. Installing dependencies..."
- pnpm install -C scripts/release-notes
-fi
-
-pnpm -s scripts/release-notes/node_modules/.bin/tsx scripts/release-notes/release-notes.ts "$@"
diff --git a/scripts/release-notes/README.md b/scripts/release-notes/README.md
index 37e34c6c..c6bd3f99 100644
--- a/scripts/release-notes/README.md
+++ b/scripts/release-notes/README.md
@@ -1,5 +1,38 @@
-This script collects all "fix" and "feat" commits since the last stable version. Then it concatenates their `git log -p` outputs into a single file, which can be fed into an LLM for high-quality release notes.
+Generate release notes using `git log -p` output and Anthropic
+Claude.
+#### Required Environment Variables
+
+- `ANTHROPIC_API_KEY`
+- `GITHUB_TOKEN` (only required if `--publish` is used)
+
+### Usage
+
+```sh
+# Generate release notes for changes between the last two
+# stable versions.
+scripts/run.js release-notes
+
+# Generate release notes for changes between the last stable
+# version and a given commit ref (e.g. HEAD).
+scripts/run.js release-notes
```
-tsx scripts/release-notes/release-notes.ts > release-notes.diff
+
+#### Options
+
+```sh
+-o, --output
+ Write the release notes to a file.
+
+--publish
+ Publish the release notes to GitHub.
+
+--draft
+ Publish the release notes as a draft.
+
+--prerelease
+ Publish the release notes as a prerelease.
+
+--limit
+ Limit the number of commits to include in each section. (For testing purposes)
```
diff --git a/scripts/release-notes/package.json b/scripts/release-notes/package.json
index e2e52b56..32a90c9a 100644
--- a/scripts/release-notes/package.json
+++ b/scripts/release-notes/package.json
@@ -2,11 +2,11 @@
"private": true,
"dependencies": {
"@anthropic-ai/sdk": "^0.25.0",
- "@types/node": "^22.1.0",
- "execa": "^9.3.0",
+ "@octokit/rest": "^21.0.2",
+ "@radashi-org/common": "link:../common",
+ "execa": "^9.5.1",
"mri": "^1.2.0",
"octokit": "^4.0.2",
- "radashi": "link:../../src",
- "tsx": "^4.17.0"
+ "radashi": "link:../../src"
}
}
diff --git a/scripts/release-notes/pnpm-lock.yaml b/scripts/release-notes/pnpm-lock.yaml
deleted file mode 100644
index 12214cd3..00000000
--- a/scripts/release-notes/pnpm-lock.yaml
+++ /dev/null
@@ -1,970 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@anthropic-ai/sdk':
- specifier: ^0.25.0
- version: 0.25.2
- '@types/node':
- specifier: ^22.1.0
- version: 22.7.7
- execa:
- specifier: ^9.3.0
- version: 9.4.1
- mri:
- specifier: ^1.2.0
- version: 1.2.0
- octokit:
- specifier: ^4.0.2
- version: 4.0.2
- radashi:
- specifier: link:../../src
- version: link:../../src
- tsx:
- specifier: ^4.17.0
- version: 4.19.1
-
-packages:
-
- '@anthropic-ai/sdk@0.25.2':
- resolution: {integrity: sha512-F1Hck/asswwidFLtGdMg3XYgRxEUfygNbpkq5KEaEGsHNaSfxeX18/uZGQCL0oQNcj/tYNx8BaFXVwRhFDi45g==}
-
- '@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@octokit/app@15.1.0':
- resolution: {integrity: sha512-TkBr7QgOmE6ORxvIAhDbZsqPkF7RSqTY4pLTtUQCvr6dTXqvi2fFo46q3h1lxlk/sGMQjqyZ0kEahkD/NyzOHg==}
- engines: {node: '>= 18'}
-
- '@octokit/auth-app@7.1.1':
- resolution: {integrity: sha512-kRAd6yelV9OgvlEJE88H0VLlQdZcag9UlLr7dV0YYP37X8PPDvhgiTy66QVhDXdyoT0AleFN2w/qXkPdrSzINg==}
- engines: {node: '>= 18'}
-
- '@octokit/auth-oauth-app@8.1.1':
- resolution: {integrity: sha512-5UtmxXAvU2wfcHIPPDWzVSAWXVJzG3NWsxb7zCFplCWEmMCArSZV0UQu5jw5goLQXbFyOr5onzEH37UJB3zQQg==}
- engines: {node: '>= 18'}
-
- '@octokit/auth-oauth-device@7.1.1':
- resolution: {integrity: sha512-HWl8lYueHonuyjrKKIup/1tiy0xcmQCdq5ikvMO1YwkNNkxb6DXfrPjrMYItNLyCP/o2H87WuijuE+SlBTT8eg==}
- engines: {node: '>= 18'}
-
- '@octokit/auth-oauth-user@5.1.1':
- resolution: {integrity: sha512-rRkMz0ErOppdvEfnemHJXgZ9vTPhBuC6yASeFaB7I2yLMd7QpjfrL1mnvRPlyKo+M6eeLxrKanXJ9Qte29SRsw==}
- engines: {node: '>= 18'}
-
- '@octokit/auth-token@5.1.1':
- resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==}
- engines: {node: '>= 18'}
-
- '@octokit/auth-unauthenticated@6.1.0':
- resolution: {integrity: sha512-zPSmfrUAcspZH/lOFQnVnvjQZsIvmfApQH6GzJrkIunDooU1Su2qt2FfMTSVPRp7WLTQyC20Kd55lF+mIYaohQ==}
- engines: {node: '>= 18'}
-
- '@octokit/core@6.1.2':
- resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==}
- engines: {node: '>= 18'}
-
- '@octokit/endpoint@10.1.1':
- resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==}
- engines: {node: '>= 18'}
-
- '@octokit/graphql@8.1.1':
- resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==}
- engines: {node: '>= 18'}
-
- '@octokit/oauth-app@7.1.3':
- resolution: {integrity: sha512-EHXbOpBkSGVVGF1W+NLMmsnSsJRkcrnVmDKt0TQYRBb6xWfWzoi9sBD4DIqZ8jGhOWO/V8t4fqFyJ4vDQDn9bg==}
- engines: {node: '>= 18'}
-
- '@octokit/oauth-authorization-url@7.1.1':
- resolution: {integrity: sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA==}
- engines: {node: '>= 18'}
-
- '@octokit/oauth-methods@5.1.2':
- resolution: {integrity: sha512-C5lglRD+sBlbrhCUTxgJAFjWgJlmTx5bQ7Ch0+2uqRjYv7Cfb5xpX4WuSC9UgQna3sqRGBL9EImX9PvTpMaQ7g==}
- engines: {node: '>= 18'}
-
- '@octokit/openapi-types@22.2.0':
- resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
-
- '@octokit/openapi-webhooks-types@8.3.0':
- resolution: {integrity: sha512-vKLsoR4xQxg4Z+6rU/F65ItTUz/EXbD+j/d4mlq2GW8TsA4Tc8Kdma2JTAAJ5hrKWUQzkR/Esn2fjsqiVRYaQg==}
-
- '@octokit/plugin-paginate-graphql@5.2.4':
- resolution: {integrity: sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-paginate-rest@11.3.5':
- resolution: {integrity: sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-rest-endpoint-methods@13.2.6':
- resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-retry@7.1.2':
- resolution: {integrity: sha512-XOWnPpH2kJ5VTwozsxGurw+svB2e61aWlmk5EVIYZPwFK5F9h4cyPyj9CIKRyMXMHSwpIsI3mPOdpMmrRhe7UQ==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-throttling@9.3.2':
- resolution: {integrity: sha512-FqpvcTpIWFpMMwIeSoypoJXysSAQ3R+ALJhXXSG1HTP3YZOIeLmcNcimKaXxTcws+Sh6yoRl13SJ5r8sXc1Fhw==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': ^6.0.0
-
- '@octokit/request-error@6.1.5':
- resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==}
- engines: {node: '>= 18'}
-
- '@octokit/request@9.1.3':
- resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==}
- engines: {node: '>= 18'}
-
- '@octokit/types@13.6.1':
- resolution: {integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==}
-
- '@octokit/webhooks-methods@5.1.0':
- resolution: {integrity: sha512-yFZa3UH11VIxYnnoOYCVoJ3q4ChuSOk2IVBBQ0O3xtKX4x9bmKb/1t+Mxixv2iUhzMdOl1qeWJqEhouXXzB3rQ==}
- engines: {node: '>= 18'}
-
- '@octokit/webhooks@13.3.0':
- resolution: {integrity: sha512-TUkJLtI163Bz5+JK0O+zDkQpn4gKwN+BovclUvCj6pI/6RXrFqQvUMRS2M+Rt8Rv0qR3wjoMoOPmpJKeOh0nBg==}
- engines: {node: '>= 18'}
-
- '@sec-ant/readable-stream@0.4.1':
- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
-
- '@sindresorhus/merge-streams@4.0.0':
- resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
- engines: {node: '>=18'}
-
- '@types/aws-lambda@8.10.145':
- resolution: {integrity: sha512-dtByW6WiFk5W5Jfgz1VM+YPA21xMXTuSFoLYIDY0L44jDLLflVPtZkYuu3/YxpGcvjzKFBZLU+GyKjR0HOYtyw==}
-
- '@types/node-fetch@2.6.11':
- resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==}
-
- '@types/node@18.19.57':
- resolution: {integrity: sha512-I2ioBd/IPrYDMv9UNR5NlPElOZ68QB7yY5V2EsLtSrTO0LM0PnCEFF9biLWHf5k+sIy4ohueCV9t4gk1AEdlVA==}
-
- '@types/node@22.7.7':
- resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==}
-
- abort-controller@3.0.0:
- resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
- engines: {node: '>=6.5'}
-
- agentkeepalive@4.5.0:
- resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
- engines: {node: '>= 8.0.0'}
-
- asynckit@0.4.0:
- resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
-
- before-after-hook@3.0.2:
- resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==}
-
- bottleneck@2.19.5:
- resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==}
-
- combined-stream@1.0.8:
- resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
- engines: {node: '>= 0.8'}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- delayed-stream@1.0.0:
- resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
- engines: {node: '>=0.4.0'}
-
- esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
- engines: {node: '>=18'}
- hasBin: true
-
- event-target-shim@5.0.1:
- resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
- engines: {node: '>=6'}
-
- execa@9.4.1:
- resolution: {integrity: sha512-5eo/BRqZm3GYce+1jqX/tJ7duA2AnE39i88fuedNFUV8XxGxUpF3aWkBRfbUcjV49gCkvS/pzc0YrCPhaIewdg==}
- engines: {node: ^18.19.0 || >=20.5.0}
-
- figures@6.1.0:
- resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
- engines: {node: '>=18'}
-
- form-data-encoder@1.7.2:
- resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==}
-
- form-data@4.0.1:
- resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
- engines: {node: '>= 6'}
-
- formdata-node@4.4.1:
- resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==}
- engines: {node: '>= 12.20'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- get-stream@9.0.1:
- resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
- engines: {node: '>=18'}
-
- get-tsconfig@4.8.1:
- resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
-
- human-signals@8.0.0:
- resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
- engines: {node: '>=18.18.0'}
-
- humanize-ms@1.2.1:
- resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
-
- is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
- is-stream@4.0.1:
- resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
- engines: {node: '>=18'}
-
- is-unicode-supported@2.1.0:
- resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
- engines: {node: '>=18'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- lru-cache@10.4.3:
- resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
-
- mime-db@1.52.0:
- resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
- engines: {node: '>= 0.6'}
-
- mime-types@2.1.35:
- resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
- engines: {node: '>= 0.6'}
-
- mri@1.2.0:
- resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
- engines: {node: '>=4'}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- node-domexception@1.0.0:
- resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
- engines: {node: '>=10.5.0'}
-
- node-fetch@2.7.0:
- resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
- engines: {node: 4.x || >=6.0.0}
- peerDependencies:
- encoding: ^0.1.0
- peerDependenciesMeta:
- encoding:
- optional: true
-
- npm-run-path@6.0.0:
- resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
- engines: {node: '>=18'}
-
- octokit@4.0.2:
- resolution: {integrity: sha512-wbqF4uc1YbcldtiBFfkSnquHtECEIpYD78YUXI6ri1Im5OO2NLo6ZVpRdbJpdnpZ05zMrVPssNiEo6JQtea+Qg==}
- engines: {node: '>= 18'}
-
- parse-ms@4.0.0:
- resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
- engines: {node: '>=18'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- pretty-ms@9.1.0:
- resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==}
- engines: {node: '>=18'}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- strip-final-newline@4.0.0:
- resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
- engines: {node: '>=18'}
-
- tr46@0.0.3:
- resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
-
- tsx@4.19.1:
- resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- undici-types@5.26.5:
- resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
-
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- unicorn-magic@0.3.0:
- resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
- engines: {node: '>=18'}
-
- universal-github-app-jwt@2.2.0:
- resolution: {integrity: sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ==}
-
- universal-user-agent@7.0.2:
- resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
-
- web-streams-polyfill@4.0.0-beta.3:
- resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==}
- engines: {node: '>= 14'}
-
- webidl-conversions@3.0.1:
- resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
-
- whatwg-url@5.0.0:
- resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- yoctocolors@2.1.1:
- resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
- engines: {node: '>=18'}
-
-snapshots:
-
- '@anthropic-ai/sdk@0.25.2':
- dependencies:
- '@types/node': 18.19.57
- '@types/node-fetch': 2.6.11
- abort-controller: 3.0.0
- agentkeepalive: 4.5.0
- form-data-encoder: 1.7.2
- formdata-node: 4.4.1
- node-fetch: 2.7.0
- transitivePeerDependencies:
- - encoding
-
- '@esbuild/aix-ppc64@0.23.1':
- optional: true
-
- '@esbuild/android-arm64@0.23.1':
- optional: true
-
- '@esbuild/android-arm@0.23.1':
- optional: true
-
- '@esbuild/android-x64@0.23.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.23.1':
- optional: true
-
- '@esbuild/darwin-x64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm@0.23.1':
- optional: true
-
- '@esbuild/linux-ia32@0.23.1':
- optional: true
-
- '@esbuild/linux-loong64@0.23.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.23.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.23.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.23.1':
- optional: true
-
- '@esbuild/linux-s390x@0.23.1':
- optional: true
-
- '@esbuild/linux-x64@0.23.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/sunos-x64@0.23.1':
- optional: true
-
- '@esbuild/win32-arm64@0.23.1':
- optional: true
-
- '@esbuild/win32-ia32@0.23.1':
- optional: true
-
- '@esbuild/win32-x64@0.23.1':
- optional: true
-
- '@octokit/app@15.1.0':
- dependencies:
- '@octokit/auth-app': 7.1.1
- '@octokit/auth-unauthenticated': 6.1.0
- '@octokit/core': 6.1.2
- '@octokit/oauth-app': 7.1.3
- '@octokit/plugin-paginate-rest': 11.3.5(@octokit/core@6.1.2)
- '@octokit/types': 13.6.1
- '@octokit/webhooks': 13.3.0
-
- '@octokit/auth-app@7.1.1':
- dependencies:
- '@octokit/auth-oauth-app': 8.1.1
- '@octokit/auth-oauth-user': 5.1.1
- '@octokit/request': 9.1.3
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- lru-cache: 10.4.3
- universal-github-app-jwt: 2.2.0
- universal-user-agent: 7.0.2
-
- '@octokit/auth-oauth-app@8.1.1':
- dependencies:
- '@octokit/auth-oauth-device': 7.1.1
- '@octokit/auth-oauth-user': 5.1.1
- '@octokit/request': 9.1.3
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/auth-oauth-device@7.1.1':
- dependencies:
- '@octokit/oauth-methods': 5.1.2
- '@octokit/request': 9.1.3
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/auth-oauth-user@5.1.1':
- dependencies:
- '@octokit/auth-oauth-device': 7.1.1
- '@octokit/oauth-methods': 5.1.2
- '@octokit/request': 9.1.3
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/auth-token@5.1.1': {}
-
- '@octokit/auth-unauthenticated@6.1.0':
- dependencies:
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
-
- '@octokit/core@6.1.2':
- dependencies:
- '@octokit/auth-token': 5.1.1
- '@octokit/graphql': 8.1.1
- '@octokit/request': 9.1.3
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- before-after-hook: 3.0.2
- universal-user-agent: 7.0.2
-
- '@octokit/endpoint@10.1.1':
- dependencies:
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/graphql@8.1.1':
- dependencies:
- '@octokit/request': 9.1.3
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/oauth-app@7.1.3':
- dependencies:
- '@octokit/auth-oauth-app': 8.1.1
- '@octokit/auth-oauth-user': 5.1.1
- '@octokit/auth-unauthenticated': 6.1.0
- '@octokit/core': 6.1.2
- '@octokit/oauth-authorization-url': 7.1.1
- '@octokit/oauth-methods': 5.1.2
- '@types/aws-lambda': 8.10.145
- universal-user-agent: 7.0.2
-
- '@octokit/oauth-authorization-url@7.1.1': {}
-
- '@octokit/oauth-methods@5.1.2':
- dependencies:
- '@octokit/oauth-authorization-url': 7.1.1
- '@octokit/request': 9.1.3
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
-
- '@octokit/openapi-types@22.2.0': {}
-
- '@octokit/openapi-webhooks-types@8.3.0': {}
-
- '@octokit/plugin-paginate-graphql@5.2.4(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
-
- '@octokit/plugin-paginate-rest@11.3.5(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
-
- '@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
-
- '@octokit/plugin-retry@7.1.2(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- bottleneck: 2.19.5
-
- '@octokit/plugin-throttling@9.3.2(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
- bottleneck: 2.19.5
-
- '@octokit/request-error@6.1.5':
- dependencies:
- '@octokit/types': 13.6.1
-
- '@octokit/request@9.1.3':
- dependencies:
- '@octokit/endpoint': 10.1.1
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/types@13.6.1':
- dependencies:
- '@octokit/openapi-types': 22.2.0
-
- '@octokit/webhooks-methods@5.1.0': {}
-
- '@octokit/webhooks@13.3.0':
- dependencies:
- '@octokit/openapi-webhooks-types': 8.3.0
- '@octokit/request-error': 6.1.5
- '@octokit/webhooks-methods': 5.1.0
-
- '@sec-ant/readable-stream@0.4.1': {}
-
- '@sindresorhus/merge-streams@4.0.0': {}
-
- '@types/aws-lambda@8.10.145': {}
-
- '@types/node-fetch@2.6.11':
- dependencies:
- '@types/node': 22.7.7
- form-data: 4.0.1
-
- '@types/node@18.19.57':
- dependencies:
- undici-types: 5.26.5
-
- '@types/node@22.7.7':
- dependencies:
- undici-types: 6.19.8
-
- abort-controller@3.0.0:
- dependencies:
- event-target-shim: 5.0.1
-
- agentkeepalive@4.5.0:
- dependencies:
- humanize-ms: 1.2.1
-
- asynckit@0.4.0: {}
-
- before-after-hook@3.0.2: {}
-
- bottleneck@2.19.5: {}
-
- combined-stream@1.0.8:
- dependencies:
- delayed-stream: 1.0.0
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- delayed-stream@1.0.0: {}
-
- esbuild@0.23.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.1
- '@esbuild/android-arm': 0.23.1
- '@esbuild/android-arm64': 0.23.1
- '@esbuild/android-x64': 0.23.1
- '@esbuild/darwin-arm64': 0.23.1
- '@esbuild/darwin-x64': 0.23.1
- '@esbuild/freebsd-arm64': 0.23.1
- '@esbuild/freebsd-x64': 0.23.1
- '@esbuild/linux-arm': 0.23.1
- '@esbuild/linux-arm64': 0.23.1
- '@esbuild/linux-ia32': 0.23.1
- '@esbuild/linux-loong64': 0.23.1
- '@esbuild/linux-mips64el': 0.23.1
- '@esbuild/linux-ppc64': 0.23.1
- '@esbuild/linux-riscv64': 0.23.1
- '@esbuild/linux-s390x': 0.23.1
- '@esbuild/linux-x64': 0.23.1
- '@esbuild/netbsd-x64': 0.23.1
- '@esbuild/openbsd-arm64': 0.23.1
- '@esbuild/openbsd-x64': 0.23.1
- '@esbuild/sunos-x64': 0.23.1
- '@esbuild/win32-arm64': 0.23.1
- '@esbuild/win32-ia32': 0.23.1
- '@esbuild/win32-x64': 0.23.1
-
- event-target-shim@5.0.1: {}
-
- execa@9.4.1:
- dependencies:
- '@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
- figures: 6.1.0
- get-stream: 9.0.1
- human-signals: 8.0.0
- is-plain-obj: 4.1.0
- is-stream: 4.0.1
- npm-run-path: 6.0.0
- pretty-ms: 9.1.0
- signal-exit: 4.1.0
- strip-final-newline: 4.0.0
- yoctocolors: 2.1.1
-
- figures@6.1.0:
- dependencies:
- is-unicode-supported: 2.1.0
-
- form-data-encoder@1.7.2: {}
-
- form-data@4.0.1:
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- mime-types: 2.1.35
-
- formdata-node@4.4.1:
- dependencies:
- node-domexception: 1.0.0
- web-streams-polyfill: 4.0.0-beta.3
-
- fsevents@2.3.3:
- optional: true
-
- get-stream@9.0.1:
- dependencies:
- '@sec-ant/readable-stream': 0.4.1
- is-stream: 4.0.1
-
- get-tsconfig@4.8.1:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- human-signals@8.0.0: {}
-
- humanize-ms@1.2.1:
- dependencies:
- ms: 2.1.3
-
- is-plain-obj@4.1.0: {}
-
- is-stream@4.0.1: {}
-
- is-unicode-supported@2.1.0: {}
-
- isexe@2.0.0: {}
-
- lru-cache@10.4.3: {}
-
- mime-db@1.52.0: {}
-
- mime-types@2.1.35:
- dependencies:
- mime-db: 1.52.0
-
- mri@1.2.0: {}
-
- ms@2.1.3: {}
-
- node-domexception@1.0.0: {}
-
- node-fetch@2.7.0:
- dependencies:
- whatwg-url: 5.0.0
-
- npm-run-path@6.0.0:
- dependencies:
- path-key: 4.0.0
- unicorn-magic: 0.3.0
-
- octokit@4.0.2:
- dependencies:
- '@octokit/app': 15.1.0
- '@octokit/core': 6.1.2
- '@octokit/oauth-app': 7.1.3
- '@octokit/plugin-paginate-graphql': 5.2.4(@octokit/core@6.1.2)
- '@octokit/plugin-paginate-rest': 11.3.5(@octokit/core@6.1.2)
- '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2)
- '@octokit/plugin-retry': 7.1.2(@octokit/core@6.1.2)
- '@octokit/plugin-throttling': 9.3.2(@octokit/core@6.1.2)
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
-
- parse-ms@4.0.0: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- pretty-ms@9.1.0:
- dependencies:
- parse-ms: 4.0.0
-
- resolve-pkg-maps@1.0.0: {}
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- signal-exit@4.1.0: {}
-
- strip-final-newline@4.0.0: {}
-
- tr46@0.0.3: {}
-
- tsx@4.19.1:
- dependencies:
- esbuild: 0.23.1
- get-tsconfig: 4.8.1
- optionalDependencies:
- fsevents: 2.3.3
-
- undici-types@5.26.5: {}
-
- undici-types@6.19.8: {}
-
- unicorn-magic@0.3.0: {}
-
- universal-github-app-jwt@2.2.0: {}
-
- universal-user-agent@7.0.2: {}
-
- web-streams-polyfill@4.0.0-beta.3: {}
-
- webidl-conversions@3.0.1: {}
-
- whatwg-url@5.0.0:
- dependencies:
- tr46: 0.0.3
- webidl-conversions: 3.0.1
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- yoctocolors@2.1.1: {}
diff --git a/scripts/release-notes/release-notes.ts b/scripts/release-notes/src/main.ts
similarity index 85%
rename from scripts/release-notes/release-notes.ts
rename to scripts/release-notes/src/main.ts
index 8a8c8bfb..b3ed18d9 100644
--- a/scripts/release-notes/release-notes.ts
+++ b/scripts/release-notes/src/main.ts
@@ -1,56 +1,16 @@
import { Anthropic } from '@anthropic-ai/sdk'
+import { verifyEnvVars } from '@radashi-org/common/verifyEnvVars.ts'
import { execa } from 'execa'
import mri from 'mri'
import fs from 'node:fs'
import os from 'node:os'
import path from 'node:path'
-import { uid } from 'radashi/random/uid.js'
-import { dedent } from './dedent'
-
-/**
- * Generate release notes using `git log -p` output and Anthropic
- * Claude.
- *
- * Required Environment Variables:
- *
- * - ANTHROPIC_API_KEY
- * - GITHUB_TOKEN (only required if --publish is used)
- *
- * Usage:
- *
- * ```sh
- * # Generate release notes for changes between the last two
- * # stable versions.
- * scripts/release-notes.sh
- *
- * # Generate release notes for changes between the last stable
- * # version and a given commit ref (e.g. HEAD).
- * scripts/release-notes.sh
- * ```
- *
- * Options:
- *
- * -o, --output \
- * Write the release notes to a file.
- *
- * --publish \
- * Publish the release notes to GitHub.
- *
- * --draft \
- * Publish the release notes as a draft.
- *
- * --prerelease \
- * Publish the release notes as a prerelease.
- *
- * --limit \
- * Limit the number of commits to include in each section. (For testing purposes)
- */
-async function main() {
- if (!process.env.ANTHROPIC_API_KEY) {
- console.error('Error: ANTHROPIC_API_KEY is not set')
- process.exit(1)
- }
+import { uid } from 'radashi/random/uid.ts'
+import { dedent } from './util/dedent.ts'
+main()
+
+async function main() {
const argv = mri(process.argv.slice(2))
const outFile = argv.o || argv.output
const limit = argv.limit ? +argv.limit : Number.POSITIVE_INFINITY
@@ -63,10 +23,10 @@ async function main() {
process.exit(1)
}
- if (argv.publish && !process.env.GITHUB_TOKEN) {
- console.error('Error: GITHUB_TOKEN is not set')
- process.exit(1)
- }
+ const { anthropicApiKey, githubToken } = verifyEnvVars({
+ anthropicApiKey: 'ANTHROPIC_API_KEY',
+ githubToken: !!argv.publish && 'GITHUB_TOKEN',
+ })
const version: string = JSON.parse(
fs.readFileSync('package.json', 'utf8'),
@@ -135,7 +95,9 @@ async function main() {
}
}
- const anthropic = new Anthropic()
+ const anthropic = new Anthropic({
+ apiKey: anthropicApiKey,
+ })
for (const section of sections) {
if (!section.commits?.length) {
@@ -222,8 +184,11 @@ async function main() {
}
if (argv.publish) {
- const { Octokit } = await import('octokit')
- const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN })
+ const { Octokit } = await import('@octokit/rest')
+
+ const octokit = new Octokit({
+ auth: githubToken,
+ })
log('Publishing release notes for version', version)
@@ -249,8 +214,6 @@ async function main() {
}
}
-main()
-
function getSections(): Section[] {
const getFormattingRules = (noun: string) => [
`Use an H4 (####) for the heading of each ${noun}.`,
diff --git a/scripts/release-notes/dedent.ts b/scripts/release-notes/src/util/dedent.ts
similarity index 97%
rename from scripts/release-notes/dedent.ts
rename to scripts/release-notes/src/util/dedent.ts
index dc974255..131939e9 100644
--- a/scripts/release-notes/dedent.ts
+++ b/scripts/release-notes/src/util/dedent.ts
@@ -1,4 +1,4 @@
-import { isArray } from 'radashi/typed/isArray.js'
+import { isArray } from 'radashi/typed/isArray.ts'
/**
* Remove indentation from a string. The given string is expected to
diff --git a/scripts/run.js b/scripts/run.js
new file mode 100644
index 00000000..20767d70
--- /dev/null
+++ b/scripts/run.js
@@ -0,0 +1,135 @@
+import { spawn } from 'node:child_process'
+import fs from 'node:fs'
+import path from 'node:path'
+import { fileURLToPath } from 'node:url'
+
+main(process.argv.slice(2))
+
+async function main([command, ...argv]) {
+ if (!command) {
+ console.error('No command provided')
+ process.exit(1)
+ }
+
+ const commandDir = new URL(`./${command}`, import.meta.url).pathname
+
+ if (!fs.existsSync(commandDir)) {
+ console.error(`Command not found: ${command}`)
+ process.exit(1)
+ }
+
+ // Only a few environment variables are exposed to install/postinstall
+ // scripts when installing dependencies from NPM.
+ const strictEnv = pick(process.env, [
+ 'PATH',
+ 'TMPDIR',
+ 'NODE_PATH',
+ 'NODE_OPTIONS',
+ 'PNPM_HOME',
+ ])
+
+ const __filename = fileURLToPath(import.meta.url)
+ const __dirname = path.dirname(__filename)
+
+ async function installDependencies(pkgDir) {
+ if (fs.existsSync(path.join(pkgDir, 'node_modules'))) {
+ return
+ }
+
+ const pkgPath = path.join(pkgDir, 'package.json')
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'))
+
+ if (!pkg.dependencies) {
+ return
+ }
+
+ console.log(
+ `> Installing dependencies for ${path.relative(process.cwd(), pkgDir)}`,
+ )
+
+ const installer = spawn('pnpm', ['install', '--lockfile-dir', __dirname], {
+ cwd: pkgDir,
+ stdio: 'inherit',
+ env: strictEnv,
+ })
+
+ await new Promise((resolve, reject) => {
+ installer.on('close', resolve)
+ installer.on('error', reject)
+ })
+
+ console.log()
+
+ for (const [name, version] of Object.entries(pkg.dependencies)) {
+ if (name === 'radashi') {
+ continue
+ }
+ // Install the dependencies of linked packages.
+ if (version.startsWith('link:')) {
+ const linkedDir = path.resolve(pkgDir, version.slice(5))
+ await installDependencies(linkedDir)
+ }
+ }
+ }
+
+ await installDependencies(commandDir)
+
+ if (process.env.INSTALL_ONLY) {
+ return
+ }
+
+ const version = process.versions.node
+ const [major, minor] = version.split('.').map(Number)
+
+ let runner
+ let runnerArgs
+ if (major < 22 || (major === 22 && minor < 6)) {
+ const tsxSpecifier = 'tsx@4.19.1'
+ if (process.env.CI) {
+ console.log(`> pnpm add -g ${tsxSpecifier}`)
+ await new Promise((resolve, reject) => {
+ const installer = spawn('pnpm', ['install', '-g', tsxSpecifier], {
+ stdio: 'inherit',
+ env: strictEnv,
+ })
+ installer.on('close', resolve)
+ installer.on('error', reject)
+ })
+ runner = 'tsx'
+ runnerArgs = []
+ } else {
+ runner = 'pnpm'
+ runnerArgs = ['dlx', tsxSpecifier]
+ }
+ } else {
+ runner = 'node'
+ runnerArgs = [
+ '--experimental-strip-types',
+ '--disable-warning=ExperimentalWarning',
+ ]
+ }
+
+ const commandPath = path.join(commandDir, 'src/main.ts')
+ const child = spawn(runner, [...runnerArgs, commandPath, ...argv], {
+ stdio: 'inherit',
+ })
+
+ child.on('error', error => {
+ console.error(error)
+ process.exit(1)
+ })
+
+ child.on('close', code => {
+ process.exit(code)
+ })
+}
+
+function pick(object, keys) {
+ const result = {}
+ for (const key of keys) {
+ if (key in object) {
+ result[key] = object[key]
+ }
+ }
+ return result
+}
diff --git a/scripts/seed-benchmarks/package.json b/scripts/seed-benchmarks/package.json
new file mode 100644
index 00000000..7b57d41f
--- /dev/null
+++ b/scripts/seed-benchmarks/package.json
@@ -0,0 +1,10 @@
+{
+ "type": "module",
+ "private": true,
+ "dependencies": {
+ "@radashi-org/benchmarks": "link:../benchmarks",
+ "execa": "^9.5.1",
+ "radashi-db": "link:../radashi-db",
+ "tinyglobby": "^0.2.10"
+ }
+}
diff --git a/scripts/benchmarks/seed-benchmarks.ts b/scripts/seed-benchmarks/src/main.ts
similarity index 80%
rename from scripts/benchmarks/seed-benchmarks.ts
rename to scripts/seed-benchmarks/src/main.ts
index c600c226..693acc2a 100644
--- a/scripts/benchmarks/seed-benchmarks.ts
+++ b/scripts/seed-benchmarks/src/main.ts
@@ -1,15 +1,13 @@
+import type { BenchmarkReport } from '@radashi-org/benchmarks/reporter.ts'
+import { runVitest } from '@radashi-org/benchmarks/runner.ts'
import { execa } from 'execa'
-import glob from 'fast-glob'
import { existsSync } from 'node:fs'
-import { supabase } from 'radashi-db/supabase.js'
-import type { BenchmarkReport } from './src/reporter'
-import { runVitest } from './src/runner'
+import { supabase } from 'radashi-db/supabase.ts'
+import { glob } from 'tinyglobby'
-async function main() {
- if (!process.env.SUPABASE_KEY) {
- throw new Error('SUPABASE_KEY is not set')
- }
+main()
+async function main() {
const currentSha = await execa('git', ['rev-parse', 'HEAD']).then(
result => result.stdout,
)
@@ -56,5 +54,3 @@ async function main() {
console.error('Error updating last benched SHA:', updateError)
}
}
-
-main().catch(console.error)
diff --git a/scripts/seed-merged-functions/package.json b/scripts/seed-merged-functions/package.json
new file mode 100644
index 00000000..bc52ebd5
--- /dev/null
+++ b/scripts/seed-merged-functions/package.json
@@ -0,0 +1,10 @@
+{
+ "type": "module",
+ "private": true,
+ "dependencies": {
+ "@radashi-org/register-pr": "link:../register-pr",
+ "execa": "^9.5.1",
+ "radashi-db": "link:../radashi-db",
+ "tinyglobby": "^0.2.10"
+ }
+}
diff --git a/scripts/functions/seed-merged-functions.ts b/scripts/seed-merged-functions/src/main.ts
similarity index 94%
rename from scripts/functions/seed-merged-functions.ts
rename to scripts/seed-merged-functions/src/main.ts
index e05fbe28..5f687756 100644
--- a/scripts/functions/seed-merged-functions.ts
+++ b/scripts/seed-merged-functions/src/main.ts
@@ -1,10 +1,10 @@
+import { renderPageMarkdown } from '@radashi-org/register-pr/markdown.ts'
import { execa } from 'execa'
-import glob from 'fast-glob'
import fs from 'node:fs/promises'
import path from 'node:path'
-import { algolia } from 'radashi-db/algolia'
-import { supabase, type TablesInsert } from 'radashi-db/supabase'
-import { renderPageMarkdown } from './src/util/markdown'
+import { algolia } from 'radashi-db/algolia.ts'
+import { supabase, type TablesInsert } from 'radashi-db/supabase.ts'
+import { glob } from 'tinyglobby'
async function seedMergedFunctions() {
const rootDir = new URL('../../', import.meta.url).pathname
diff --git a/scripts/seed-proposed-functions/package.json b/scripts/seed-proposed-functions/package.json
new file mode 100644
index 00000000..375d5aef
--- /dev/null
+++ b/scripts/seed-proposed-functions/package.json
@@ -0,0 +1,9 @@
+{
+ "type": "module",
+ "private": true,
+ "dependencies": {
+ "@octokit/rest": "^21.0.2",
+ "@radashi-org/register-pr": "link:../register-pr",
+ "radashi": "link:../../src"
+ }
+}
diff --git a/scripts/functions/seed-proposed-functions.ts b/scripts/seed-proposed-functions/src/main.ts
similarity index 96%
rename from scripts/functions/seed-proposed-functions.ts
rename to scripts/seed-proposed-functions/src/main.ts
index c8418c58..a83282dc 100644
--- a/scripts/functions/seed-proposed-functions.ts
+++ b/scripts/seed-proposed-functions/src/main.ts
@@ -1,7 +1,7 @@
import { Octokit, type RestEndpointMethodTypes } from '@octokit/rest'
-import { parallel } from 'radashi/async/parallel.js'
-import { registerPullRequest } from './src/register-pr'
-import { bottleneck } from './src/util/bottleneck'
+import { registerPullRequest } from '@radashi-org/register-pr'
+import { parallel } from 'radashi/async/parallel.ts'
+import { bottleneck } from './util/bottleneck.ts'
async function seedProposedFunctions() {
const octokit = new Octokit({
diff --git a/scripts/functions/src/util/bottleneck.ts b/scripts/seed-proposed-functions/src/util/bottleneck.ts
similarity index 100%
rename from scripts/functions/src/util/bottleneck.ts
rename to scripts/seed-proposed-functions/src/util/bottleneck.ts
diff --git a/scripts/test-branch.sh b/scripts/test-branch.sh
deleted file mode 100644
index 6b7f7d47..00000000
--- a/scripts/test-branch.sh
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-# Get the list of changed files relative to the main branch.
-CHANGED_FILES=$(git diff main..HEAD --name-only -- 'src/**/*.ts' 'tests/**/*.test.ts' '!src/*.ts')
-
-# If a test file was changed, its source file will also be collected.
-# Likewise, if a source file was changed, its test file will be
-# collected. Test files are collected for Vitest to use as a test
-# filter. Source files are collected for coverage filtering.
-TEST_FILES=()
-SOURCE_FILES=()
-
-# This function adds a source file to the SOURCE_FILES array and its
-# corresponding test file to the TEST_FILES array.
-add_source_file() {
- if [[ ! " ${SOURCE_FILES[@]} " =~ " $1 " ]]; then
- SOURCE_FILES+=("$1")
- fi
-
- test_file=${1/src/tests}
- test_file=${test_file/.ts/.test.ts}
- if [[ ! " ${TEST_FILES[@]} " =~ " ${test_file} " ]]; then
- TEST_FILES+=("$test_file")
- fi
-}
-
-# Populate the SOURCE_FILES array so we can loop over them later.
-for file in $CHANGED_FILES; do
- if [[ $file == src/* ]]; then
- add_source_file "$file"
- fi
-done
-
-# Recursive search for dependent functions. Their source files need to
-# be tested, in case they are affected by changes to their
-# dependencies.
-index=0
-while [ $index -lt ${#SOURCE_FILES[@]} ]; do
- file=${SOURCE_FILES[$index]}
-
- func_name=$(basename $file)
- func_name=${func_name/.ts/}
-
- if command -v rg &> /dev/null; then
- IMPORTERS=$(rg "import[^}]*?\b$func_name\b" -U -l -- src)
-
- for importer in $IMPORTERS; do
- if [[ ! " ${SOURCE_FILES[@]} " =~ " ${importer} " ]]; then
- add_source_file "$importer"
- fi
- done
- else
- echo -e "ripgrep (rg) is not installed. Please install it to use this script:\n"
- echo " > brew install ripgrep"
- echo " > sudo apt-get install ripgrep"
- echo -e "\n https://github.com/BurntSushi/ripgrep/blob/master/README.md#installation\n"
- exit 1
- fi
-
- index=$((index + 1))
-done
-
-# Test files need their source files included in coverage, so we need
-# to add them to the SOURCE_FILES array before building the coverage
-# options. Also, we explicitly avoid adding importers of these source
-# files, since only the test has changed.
-for file in $CHANGED_FILES; do
- if [[ $file == tests/* ]]; then
- src_file=${file/tests/src}
- src_file=${src_file/.test.ts/.ts}
-
- # If it's already a test file, add it directly if not already present
- if [[ ! " ${TEST_FILES[@]} " =~ " ${file} " ]]; then
- TEST_FILES+=("$file")
- fi
- if [[ ! " ${SOURCE_FILES[@]} " =~ " ${src_file} " ]]; then
- SOURCE_FILES+=("$src_file")
- fi
- fi
-done
-
-# Build the coverage options
-ARGV=("--coverage")
-for file in "${SOURCE_FILES[@]}"; do
- ARGV+=("--coverage.include=$file")
-done
-
-pnpm -s vitest ${TEST_FILES[*]} ${ARGV[*]} "$@"
diff --git a/scripts/test-branch/package.json b/scripts/test-branch/package.json
new file mode 100644
index 00000000..8dc4347f
--- /dev/null
+++ b/scripts/test-branch/package.json
@@ -0,0 +1,9 @@
+{
+ "type": "module",
+ "private": true,
+ "dependencies": {
+ "execa": "^9.5.1",
+ "meriyah": "^6.0.3",
+ "tinyglobby": "^0.2.10"
+ }
+}
diff --git a/scripts/test-branch/src/main.ts b/scripts/test-branch/src/main.ts
new file mode 100644
index 00000000..47bc7f59
--- /dev/null
+++ b/scripts/test-branch/src/main.ts
@@ -0,0 +1,137 @@
+import { execa } from 'execa'
+import { parseModule } from 'meriyah'
+import { readFile } from 'node:fs/promises'
+import path from 'node:path'
+import { glob } from 'tinyglobby'
+
+main()
+
+async function main() {
+ const changedFiles = await getChangedFiles()
+
+ // If a test file was changed, its source file will also be
+ // collected. Likewise, if a source file was changed, its test file
+ // will be collected. Test files are collected for Vitest to use as
+ // a test filter. Source files are collected for coverage filtering.
+ const sourceFiles = new Set()
+ const testFiles = new Set()
+
+ // First pass: collect initial source and test files
+ for (const file of changedFiles) {
+ if (file.startsWith('src/')) {
+ addSourceFile(file, sourceFiles, testFiles)
+ }
+ }
+
+ // Recursive search for dependent functions. Their source files need
+ // to be tested, in case they are affected by changes to their
+ // dependencies.
+ for (const file of sourceFiles) {
+ const funcName = path.basename(file, '.ts')
+
+ const importers = await findImporters(funcName)
+ for (const importer of importers) {
+ if (!sourceFiles.has(importer)) {
+ // If a source file is added by this call, it too will be
+ // processed by the sourceFiles loop we're in.
+ addSourceFile(importer, sourceFiles, testFiles)
+ }
+ }
+ }
+
+ // Test files need their source files included in coverage, so we
+ // need to add them to sourceFiles before building the coverage
+ // arguments. Also, we explicitly avoid adding importers of these
+ // source files, since only the test has changed.
+ for (const file of changedFiles) {
+ if (file.startsWith('tests/')) {
+ testFiles.add(file)
+ sourceFiles.add(file.replace('tests', 'src').replace('.test.ts', '.ts'))
+ }
+ }
+
+ // Build coverage arguments
+ const coverageArgs = ['--coverage']
+ sourceFiles.forEach(file => {
+ coverageArgs.push(`--coverage.include=${file}`)
+ })
+
+ // Run vitest with the collected files
+ const args = [
+ ...Array.from(testFiles),
+ ...coverageArgs,
+ ...process.argv.slice(2),
+ ]
+
+ process.env.PATH = `${process.cwd()}/node_modules/.bin:${process.env.PATH}`
+
+ await execa('vitest', args, {
+ stdio: 'inherit',
+ })
+}
+
+/**
+ * Get the list of changed files relative to the main branch.
+ */
+async function getChangedFiles(): Promise {
+ const { stdout } = await execa('git', [
+ 'diff',
+ 'main..HEAD',
+ '--name-only',
+ '--',
+ 'src/**/*.ts',
+ 'tests/**/*.test.ts',
+ '!src/*.ts',
+ ])
+ return stdout.split('\n').filter(Boolean)
+}
+
+/**
+ * Add a source file to the set of source files and its corresponding
+ * test file to the set of test files.
+ */
+function addSourceFile(
+ sourceFile: string,
+ sourceFiles: Set,
+ testFiles: Set,
+): void {
+ sourceFiles.add(sourceFile)
+ testFiles.add(sourceFile.replace('src', 'tests').replace('.ts', '.test.ts'))
+}
+
+/**
+ * Scan all source files for imports of the given function name.
+ */
+async function findImporters(funcName: string): Promise {
+ const files = await glob('./src/**/*.ts')
+ const importers: string[] = []
+
+ for (const file of files) {
+ try {
+ const content = await readFile(file, 'utf-8')
+ const ast = parseModule(content, {
+ next: true,
+ })
+
+ const hasImport = ast.body.some(
+ node =>
+ node.type === 'ImportDeclaration' &&
+ node.specifiers.some(
+ spec =>
+ spec.type === 'ImportSpecifier' &&
+ spec.imported.type === 'Identifier' &&
+ spec.imported.name === funcName,
+ ),
+ )
+
+ if (hasImport) {
+ importers.push(file)
+ }
+ } catch (error) {
+ // Skip files that can't be parsed
+ console.error(`Could not parse ${file}`)
+ }
+ }
+
+ return importers
+}
diff --git a/scripts/test-install.sh b/scripts/test-install.sh
new file mode 100755
index 00000000..f4ce5bdd
--- /dev/null
+++ b/scripts/test-install.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+set -e
+
+export INSTALL_ONLY=true
+
+if [[ "$*" == *"--force"* ]]; then
+ rm -rf */node_modules
+fi
+
+for pkg in */package.json; do
+ node run.js "$(dirname "$pkg")"
+done
diff --git a/scripts/test-single.sh b/scripts/test-single.sh
deleted file mode 100644
index 2fe72b60..00000000
--- a/scripts/test-single.sh
+++ /dev/null
@@ -1 +0,0 @@
-pnpm vitest $1 --coverage --coverage.include "src/*/$1*"
diff --git a/scripts/test-single/package.json b/scripts/test-single/package.json
new file mode 100644
index 00000000..d0330981
--- /dev/null
+++ b/scripts/test-single/package.json
@@ -0,0 +1,7 @@
+{
+ "type": "module",
+ "private": true,
+ "dependencies": {
+ "execa": "^9.5.1"
+ }
+}
diff --git a/scripts/test-single/readme.md b/scripts/test-single/readme.md
new file mode 100644
index 00000000..96a8d0bb
--- /dev/null
+++ b/scripts/test-single/readme.md
@@ -0,0 +1,19 @@
+Test a single function, instead of every function.
+
+If another function depends on the one you passed, that function will also be tested, and so on, recursively.
+
+### Usage
+
+From the workspace root:
+
+```sh
+pnpm test-single
+```
+
+#### Examples
+
+```sh
+# Test the `cloneDeep` function and any functions
+# that depend on it.
+pnpm test-single cloneDeep
+```
diff --git a/scripts/test-single/src/main.ts b/scripts/test-single/src/main.ts
new file mode 100644
index 00000000..80d30afb
--- /dev/null
+++ b/scripts/test-single/src/main.ts
@@ -0,0 +1,17 @@
+import { execa } from 'execa'
+
+main()
+
+async function main() {
+ const [funcName] = process.argv.slice(2)
+
+ process.env.PATH = `${process.cwd()}/node_modules/.bin:${process.env.PATH}`
+
+ await execa(
+ 'vitest',
+ [funcName, '--coverage', '--coverage.include', `src/*/${funcName}*`],
+ {
+ stdio: 'inherit',
+ },
+ )
+}
diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json
index dafcd8b1..c9448b8d 100644
--- a/scripts/tsconfig.json
+++ b/scripts/tsconfig.json
@@ -3,16 +3,13 @@
"allowImportingTsExtensions": true,
"emitDeclarationOnly": true,
"declaration": true,
- "moduleResolution": "node",
+ "moduleResolution": "bundler",
"outDir": "../dist/tmp",
"target": "esnext",
"lib": ["es2020"],
"esModuleInterop": true,
"module": "esnext",
"skipLibCheck": true,
- "strict": true,
- "paths": {
- "radashi": ["../src/mod.ts"]
- }
+ "strict": true
}
}
diff --git a/scripts/update-browserslist.sh b/scripts/update-browserslist.sh
deleted file mode 100644
index c8497738..00000000
--- a/scripts/update-browserslist.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-if [ ! -d "scripts/browser-support/node_modules" ]; then
- echo "Node modules not found. Installing dependencies..."
- pnpm install -C scripts/browser-support
-fi
-
-pnpm -s scripts/browser-support/node_modules/.bin/tsx scripts/browser-support/update-browserslist.ts "$@"
diff --git a/scripts/browser-support/package.json b/scripts/update-browserslist/package.json
similarity index 53%
rename from scripts/browser-support/package.json
rename to scripts/update-browserslist/package.json
index 8aa7389d..d7231570 100644
--- a/scripts/browser-support/package.json
+++ b/scripts/update-browserslist/package.json
@@ -1,10 +1,8 @@
{
"private": true,
"dependencies": {
- "@types/node": "^22.4.0",
"browserslist-generator": "^2.1.0",
"dequal": "^2.0.3",
- "execa": "npm:@esm2cjs/execa@6.1.1-cjs.1",
- "tsx": "^4.17.0"
+ "execa": "^9.5.1"
}
}
diff --git a/scripts/browser-support/update-browserslist.ts b/scripts/update-browserslist/src/main.ts
similarity index 94%
rename from scripts/browser-support/update-browserslist.ts
rename to scripts/update-browserslist/src/main.ts
index ff1bde64..b54ba95b 100644
--- a/scripts/browser-support/update-browserslist.ts
+++ b/scripts/update-browserslist/src/main.ts
@@ -46,7 +46,10 @@ async function main() {
await execa('git', ['add', pkgJsonPath])
await execa('git', ['commit', '-m', 'chore: update browserslist'], {
stdio: 'inherit',
- }).catch(() => process.exit(1))
+ }).catch(() => {
+ console.log('• No changes to commit.')
+ process.exit(1)
+ })
console.log('• Changes committed successfully.')
}
diff --git a/scripts/versions/pnpm-lock.yaml b/scripts/versions/pnpm-lock.yaml
deleted file mode 100644
index 42c1fdc5..00000000
--- a/scripts/versions/pnpm-lock.yaml
+++ /dev/null
@@ -1,825 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-overrides:
- execa: ^9.3.0
-
-importers:
-
- .:
- dependencies:
- '@octokit/rest':
- specifier: ^21.0.2
- version: 21.0.2
- execa:
- specifier: ^9.3.0
- version: 9.4.1
- fast-glob:
- specifier: ^3.3.2
- version: 3.3.2
- git-cliff:
- specifier: 2.4.0
- version: 2.4.0
- kleur:
- specifier: ^4.1.5
- version: 4.1.5
- mri:
- specifier: ^1.2.0
- version: 1.2.0
- radashi:
- specifier: link:../../src
- version: link:../../src
- radashi-db:
- specifier: link:../radashi-db
- version: link:../radashi-db
- tsx:
- specifier: ^4.17.0
- version: 4.19.1
-
-packages:
-
- '@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
-
- '@octokit/auth-token@5.1.1':
- resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==}
- engines: {node: '>= 18'}
-
- '@octokit/core@6.1.2':
- resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==}
- engines: {node: '>= 18'}
-
- '@octokit/endpoint@10.1.1':
- resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==}
- engines: {node: '>= 18'}
-
- '@octokit/graphql@8.1.1':
- resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==}
- engines: {node: '>= 18'}
-
- '@octokit/openapi-types@22.2.0':
- resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
-
- '@octokit/plugin-paginate-rest@11.3.5':
- resolution: {integrity: sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-request-log@5.3.1':
- resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/plugin-rest-endpoint-methods@13.2.6':
- resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==}
- engines: {node: '>= 18'}
- peerDependencies:
- '@octokit/core': '>=6'
-
- '@octokit/request-error@6.1.5':
- resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==}
- engines: {node: '>= 18'}
-
- '@octokit/request@9.1.3':
- resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==}
- engines: {node: '>= 18'}
-
- '@octokit/rest@21.0.2':
- resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==}
- engines: {node: '>= 18'}
-
- '@octokit/types@13.6.1':
- resolution: {integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==}
-
- '@sec-ant/readable-stream@0.4.1':
- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
-
- '@sindresorhus/merge-streams@4.0.0':
- resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
- engines: {node: '>=18'}
-
- before-after-hook@3.0.2:
- resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
- engines: {node: '>=18'}
- hasBin: true
-
- execa@9.4.1:
- resolution: {integrity: sha512-5eo/BRqZm3GYce+1jqX/tJ7duA2AnE39i88fuedNFUV8XxGxUpF3aWkBRfbUcjV49gCkvS/pzc0YrCPhaIewdg==}
- engines: {node: ^18.19.0 || >=20.5.0}
-
- fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
-
- fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
-
- figures@6.1.0:
- resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
- engines: {node: '>=18'}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- get-stream@9.0.1:
- resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
- engines: {node: '>=18'}
-
- get-tsconfig@4.8.1:
- resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
-
- git-cliff-darwin-arm64@2.4.0:
- resolution: {integrity: sha512-KImSJhO8pTkKCauYlKmx7vNz3caIIBs0QW3JIS0uwUXGGJas4uuvGXlGTbLqVxdCur2yBwRDD6xobtuLC0yQ4w==}
- cpu: [arm64]
- os: [darwin]
-
- git-cliff-darwin-x64@2.4.0:
- resolution: {integrity: sha512-KtJ/V0i9xxs5iXl+hh1J4wyhMOrMRNylfSQC0lMJ+ScIIr1sZdF9qz4Mk06ZdJD7HnvPWawBhLcpCKVXkaeufQ==}
- cpu: [x64]
- os: [darwin]
-
- git-cliff-linux-arm64@2.4.0:
- resolution: {integrity: sha512-ZSL5Jw06pgJ0F2e4Dv7j7l69qmq718NA8IKIUscjayc+71iuzyOw0T2tnbkV6H1h1rDjP9LMXGyPtLIvGz62BA==}
- cpu: [arm64]
- os: [linux]
-
- git-cliff-linux-x64@2.4.0:
- resolution: {integrity: sha512-1ckJ+2io52HuBnEeS87PeFanEPt3BuZoHKcXfkQPYFj9C91ckHgY7OCqze38ejy1V/cfKhlVJsbjbVMxixRaog==}
- cpu: [x64]
- os: [linux]
-
- git-cliff-windows-arm64@2.4.0:
- resolution: {integrity: sha512-DZf+C7lTmCvvBjgtOHMcXJC5KaIL+QDE/C6cYxzLMgRcn9wGNTm2ot0jkAN2I1PmSmg4I1/89iiahSWHfG1m4A==}
- cpu: [arm64]
- os: [win32]
-
- git-cliff-windows-x64@2.4.0:
- resolution: {integrity: sha512-bYUQIyG975KdPza/bNDxwBFpqTZEvF1zPKlhThgPgdCKdzbdezsgaFuaDbnM+vsmBD751ZJGWLQ7aJCSBG2s/Q==}
- cpu: [x64]
- os: [win32]
-
- git-cliff@2.4.0:
- resolution: {integrity: sha512-e+4mMArblL4mrD/auUTa3bf3U1ahAuhIRb1bxTIWCBxnR6UqVctGaLf3pJJufaKi3nqTT7JvrSYu9Q+L6yiAaw==}
- engines: {node: '>=18.19 || >=20.6 || >=21'}
- hasBin: true
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- human-signals@8.0.0:
- resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
- engines: {node: '>=18.18.0'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
- is-stream@4.0.1:
- resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
- engines: {node: '>=18'}
-
- is-unicode-supported@2.1.0:
- resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
- engines: {node: '>=18'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- kleur@4.1.5:
- resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
- engines: {node: '>=6'}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
-
- mri@1.2.0:
- resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
- engines: {node: '>=4'}
-
- npm-run-path@6.0.0:
- resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
- engines: {node: '>=18'}
-
- parse-ms@4.0.0:
- resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
- engines: {node: '>=18'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- pretty-ms@9.1.0:
- resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==}
- engines: {node: '>=18'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- strip-final-newline@4.0.0:
- resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
- engines: {node: '>=18'}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- tsx@4.19.1:
- resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- unicorn-magic@0.3.0:
- resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
- engines: {node: '>=18'}
-
- universal-user-agent@7.0.2:
- resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- yoctocolors@2.1.1:
- resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
- engines: {node: '>=18'}
-
-snapshots:
-
- '@esbuild/aix-ppc64@0.23.1':
- optional: true
-
- '@esbuild/android-arm64@0.23.1':
- optional: true
-
- '@esbuild/android-arm@0.23.1':
- optional: true
-
- '@esbuild/android-x64@0.23.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.23.1':
- optional: true
-
- '@esbuild/darwin-x64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm64@0.23.1':
- optional: true
-
- '@esbuild/linux-arm@0.23.1':
- optional: true
-
- '@esbuild/linux-ia32@0.23.1':
- optional: true
-
- '@esbuild/linux-loong64@0.23.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.23.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.23.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.23.1':
- optional: true
-
- '@esbuild/linux-s390x@0.23.1':
- optional: true
-
- '@esbuild/linux-x64@0.23.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.23.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.23.1':
- optional: true
-
- '@esbuild/sunos-x64@0.23.1':
- optional: true
-
- '@esbuild/win32-arm64@0.23.1':
- optional: true
-
- '@esbuild/win32-ia32@0.23.1':
- optional: true
-
- '@esbuild/win32-x64@0.23.1':
- optional: true
-
- '@nodelib/fs.scandir@2.1.5':
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- '@nodelib/fs.stat@2.0.5': {}
-
- '@nodelib/fs.walk@1.2.8':
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.1
-
- '@octokit/auth-token@5.1.1': {}
-
- '@octokit/core@6.1.2':
- dependencies:
- '@octokit/auth-token': 5.1.1
- '@octokit/graphql': 8.1.1
- '@octokit/request': 9.1.3
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- before-after-hook: 3.0.2
- universal-user-agent: 7.0.2
-
- '@octokit/endpoint@10.1.1':
- dependencies:
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/graphql@8.1.1':
- dependencies:
- '@octokit/request': 9.1.3
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/openapi-types@22.2.0': {}
-
- '@octokit/plugin-paginate-rest@11.3.5(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
-
- '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
-
- '@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/types': 13.6.1
-
- '@octokit/request-error@6.1.5':
- dependencies:
- '@octokit/types': 13.6.1
-
- '@octokit/request@9.1.3':
- dependencies:
- '@octokit/endpoint': 10.1.1
- '@octokit/request-error': 6.1.5
- '@octokit/types': 13.6.1
- universal-user-agent: 7.0.2
-
- '@octokit/rest@21.0.2':
- dependencies:
- '@octokit/core': 6.1.2
- '@octokit/plugin-paginate-rest': 11.3.5(@octokit/core@6.1.2)
- '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.2)
- '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2)
-
- '@octokit/types@13.6.1':
- dependencies:
- '@octokit/openapi-types': 22.2.0
-
- '@sec-ant/readable-stream@0.4.1': {}
-
- '@sindresorhus/merge-streams@4.0.0': {}
-
- before-after-hook@3.0.2: {}
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- esbuild@0.23.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.1
- '@esbuild/android-arm': 0.23.1
- '@esbuild/android-arm64': 0.23.1
- '@esbuild/android-x64': 0.23.1
- '@esbuild/darwin-arm64': 0.23.1
- '@esbuild/darwin-x64': 0.23.1
- '@esbuild/freebsd-arm64': 0.23.1
- '@esbuild/freebsd-x64': 0.23.1
- '@esbuild/linux-arm': 0.23.1
- '@esbuild/linux-arm64': 0.23.1
- '@esbuild/linux-ia32': 0.23.1
- '@esbuild/linux-loong64': 0.23.1
- '@esbuild/linux-mips64el': 0.23.1
- '@esbuild/linux-ppc64': 0.23.1
- '@esbuild/linux-riscv64': 0.23.1
- '@esbuild/linux-s390x': 0.23.1
- '@esbuild/linux-x64': 0.23.1
- '@esbuild/netbsd-x64': 0.23.1
- '@esbuild/openbsd-arm64': 0.23.1
- '@esbuild/openbsd-x64': 0.23.1
- '@esbuild/sunos-x64': 0.23.1
- '@esbuild/win32-arm64': 0.23.1
- '@esbuild/win32-ia32': 0.23.1
- '@esbuild/win32-x64': 0.23.1
-
- execa@9.4.1:
- dependencies:
- '@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
- figures: 6.1.0
- get-stream: 9.0.1
- human-signals: 8.0.0
- is-plain-obj: 4.1.0
- is-stream: 4.0.1
- npm-run-path: 6.0.0
- pretty-ms: 9.1.0
- signal-exit: 4.1.0
- strip-final-newline: 4.0.0
- yoctocolors: 2.1.1
-
- fast-glob@3.3.2:
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.8
-
- fastq@1.17.1:
- dependencies:
- reusify: 1.0.4
-
- figures@6.1.0:
- dependencies:
- is-unicode-supported: 2.1.0
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- fsevents@2.3.3:
- optional: true
-
- get-stream@9.0.1:
- dependencies:
- '@sec-ant/readable-stream': 0.4.1
- is-stream: 4.0.1
-
- get-tsconfig@4.8.1:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- git-cliff-darwin-arm64@2.4.0:
- optional: true
-
- git-cliff-darwin-x64@2.4.0:
- optional: true
-
- git-cliff-linux-arm64@2.4.0:
- optional: true
-
- git-cliff-linux-x64@2.4.0:
- optional: true
-
- git-cliff-windows-arm64@2.4.0:
- optional: true
-
- git-cliff-windows-x64@2.4.0:
- optional: true
-
- git-cliff@2.4.0:
- dependencies:
- execa: 9.4.1
- optionalDependencies:
- git-cliff-darwin-arm64: 2.4.0
- git-cliff-darwin-x64: 2.4.0
- git-cliff-linux-arm64: 2.4.0
- git-cliff-linux-x64: 2.4.0
- git-cliff-windows-arm64: 2.4.0
- git-cliff-windows-x64: 2.4.0
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- human-signals@8.0.0: {}
-
- is-extglob@2.1.1: {}
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-number@7.0.0: {}
-
- is-plain-obj@4.1.0: {}
-
- is-stream@4.0.1: {}
-
- is-unicode-supported@2.1.0: {}
-
- isexe@2.0.0: {}
-
- kleur@4.1.5: {}
-
- merge2@1.4.1: {}
-
- micromatch@4.0.8:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- mri@1.2.0: {}
-
- npm-run-path@6.0.0:
- dependencies:
- path-key: 4.0.0
- unicorn-magic: 0.3.0
-
- parse-ms@4.0.0: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- picomatch@2.3.1: {}
-
- pretty-ms@9.1.0:
- dependencies:
- parse-ms: 4.0.0
-
- queue-microtask@1.2.3: {}
-
- resolve-pkg-maps@1.0.0: {}
-
- reusify@1.0.4: {}
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- signal-exit@4.1.0: {}
-
- strip-final-newline@4.0.0: {}
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- tsx@4.19.1:
- dependencies:
- esbuild: 0.23.1
- get-tsconfig: 4.8.1
- optionalDependencies:
- fsevents: 2.3.3
-
- unicorn-magic@0.3.0: {}
-
- universal-user-agent@7.0.2: {}
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- yoctocolors@2.1.1: {}
diff --git a/src/array/first.ts b/src/array/first.ts
index ca809d7e..f70fc71f 100644
--- a/src/array/first.ts
+++ b/src/array/first.ts
@@ -12,10 +12,14 @@
* ```
* @version 12.1.0
*/
-export function first(array: readonly T[]): T | undefined
-
-export function first(array: readonly T[], defaultValue: U): T | U
-
-export function first(array: readonly unknown[], defaultValue?: unknown) {
+export function first<
+ const TArray extends readonly any[],
+ const TDefault = undefined,
+>(
+ array: TArray,
+ defaultValue?: TDefault,
+): TArray extends readonly [infer TFirst, ...any[]]
+ ? TFirst
+ : TArray[number] | TDefault {
return array?.length > 0 ? array[0] : defaultValue
}
diff --git a/src/array/last.ts b/src/array/last.ts
index 71810b9a..7fca7b2a 100644
--- a/src/array/last.ts
+++ b/src/array/last.ts
@@ -12,10 +12,14 @@
* ```
* @version 12.1.0
*/
-export function last(array: readonly T[]): T | undefined
-
-export function last(array: readonly T[], defaultValue: U): T | U
-
-export function last(array: readonly unknown[], defaultValue?: unknown) {
+export function last<
+ const TArray extends readonly any[],
+ const TDefault = undefined,
+>(
+ array: TArray,
+ defaultValue?: TDefault,
+): TArray extends readonly [...any[], infer TLast]
+ ? TLast
+ : TArray[number] | TDefault {
return array?.length > 0 ? array[array.length - 1] : defaultValue
}
diff --git a/src/async/AggregateError.ts b/src/async/AggregateError.ts
index 26305e79..4e9ce203 100644
--- a/src/async/AggregateError.ts
+++ b/src/async/AggregateError.ts
@@ -1,4 +1,16 @@
-///
+interface AggregateError extends Error {
+ errors: any[]
+}
+
+interface AggregateErrorConstructor {
+ new (errors: Iterable, message?: string): AggregateError
+ (errors: Iterable, message?: string): AggregateError
+ readonly prototype: AggregateError
+}
+
+declare const globalThis: {
+ AggregateError?: AggregateErrorConstructor
+}
/**
* The `AggregateError` object represents an error when several errors
@@ -13,7 +25,6 @@
*/
const AggregateErrorOrPolyfill: AggregateErrorConstructor =
/* @__PURE__ */ (() =>
- // eslint-disable-next-line compat/compat
globalThis.AggregateError ??
(class AggregateError extends Error {
errors: Error[]
diff --git a/src/async/all.ts b/src/async/all.ts
index b088f331..58df015f 100644
--- a/src/async/all.ts
+++ b/src/async/all.ts
@@ -1,13 +1,8 @@
import { AggregateError, isArray } from 'radashi'
-type PromiseValues[]> = {
- [K in keyof T]: T[K] extends Promise ? U : never
-}
-
/**
- * Functionally similar to `Promise.all` or `Promise.allSettled`. If
- * any errors are thrown, all errors are gathered and thrown in an
- * `AggregateError`.
+ * Wait for all promises to resolve. Errors from rejected promises are
+ * collected into an `AggregateError`.
*
* @see https://radashi.js.org/reference/async/all
* @example
@@ -20,18 +15,22 @@ type PromiseValues[]> = {
* ```
* @version 12.1.0
*/
-export async function all, ...Promise[]]>(
- promises: T,
-): Promise>
+export async function all(
+ input: T,
+): Promise<{ -readonly [I in keyof T]: Awaited }>
-export async function all[]>(
- promises: T,
-): Promise>
+export async function all(
+ input: T,
+): Promise<{ -readonly [I in keyof T]: Awaited }>
/**
- * Functionally similar to `Promise.all` or `Promise.allSettled`. If
- * any errors are thrown, all errors are gathered and thrown in an
- * `AggregateError`.
+ * Check each property in the given object for a promise value. Wait
+ * for all promises to resolve. Errors from rejected promises are
+ * collected into an `AggregateError`.
+ *
+ * The returned promise will resolve with an object whose keys are
+ * identical to the keys of the input object. The values are the
+ * resolved values of the promises.
*
* @see https://radashi.js.org/reference/async/all
* @example
@@ -43,39 +42,35 @@ export async function all[]>(
* })
* ```
*/
-export async function all>>(
- promises: T,
-): Promise<{ [K in keyof T]: Awaited }>
+export async function all>(
+ input: T,
+): Promise<{ -readonly [K in keyof T]: Awaited }>
export async function all(
- promises: Record> | Promise[],
+ input: Record | readonly unknown[],
): Promise {
- const entries = isArray(promises)
- ? promises.map(p => [null, p] as const)
- : Object.entries(promises)
-
- const results = await Promise.all(
- entries.map(([key, value]) =>
- value
- .then(result => ({ result, exc: null, key }))
- .catch(exc => ({ result: null, exc, key })),
- ),
- )
+ const errors: any[] = []
+ const onError = (err: any) => {
+ errors.push(err)
+ }
- const exceptions = results.filter(r => r.exc)
- if (exceptions.length > 0) {
- throw new AggregateError(exceptions.map(e => e.exc))
+ let output: any
+ if (isArray(input)) {
+ output = await Promise.all(
+ input.map(value => Promise.resolve(value).catch(onError)),
+ )
+ } else {
+ output = { ...input }
+ await Promise.all(
+ Object.keys(output).map(async key => {
+ output[key] = await Promise.resolve(output[key]).catch(onError)
+ }),
+ )
}
- if (isArray(promises)) {
- return results.map(r => r.result)
+ if (errors.length > 0) {
+ throw new AggregateError(errors)
}
- return results.reduce(
- (acc, item) => {
- acc[item.key!] = item.result
- return acc
- },
- {} as Record,
- )
+ return output
}
diff --git a/src/async/parallel.ts b/src/async/parallel.ts
index 41052997..0024ba3c 100644
--- a/src/async/parallel.ts
+++ b/src/async/parallel.ts
@@ -1,28 +1,63 @@
-import { AggregateError, flat, fork, list, sort, tryit } from 'radashi'
+import {
+ AggregateError,
+ flat,
+ fork,
+ isNumber,
+ list,
+ sort,
+ tryit,
+} from 'radashi'
+
+type AbortSignal = {
+ readonly aborted: boolean
+ readonly reason: any
+ addEventListener(type: 'abort', listener: () => void): void
+ removeEventListener(type: 'abort', listener: () => void): void
+ throwIfAborted(): void
+}
type WorkItemResult = {
index: number
result: K
error: any
}
+
+export type ParallelOptions =
+ | {
+ limit: number
+ signal?: AbortSignal
+ }
+ | number
+
/**
* Executes many async functions in parallel. Returns the results from
* all functions as an array. After all functions have resolved, if
* any errors were thrown, they are rethrown in an instance of
- * AggregateError.
+ * AggregateError. The operation can be aborted by passing optional AbortSignal,
+ * which will throw an Error if aborted.
*
* @see https://radashi.js.org/reference/async/parallel
* @example
* ```ts
* // Process images concurrently, resizing each image to a standard size.
- * const images = await parallel(2, imageFiles, async (file) => {
+ * const abortController = new AbortController();
+ * const images = await parallel(
+ * {
+ * limit: 2,
+ * signal: abortController.signal,
+ * },
+ * imageFiles,
+ * async file => {
* return await resizeImage(file)
* })
+ *
+ * // To abort the operation:
+ * // abortController.abort()
* ```
* @version 12.1.0
*/
export async function parallel(
- limit: number,
+ options: ParallelOptions,
array: readonly T[],
func: (item: T) => Promise,
): Promise {
@@ -30,13 +65,24 @@ export async function parallel(
index,
item,
}))
+
+ let signal: AbortSignal | undefined
+ if (isNumber(options)) {
+ options = {
+ limit: options,
+ }
+ } else {
+ signal = options.signal
+ signal?.throwIfAborted()
+ }
+
// Process array items
- const processor = async (res: (value: WorkItemResult[]) => void) => {
+ const processor = async (resolve: (value: WorkItemResult[]) => void) => {
const results: WorkItemResult[] = []
- while (true) {
+ while (!signal?.aborted) {
const next = work.pop()
if (!next) {
- return res(results)
+ break
}
const [error, result] = await tryit(func)(next.item)
results.push({
@@ -45,11 +91,27 @@ export async function parallel(
index: next.index,
})
}
+ return resolve(results)
+ }
+
+ const queues = Promise.all(
+ list(1, options.limit).map(() => new Promise(processor)),
+ )
+
+ let signalPromise: Promise | undefined
+ if (signal) {
+ signalPromise = new Promise((_, reject) => {
+ const onAbort = () => reject(signal.reason)
+ signal.addEventListener('abort', onAbort)
+ queues.then(() => signal.removeEventListener('abort', onAbort))
+ })
}
- // Create queues
- const queues = list(1, limit).map(() => new Promise(processor))
+
// Wait for all queues to complete
- const itemResults = (await Promise.all(queues)) as WorkItemResult[][]
+ const itemResults = await (signalPromise
+ ? Promise.race([queues, signalPromise])
+ : queues)
+
const [errors, results] = fork(
sort(flat(itemResults), r => r.index),
x => !!x.error,
diff --git a/src/async/retry.ts b/src/async/retry.ts
index 53132671..a04f66f5 100644
--- a/src/async/retry.ts
+++ b/src/async/retry.ts
@@ -1,9 +1,14 @@
import { sleep, tryit } from 'radashi'
+type AbortSignal = {
+ throwIfAborted(): void
+}
+
export type RetryOptions = {
times?: number
delay?: number | null
backoff?: (count: number) => number
+ signal?: AbortSignal
}
/**
@@ -12,9 +17,12 @@ export type RetryOptions = {
* @see https://radashi.js.org/reference/async/retry
* @example
* ```ts
- * const result = await retry({ times: 3, delay: 1000 }, async () => {
+ * const abortController = new AbortController();
+ * const result = await retry({ times: 3, delay: 1000, signal: abortController.signal }, async () => {
* return await fetch('https://example.com')
* })
+ * // To abort the operation:
+ * // abortController.abort()
* ```
* @version 12.1.0
*/
@@ -25,11 +33,14 @@ export async function retry(
const times = options?.times ?? 3
const delay = options?.delay
const backoff = options?.backoff ?? null
+ const signal = options?.signal
+
let i = 0
while (true) {
const [err, result] = (await tryit(func)((err: any) => {
throw { _exited: err }
})) as [any, TResponse]
+ signal?.throwIfAborted()
if (!err) {
return result
}
diff --git a/src/async/withResolvers.ts b/src/async/withResolvers.ts
index 41caf2b2..6c5f576e 100644
--- a/src/async/withResolvers.ts
+++ b/src/async/withResolvers.ts
@@ -1,4 +1,4 @@
-interface PromiseWithResolvers {
+export interface PromiseWithResolvers {
promise: Promise
resolve: (value: T | PromiseLike) => void
reject: (reason?: any) => void
diff --git a/src/mod.ts b/src/mod.ts
index ae241665..b1ac0dd6 100644
--- a/src/mod.ts
+++ b/src/mod.ts
@@ -135,4 +135,4 @@ export * from './typed/isTagged.ts'
export * from './typed/isWeakMap.ts'
export * from './typed/isWeakSet.ts'
-export * from './types'
+export * from './types.ts'
diff --git a/src/random/draw.ts b/src/random/draw.ts
index 6f2bfa11..ddef019b 100644
--- a/src/random/draw.ts
+++ b/src/random/draw.ts
@@ -16,10 +16,12 @@ import { random } from 'radashi'
* ```
* @version 12.1.0
*/
-export function draw(array: readonly T[]): T | null {
+export function draw(
+ array: T,
+): T extends readonly [any, ...any[]] ? T[number] : T[number] | null {
const max = array.length
if (max === 0) {
- return null
+ return null as any
}
const index = random(0, max - 1)
return array[index]
diff --git a/src/typed/isEmpty.ts b/src/typed/isEmpty.ts
index 1fdc9a24..90b50b7d 100644
--- a/src/typed/isEmpty.ts
+++ b/src/typed/isEmpty.ts
@@ -2,15 +2,14 @@ import { isDate, isFunction, isNumber, isSymbol } from 'radashi'
/**
* Return true if the given value is empty.
+ * This function also uses [Type Guards](https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards) to ensure type safety
*
* Empty values include:
* - `null`
* - `undefined`
* - `0`
- * - `NaN`
- * - `''`
- * - `[]`
- * - `{}`
+ * - empty string
+ * - empty array
* - invalid `Date` time
* - object with `length` property of `0`
* - object with `size` property of `0`
@@ -27,7 +26,9 @@ import { isDate, isFunction, isNumber, isSymbol } from 'radashi'
* ```
* @version 12.1.0
*/
-export function isEmpty(value: any): boolean {
+export function isEmpty(value: T): value is ToEmpty
+export function isEmpty(value: unknown): boolean
+export function isEmpty(value: unknown): boolean {
if (value === true || value === false) {
return true
}
@@ -57,3 +58,32 @@ export function isEmpty(value: any): boolean {
const keys = Object.keys(value).length
return keys === 0
}
+
+// biome-ignore lint/complexity/noBannedTypes:
+type NeverEmpty = symbol | Function
+
+/**
+ * A type that can be narrowed by `isEmpty`.
+ */
+export type ToEmptyAble =
+ | NeverEmpty
+ | boolean
+ | number
+ | string
+ | readonly any[]
+ | null
+ | undefined
+
+/**
+ * Narrow a type to an empty value.
+ *
+ * Due to TypeScript limitations, object types cannot be narrowed,
+ * except for arrays and functions.
+ */
+export type ToEmpty = (
+ T extends any[]
+ ? never[]
+ : Extract
+) extends infer U
+ ? Extract
+ : never
diff --git a/tests/array/first.test-d.ts b/tests/array/first.test-d.ts
new file mode 100644
index 00000000..fd0db352
--- /dev/null
+++ b/tests/array/first.test-d.ts
@@ -0,0 +1,40 @@
+import * as _ from 'radashi'
+
+describe('first', () => {
+ test('inlined array', () => {
+ expectTypeOf(_.first([])).toEqualTypeOf()
+ expectTypeOf(_.first([1, 2, 3])).toEqualTypeOf<1>()
+ })
+
+ test('variable with empty array', () => {
+ const emptyArray = [] as never[]
+
+ expectTypeOf(_.first(emptyArray)).toEqualTypeOf()
+ })
+
+ test('variable with mutable array', () => {
+ const array = [1, 2, 3]
+
+ expectTypeOf(_.first(array)).toEqualTypeOf()
+ })
+
+ test('variable with readonly tuple', () => {
+ const emptyTuple = [] as const
+ const tuple = [1, 2, 3] as const
+
+ expectTypeOf(_.first(emptyTuple)).toEqualTypeOf()
+ expectTypeOf(_.first(tuple)).toEqualTypeOf<1>()
+ })
+
+ test('with default value', () => {
+ const emptyArray = [] as never[]
+ const emptyTuple = [] as const
+ const array = [1, 2, 3]
+ const tuple = [1, 2, 3] as const
+
+ expectTypeOf(_.first(emptyArray, false)).toEqualTypeOf()
+ expectTypeOf(_.first(emptyTuple, false)).toEqualTypeOf()
+ expectTypeOf(_.first(array, false)).toEqualTypeOf()
+ expectTypeOf(_.first(tuple, false)).toEqualTypeOf<1>()
+ })
+})
diff --git a/tests/array/last.test-d.ts b/tests/array/last.test-d.ts
new file mode 100644
index 00000000..8578490c
--- /dev/null
+++ b/tests/array/last.test-d.ts
@@ -0,0 +1,40 @@
+import * as _ from 'radashi'
+
+describe('last', () => {
+ test('inlined array', () => {
+ expectTypeOf(_.last([])).toEqualTypeOf()
+ expectTypeOf(_.last([1, 2, 3])).toEqualTypeOf<3>()
+ })
+
+ test('variable with empty array', () => {
+ const emptyArray = [] as never[]
+
+ expectTypeOf(_.last(emptyArray)).toEqualTypeOf()
+ })
+
+ test('variable with mutable array', () => {
+ const array = [1, 2, 3]
+
+ expectTypeOf(_.last(array)).toEqualTypeOf()
+ })
+
+ test('variable with readonly tuple', () => {
+ const emptyTuple = [] as const
+ const tuple = [1, 2, 3] as const
+
+ expectTypeOf(_.last(emptyTuple)).toEqualTypeOf()
+ expectTypeOf(_.last(tuple)).toEqualTypeOf<3>()
+ })
+
+ test('with default value', () => {
+ const emptyArray = [] as never[]
+ const emptyTuple = [] as const
+ const array = [1, 2, 3]
+ const tuple = [1, 2, 3] as const
+
+ expectTypeOf(_.last(emptyArray, false)).toEqualTypeOf()
+ expectTypeOf(_.last(emptyTuple, false)).toEqualTypeOf()
+ expectTypeOf(_.last(array, false)).toEqualTypeOf()
+ expectTypeOf(_.last(tuple, false)).toEqualTypeOf<3>()
+ })
+})
diff --git a/tests/async/all.test-d.ts b/tests/async/all.test-d.ts
new file mode 100644
index 00000000..e762f699
--- /dev/null
+++ b/tests/async/all.test-d.ts
@@ -0,0 +1,77 @@
+import { all } from 'radashi'
+
+describe('all', () => {
+ test('array input', async () => {
+ const result = await all([] as Promise[])
+ expectTypeOf(result).toEqualTypeOf()
+ })
+
+ test('object input', async () => {
+ const result = await all({} as Record>)
+ expectTypeOf(result).toEqualTypeOf>()
+ })
+
+ test('readonly array input of promises, promise-like objects, and non-promises', async () => {
+ const result = await all([
+ Promise.resolve(1 as const),
+ new Thenable(2 as const),
+ 3,
+ ] as const)
+
+ expectTypeOf(result).toEqualTypeOf<[1, 2, 3]>()
+ })
+
+ test('readonly array input with nested object', async () => {
+ const result = await all([{ a: 1 }, Promise.resolve({ b: 2 })])
+
+ expectTypeOf(result).toEqualTypeOf<[{ a: number }, { b: number }]>()
+ })
+
+ test('readonly object input of promises, promise-like objects, and non-promises', async () => {
+ const result = await all({
+ a: Promise.resolve(1 as const),
+ b: new Thenable(2 as const),
+ c: 3,
+ } as const)
+
+ expectTypeOf(result).toEqualTypeOf<{
+ a: 1
+ b: 2
+ c: 3
+ }>()
+ })
+
+ test('array input with nested promise', async () => {
+ const result = await all([[Promise.resolve(1 as const)] as const])
+
+ // Nested promises are not unwrapped.
+ expectTypeOf(result).toEqualTypeOf<[readonly [Promise<1>]]>()
+ })
+
+ test('object input with nested promise', async () => {
+ const result = await all({
+ a: { b: Promise.resolve(1 as const) },
+ })
+
+ // Nested promises are not unwrapped.
+ expectTypeOf(result).toEqualTypeOf<{ a: { b: Promise<1> } }>()
+ })
+})
+
+class Thenable implements PromiseLike {
+ constructor(private value: T) {}
+
+ // biome-ignore lint/suspicious/noThenProperty:
+ then(
+ onfulfilled?:
+ | ((value: T) => TResult1 | PromiseLike)
+ | undefined
+ | null,
+ onrejected?:
+ | ((reason: any) => TResult2 | PromiseLike)
+ | undefined
+ | null,
+ ): PromiseLike {
+ return Promise.resolve(this.value).then(onfulfilled, onrejected)
+ }
+}
diff --git a/tests/async/all.test.ts b/tests/async/all.test.ts
index bb5a7176..83b05157 100644
--- a/tests/async/all.test.ts
+++ b/tests/async/all.test.ts
@@ -1,5 +1,4 @@
import * as _ from 'radashi'
-import type { AggregateError } from 'radashi'
describe('all', () => {
const promise = {
diff --git a/tests/async/parallel.test.ts b/tests/async/parallel.test.ts
index 602f2385..3cc97feb 100644
--- a/tests/async/parallel.test.ts
+++ b/tests/async/parallel.test.ts
@@ -1,5 +1,4 @@
import * as _ from 'radashi'
-import type { AggregateError } from 'radashi'
describe('parallel', () => {
test('returns all results from all functions', async () => {
@@ -12,6 +11,7 @@ describe('parallel', () => {
expect(errors).toBeUndefined()
expect(results).toEqual(['hi_1', 'hi_2', 'hi_3'])
})
+
test('throws errors as array of all errors', async () => {
const [error, results] = await _.try(async () => {
return _.parallel(1, _.list(1, 3), async num => {
@@ -27,6 +27,7 @@ describe('parallel', () => {
expect(err.errors.length).toBe(1)
expect(err.errors[0].message).toBe('number is 2')
})
+
test('does not run more than the limit at once', async () => {
let numInProgress = 0
const tracking: number[] = []
@@ -38,4 +39,74 @@ describe('parallel', () => {
})
expect(Math.max(...tracking)).toBe(3)
})
+
+ test('abort before all iterations are complete', async () => {
+ vi.useFakeTimers()
+
+ const ctrl = new AbortController()
+
+ // Abort in the middle of the 3rd iteration.
+ setTimeout(() => ctrl.abort(), 25)
+
+ const callback = vi.fn(() => _.sleep(10))
+ const promise = _.parallel(
+ {
+ limit: 1,
+ signal: ctrl.signal,
+ },
+ _.list(1, 10),
+ callback,
+ )
+ promise.catch(_.noop)
+
+ await vi.advanceTimersByTimeAsync(25)
+
+ await expect(promise).rejects.toThrowError(
+ new DOMException('This operation was aborted', 'AbortError'),
+ )
+ expect(callback).toHaveBeenCalledTimes(3)
+ })
+
+ test('abort before first iteration begins', async () => {
+ const ctrl = new AbortController()
+ ctrl.abort()
+
+ const callback = vi.fn()
+ await expect(
+ _.parallel(
+ {
+ limit: 1,
+ signal: ctrl.signal,
+ },
+ _.list(1, 5),
+ callback,
+ ),
+ ).rejects.toThrowError(
+ new DOMException('This operation was aborted', 'AbortError'),
+ )
+ expect(callback).not.toHaveBeenCalled()
+ })
+
+ test('remove abort listener after completion', async () => {
+ vi.useFakeTimers()
+
+ const ctrl = new AbortController()
+ const removeEventListener = vi.spyOn(ctrl.signal, 'removeEventListener')
+
+ const callback = vi.fn()
+ await _.parallel(
+ {
+ limit: 2,
+ signal: ctrl.signal,
+ },
+ _.list(1, 5),
+ callback,
+ )
+
+ expect(callback).toHaveBeenCalledTimes(5)
+ expect(removeEventListener).toHaveBeenCalledWith(
+ 'abort',
+ expect.any(Function),
+ )
+ })
})
diff --git a/tests/async/retry.test.ts b/tests/async/retry.test.ts
index 553023d1..ddc2c271 100644
--- a/tests/async/retry.test.ts
+++ b/tests/async/retry.test.ts
@@ -1,7 +1,7 @@
// cSpell:ignore backoffs
-import * as _ from 'radashi'
import type { RetryOptions } from 'radashi'
+import * as _ from 'radashi'
const cast = (value: any): T => value
@@ -116,4 +116,23 @@ describe('retry', () => {
// or 2 milliseconds after.
expect(diff).toBeGreaterThanOrEqual(backoffs)
})
+ test('aborts the retry operation when signal is aborted', async () => {
+ try {
+ const abortController = new AbortController()
+ let attempt = 0
+ await _.retry({ signal: abortController.signal }, async () => {
+ attempt++
+ if (attempt === 2) {
+ abortController.abort()
+ }
+ throw 'quit again'
+ })
+ } catch (err) {
+ expect(err).toBeInstanceOf(Error)
+ expect((err as Error).message).toBe('This operation was aborted')
+ return
+ }
+
+ expect.fail('error should have been thrown')
+ })
})
diff --git a/tests/random/draw.test-d.ts b/tests/random/draw.test-d.ts
new file mode 100644
index 00000000..af3b4f94
--- /dev/null
+++ b/tests/random/draw.test-d.ts
@@ -0,0 +1,28 @@
+import * as _ from 'radashi'
+
+describe('draw', () => {
+ test('variable with mutable array', () => {
+ const array = [1, 2, 3]
+
+ expectTypeOf(_.draw(array)).toEqualTypeOf()
+ })
+
+ test('variable with empty array', () => {
+ const emptyArray = [] as never[]
+ const emptyTuple = [] as const
+
+ expectTypeOf(_.draw(emptyArray)).toEqualTypeOf()
+ expectTypeOf(_.draw(emptyTuple)).toEqualTypeOf()
+ })
+
+ test('variable with tuple', () => {
+ const tuple = [1, 2, 3] as const
+
+ expectTypeOf(_.draw(tuple)).toEqualTypeOf<1 | 2 | 3>()
+ })
+
+ test('inlined array', () => {
+ expectTypeOf(_.draw([])).toEqualTypeOf()
+ expectTypeOf(_.draw([1, 2, 3])).toEqualTypeOf<1 | 2 | 3>()
+ })
+})
diff --git a/tests/tsconfig.json b/tests/tsconfig.json
index c93259ed..28005ada 100644
--- a/tests/tsconfig.json
+++ b/tests/tsconfig.json
@@ -7,7 +7,7 @@
"moduleResolution": "node",
"outDir": "../dist/tmp",
"target": "esnext",
- "lib": ["es2020"],
+ "lib": ["es2020", "es2021.promise"],
"esModuleInterop": true,
"module": "esnext",
"skipLibCheck": true,
diff --git a/tests/typed/isEmpty.test-d.ts b/tests/typed/isEmpty.test-d.ts
new file mode 100644
index 00000000..42a51b4a
--- /dev/null
+++ b/tests/typed/isEmpty.test-d.ts
@@ -0,0 +1,120 @@
+import type { ToEmptyAble } from 'radashi'
+import * as _ from 'radashi'
+
+describe('isEmpty type guard', () => {
+ test('string', () => {
+ const value = {} as string
+
+ if (_.isEmpty(value)) {
+ expectTypeOf(value).toEqualTypeOf<''>()
+ } else {
+ expectTypeOf(value).toEqualTypeOf()
+ }
+ })
+
+ test('array', () => {
+ const value = [] as string[]
+
+ if (_.isEmpty(value)) {
+ expectTypeOf(value).toEqualTypeOf()
+ } else {
+ expectTypeOf(value).toEqualTypeOf()
+ }
+ })
+
+ test('readonly array', () => {
+ const value = [] as readonly string[]
+
+ if (_.isEmpty(value)) {
+ expectTypeOf(value).toEqualTypeOf()
+ } else {
+ expectTypeOf(value).toEqualTypeOf()
+ }
+ })
+
+ test('number', () => {
+ const value = {} as number
+
+ if (_.isEmpty(value)) {
+ expectTypeOf(value).toEqualTypeOf<0>()
+ } else {
+ expectTypeOf(value).toEqualTypeOf()
+ }
+ })
+
+ test('boolean', () => {
+ const value = {} as boolean
+
+ if (_.isEmpty(value)) {
+ expectTypeOf(value).toEqualTypeOf()
+ } else {
+ expectTypeOf(value).toEqualTypeOf()
+ }
+ })
+
+ test('kitchen sink', () => {
+ const value = {} as ToEmptyAble
+
+ if (_.isEmpty(value)) {
+ expectTypeOf(value).toEqualTypeOf<
+ 0 | '' | false | readonly never[] | null | undefined
+ >()
+ } else {
+ expectTypeOf(value).toEqualTypeOf<
+ // biome-ignore lint/complexity/noBannedTypes:
+ true | number | string | readonly any[] | symbol | Function
+ >()
+ }
+ })
+
+ /**
+ * Some types are marked as "never empty", which means `isEmpty`
+ * will always return false for them.
+ */
+ test('never empty types', () => {
+ const value = {} as symbol | (() => any) | null | undefined
+
+ if (_.isEmpty(value)) {
+ expectTypeOf(value).toEqualTypeOf()
+ } else {
+ expectTypeOf(value).toEqualTypeOf any)>()
+ }
+ })
+
+ /**
+ * Object types that are *not* assignable to the `ToEmptyAble` type
+ * will disable the type guard entirely. This is an unavoidable
+ * limitation of TypeScript.
+ */
+ test('incompatible types', () => {
+ const value = {} as Date | null | undefined
+
+ if (_.isEmpty(value)) {
+ expectTypeOf(value).toEqualTypeOf()
+ } else {
+ expectTypeOf(value).toEqualTypeOf()
+ }
+ })
+
+ test('any', () => {
+ const value = {} as any
+
+ if (_.isEmpty(value)) {
+ expectTypeOf(value).toEqualTypeOf<
+ false | '' | 0 | readonly never[] | never[] | null | undefined
+ >()
+ } else {
+ expectTypeOf(value).toEqualTypeOf()
+ }
+ })
+
+ test('unknown', () => {
+ const value = {} as unknown
+
+ if (_.isEmpty(value)) {
+ expectTypeOf(value).toEqualTypeOf()
+ } else {
+ expectTypeOf(value).toEqualTypeOf()
+ }
+ })
+})
diff --git a/tests/typed/isEmpty.test.ts b/tests/typed/isEmpty.test.ts
index e20a5291..916f3363 100644
--- a/tests/typed/isEmpty.test.ts
+++ b/tests/typed/isEmpty.test.ts
@@ -23,6 +23,7 @@ describe('isEmpty', () => {
expect(_.isEmpty(new Date())).toBeFalsy()
expect(_.isEmpty(new Date('2022-09-01T02:19:55.976Z'))).toBeFalsy()
expect(_.isEmpty(22)).toBeFalsy()
+ expect(_.isEmpty(-22)).toBeFalsy()
expect(_.isEmpty(new Person())).toBeFalsy()
expect(_.isEmpty({ name: 'x' })).toBeFalsy()
expect(_.isEmpty('abc')).toBeFalsy()