mirror of
https://github.com/astral-sh/setup-uv.git
synced 2026-11-05 01:35:32 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
20cfd1bf94 | ||
|
|
d73a0cab66 | ||
|
|
ae3b92d1bd | ||
|
|
ae62891fec | ||
|
|
f9cdb47d48 | ||
|
|
4f6036f71c | ||
|
|
8d6402c9b7 | ||
|
|
46f427bd47 | ||
|
|
8ed89c5114 | ||
|
|
8473c7fea4 | ||
|
|
18d451d679 | ||
|
|
f45168497b | ||
|
|
b68407c192 | ||
|
|
696e4e1bf2 | ||
|
|
7cd5f7fd2e | ||
|
|
d64009a7c5 | ||
|
|
7e7e21ddc3 | ||
|
|
094aa226ed | ||
|
|
d269b9917d | ||
|
|
c6081965dd | ||
|
|
c771a70e62 | ||
|
|
2f537ca87c | ||
|
|
2269552d54 | ||
|
|
47a7f4fb2e | ||
|
|
71966eff34 | ||
|
|
f12b1f0a84 | ||
|
|
ecd24dd710 | ||
|
|
6a19136684 | ||
|
|
11f9893b08 | ||
|
|
f798556032 | ||
|
|
e80544d808 | ||
|
|
f98e069381 | ||
|
|
cd462639a9 | ||
|
|
11245c7e12 | ||
|
|
d31148d669 | ||
|
|
17c398959b | ||
|
|
3cc3c11fdf | ||
|
|
9225f843d7 | ||
|
|
fc16fa3bbf | ||
|
|
a1a7345c8e | ||
|
|
a5e9cbfd5f | ||
|
|
c5680ec91f | ||
|
|
c86fe4ef1f | ||
|
|
224c887d48 | ||
|
|
b173788282 | ||
|
|
e53da17296 | ||
|
|
a9b33f0240 | ||
|
|
3faa3174e6 | ||
|
|
ca5ddd015e | ||
|
|
e2f6a928de | ||
|
|
ed73b5df24 | ||
|
|
21d5da3bc3 | ||
|
|
fac544c07d | ||
|
|
7390f777b0 | ||
|
|
363c64a728 | ||
|
|
c4fcbafce4 | ||
|
|
8e642c5e62 | ||
|
|
a92cb43098 | ||
|
|
e07f2ac4b7 | ||
|
|
bc4034eedf | ||
|
|
df42d4f6ba | ||
|
|
b9c8c4c7ba | ||
|
|
80cc27528e | ||
|
|
818affc359 | ||
|
|
feda7fc6a9 | ||
|
|
8dc20b2aca | ||
|
|
e7108c6ccc | ||
|
|
12d13f90bc | ||
|
|
7470949a2c | ||
|
|
ed07c76224 | ||
|
|
ba17a16c0a | ||
|
|
853401723d | ||
|
|
7568f55a9a | ||
|
|
a81585cbb0 | ||
|
|
88aa608651 | ||
|
|
00714ea9dc | ||
|
|
c4fec0d78d | ||
|
|
9d91aa17e1 | ||
|
|
363818fa0d | ||
|
|
05143d3dcd | ||
|
|
2ae9516c03 | ||
|
|
c0c76fcf76 | ||
|
|
dff86cf972 | ||
|
|
c0b7f63f92 | ||
|
|
d854a6dce4 |
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: dependabot-pr-rollup
|
||||
description: Find open Dependabot PRs for the current GitHub repo, compare each PR head to its base branch, replay only the net dependency changes in a fresh worktree and branch, run npm validation, and optionally commit, push, and open a PR. Use when you want to batch or manually replicate active Dependabot updates.
|
||||
description: Find open Dependabot PRs for the current GitHub repo, compare each PR head to its base branch, replay only the net dependency changes in a fresh worktree and branch, run npm validation, then commit, push, and open a pull request labeled dependencies. Use when you want to batch or manually replicate active Dependabot updates.
|
||||
license: MIT
|
||||
compatibility: Requires git, git worktree, gh CLI auth, npm, and a GitHub repo with an origin remote.
|
||||
---
|
||||
@@ -13,7 +13,7 @@ Use this skill when the user wants to:
|
||||
- find all open Dependabot PRs in the current repo
|
||||
- reproduce their net effect in one local branch
|
||||
- validate the result with the repo's standard npm checks
|
||||
- optionally commit, push, and open a PR
|
||||
- commit and push the validated changes, then open a PR labeled `dependencies`
|
||||
|
||||
## Workflow
|
||||
|
||||
@@ -26,8 +26,10 @@ Use this skill when the user wants to:
|
||||
- Inspect `package.json` before editing.
|
||||
- Run `npm ci --ignore-scripts` before applying updates.
|
||||
- Use `npm install ... --ignore-scripts` for direct dependency changes so `package-lock.json` stays in sync.
|
||||
- When updating `@biomejs/biome`, also update the Biome schema URL version in `biome.json` to match the installed Biome version.
|
||||
7. Run `npm run all`.
|
||||
8. If requested, commit the changed source, lockfile, and generated artifacts, then push and open a PR.
|
||||
8. Commit the changed source, lockfile, and generated artifacts, then push the branch.
|
||||
9. Always open a pull request for the rollup and add the `dependencies` label to it. Pass `--label dependencies` to `gh pr create`, or add the label immediately afterward with `gh pr edit --add-label dependencies`.
|
||||
|
||||
## Repo-specific notes
|
||||
|
||||
@@ -45,4 +47,5 @@ Always report:
|
||||
- new worktree path
|
||||
- files changed
|
||||
- `npm run all` result
|
||||
- if applicable, commit SHA and PR URL
|
||||
- commit SHA and PR URL
|
||||
- confirmation that the PR has the `dependencies` label
|
||||
|
||||
@@ -41,13 +41,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
|
||||
uses: github/codeql-action/init@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
source-root: src
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
|
||||
uses: github/codeql-action/autobuild@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
@@ -73,4 +73,4 @@ jobs:
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
|
||||
uses: github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
|
||||
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
pull-requests: read
|
||||
steps:
|
||||
- name: 🚀 Run Release Drafter
|
||||
uses: release-drafter/release-drafter@5de93583980a40bd78603b6dfdcda5b4df377b32 # v7.2.0
|
||||
uses: release-drafter/release-drafter@34d80673e067bdc0c24568d3af899c216adcfaa9 # v7.7.0
|
||||
with:
|
||||
commitish: ${{ github.sha }}
|
||||
env:
|
||||
|
||||
@@ -111,3 +111,14 @@ jobs:
|
||||
|
||||
echo "Publishing draft release $TAG"
|
||||
gh release edit "$TAG" --draft=false
|
||||
|
||||
update-docs:
|
||||
name: Update docs
|
||||
needs:
|
||||
- release
|
||||
uses: ./.github/workflows/update-docs.yml
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
with:
|
||||
tag: v${{ inputs.version }}
|
||||
|
||||
+109
-48
@@ -21,14 +21,14 @@ jobs:
|
||||
permissions:
|
||||
security-events: write # for zizmor
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Actionlint
|
||||
uses: eifinger/actionlint-action@7802e0cc3ab3f81cbffb36fb0bf1a3621d994b89 # v1.10.1
|
||||
uses: eifinger/actionlint-action@1fc89649be682d16ec5cf65ea16e269eb88d3982 # v1.10.2
|
||||
- name: Run zizmor
|
||||
uses: zizmorcore/zizmor-action@71321a20a9ded102f6e9ce5718a2fcec2c4f70d8 # v0.5.2
|
||||
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
uses: zizmorcore/zizmor-action@3dc1ecc9bcb9e94e9b2c709687979e1298497054 # v0.6.2
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: .nvmrc
|
||||
cache: npm
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, macos-14, windows-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install latest version
|
||||
@@ -76,7 +76,7 @@ jobs:
|
||||
test-uv-no-modify-path:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install with UV_NO_MODIFY_PATH set
|
||||
@@ -125,7 +125,7 @@ jobs:
|
||||
expected-version: "0.1.0"
|
||||
resolution-strategy: "lowest"
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install version ${{ matrix.input.version-input }} with strategy ${{ matrix.input.resolution-strategy || 'highest' }}
|
||||
@@ -154,7 +154,7 @@ jobs:
|
||||
matrix:
|
||||
version-input: ["latest", ">=0.8"]
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install version ${{ matrix.version-input }}
|
||||
@@ -194,7 +194,7 @@ jobs:
|
||||
- working-directory: "__tests__/fixtures/uv-toml-project"
|
||||
expected-version: "0.5.15"
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install version from ${{ matrix.input.working-directory }}
|
||||
@@ -220,7 +220,7 @@ jobs:
|
||||
- version-file: "__tests__/fixtures/.tool-versions"
|
||||
expected-version: "0.5.15"
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install version from ${{ matrix.input.version-file }}
|
||||
@@ -234,10 +234,35 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
test-tool-versions-python-version:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install versions from .tool-versions
|
||||
id: setup-uv
|
||||
uses: ./
|
||||
with:
|
||||
version-file: "__tests__/fixtures/.tool-versions"
|
||||
- name: Verify Python version from .tool-versions
|
||||
run: |
|
||||
if [ "$UV_PYTHON" != "3.13.1t" ]; then
|
||||
echo "Wrong UV_PYTHON: $UV_PYTHON"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$PYTHON_VERSION" != "3.13.1t" ]; then
|
||||
echo "Wrong python-version output: $PYTHON_VERSION"
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
||||
env:
|
||||
PYTHON_VERSION: ${{ steps.setup-uv.outputs.python-version }}
|
||||
|
||||
test-malformed-pyproject-file-fallback:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install using malformed pyproject.toml
|
||||
@@ -257,7 +282,7 @@ jobs:
|
||||
- os: macos-latest
|
||||
checksum: "a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218"
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Checksum matches expected
|
||||
@@ -271,7 +296,7 @@ jobs:
|
||||
test-with-explicit-token:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install default version
|
||||
@@ -284,7 +309,7 @@ jobs:
|
||||
test-uvx:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install default version
|
||||
@@ -297,7 +322,7 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, macos-14, windows-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install default version
|
||||
@@ -311,7 +336,7 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install latest version
|
||||
@@ -343,7 +368,7 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install latest version
|
||||
@@ -382,7 +407,7 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install latest version
|
||||
@@ -433,7 +458,7 @@ jobs:
|
||||
test-activate-environment-no-project:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Create incompatible pyproject.toml
|
||||
@@ -477,7 +502,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
container: debian:unstable
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install latest version
|
||||
@@ -489,9 +514,9 @@ jobs:
|
||||
|
||||
test-musl:
|
||||
runs-on: ubuntu-latest
|
||||
container: alpine
|
||||
container: alpine@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b # 3.24.1
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install latest version
|
||||
@@ -530,7 +555,7 @@ jobs:
|
||||
- os: windows-2025
|
||||
expected-os: "windows-2025"
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup uv
|
||||
@@ -556,7 +581,7 @@ jobs:
|
||||
enable-cache: ["true", "false", "auto"]
|
||||
os: ["ubuntu-latest", "windows-latest"]
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup with cache
|
||||
@@ -575,7 +600,7 @@ jobs:
|
||||
os: ["ubuntu-latest", "windows-latest"]
|
||||
needs: test-setup-cache
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Restore with cache
|
||||
@@ -609,7 +634,7 @@ jobs:
|
||||
test-setup-cache-requirements-txt:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup with cache
|
||||
@@ -625,7 +650,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: test-setup-cache-requirements-txt
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Restore with cache
|
||||
@@ -649,7 +674,7 @@ jobs:
|
||||
test-setup-cache-dependency-glob:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup with cache
|
||||
@@ -666,7 +691,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: test-setup-cache-dependency-glob
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Change pyproject.toml
|
||||
@@ -694,7 +719,7 @@ jobs:
|
||||
test-setup-cache-save-cache-false:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup with cache
|
||||
@@ -710,7 +735,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: test-setup-cache-save-cache-false
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Restore with cache
|
||||
@@ -730,7 +755,7 @@ jobs:
|
||||
test-setup-cache-restore-cache-false:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup with cache
|
||||
@@ -745,7 +770,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: test-setup-cache-restore-cache-false
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Restore with cache
|
||||
@@ -773,7 +798,7 @@ jobs:
|
||||
expected-cache-dir: "D:\\a\\_temp\\setup-uv-cache"
|
||||
runs-on: ${{ matrix.inputs.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup with cache
|
||||
@@ -791,7 +816,7 @@ jobs:
|
||||
test-cache-local-cache-disabled:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup without cache
|
||||
@@ -810,7 +835,7 @@ jobs:
|
||||
test-cache-local-cache-disabled-but-explicit-path:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup without cache
|
||||
@@ -830,7 +855,7 @@ jobs:
|
||||
test-no-python-version:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Fake pyproject.toml at root
|
||||
@@ -845,7 +870,7 @@ jobs:
|
||||
test-custom-manifest-file:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install from custom manifest file
|
||||
@@ -861,10 +886,24 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
test-download-from-astral-mirror-false:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install with download-from-astral-mirror disabled
|
||||
id: setup-uv
|
||||
uses: ./
|
||||
with:
|
||||
download-from-astral-mirror: false
|
||||
- name: Verify uv is installed
|
||||
run: uv --version
|
||||
|
||||
test-absolute-path:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Create requirements.txt
|
||||
@@ -884,7 +923,7 @@ jobs:
|
||||
test-relative-path:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: mkdir
|
||||
@@ -908,7 +947,7 @@ jobs:
|
||||
test-cache-prune-force:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup uv
|
||||
@@ -925,7 +964,7 @@ jobs:
|
||||
test-cache-dir-from-file:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Verify uv cache dir is not populated
|
||||
@@ -952,7 +991,7 @@ jobs:
|
||||
env:
|
||||
UV_PYTHON_INSTALL_DIR: /tmp/missing-uv-python
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup uv with cache and python cache enabled
|
||||
@@ -973,7 +1012,7 @@ jobs:
|
||||
test-cache-python-installs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Verify Python install dir is not populated
|
||||
@@ -1000,7 +1039,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: test-cache-python-installs
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Verify Python install dir does not exist
|
||||
@@ -1042,7 +1081,7 @@ jobs:
|
||||
expected-python-dir: "D:\\a\\_temp\\uv-python-dir"
|
||||
runs-on: ${{ matrix.inputs.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install latest version
|
||||
@@ -1061,7 +1100,7 @@ jobs:
|
||||
test-act:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install act
|
||||
@@ -1073,10 +1112,29 @@ jobs:
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
|
||||
test-workflow-run:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install act
|
||||
run: gh extension install https://github.com/nektos/gh-act
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
- name: Verify workflow_run disables automatic caching with act
|
||||
run: |
|
||||
gh act workflow_run \
|
||||
-W __tests__/workflows/workflow-run.yml \
|
||||
-P ubuntu-latest=catthehacker/ubuntu:act-latest \
|
||||
--env RUNNER_ENVIRONMENT=github-hosted
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
|
||||
validate-typings:
|
||||
runs-on: "ubuntu-latest"
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Validate typings
|
||||
@@ -1093,6 +1151,7 @@ jobs:
|
||||
- test-from-working-directory-version
|
||||
- test-malformed-pyproject-file-fallback
|
||||
- test-version-file-version
|
||||
- test-tool-versions-python-version
|
||||
- test-checksum
|
||||
- test-with-explicit-token
|
||||
- test-uvx
|
||||
@@ -1119,6 +1178,7 @@ jobs:
|
||||
- test-restore-cache-restore-cache-false
|
||||
- test-no-python-version
|
||||
- test-custom-manifest-file
|
||||
- test-download-from-astral-mirror-false
|
||||
- test-absolute-path
|
||||
- test-relative-path
|
||||
- test-cache-prune-force
|
||||
@@ -1128,6 +1188,7 @@ jobs:
|
||||
- test-restore-python-installs
|
||||
- test-python-install-dir
|
||||
- test-act
|
||||
- test-workflow-run
|
||||
- validate-typings
|
||||
if: always()
|
||||
steps:
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
name: "Update docs"
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
tag:
|
||||
description: "Release tag to update docs for (e.g., v8.2.0)"
|
||||
required: true
|
||||
type: string
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
update-docs:
|
||||
continue-on-error: ${{ github.event_name == 'workflow_call' }}
|
||||
runs-on: ubuntu-24.04-arm
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: true
|
||||
- name: Get tag info
|
||||
id: tag-info
|
||||
run: |
|
||||
if [ -n "$INPUT_TAG" ]; then
|
||||
TAG_NAME="$INPUT_TAG"
|
||||
else
|
||||
TAG_NAME=$(git tag --list 'v[0-9]*.[0-9]*.[0-9]*' --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -1)
|
||||
fi
|
||||
|
||||
if [[ ! "$TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
echo "::error::Tag must match vMAJOR.MINOR.PATCH (e.g., v8.2.0)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
COMMIT_SHA=$(git rev-list -n 1 "$TAG_NAME")
|
||||
echo "tag=$TAG_NAME" >> "$GITHUB_OUTPUT"
|
||||
echo "sha=$COMMIT_SHA" >> "$GITHUB_OUTPUT"
|
||||
env:
|
||||
INPUT_TAG: ${{ inputs.tag }}
|
||||
- name: Update references in docs
|
||||
run: |
|
||||
OLD_REF=$(grep -oh 'astral-sh/setup-uv@[a-f0-9]\{40\} # v[0-9][^ ]*' README.md docs/*.md | head -1)
|
||||
OLD_SHA=$(echo "$OLD_REF" | sed 's/astral-sh\/setup-uv@\([a-f0-9]*\) # .*/\1/')
|
||||
OLD_VERSION=$(echo "$OLD_REF" | sed 's/astral-sh\/setup-uv@[a-f0-9]* # \(v[^ ]*\)/\1/')
|
||||
echo "Replacing $OLD_SHA # $OLD_VERSION with $NEW_SHA # $NEW_VERSION"
|
||||
find README.md docs/ -type f \( -name "*.md" \) -exec \
|
||||
sed -i "s|$OLD_SHA # $OLD_VERSION|$NEW_SHA # $NEW_VERSION|g" {} +
|
||||
env:
|
||||
NEW_SHA: ${{ steps.tag-info.outputs.sha }}
|
||||
NEW_VERSION: ${{ steps.tag-info.outputs.tag }}
|
||||
- name: Check for changes
|
||||
id: changes-exist
|
||||
run: |
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
echo "changes-exist=true" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "changes-exist=false" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
- name: Commit and push changes
|
||||
if: ${{ steps.changes-exist.outputs.changes-exist == 'true' }}
|
||||
id: commit-and-push
|
||||
continue-on-error: true
|
||||
run: |
|
||||
git config user.name "$GITHUB_ACTOR"
|
||||
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||
git add .
|
||||
git commit -m "docs: update version references to $NEW_VERSION"
|
||||
git push origin HEAD:refs/heads/main
|
||||
env:
|
||||
NEW_VERSION: ${{ steps.tag-info.outputs.tag }}
|
||||
- name: Create Pull Request
|
||||
if: ${{ steps.changes-exist.outputs.changes-exist == 'true' && steps.commit-and-push.outcome != 'success' }}
|
||||
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
|
||||
with:
|
||||
commit-message: "docs: update version references to ${{ steps.tag-info.outputs.tag }}"
|
||||
title: "docs: update version references to ${{ steps.tag-info.outputs.tag }}"
|
||||
body: |
|
||||
Update `uses: astral-sh/setup-uv@...` references in documentation to
|
||||
`${{ steps.tag-info.outputs.sha }} # ${{ steps.tag-info.outputs.tag }}`.
|
||||
base: main
|
||||
labels: "automated-pr,documentation"
|
||||
branch: update-docs-${{ steps.tag-info.outputs.tag }}
|
||||
delete-branch: true
|
||||
@@ -15,10 +15,10 @@ jobs:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: true
|
||||
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: .nvmrc
|
||||
cache: npm
|
||||
@@ -54,7 +54,7 @@ jobs:
|
||||
|
||||
- name: Create Pull Request
|
||||
if: ${{ steps.changes-exist.outputs.changes-exist == 'true' && steps.commit-and-push.outcome != 'success' }}
|
||||
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
|
||||
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
|
||||
with:
|
||||
commit-message: "chore: update known checksums"
|
||||
title:
|
||||
|
||||
@@ -26,7 +26,7 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
```
|
||||
|
||||
If you do not specify a version, this action will look for a [required-version](https://docs.astral.sh/uv/reference/settings/#required-version)
|
||||
@@ -42,18 +42,18 @@ Have a look under [Advanced Configuration](#advanced-configuration) for detailed
|
||||
|
||||
```yaml
|
||||
- name: Install uv with all available options
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
# The version of uv to install (default: searches for version in config files, then latest)
|
||||
# The version of uv to install, e.g., "0.5.0", "latest", or "latest-known" (default: searches for version in config files, then latest)
|
||||
version: ""
|
||||
|
||||
# Path to a file containing the version of uv to install (default: searches uv.toml then pyproject.toml)
|
||||
# Path to a file containing the version of uv to install, e.g., uv.toml, pyproject.toml, .tool-versions, requirements.txt or uv.lock. A selected .tool-versions file can also provide the Python version (default: searches uv.toml then pyproject.toml)
|
||||
version-file: ""
|
||||
|
||||
# Resolution strategy when resolving version ranges: 'highest' or 'lowest'
|
||||
resolution-strategy: "highest"
|
||||
|
||||
# The version of Python to set UV_PYTHON to
|
||||
# The version of Python to set UV_PYTHON to (overrides the Python version from .tool-versions)
|
||||
python-version: ""
|
||||
|
||||
# Use uv venv to activate a venv ready to be used by later steps
|
||||
@@ -74,7 +74,7 @@ Have a look under [Advanced Configuration](#advanced-configuration) for detailed
|
||||
# Used when downloading uv from GitHub releases
|
||||
github-token: ${{ github.token }}
|
||||
|
||||
# Enable uploading of the uv cache: true, false, or auto (enabled on GitHub-hosted runners, disabled on self-hosted runners)
|
||||
# Enable the GitHub Actions cache for uv: true, false, or auto (enabled on GitHub-hosted runners except for release, tag push, pull_request_target, and workflow_run events; disabled on self-hosted runners)
|
||||
enable-cache: "auto"
|
||||
|
||||
# Glob pattern to match files relative to the repository root to control the cache
|
||||
@@ -100,7 +100,7 @@ Have a look under [Advanced Configuration](#advanced-configuration) for detailed
|
||||
cache-local-path: ""
|
||||
|
||||
# Prune cache before saving
|
||||
prune-cache: "true"
|
||||
prune-cache: "false"
|
||||
|
||||
# Upload managed Python installations to the GitHub Actions cache
|
||||
cache-python: "false"
|
||||
@@ -120,8 +120,14 @@ Have a look under [Advanced Configuration](#advanced-configuration) for detailed
|
||||
# URL to a custom manifest file in the astral-sh/versions format
|
||||
manifest-file: ""
|
||||
|
||||
# Download uv from the Astral mirror instead of directly from GitHub Releases
|
||||
download-from-astral-mirror: "true"
|
||||
|
||||
# Add problem matchers
|
||||
add-problem-matchers: "true"
|
||||
|
||||
# Suppress info-level log output. Only warnings and errors are shown
|
||||
quiet: "false"
|
||||
```
|
||||
|
||||
### Outputs
|
||||
@@ -138,11 +144,30 @@ Have a look under [Advanced Configuration](#advanced-configuration) for detailed
|
||||
|
||||
You can use the input `python-version` to set the environment variable `UV_PYTHON` for the rest of your workflow
|
||||
|
||||
This will override any python version specifications in `pyproject.toml` and `.python-version`
|
||||
This will override any python version specifications in `pyproject.toml`, `.python-version`, and
|
||||
an explicitly selected `.tool-versions` file.
|
||||
|
||||
When `version-file` points to `.tool-versions`, its `python` entry is used if neither
|
||||
`python-version` nor `UV_PYTHON` is set:
|
||||
|
||||
```text
|
||||
uv 0.12.3
|
||||
python 3.13
|
||||
```
|
||||
|
||||
```yaml
|
||||
- uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version-file: ".tool-versions"
|
||||
```
|
||||
|
||||
Only a single Python version is supported. Filesystem paths are not supported for uv or Python.
|
||||
Multiple Python fallback versions and the asdf `ref:`, `path:`, and `system` forms are ignored with
|
||||
a warning.
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv and set the python version to 3.13t
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
python-version: 3.13t
|
||||
- run: uv pip install --python=3.13t pip
|
||||
@@ -160,7 +185,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Install the latest version of uv and set the python version
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Test with python ${{ matrix.python-version }}
|
||||
@@ -177,7 +202,7 @@ It also controls where [the venv gets created](#activate-environment), unless `v
|
||||
|
||||
```yaml
|
||||
- name: Install uv based on the config files in the working-directory
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
working-directory: my/subproject/dir
|
||||
```
|
||||
@@ -219,7 +244,7 @@ For example:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@main
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
- name: Test
|
||||
@@ -231,7 +256,7 @@ To install a specific version of Python, use
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
- name: Install Python 3.12
|
||||
@@ -250,7 +275,7 @@ output:
|
||||
uses: actions/checkout@main
|
||||
- name: Install the default version of uv
|
||||
id: setup-uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
- name: Print the installed version
|
||||
run: echo "Installed uv version is ${{ steps.setup-uv.outputs.uv-version }}"
|
||||
```
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
# Security policy
|
||||
|
||||
Report suspected vulnerabilities according to [Astral's security policy](https://github.com/astral-sh/.github/blob/main/SECURITY.md).
|
||||
|
||||
For this repository's security boundaries and reporting criteria, see the [setup-uv threat model](docs/threat-model.md).
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
import { beforeEach, describe, expect, it, jest } from "@jest/globals";
|
||||
import { createSetupInputs } from "../helpers/setup-inputs";
|
||||
|
||||
const mockRestoreCache = jest.fn();
|
||||
const mockSaveState = jest.fn();
|
||||
const mockSetOutput = jest.fn();
|
||||
|
||||
jest.unstable_mockModule("@actions/cache", () => ({
|
||||
restoreCache: mockRestoreCache,
|
||||
}));
|
||||
|
||||
jest.unstable_mockModule("@actions/core", () => ({
|
||||
saveState: mockSaveState,
|
||||
setOutput: mockSetOutput,
|
||||
}));
|
||||
|
||||
jest.unstable_mockModule("../../src/hash/hash-files", () => ({
|
||||
hashFiles: jest.fn(async () => "dependencyhash"),
|
||||
}));
|
||||
|
||||
jest.unstable_mockModule("../../src/utils/logging", () => ({
|
||||
info: jest.fn(),
|
||||
warning: jest.fn(),
|
||||
}));
|
||||
|
||||
jest.unstable_mockModule("../../src/utils/platforms", () => ({
|
||||
getArch: jest.fn(() => "x86_64"),
|
||||
getOSNameVersion: jest.fn(() => "ubuntu-24.04"),
|
||||
getPlatform: jest.fn(async () => "unknown-linux-gnu"),
|
||||
}));
|
||||
|
||||
const { restoreCache } = await import("../../src/cache/restore-cache");
|
||||
|
||||
function cacheKeyOutput(): string {
|
||||
const call = mockSetOutput.mock.calls.find(([name]) => name === "cache-key");
|
||||
expect(call).toBeDefined();
|
||||
return call?.[1] as string;
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
describe("restoreCache", () => {
|
||||
it("encodes Python version ranges before adding them to the cache key", async () => {
|
||||
await restoreCache(createSetupInputs(), ">3.10.11,<3.11");
|
||||
|
||||
const cacheKey = cacheKeyOutput();
|
||||
|
||||
expect(cacheKey).not.toContain(",");
|
||||
expect(cacheKey).toContain("-%3E3.10.11%2C%3C3.11-");
|
||||
});
|
||||
|
||||
it("encodes cache suffixes before adding them to the cache key", async () => {
|
||||
const inputs = createSetupInputs({ cacheSuffix: "tests-3.10,3.11" });
|
||||
|
||||
await restoreCache(inputs, "3.11");
|
||||
|
||||
const cacheKey = cacheKeyOutput();
|
||||
|
||||
expect(cacheKey).not.toContain(",");
|
||||
expect(cacheKey).toContain("-tests-3.10%2C3.11");
|
||||
});
|
||||
|
||||
it("uses an unpruned cache key by default", async () => {
|
||||
const inputs = createSetupInputs({ cacheSuffix: "tests-3.11" });
|
||||
|
||||
await restoreCache(inputs, "3.11");
|
||||
|
||||
expect(cacheKeyOutput()).toBe(
|
||||
"setup-uv-2-x86_64-unknown-linux-gnu-ubuntu-24.04-3.11-dependencyhash-tests-3.11",
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -40,9 +40,9 @@ it.each<KnownVersionFixture>([
|
||||
known: false,
|
||||
version: "0.0.15",
|
||||
},
|
||||
])("isknownVersion should return $known for version $version", ({
|
||||
version,
|
||||
known,
|
||||
}) => {
|
||||
expect(isknownVersion(version)).toBe(known);
|
||||
});
|
||||
])(
|
||||
"isknownVersion should return $known for version $version",
|
||||
({ version, known }) => {
|
||||
expect(isknownVersion(version)).toBe(known);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import { expect, it, jest } from "@jest/globals";
|
||||
|
||||
jest.unstable_mockModule(
|
||||
"../../../src/download/checksum/known-checksums",
|
||||
() => ({
|
||||
KNOWN_CHECKSUMS: {
|
||||
"aarch64-apple-darwin-1.9.0": "checksum",
|
||||
"x86_64-unknown-linux-gnu-1.8.0": "checksum",
|
||||
"x86_64-unknown-linux-gnu-1.10.0": "checksum",
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
const { getLatestKnownVersion } = await import(
|
||||
"../../../src/download/checksum/known-version"
|
||||
);
|
||||
|
||||
it("returns the highest version with a built-in checksum", () => {
|
||||
expect(getLatestKnownVersion()).toBe("1.10.0");
|
||||
});
|
||||
@@ -1,5 +1,6 @@
|
||||
import { beforeEach, describe, expect, it, jest } from "@jest/globals";
|
||||
import * as semver from "semver";
|
||||
import { VERSIONS_MANIFEST_URL } from "../../src/utils/constants";
|
||||
|
||||
const mockInfo = jest.fn();
|
||||
const mockWarning = jest.fn();
|
||||
@@ -36,11 +37,14 @@ const mockGetLatestVersion = jest.fn<any>();
|
||||
// biome-ignore lint/suspicious/noExplicitAny: Mock requires flexible typing in tests.
|
||||
const mockGetAllVersions = jest.fn<any>();
|
||||
// biome-ignore lint/suspicious/noExplicitAny: Mock requires flexible typing in tests.
|
||||
const mockGetFirstMatchingVersion = jest.fn<any>();
|
||||
// biome-ignore lint/suspicious/noExplicitAny: Mock requires flexible typing in tests.
|
||||
const mockGetArtifact = jest.fn<any>();
|
||||
|
||||
jest.unstable_mockModule("../../src/download/manifest", () => ({
|
||||
getAllVersions: mockGetAllVersions,
|
||||
getArtifact: mockGetArtifact,
|
||||
getFirstMatchingVersion: mockGetFirstMatchingVersion,
|
||||
getLatestVersion: mockGetLatestVersion,
|
||||
}));
|
||||
|
||||
@@ -51,6 +55,12 @@ jest.unstable_mockModule("../../src/download/checksum/checksum", () => ({
|
||||
validateChecksum: mockValidateChecksum,
|
||||
}));
|
||||
|
||||
const mockGetLatestKnownVersion = jest.fn(() => "0.9.25");
|
||||
|
||||
jest.unstable_mockModule("../../src/download/checksum/known-version", () => ({
|
||||
getLatestKnownVersion: mockGetLatestKnownVersion,
|
||||
}));
|
||||
|
||||
const { downloadVersion, resolveVersion, rewriteToMirror } = await import(
|
||||
"../../src/download/download-version"
|
||||
);
|
||||
@@ -65,8 +75,10 @@ describe("download-version", () => {
|
||||
mockCacheDir.mockReset();
|
||||
mockGetLatestVersion.mockReset();
|
||||
mockGetAllVersions.mockReset();
|
||||
mockGetFirstMatchingVersion.mockReset();
|
||||
mockGetArtifact.mockReset();
|
||||
mockValidateChecksum.mockReset();
|
||||
mockGetLatestKnownVersion.mockClear();
|
||||
|
||||
mockDownloadTool.mockResolvedValue("/tmp/downloaded");
|
||||
mockExtractTar.mockResolvedValue("/tmp/extracted");
|
||||
@@ -85,14 +97,53 @@ describe("download-version", () => {
|
||||
expect(mockGetLatestVersion).toHaveBeenCalledWith(undefined);
|
||||
});
|
||||
|
||||
it("uses the default manifest to resolve available versions", async () => {
|
||||
mockGetAllVersions.mockResolvedValue(["0.9.26", "0.9.25"]);
|
||||
it("resolves latest-known without reading the manifest", async () => {
|
||||
const version = await resolveVersion("latest-known", undefined);
|
||||
|
||||
expect(version).toBe("0.9.25");
|
||||
expect(mockGetLatestKnownVersion).toHaveBeenCalledTimes(1);
|
||||
expect(mockGetLatestVersion).not.toHaveBeenCalled();
|
||||
expect(mockGetAllVersions).not.toHaveBeenCalled();
|
||||
expect(mockGetFirstMatchingVersion).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("stops at the first matching version in the default manifest", async () => {
|
||||
mockGetFirstMatchingVersion.mockImplementation(
|
||||
(predicate: (version: string) => boolean) =>
|
||||
["0.9.26", "0.9.25"].find(predicate),
|
||||
);
|
||||
|
||||
const version = await resolveVersion("^0.9.0", undefined);
|
||||
|
||||
expect(version).toBe("0.9.26");
|
||||
expect(mockGetAllVersions).toHaveBeenCalledTimes(1);
|
||||
expect(mockGetAllVersions).toHaveBeenCalledWith(undefined);
|
||||
expect(mockGetFirstMatchingVersion).toHaveBeenCalledTimes(1);
|
||||
expect(mockGetAllVersions).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("streams ranges when the default manifest URL is explicit", async () => {
|
||||
mockGetFirstMatchingVersion.mockImplementation(
|
||||
(predicate: (version: string) => boolean) =>
|
||||
["0.9.26", "0.9.25"].find(predicate),
|
||||
);
|
||||
|
||||
const version = await resolveVersion("^0.9.0", VERSIONS_MANIFEST_URL);
|
||||
|
||||
expect(version).toBe("0.9.26");
|
||||
expect(mockGetFirstMatchingVersion).toHaveBeenCalledTimes(1);
|
||||
expect(mockGetAllVersions).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("streams PEP 440 ranges from the default manifest", async () => {
|
||||
mockGetFirstMatchingVersion.mockImplementation(
|
||||
(predicate: (version: string) => boolean) =>
|
||||
["0.9.26", "0.9.25"].find(predicate),
|
||||
);
|
||||
|
||||
const version = await resolveVersion("!=0.9.26", undefined);
|
||||
|
||||
expect(version).toBe("0.9.25");
|
||||
expect(mockGetFirstMatchingVersion).toHaveBeenCalledTimes(1);
|
||||
expect(mockGetAllVersions).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("treats == exact pins as explicit versions", async () => {
|
||||
@@ -223,7 +274,7 @@ describe("download-version", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("does not rewrite non-GitHub URLs", async () => {
|
||||
it("does not send the token to non-GitHub URLs from the default manifest", async () => {
|
||||
mockGetArtifact.mockResolvedValue({
|
||||
archiveFormat: "tar.gz",
|
||||
checksum: "abc123",
|
||||
@@ -241,8 +292,30 @@ describe("download-version", () => {
|
||||
expect(mockDownloadTool).toHaveBeenCalledWith(
|
||||
"https://example.com/uv.tar.gz",
|
||||
undefined,
|
||||
undefined,
|
||||
);
|
||||
});
|
||||
|
||||
it("does not send the token to GitHub lookalike hosts", async () => {
|
||||
mockGetArtifact.mockResolvedValue({
|
||||
archiveFormat: "tar.gz",
|
||||
checksum: "abc123",
|
||||
downloadUrl: "https://github.com.evil.test/uv.tar.gz",
|
||||
});
|
||||
|
||||
await downloadVersion(
|
||||
"unknown-linux-gnu",
|
||||
"x86_64",
|
||||
"0.9.26",
|
||||
undefined,
|
||||
"token",
|
||||
);
|
||||
|
||||
expect(mockDownloadTool).toHaveBeenCalledWith(
|
||||
"https://github.com.evil.test/uv.tar.gz",
|
||||
undefined,
|
||||
undefined,
|
||||
);
|
||||
});
|
||||
|
||||
it("falls back to GitHub Releases when the mirror fails", async () => {
|
||||
@@ -354,6 +427,32 @@ describe("download-version", () => {
|
||||
"0.9.26",
|
||||
);
|
||||
});
|
||||
|
||||
it("skips the Astral mirror when downloadFromAstralMirror is false", async () => {
|
||||
mockGetArtifact.mockResolvedValue({
|
||||
archiveFormat: "tar.gz",
|
||||
checksum: "abc123",
|
||||
downloadUrl:
|
||||
"https://github.com/astral-sh/uv/releases/download/0.9.26/uv-x86_64-unknown-linux-gnu.tar.gz",
|
||||
});
|
||||
|
||||
await downloadVersion(
|
||||
"unknown-linux-gnu",
|
||||
"x86_64",
|
||||
"0.9.26",
|
||||
undefined,
|
||||
"token",
|
||||
undefined,
|
||||
false,
|
||||
);
|
||||
|
||||
expect(mockDownloadTool).toHaveBeenCalledWith(
|
||||
"https://github.com/astral-sh/uv/releases/download/0.9.26/uv-x86_64-unknown-linux-gnu.tar.gz",
|
||||
undefined,
|
||||
"token",
|
||||
);
|
||||
expect(mockDownloadTool).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe("rewriteToMirror", () => {
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
import { beforeEach, describe, expect, it, jest } from "@jest/globals";
|
||||
import {
|
||||
afterEach,
|
||||
beforeEach,
|
||||
describe,
|
||||
expect,
|
||||
it,
|
||||
jest,
|
||||
} from "@jest/globals";
|
||||
|
||||
// biome-ignore lint/suspicious/noExplicitAny: Mock requires flexible typing in tests.
|
||||
const mockFetch = jest.fn<any>();
|
||||
@@ -13,10 +20,12 @@ jest.unstable_mockModule("../../src/utils/fetch", () => ({
|
||||
}));
|
||||
|
||||
const {
|
||||
MANIFEST_FETCH_ATTEMPTS,
|
||||
clearManifestCache,
|
||||
fetchManifest,
|
||||
getAllVersions,
|
||||
getArtifact,
|
||||
getFirstMatchingVersion,
|
||||
getLatestVersion,
|
||||
parseManifest,
|
||||
} = await import("../../src/download/manifest");
|
||||
@@ -33,6 +42,7 @@ function createMockResponse(
|
||||
data: string,
|
||||
) {
|
||||
return {
|
||||
body: null,
|
||||
ok,
|
||||
status,
|
||||
statusText,
|
||||
@@ -40,12 +50,41 @@ function createMockResponse(
|
||||
};
|
||||
}
|
||||
|
||||
function createStreamingMockResponse(
|
||||
chunks: string[],
|
||||
cancel: () => void | Promise<void> = () => {},
|
||||
close = false,
|
||||
) {
|
||||
const encoder = new TextEncoder();
|
||||
return {
|
||||
body: new ReadableStream<Uint8Array>({
|
||||
cancel,
|
||||
start(controller) {
|
||||
for (const chunk of chunks) {
|
||||
controller.enqueue(encoder.encode(chunk));
|
||||
}
|
||||
if (close) {
|
||||
controller.close();
|
||||
}
|
||||
},
|
||||
}),
|
||||
ok: true,
|
||||
status: 200,
|
||||
statusText: "OK",
|
||||
text: async () => chunks.join(""),
|
||||
};
|
||||
}
|
||||
|
||||
describe("manifest", () => {
|
||||
beforeEach(() => {
|
||||
clearManifestCache();
|
||||
mockFetch.mockReset();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
jest.useRealTimers();
|
||||
});
|
||||
|
||||
describe("fetchManifest", () => {
|
||||
it("fetches and parses manifest data", async () => {
|
||||
mockFetch.mockResolvedValue(
|
||||
@@ -59,6 +98,34 @@ describe("manifest", () => {
|
||||
expect(versions[1]?.version).toBe("0.9.25");
|
||||
});
|
||||
|
||||
it("retries network failures", async () => {
|
||||
jest.useFakeTimers();
|
||||
mockFetch
|
||||
.mockRejectedValueOnce(new Error("request timed out"))
|
||||
.mockResolvedValueOnce(
|
||||
createMockResponse(true, 200, "OK", sampleManifestResponse),
|
||||
);
|
||||
|
||||
const result = fetchManifest();
|
||||
await jest.runAllTimersAsync();
|
||||
|
||||
await expect(result).resolves.toHaveLength(2);
|
||||
expect(mockFetch).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
|
||||
it("stops after the configured number of network failures", async () => {
|
||||
jest.useFakeTimers();
|
||||
mockFetch.mockRejectedValue(new Error("request timed out"));
|
||||
|
||||
const result = expect(fetchManifest()).rejects.toThrow(
|
||||
"request timed out",
|
||||
);
|
||||
await jest.runAllTimersAsync();
|
||||
|
||||
await result;
|
||||
expect(mockFetch).toHaveBeenCalledTimes(MANIFEST_FETCH_ATTEMPTS);
|
||||
});
|
||||
|
||||
it("throws on a failed fetch", async () => {
|
||||
mockFetch.mockResolvedValue(
|
||||
createMockResponse(false, 500, "Internal Server Error", ""),
|
||||
@@ -105,6 +172,75 @@ describe("manifest", () => {
|
||||
getLatestVersion("https://example.com/custom.ndjson"),
|
||||
).resolves.toBe("0.9.26");
|
||||
});
|
||||
|
||||
it("stops reading the default manifest after the first record", async () => {
|
||||
const [latestVersion] = sampleManifestResponse.split("\n");
|
||||
const cancel = jest.fn();
|
||||
mockFetch.mockResolvedValue(
|
||||
createStreamingMockResponse(
|
||||
[
|
||||
latestVersion.slice(0, 100),
|
||||
`${latestVersion.slice(100)}\n`,
|
||||
"invalid trailing data\n",
|
||||
],
|
||||
cancel,
|
||||
),
|
||||
);
|
||||
|
||||
await expect(getLatestVersion()).resolves.toBe("0.9.26");
|
||||
await expect(
|
||||
getArtifact("0.9.26", "aarch64", "apple-darwin"),
|
||||
).resolves.toBeDefined();
|
||||
|
||||
expect(cancel).toHaveBeenCalledTimes(1);
|
||||
expect(mockFetch).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("does not fail when canceling the remaining response fails", async () => {
|
||||
const [latestVersion] = sampleManifestResponse.split("\n");
|
||||
mockFetch.mockResolvedValue(
|
||||
createStreamingMockResponse([`${latestVersion}\n`], () =>
|
||||
Promise.reject(new Error("cancel failed")),
|
||||
),
|
||||
);
|
||||
|
||||
await expect(getLatestVersion()).resolves.toBe("0.9.26");
|
||||
});
|
||||
});
|
||||
|
||||
describe("getFirstMatchingVersion", () => {
|
||||
it("stops at the first matching record", async () => {
|
||||
const cancel = jest.fn();
|
||||
mockFetch.mockResolvedValue(
|
||||
createStreamingMockResponse(
|
||||
[`${sampleManifestResponse}\n`, "invalid trailing data\n"],
|
||||
cancel,
|
||||
),
|
||||
);
|
||||
|
||||
await expect(
|
||||
getFirstMatchingVersion((version) => version === "0.9.25"),
|
||||
).resolves.toBe("0.9.25");
|
||||
|
||||
expect(cancel).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("caches a fully consumed response stream", async () => {
|
||||
mockFetch.mockResolvedValue(
|
||||
createStreamingMockResponse(
|
||||
[`${sampleManifestResponse}\n`],
|
||||
undefined,
|
||||
true,
|
||||
),
|
||||
);
|
||||
|
||||
await expect(
|
||||
getFirstMatchingVersion((version) => version === "0.0.1"),
|
||||
).resolves.toBeUndefined();
|
||||
await expect(getLatestVersion()).resolves.toBe("0.9.26");
|
||||
|
||||
expect(mockFetch).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe("getArtifact", () => {
|
||||
@@ -168,6 +304,60 @@ describe("manifest", () => {
|
||||
|
||||
expect(artifact).toBeUndefined();
|
||||
});
|
||||
|
||||
it("does not cache records from a failed stream read", async () => {
|
||||
const [latestVersion] = sampleManifestResponse.split("\n");
|
||||
mockFetch
|
||||
.mockResolvedValueOnce(
|
||||
createStreamingMockResponse([
|
||||
`${latestVersion}\n`,
|
||||
"invalid manifest record\n",
|
||||
]),
|
||||
)
|
||||
.mockResolvedValueOnce(
|
||||
createMockResponse(true, 200, "OK", sampleManifestResponse),
|
||||
);
|
||||
|
||||
await expect(
|
||||
getArtifact("0.0.1", "aarch64", "apple-darwin"),
|
||||
).rejects.toThrow("Failed to parse manifest data");
|
||||
await expect(getLatestVersion()).resolves.toBe("0.9.26");
|
||||
|
||||
expect(mockFetch).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
|
||||
it("does not cache records when the response stream fails", async () => {
|
||||
const [latestVersion] = sampleManifestResponse.split("\n");
|
||||
const encoder = new TextEncoder();
|
||||
let sentVersion = false;
|
||||
const body = new ReadableStream<Uint8Array>({
|
||||
pull(controller) {
|
||||
if (!sentVersion) {
|
||||
sentVersion = true;
|
||||
controller.enqueue(encoder.encode(`${latestVersion}\n`));
|
||||
return;
|
||||
}
|
||||
controller.error(new Error("response stream failed"));
|
||||
},
|
||||
});
|
||||
mockFetch
|
||||
.mockResolvedValueOnce({
|
||||
body,
|
||||
ok: true,
|
||||
status: 200,
|
||||
statusText: "OK",
|
||||
})
|
||||
.mockResolvedValueOnce(
|
||||
createMockResponse(true, 200, "OK", sampleManifestResponse),
|
||||
);
|
||||
|
||||
await expect(
|
||||
getArtifact("0.0.1", "aarch64", "apple-darwin"),
|
||||
).rejects.toThrow("response stream failed");
|
||||
await expect(getLatestVersion()).resolves.toBe("0.9.26");
|
||||
|
||||
expect(mockFetch).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
});
|
||||
|
||||
describe("parseManifest", () => {
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
uv 0.5.15
|
||||
python 3.13.1t
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import { CacheLocalSource, type SetupInputs } from "../../src/utils/inputs";
|
||||
|
||||
export function createSetupInputs(
|
||||
overrides: Partial<SetupInputs> = {},
|
||||
): SetupInputs {
|
||||
return {
|
||||
activateEnvironment: false,
|
||||
addProblemMatchers: false,
|
||||
cacheDependencyGlob: "uv.lock",
|
||||
cacheLocalPath: {
|
||||
path: "/tmp/setup-uv-cache",
|
||||
source: CacheLocalSource.Input,
|
||||
},
|
||||
cachePython: false,
|
||||
cacheSuffix: "",
|
||||
checksum: "",
|
||||
downloadFromAstralMirror: false,
|
||||
enableCache: true,
|
||||
githubToken: "",
|
||||
ignoreEmptyWorkdir: false,
|
||||
ignoreNothingToCache: false,
|
||||
noProject: false,
|
||||
pruneCache: false,
|
||||
pythonDir: "/tmp/uv-python-dir",
|
||||
pythonVersion: "",
|
||||
quiet: false,
|
||||
resolutionStrategy: "highest",
|
||||
restoreCache: false,
|
||||
saveCache: true,
|
||||
venvPath: "/workspace/.venv",
|
||||
version: "",
|
||||
versionFile: "",
|
||||
workingDirectory: "/workspace",
|
||||
...overrides,
|
||||
};
|
||||
}
|
||||
@@ -12,10 +12,13 @@ import {
|
||||
|
||||
let mockInputs: Record<string, string> = {};
|
||||
const tempDirs: string[] = [];
|
||||
const ORIGINAL_GITHUB_EVENT_NAME = process.env.GITHUB_EVENT_NAME;
|
||||
const ORIGINAL_GITHUB_REF = process.env.GITHUB_REF;
|
||||
const ORIGINAL_HOME = process.env.HOME;
|
||||
const ORIGINAL_RUNNER_ENVIRONMENT = process.env.RUNNER_ENVIRONMENT;
|
||||
const ORIGINAL_RUNNER_TEMP = process.env.RUNNER_TEMP;
|
||||
const ORIGINAL_UV_CACHE_DIR = process.env.UV_CACHE_DIR;
|
||||
const ORIGINAL_UV_PYTHON = process.env.UV_PYTHON;
|
||||
const ORIGINAL_UV_PYTHON_INSTALL_DIR = process.env.UV_PYTHON_INSTALL_DIR;
|
||||
|
||||
const mockDebug = jest.fn();
|
||||
@@ -52,10 +55,13 @@ function createTempProject(files: Record<string, string> = {}): string {
|
||||
function resetEnvironment(): void {
|
||||
jest.clearAllMocks();
|
||||
mockInputs = {};
|
||||
delete process.env.GITHUB_EVENT_NAME;
|
||||
delete process.env.GITHUB_REF;
|
||||
process.env.HOME = "/home/testuser";
|
||||
delete process.env.RUNNER_ENVIRONMENT;
|
||||
delete process.env.RUNNER_TEMP;
|
||||
delete process.env.UV_CACHE_DIR;
|
||||
delete process.env.UV_PYTHON;
|
||||
delete process.env.UV_PYTHON_INSTALL_DIR;
|
||||
}
|
||||
|
||||
@@ -64,10 +70,13 @@ function restoreEnvironment(): void {
|
||||
fs.rmSync(dir, { force: true, recursive: true });
|
||||
}
|
||||
|
||||
process.env.GITHUB_EVENT_NAME = ORIGINAL_GITHUB_EVENT_NAME;
|
||||
process.env.GITHUB_REF = ORIGINAL_GITHUB_REF;
|
||||
process.env.HOME = ORIGINAL_HOME;
|
||||
process.env.RUNNER_ENVIRONMENT = ORIGINAL_RUNNER_ENVIRONMENT;
|
||||
process.env.RUNNER_TEMP = ORIGINAL_RUNNER_TEMP;
|
||||
process.env.UV_CACHE_DIR = ORIGINAL_UV_CACHE_DIR;
|
||||
process.env.UV_PYTHON = ORIGINAL_UV_PYTHON;
|
||||
process.env.UV_PYTHON_INSTALL_DIR = ORIGINAL_UV_PYTHON_INSTALL_DIR;
|
||||
}
|
||||
|
||||
@@ -94,6 +103,109 @@ describe("loadInputs", () => {
|
||||
expect(inputs.resolutionStrategy).toBe("highest");
|
||||
});
|
||||
|
||||
it("uses the Python version from an explicitly selected .tool-versions file", () => {
|
||||
mockInputs["working-directory"] = createTempProject({
|
||||
".tool-versions": "uv 0.12.3\npython 3.13.1t\n",
|
||||
});
|
||||
mockInputs["version-file"] = ".tool-versions";
|
||||
|
||||
const inputs = loadInputs();
|
||||
|
||||
expect(inputs.pythonVersion).toBe("3.13.1t");
|
||||
});
|
||||
|
||||
it("prefers the python-version input over .tool-versions", () => {
|
||||
mockInputs["working-directory"] = createTempProject({
|
||||
".tool-versions": "uv 0.12.3\npython 3.13\n",
|
||||
});
|
||||
mockInputs["version-file"] = ".tool-versions";
|
||||
mockInputs["python-version"] = "3.12";
|
||||
|
||||
const inputs = loadInputs();
|
||||
|
||||
expect(inputs.pythonVersion).toBe("3.12");
|
||||
});
|
||||
|
||||
it("preserves UV_PYTHON instead of overriding it from .tool-versions", () => {
|
||||
mockInputs["working-directory"] = createTempProject({
|
||||
".tool-versions": "uv 0.12.3\npython 3.13\n",
|
||||
});
|
||||
mockInputs["version-file"] = ".tool-versions";
|
||||
process.env.UV_PYTHON = "3.11";
|
||||
|
||||
const inputs = loadInputs();
|
||||
|
||||
expect(inputs.pythonVersion).toBe("");
|
||||
expect(process.env.UV_PYTHON).toBe("3.11");
|
||||
});
|
||||
|
||||
it("does not discover .tool-versions from the working directory", () => {
|
||||
mockInputs["working-directory"] = createTempProject({
|
||||
".tool-versions": "uv 0.12.3\npython 3.13\n",
|
||||
});
|
||||
|
||||
const inputs = loadInputs();
|
||||
|
||||
expect(inputs.pythonVersion).toBe("");
|
||||
});
|
||||
|
||||
it.each(["pull_request_target", "workflow_run", "release"])(
|
||||
"disables automatic caching for the %s event",
|
||||
(eventName) => {
|
||||
mockInputs["working-directory"] = "/workspace";
|
||||
mockInputs["enable-cache"] = "auto";
|
||||
process.env.RUNNER_ENVIRONMENT = "github-hosted";
|
||||
process.env.RUNNER_TEMP = "/runner-temp";
|
||||
process.env.GITHUB_EVENT_NAME = eventName;
|
||||
|
||||
const inputs = loadInputs();
|
||||
|
||||
expect(inputs.enableCache).toBe(false);
|
||||
expect(mockInfo).toHaveBeenCalledWith(
|
||||
`Caching is disabled for the ${eventName} event`,
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
it("disables automatic caching for tag pushes", () => {
|
||||
mockInputs["working-directory"] = "/workspace";
|
||||
mockInputs["enable-cache"] = "auto";
|
||||
process.env.RUNNER_ENVIRONMENT = "github-hosted";
|
||||
process.env.RUNNER_TEMP = "/runner-temp";
|
||||
process.env.GITHUB_EVENT_NAME = "push";
|
||||
process.env.GITHUB_REF = "refs/tags/v1.0.0";
|
||||
|
||||
const inputs = loadInputs();
|
||||
|
||||
expect(inputs.enableCache).toBe(false);
|
||||
expect(mockInfo).toHaveBeenCalledWith("Caching is disabled for tag pushes");
|
||||
});
|
||||
|
||||
it("enables automatic caching for branch pushes", () => {
|
||||
mockInputs["working-directory"] = "/workspace";
|
||||
mockInputs["enable-cache"] = "auto";
|
||||
process.env.RUNNER_ENVIRONMENT = "github-hosted";
|
||||
process.env.RUNNER_TEMP = "/runner-temp";
|
||||
process.env.GITHUB_EVENT_NAME = "push";
|
||||
process.env.GITHUB_REF = "refs/heads/main";
|
||||
|
||||
const inputs = loadInputs();
|
||||
|
||||
expect(inputs.enableCache).toBe(true);
|
||||
});
|
||||
|
||||
it("honors explicitly enabled caching for sensitive events", () => {
|
||||
mockInputs["working-directory"] = "/workspace";
|
||||
mockInputs["enable-cache"] = "true";
|
||||
process.env.RUNNER_ENVIRONMENT = "github-hosted";
|
||||
process.env.RUNNER_TEMP = "/runner-temp";
|
||||
process.env.GITHUB_EVENT_NAME = "release";
|
||||
|
||||
const inputs = loadInputs();
|
||||
|
||||
expect(inputs.enableCache).toBe(true);
|
||||
});
|
||||
|
||||
it("uses cache-dir from pyproject.toml when present", () => {
|
||||
mockInputs["working-directory"] = createTempProject({
|
||||
"pyproject.toml": `[project]
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
import { expect, test } from "@jest/globals";
|
||||
import { getUvVersionFromFile } from "../../src/version/file-parser";
|
||||
import {
|
||||
getUvVersionFromPyprojectContent,
|
||||
getUvVersionFromRequirementsText,
|
||||
} from "../../src/version/requirements-file";
|
||||
|
||||
test("ignores dependencies starting with uv", async () => {
|
||||
const parsedVersion = getUvVersionFromFile(
|
||||
@@ -7,3 +11,27 @@ test("ignores dependencies starting with uv", async () => {
|
||||
);
|
||||
expect(parsedVersion).toBe("0.6.17");
|
||||
});
|
||||
|
||||
test.each([
|
||||
["without space before marker", "uv==0.11.20; sys_platform != 'emscripten'"],
|
||||
["with space before marker", "uv==0.11.20 ; sys_platform != 'emscripten'"],
|
||||
])(
|
||||
"strips PEP 508 markers from pyproject dependency groups %s",
|
||||
(_, dependency) => {
|
||||
const parsedVersion = getUvVersionFromPyprojectContent(`[dependency-groups]
|
||||
test = [
|
||||
"${dependency}",
|
||||
]
|
||||
`);
|
||||
|
||||
expect(parsedVersion).toBe("==0.11.20");
|
||||
},
|
||||
);
|
||||
|
||||
test("strips PEP 508 markers from requirements dependencies", () => {
|
||||
const parsedVersion = getUvVersionFromRequirementsText(
|
||||
"uv==0.11.20; sys_platform != 'emscripten'",
|
||||
);
|
||||
|
||||
expect(parsedVersion).toBe("==0.11.20");
|
||||
});
|
||||
|
||||
@@ -21,6 +21,11 @@ async function getVersionFromToolVersions(filePath: string) {
|
||||
return getUvVersionFromToolVersions(filePath);
|
||||
}
|
||||
|
||||
async function getPythonVersionFromToolVersions(filePath: string) {
|
||||
const module = await import("../../src/version/tool-versions-file");
|
||||
return module.getPythonVersionFromToolVersions(filePath);
|
||||
}
|
||||
|
||||
describe("getUvVersionFromToolVersions", () => {
|
||||
beforeEach(() => {
|
||||
jest.resetModules();
|
||||
@@ -61,8 +66,8 @@ describe("getUvVersionFromToolVersions", () => {
|
||||
expect(result).toBe("0.3.0");
|
||||
});
|
||||
|
||||
it("should skip commented lines", async () => {
|
||||
const fileContent = "# uv 0.1.0\npython 3.11.0\nuv 0.2.0";
|
||||
it("should skip comments", async () => {
|
||||
const fileContent = "# uv 0.1.0\npython 3.11.0\nuv 0.2.0 # inline comment";
|
||||
mockReadFileSync.mockReturnValue(fileContent);
|
||||
|
||||
const result = await getVersionFromToolVersions(".tool-versions");
|
||||
@@ -108,6 +113,20 @@ describe("getUvVersionFromToolVersions", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it.each(["/my/python/exploit", "my/exploited/uv", "C:\\exploited\\uv"])(
|
||||
"should warn and return undefined for path %s",
|
||||
async (version) => {
|
||||
mockReadFileSync.mockReturnValue(`uv ${version}`);
|
||||
|
||||
const result = await getVersionFromToolVersions(".tool-versions");
|
||||
|
||||
expect(result).toBeUndefined();
|
||||
expect(mockWarning).toHaveBeenCalledWith(
|
||||
`The uv version ${version} in .tool-versions is not supported. Paths are not allowed.`,
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
it("should handle file path with .tool-versions extension", async () => {
|
||||
const fileContent = "uv 0.1.0";
|
||||
mockReadFileSync.mockReturnValue(fileContent);
|
||||
@@ -121,3 +140,72 @@ describe("getUvVersionFromToolVersions", () => {
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("getPythonVersionFromToolVersions", () => {
|
||||
beforeEach(() => {
|
||||
jest.resetModules();
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
it("should return version for a valid Python entry", async () => {
|
||||
mockReadFileSync.mockReturnValue(
|
||||
"nodejs 24.0.0\r\npython v3.13.1t # use free-threaded Python\r\nuv 0.12.3",
|
||||
);
|
||||
|
||||
const result = await getPythonVersionFromToolVersions(".tool-versions");
|
||||
|
||||
expect(result).toBe("3.13.1t");
|
||||
});
|
||||
|
||||
it("should return the first matching Python version", async () => {
|
||||
mockReadFileSync.mockReturnValue("python 3.12\npython 3.13");
|
||||
|
||||
const result = await getPythonVersionFromToolVersions(".tool-versions");
|
||||
|
||||
expect(result).toBe("3.12");
|
||||
});
|
||||
|
||||
it("should return undefined when no Python entry is found", async () => {
|
||||
mockReadFileSync.mockReturnValue("uv 0.12.3\nnodejs 24.0.0");
|
||||
|
||||
const result = await getPythonVersionFromToolVersions(".tool-versions");
|
||||
|
||||
expect(result).toBeUndefined();
|
||||
});
|
||||
|
||||
it("should warn and return undefined for multiple Python versions", async () => {
|
||||
mockReadFileSync.mockReturnValue("python 3.13 3.12 system");
|
||||
|
||||
const result = await getPythonVersionFromToolVersions(".tool-versions");
|
||||
|
||||
expect(result).toBeUndefined();
|
||||
expect(mockWarning).toHaveBeenCalledWith(
|
||||
"Multiple Python versions in .tool-versions are not supported. The Python entry will be ignored.",
|
||||
);
|
||||
});
|
||||
|
||||
it.each([
|
||||
"ref:main",
|
||||
"path:~/src/python",
|
||||
"system",
|
||||
"/my/python/exploit",
|
||||
"my/exploited/python",
|
||||
"C:\\exploited\\python",
|
||||
])("should warn and return undefined for %s", async (version) => {
|
||||
mockReadFileSync.mockReturnValue(`python ${version}`);
|
||||
|
||||
const result = await getPythonVersionFromToolVersions(".tool-versions");
|
||||
|
||||
expect(result).toBeUndefined();
|
||||
expect(mockWarning).toHaveBeenCalledWith(
|
||||
`The Python version ${version} in .tool-versions is not supported. The Python entry will be ignored.`,
|
||||
);
|
||||
});
|
||||
|
||||
it("should return undefined for non-.tool-versions files", async () => {
|
||||
const result = await getPythonVersionFromToolVersions(".python-version");
|
||||
|
||||
expect(result).toBeUndefined();
|
||||
expect(mockReadFileSync).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import { describe, expect, it } from "@jest/globals";
|
||||
import { getUvVersionFromUvLockContent } from "../../src/version/uv-lock-file";
|
||||
|
||||
const UV_LOCK = `version = 1
|
||||
requires-python = ">=3.12"
|
||||
|
||||
[[package]]
|
||||
name = "anyio"
|
||||
version = "4.6.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
|
||||
[[package]]
|
||||
name = "uv"
|
||||
version = "0.8.17"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
`;
|
||||
|
||||
describe("getUvVersionFromUvLockContent", () => {
|
||||
it("returns the exact uv version locked in uv.lock", () => {
|
||||
expect(getUvVersionFromUvLockContent(UV_LOCK)).toBe("0.8.17");
|
||||
});
|
||||
|
||||
it("returns undefined when uv is not a locked package", () => {
|
||||
const content = `version = 1
|
||||
|
||||
[[package]]
|
||||
name = "anyio"
|
||||
version = "4.6.0"
|
||||
`;
|
||||
expect(getUvVersionFromUvLockContent(content)).toBeUndefined();
|
||||
});
|
||||
|
||||
it("returns undefined when there are no packages", () => {
|
||||
expect(getUvVersionFromUvLockContent("version = 1\n")).toBeUndefined();
|
||||
});
|
||||
});
|
||||
@@ -63,6 +63,24 @@ describe("resolveVersionRequest", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("uses the exact uv version locked in uv.lock when it is passed via version-file", () => {
|
||||
const workingDirectory = createTempProject({
|
||||
"uv.lock": `version = 1\n\n[[package]]\nname = "uv"\nversion = "0.8.17"\nsource = { registry = "https://pypi.org/simple" }\n`,
|
||||
});
|
||||
|
||||
const request = resolveVersionRequest({
|
||||
versionFile: path.join(workingDirectory, "uv.lock"),
|
||||
workingDirectory,
|
||||
});
|
||||
|
||||
expect(request).toEqual({
|
||||
format: "uv.lock",
|
||||
source: "version-file",
|
||||
sourcePath: path.join(workingDirectory, "uv.lock"),
|
||||
specifier: "0.8.17",
|
||||
});
|
||||
});
|
||||
|
||||
it("uses requirements.txt when it is passed via version-file", () => {
|
||||
const workingDirectory = createTempProject({
|
||||
"requirements.txt": "uv==0.6.17\nuvicorn==0.35.0\n",
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
name: "test workflow_run caching"
|
||||
|
||||
on: # zizmor: ignore[dangerous-triggers] this workflow is a test fixture executed by act only
|
||||
workflow_run:
|
||||
workflows:
|
||||
- test
|
||||
types:
|
||||
- completed
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
test-cache-disabled:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Setup uv with automatic caching
|
||||
id: setup-uv
|
||||
uses: ./
|
||||
- name: Verify automatic caching is disabled
|
||||
env:
|
||||
CACHE_KEY: ${{ steps.setup-uv.outputs.cache-key }}
|
||||
run: |
|
||||
if [ "$GITHUB_EVENT_NAME" != "workflow_run" ]; then
|
||||
echo "Expected workflow_run event, got: $GITHUB_EVENT_NAME"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$RUNNER_ENVIRONMENT" != "github-hosted" ]; then
|
||||
echo "Expected a simulated GitHub-hosted runner, got: $RUNNER_ENVIRONMENT"
|
||||
exit 1
|
||||
fi
|
||||
if [ -n "$CACHE_KEY" ]; then
|
||||
echo "Cache key should not be set for a workflow_run event: $CACHE_KEY"
|
||||
exit 1
|
||||
fi
|
||||
if [ -n "$UV_CACHE_DIR" ]; then
|
||||
echo "UV_CACHE_DIR should not be set for a workflow_run event: $UV_CACHE_DIR"
|
||||
exit 1
|
||||
fi
|
||||
@@ -52,8 +52,12 @@ inputs:
|
||||
type: string
|
||||
manifest-file:
|
||||
type: string
|
||||
download-from-astral-mirror:
|
||||
type: boolean
|
||||
add-problem-matchers:
|
||||
type: boolean
|
||||
quiet:
|
||||
type: boolean
|
||||
resolution-strategy:
|
||||
type: enum
|
||||
allowed-values:
|
||||
|
||||
+11
-5
@@ -4,13 +4,13 @@ description:
|
||||
author: "astral-sh"
|
||||
inputs:
|
||||
version:
|
||||
description: "The version of uv to install e.g., `0.5.0` Defaults to the version in pyproject.toml or 'latest'."
|
||||
description: "The version of uv to install, e.g., `0.5.0`, `latest`, or `latest-known`. Defaults to the version in pyproject.toml or `latest`."
|
||||
default: ""
|
||||
version-file:
|
||||
description: "Path to a file containing the version of uv to install. Defaults to searching for uv.toml and if not found pyproject.toml."
|
||||
description: "Path to a file containing the version of uv to install, e.g., uv.toml, pyproject.toml, .tool-versions, requirements.txt or uv.lock. A selected .tool-versions file can also provide the Python version. Defaults to searching for uv.toml and if not found pyproject.toml."
|
||||
default: ""
|
||||
python-version:
|
||||
description: "The version of Python to set UV_PYTHON to"
|
||||
description: "The version of Python to set UV_PYTHON to. Overrides the Python version from .tool-versions."
|
||||
required: false
|
||||
activate-environment:
|
||||
description: "Use uv venv to activate a venv ready to be used by later steps. "
|
||||
@@ -33,7 +33,7 @@ inputs:
|
||||
required: false
|
||||
default: ${{ github.token }}
|
||||
enable-cache:
|
||||
description: "Enable uploading of the uv cache"
|
||||
description: "Enable the GitHub Actions cache for uv. 'auto' enables caching on GitHub-hosted runners except for release, tag push, pull_request_target, and workflow_run events."
|
||||
default: "auto"
|
||||
cache-dependency-glob:
|
||||
description:
|
||||
@@ -61,7 +61,7 @@ inputs:
|
||||
default: ""
|
||||
prune-cache:
|
||||
description: "Prune cache before saving."
|
||||
default: "true"
|
||||
default: "false"
|
||||
cache-python:
|
||||
description: "Upload managed Python installations to the Github Actions cache."
|
||||
default: "false"
|
||||
@@ -80,9 +80,15 @@ inputs:
|
||||
manifest-file:
|
||||
description: "URL to a custom manifest file in the astral-sh/versions format."
|
||||
required: false
|
||||
download-from-astral-mirror:
|
||||
description: "Download uv from the Astral mirror instead of directly from GitHub Releases."
|
||||
default: "true"
|
||||
add-problem-matchers:
|
||||
description: "Add problem matchers."
|
||||
default: "true"
|
||||
quiet:
|
||||
description: "Suppress info-level log output. Only warnings and errors are shown."
|
||||
default: "false"
|
||||
resolution-strategy:
|
||||
description: "Resolution strategy to use when resolving version ranges. 'highest' uses the latest compatible version, 'lowest' uses the oldest compatible version."
|
||||
default: "highest"
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"$schema": "https://biomejs.dev/schemas/2.4.7/schema.json",
|
||||
"$schema": "https://biomejs.dev/schemas/2.5.7/schema.json",
|
||||
"assist": {
|
||||
"actions": {
|
||||
"source": {
|
||||
@@ -34,7 +34,7 @@
|
||||
"linter": {
|
||||
"enabled": true,
|
||||
"rules": {
|
||||
"recommended": true
|
||||
"preset": "recommended"
|
||||
}
|
||||
},
|
||||
"vcs": {
|
||||
|
||||
+3157
-1589
@@ -6,7 +6,11 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __getProtoOf = Object.getPrototypeOf;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __commonJS = (cb, mod) => function __require() {
|
||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||
try {
|
||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||
} catch (e) {
|
||||
throw mod = 0, e;
|
||||
}
|
||||
};
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
@@ -133,7 +137,7 @@ var require_tunnel = __commonJS({
|
||||
connectOptions.headers = connectOptions.headers || {};
|
||||
connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64");
|
||||
}
|
||||
debug2("making CONNECT request");
|
||||
debug3("making CONNECT request");
|
||||
var connectReq = self2.request(connectOptions);
|
||||
connectReq.useChunkedEncodingByDefault = false;
|
||||
connectReq.once("response", onResponse);
|
||||
@@ -153,7 +157,7 @@ var require_tunnel = __commonJS({
|
||||
connectReq.removeAllListeners();
|
||||
socket.removeAllListeners();
|
||||
if (res.statusCode !== 200) {
|
||||
debug2(
|
||||
debug3(
|
||||
"tunneling socket could not be established, statusCode=%d",
|
||||
res.statusCode
|
||||
);
|
||||
@@ -165,7 +169,7 @@ var require_tunnel = __commonJS({
|
||||
return;
|
||||
}
|
||||
if (head.length > 0) {
|
||||
debug2("got illegal response body from proxy");
|
||||
debug3("got illegal response body from proxy");
|
||||
socket.destroy();
|
||||
var error2 = new Error("got illegal response body from proxy");
|
||||
error2.code = "ECONNRESET";
|
||||
@@ -173,13 +177,13 @@ var require_tunnel = __commonJS({
|
||||
self2.removeSocket(placeholder);
|
||||
return;
|
||||
}
|
||||
debug2("tunneling connection has established");
|
||||
debug3("tunneling connection has established");
|
||||
self2.sockets[self2.sockets.indexOf(placeholder)] = socket;
|
||||
return cb(socket);
|
||||
}
|
||||
function onError(cause) {
|
||||
connectReq.removeAllListeners();
|
||||
debug2(
|
||||
debug3(
|
||||
"tunneling socket could not be established, cause=%s\n",
|
||||
cause.message,
|
||||
cause.stack
|
||||
@@ -241,9 +245,9 @@ var require_tunnel = __commonJS({
|
||||
}
|
||||
return target;
|
||||
}
|
||||
var debug2;
|
||||
var debug3;
|
||||
if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
|
||||
debug2 = function() {
|
||||
debug3 = function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
if (typeof args[0] === "string") {
|
||||
args[0] = "TUNNEL: " + args[0];
|
||||
@@ -253,10 +257,10 @@ var require_tunnel = __commonJS({
|
||||
console.error.apply(console, args);
|
||||
};
|
||||
} else {
|
||||
debug2 = function() {
|
||||
debug3 = function() {
|
||||
};
|
||||
}
|
||||
exports2.debug = debug2;
|
||||
exports2.debug = debug3;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -964,7 +968,7 @@ var require_util = __commonJS({
|
||||
var net = require("node:net");
|
||||
var { Blob: Blob2 } = require("node:buffer");
|
||||
var nodeUtil = require("node:util");
|
||||
var { stringify: stringify2 } = require("node:querystring");
|
||||
var { stringify: stringify3 } = require("node:querystring");
|
||||
var { EventEmitter: EE } = require("node:events");
|
||||
var { InvalidArgumentError } = require_errors();
|
||||
var { headerNameLowerCasedRecord } = require_constants();
|
||||
@@ -1024,7 +1028,7 @@ var require_util = __commonJS({
|
||||
if (url2.includes("?") || url2.includes("#")) {
|
||||
throw new Error('Query params cannot be passed when url already contains "?" or "#".');
|
||||
}
|
||||
const stringified = stringify2(queryParams);
|
||||
const stringified = stringify3(queryParams);
|
||||
if (stringified) {
|
||||
url2 += "?" + stringified;
|
||||
}
|
||||
@@ -1069,14 +1073,14 @@ var require_util = __commonJS({
|
||||
}
|
||||
const port = url2.port != null ? url2.port : url2.protocol === "https:" ? 443 : 80;
|
||||
let origin = url2.origin != null ? url2.origin : `${url2.protocol || ""}//${url2.hostname || ""}:${port}`;
|
||||
let path12 = url2.path != null ? url2.path : `${url2.pathname || ""}${url2.search || ""}`;
|
||||
let path13 = url2.path != null ? url2.path : `${url2.pathname || ""}${url2.search || ""}`;
|
||||
if (origin[origin.length - 1] === "/") {
|
||||
origin = origin.slice(0, origin.length - 1);
|
||||
}
|
||||
if (path12 && path12[0] !== "/") {
|
||||
path12 = `/${path12}`;
|
||||
if (path13 && path13[0] !== "/") {
|
||||
path13 = `/${path13}`;
|
||||
}
|
||||
return new URL(`${origin}${path12}`);
|
||||
return new URL(`${origin}${path13}`);
|
||||
}
|
||||
if (!isHttpOrHttpsPrefixed(url2.origin || url2.protocol)) {
|
||||
throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
|
||||
@@ -1357,9 +1361,9 @@ var require_util = __commonJS({
|
||||
function isValidHeaderValue(characters) {
|
||||
return !headerCharRegex.test(characters);
|
||||
}
|
||||
function parseRangeHeader(range2) {
|
||||
if (range2 == null || range2 === "") return { start: 0, end: null, size: null };
|
||||
const m = range2 ? range2.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null;
|
||||
function parseRangeHeader(range3) {
|
||||
if (range3 == null || range3 === "") return { start: 0, end: null, size: null };
|
||||
const m = range3 ? range3.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null;
|
||||
return m ? {
|
||||
start: parseInt(m[1]),
|
||||
end: m[2] ? parseInt(m[2]) : null,
|
||||
@@ -1527,39 +1531,39 @@ var require_diagnostics = __commonJS({
|
||||
});
|
||||
diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => {
|
||||
const {
|
||||
request: { method, path: path12, origin }
|
||||
request: { method, path: path13, origin }
|
||||
} = evt;
|
||||
debuglog("sending request to %s %s/%s", method, origin, path12);
|
||||
debuglog("sending request to %s %s/%s", method, origin, path13);
|
||||
});
|
||||
diagnosticsChannel.channel("undici:request:headers").subscribe((evt) => {
|
||||
const {
|
||||
request: { method, path: path12, origin },
|
||||
request: { method, path: path13, origin },
|
||||
response: { statusCode }
|
||||
} = evt;
|
||||
debuglog(
|
||||
"received response to %s %s/%s - HTTP %d",
|
||||
method,
|
||||
origin,
|
||||
path12,
|
||||
path13,
|
||||
statusCode
|
||||
);
|
||||
});
|
||||
diagnosticsChannel.channel("undici:request:trailers").subscribe((evt) => {
|
||||
const {
|
||||
request: { method, path: path12, origin }
|
||||
request: { method, path: path13, origin }
|
||||
} = evt;
|
||||
debuglog("trailers received from %s %s/%s", method, origin, path12);
|
||||
debuglog("trailers received from %s %s/%s", method, origin, path13);
|
||||
});
|
||||
diagnosticsChannel.channel("undici:request:error").subscribe((evt) => {
|
||||
const {
|
||||
request: { method, path: path12, origin },
|
||||
request: { method, path: path13, origin },
|
||||
error: error2
|
||||
} = evt;
|
||||
debuglog(
|
||||
"request to %s %s/%s errored - %s",
|
||||
method,
|
||||
origin,
|
||||
path12,
|
||||
path13,
|
||||
error2.message
|
||||
);
|
||||
});
|
||||
@@ -1608,9 +1612,9 @@ var require_diagnostics = __commonJS({
|
||||
});
|
||||
diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => {
|
||||
const {
|
||||
request: { method, path: path12, origin }
|
||||
request: { method, path: path13, origin }
|
||||
} = evt;
|
||||
debuglog("sending request to %s %s/%s", method, origin, path12);
|
||||
debuglog("sending request to %s %s/%s", method, origin, path13);
|
||||
});
|
||||
}
|
||||
diagnosticsChannel.channel("undici:websocket:open").subscribe((evt) => {
|
||||
@@ -1673,7 +1677,7 @@ var require_request = __commonJS({
|
||||
var kHandler = /* @__PURE__ */ Symbol("handler");
|
||||
var Request = class {
|
||||
constructor(origin, {
|
||||
path: path12,
|
||||
path: path13,
|
||||
method,
|
||||
body: body2,
|
||||
headers,
|
||||
@@ -1688,11 +1692,11 @@ var require_request = __commonJS({
|
||||
expectContinue,
|
||||
servername
|
||||
}, handler) {
|
||||
if (typeof path12 !== "string") {
|
||||
if (typeof path13 !== "string") {
|
||||
throw new InvalidArgumentError("path must be a string");
|
||||
} else if (path12[0] !== "/" && !(path12.startsWith("http://") || path12.startsWith("https://")) && method !== "CONNECT") {
|
||||
} else if (path13[0] !== "/" && !(path13.startsWith("http://") || path13.startsWith("https://")) && method !== "CONNECT") {
|
||||
throw new InvalidArgumentError("path must be an absolute URL or start with a slash");
|
||||
} else if (invalidPathRegex.test(path12)) {
|
||||
} else if (invalidPathRegex.test(path13)) {
|
||||
throw new InvalidArgumentError("invalid request path");
|
||||
}
|
||||
if (typeof method !== "string") {
|
||||
@@ -1758,7 +1762,7 @@ var require_request = __commonJS({
|
||||
this.completed = false;
|
||||
this.aborted = false;
|
||||
this.upgrade = upgrade || null;
|
||||
this.path = query ? buildURL(path12, query) : path12;
|
||||
this.path = query ? buildURL(path13, query) : path13;
|
||||
this.origin = origin;
|
||||
this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent;
|
||||
this.blocking = blocking == null ? false : blocking;
|
||||
@@ -3573,7 +3577,7 @@ var require_data_url = __commonJS({
|
||||
var require_webidl = __commonJS({
|
||||
"node_modules/@actions/http-client/node_modules/undici/lib/web/fetch/webidl.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var { types, inspect: inspect2 } = require("node:util");
|
||||
var { types: types2, inspect: inspect2 } = require("node:util");
|
||||
var { markAsUncloneable } = require("node:worker_threads");
|
||||
var { toUSVString } = require_util();
|
||||
var webidl = {};
|
||||
@@ -3763,7 +3767,7 @@ var require_webidl = __commonJS({
|
||||
});
|
||||
}
|
||||
const result = {};
|
||||
if (!types.isProxy(O)) {
|
||||
if (!types2.isProxy(O)) {
|
||||
const keys2 = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)];
|
||||
for (const key of keys2) {
|
||||
const typedKey = keyConverter(key, prefix2, argument);
|
||||
@@ -3892,14 +3896,14 @@ var require_webidl = __commonJS({
|
||||
return x;
|
||||
};
|
||||
webidl.converters.ArrayBuffer = function(V, prefix2, argument, opts) {
|
||||
if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) {
|
||||
if (webidl.util.Type(V) !== "Object" || !types2.isAnyArrayBuffer(V)) {
|
||||
throw webidl.errors.conversionFailed({
|
||||
prefix: prefix2,
|
||||
argument: `${argument} ("${webidl.util.Stringify(V)}")`,
|
||||
types: ["ArrayBuffer"]
|
||||
});
|
||||
}
|
||||
if (opts?.allowShared === false && types.isSharedArrayBuffer(V)) {
|
||||
if (opts?.allowShared === false && types2.isSharedArrayBuffer(V)) {
|
||||
throw webidl.errors.exception({
|
||||
header: "ArrayBuffer",
|
||||
message: "SharedArrayBuffer is not allowed."
|
||||
@@ -3914,14 +3918,14 @@ var require_webidl = __commonJS({
|
||||
return V;
|
||||
};
|
||||
webidl.converters.TypedArray = function(V, T, prefix2, name, opts) {
|
||||
if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) {
|
||||
if (webidl.util.Type(V) !== "Object" || !types2.isTypedArray(V) || V.constructor.name !== T.name) {
|
||||
throw webidl.errors.conversionFailed({
|
||||
prefix: prefix2,
|
||||
argument: `${name} ("${webidl.util.Stringify(V)}")`,
|
||||
types: [T.name]
|
||||
});
|
||||
}
|
||||
if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
|
||||
if (opts?.allowShared === false && types2.isSharedArrayBuffer(V.buffer)) {
|
||||
throw webidl.errors.exception({
|
||||
header: "ArrayBuffer",
|
||||
message: "SharedArrayBuffer is not allowed."
|
||||
@@ -3936,13 +3940,13 @@ var require_webidl = __commonJS({
|
||||
return V;
|
||||
};
|
||||
webidl.converters.DataView = function(V, prefix2, name, opts) {
|
||||
if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) {
|
||||
if (webidl.util.Type(V) !== "Object" || !types2.isDataView(V)) {
|
||||
throw webidl.errors.exception({
|
||||
header: prefix2,
|
||||
message: `${name} is not a DataView.`
|
||||
});
|
||||
}
|
||||
if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
|
||||
if (opts?.allowShared === false && types2.isSharedArrayBuffer(V.buffer)) {
|
||||
throw webidl.errors.exception({
|
||||
header: "ArrayBuffer",
|
||||
message: "SharedArrayBuffer is not allowed."
|
||||
@@ -3957,13 +3961,13 @@ var require_webidl = __commonJS({
|
||||
return V;
|
||||
};
|
||||
webidl.converters.BufferSource = function(V, prefix2, name, opts) {
|
||||
if (types.isAnyArrayBuffer(V)) {
|
||||
if (types2.isAnyArrayBuffer(V)) {
|
||||
return webidl.converters.ArrayBuffer(V, prefix2, name, { ...opts, allowShared: false });
|
||||
}
|
||||
if (types.isTypedArray(V)) {
|
||||
if (types2.isTypedArray(V)) {
|
||||
return webidl.converters.TypedArray(V, V.constructor, prefix2, name, { ...opts, allowShared: false });
|
||||
}
|
||||
if (types.isDataView(V)) {
|
||||
if (types2.isDataView(V)) {
|
||||
return webidl.converters.DataView(V, prefix2, name, { ...opts, allowShared: false });
|
||||
}
|
||||
throw webidl.errors.conversionFailed({
|
||||
@@ -5416,7 +5420,7 @@ var require_body = __commonJS({
|
||||
const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, "0")}`;
|
||||
const prefix2 = `--${boundary}\r
|
||||
Content-Disposition: form-data`;
|
||||
const escape2 = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22");
|
||||
const escape3 = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22");
|
||||
const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n");
|
||||
const blobParts = [];
|
||||
const rn = new Uint8Array([13, 10]);
|
||||
@@ -5424,14 +5428,14 @@ Content-Disposition: form-data`;
|
||||
let hasUnknownSizeValue = false;
|
||||
for (const [name, value] of object) {
|
||||
if (typeof value === "string") {
|
||||
const chunk2 = textEncoder.encode(prefix2 + `; name="${escape2(normalizeLinefeeds(name))}"\r
|
||||
const chunk2 = textEncoder.encode(prefix2 + `; name="${escape3(normalizeLinefeeds(name))}"\r
|
||||
\r
|
||||
${normalizeLinefeeds(value)}\r
|
||||
`);
|
||||
blobParts.push(chunk2);
|
||||
length += chunk2.byteLength;
|
||||
} else {
|
||||
const chunk2 = textEncoder.encode(`${prefix2}; name="${escape2(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape2(value.name)}"` : "") + `\r
|
||||
const chunk2 = textEncoder.encode(`${prefix2}; name="${escape3(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape3(value.name)}"` : "") + `\r
|
||||
Content-Type: ${value.type || "application/octet-stream"}\r
|
||||
\r
|
||||
`);
|
||||
@@ -6277,7 +6281,7 @@ var require_client_h1 = __commonJS({
|
||||
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
|
||||
}
|
||||
function writeH1(client, request) {
|
||||
const { method, path: path12, host, upgrade, blocking, reset } = request;
|
||||
const { method, path: path13, host, upgrade, blocking, reset } = request;
|
||||
let { body: body2, headers, contentLength: contentLength2 } = request;
|
||||
const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH";
|
||||
if (util4.isFormDataLike(body2)) {
|
||||
@@ -6343,7 +6347,7 @@ var require_client_h1 = __commonJS({
|
||||
if (blocking) {
|
||||
socket[kBlocking] = true;
|
||||
}
|
||||
let header = `${method} ${path12} HTTP/1.1\r
|
||||
let header = `${method} ${path13} HTTP/1.1\r
|
||||
`;
|
||||
if (typeof host === "string") {
|
||||
header += `host: ${host}\r
|
||||
@@ -6869,7 +6873,7 @@ var require_client_h2 = __commonJS({
|
||||
}
|
||||
function writeH2(client, request) {
|
||||
const session = client[kHTTP2Session];
|
||||
const { method, path: path12, host, upgrade, expectContinue, signal, headers: reqHeaders } = request;
|
||||
const { method, path: path13, host, upgrade, expectContinue, signal, headers: reqHeaders } = request;
|
||||
let { body: body2 } = request;
|
||||
if (upgrade) {
|
||||
util4.errorRequest(client, request, new Error("Upgrade not supported for H2"));
|
||||
@@ -6936,7 +6940,7 @@ var require_client_h2 = __commonJS({
|
||||
});
|
||||
return true;
|
||||
}
|
||||
headers[HTTP2_HEADER_PATH] = path12;
|
||||
headers[HTTP2_HEADER_PATH] = path13;
|
||||
headers[HTTP2_HEADER_SCHEME] = "https";
|
||||
const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";
|
||||
if (body2 && typeof body2.read === "function") {
|
||||
@@ -7289,9 +7293,9 @@ var require_redirect_handler = __commonJS({
|
||||
return this.handler.onHeaders(statusCode, headers, resume, statusText);
|
||||
}
|
||||
const { origin, pathname, search } = util4.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)));
|
||||
const path12 = search ? `${pathname}${search}` : pathname;
|
||||
const path13 = search ? `${pathname}${search}` : pathname;
|
||||
this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin);
|
||||
this.opts.path = path12;
|
||||
this.opts.path = path13;
|
||||
this.opts.origin = origin;
|
||||
this.opts.maxRedirections = 0;
|
||||
this.opts.query = null;
|
||||
@@ -8525,10 +8529,10 @@ var require_proxy_agent = __commonJS({
|
||||
};
|
||||
const {
|
||||
origin,
|
||||
path: path12 = "/",
|
||||
path: path13 = "/",
|
||||
headers = {}
|
||||
} = opts;
|
||||
opts.path = origin + path12;
|
||||
opts.path = origin + path13;
|
||||
if (!("host" in headers) && !("Host" in headers)) {
|
||||
const { host } = new URL2(origin);
|
||||
headers.host = host;
|
||||
@@ -9021,8 +9025,8 @@ var require_retry_handler = __commonJS({
|
||||
}
|
||||
if (this.end == null) {
|
||||
if (statusCode === 206) {
|
||||
const range2 = parseRangeHeader(headers["content-range"]);
|
||||
if (range2 == null) {
|
||||
const range3 = parseRangeHeader(headers["content-range"]);
|
||||
if (range3 == null) {
|
||||
return this.handler.onHeaders(
|
||||
statusCode,
|
||||
rawHeaders,
|
||||
@@ -9030,7 +9034,7 @@ var require_retry_handler = __commonJS({
|
||||
statusMessage
|
||||
);
|
||||
}
|
||||
const { start, size, end = size - 1 } = range2;
|
||||
const { start, size, end = size - 1 } = range3;
|
||||
assert4(
|
||||
start != null && Number.isFinite(start),
|
||||
"content-range mismatch"
|
||||
@@ -10387,15 +10391,15 @@ var require_mock_utils = __commonJS({
|
||||
isPromise
|
||||
}
|
||||
} = require("node:util");
|
||||
function matchValue(match2, value) {
|
||||
if (typeof match2 === "string") {
|
||||
return match2 === value;
|
||||
function matchValue(match4, value) {
|
||||
if (typeof match4 === "string") {
|
||||
return match4 === value;
|
||||
}
|
||||
if (match2 instanceof RegExp) {
|
||||
return match2.test(value);
|
||||
if (match4 instanceof RegExp) {
|
||||
return match4.test(value);
|
||||
}
|
||||
if (typeof match2 === "function") {
|
||||
return match2(value) === true;
|
||||
if (typeof match4 === "function") {
|
||||
return match4(value) === true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -10449,20 +10453,20 @@ var require_mock_utils = __commonJS({
|
||||
}
|
||||
return true;
|
||||
}
|
||||
function safeUrl(path12) {
|
||||
if (typeof path12 !== "string") {
|
||||
return path12;
|
||||
function safeUrl(path13) {
|
||||
if (typeof path13 !== "string") {
|
||||
return path13;
|
||||
}
|
||||
const pathSegments = path12.split("?");
|
||||
const pathSegments = path13.split("?");
|
||||
if (pathSegments.length !== 2) {
|
||||
return path12;
|
||||
return path13;
|
||||
}
|
||||
const qp = new URLSearchParams(pathSegments.pop());
|
||||
qp.sort();
|
||||
return [...pathSegments, qp.toString()].join("?");
|
||||
}
|
||||
function matchKey(mockDispatch2, { path: path12, method, body: body2, headers }) {
|
||||
const pathMatch = matchValue(mockDispatch2.path, path12);
|
||||
function matchKey(mockDispatch2, { path: path13, method, body: body2, headers }) {
|
||||
const pathMatch = matchValue(mockDispatch2.path, path13);
|
||||
const methodMatch = matchValue(mockDispatch2.method, method);
|
||||
const bodyMatch = typeof mockDispatch2.body !== "undefined" ? matchValue(mockDispatch2.body, body2) : true;
|
||||
const headersMatch = matchHeaders(mockDispatch2, headers);
|
||||
@@ -10484,7 +10488,7 @@ var require_mock_utils = __commonJS({
|
||||
function getMockDispatch(mockDispatches, key) {
|
||||
const basePath = key.query ? buildURL(key.path, key.query) : key.path;
|
||||
const resolvedPath = typeof basePath === "string" ? safeUrl(basePath) : basePath;
|
||||
let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path: path12 }) => matchValue(safeUrl(path12), resolvedPath));
|
||||
let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path: path13 }) => matchValue(safeUrl(path13), resolvedPath));
|
||||
if (matchedMockDispatches.length === 0) {
|
||||
throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`);
|
||||
}
|
||||
@@ -10522,9 +10526,9 @@ var require_mock_utils = __commonJS({
|
||||
}
|
||||
}
|
||||
function buildKey(opts) {
|
||||
const { path: path12, method, body: body2, headers, query } = opts;
|
||||
const { path: path13, method, body: body2, headers, query } = opts;
|
||||
return {
|
||||
path: path12,
|
||||
path: path13,
|
||||
method,
|
||||
body: body2,
|
||||
headers,
|
||||
@@ -10987,10 +10991,10 @@ var require_pending_interceptors_formatter = __commonJS({
|
||||
}
|
||||
format(pendingInterceptors) {
|
||||
const withPrettyHeaders = pendingInterceptors.map(
|
||||
({ method, path: path12, data: { statusCode }, persist, times, timesInvoked, origin }) => ({
|
||||
({ method, path: path13, data: { statusCode }, persist, times, timesInvoked, origin }) => ({
|
||||
Method: method,
|
||||
Origin: origin,
|
||||
Path: path12,
|
||||
Path: path13,
|
||||
"Status code": statusCode,
|
||||
Persistent: persist ? PERSISTENT : NOT_PERSISTENT,
|
||||
Invocations: timesInvoked,
|
||||
@@ -12115,7 +12119,7 @@ var require_response = __commonJS({
|
||||
var { URLSerializer } = require_data_url();
|
||||
var { kConstruct } = require_symbols();
|
||||
var assert4 = require("node:assert");
|
||||
var { types } = require("node:util");
|
||||
var { types: types2 } = require("node:util");
|
||||
var textEncoder = new TextEncoder("utf-8");
|
||||
var Response = class _Response {
|
||||
// Creates network error Response.
|
||||
@@ -12436,7 +12440,7 @@ var require_response = __commonJS({
|
||||
if (isBlobLike(V)) {
|
||||
return webidl.converters.Blob(V, prefix2, name, { strict: false });
|
||||
}
|
||||
if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) {
|
||||
if (ArrayBuffer.isView(V) || types2.isArrayBuffer(V)) {
|
||||
return webidl.converters.BufferSource(V, prefix2, name);
|
||||
}
|
||||
if (util4.isFormDataLike(V)) {
|
||||
@@ -14672,7 +14676,7 @@ var require_util4 = __commonJS({
|
||||
var { ProgressEvent } = require_progressevent();
|
||||
var { getEncoding } = require_encoding();
|
||||
var { serializeAMimeType, parseMIMEType } = require_data_url();
|
||||
var { types } = require("node:util");
|
||||
var { types: types2 } = require("node:util");
|
||||
var { StringDecoder } = require("string_decoder");
|
||||
var { btoa: btoa2 } = require("node:buffer");
|
||||
var staticPropertyDescriptors = {
|
||||
@@ -14702,7 +14706,7 @@ var require_util4 = __commonJS({
|
||||
});
|
||||
}
|
||||
isFirstChunk = false;
|
||||
if (!done && types.isUint8Array(value)) {
|
||||
if (!done && types2.isUint8Array(value)) {
|
||||
bytes.push(value);
|
||||
if ((fr[kLastProgressEventFired] === void 0 || Date.now() - fr[kLastProgressEventFired] >= 50) && !fr[kAborted]) {
|
||||
fr[kLastProgressEventFired] = Date.now();
|
||||
@@ -15871,9 +15875,9 @@ var require_util6 = __commonJS({
|
||||
}
|
||||
}
|
||||
}
|
||||
function validateCookiePath(path12) {
|
||||
for (let i = 0; i < path12.length; ++i) {
|
||||
const code = path12.charCodeAt(i);
|
||||
function validateCookiePath(path13) {
|
||||
for (let i = 0; i < path13.length; ++i) {
|
||||
const code = path13.charCodeAt(i);
|
||||
if (code < 32 || // exclude CTLs (0-31)
|
||||
code === 127 || // DEL
|
||||
code === 59) {
|
||||
@@ -15921,7 +15925,7 @@ var require_util6 = __commonJS({
|
||||
throw new Error("Invalid cookie max-age");
|
||||
}
|
||||
}
|
||||
function stringify2(cookie) {
|
||||
function stringify3(cookie) {
|
||||
if (cookie.name.length === 0) {
|
||||
return null;
|
||||
}
|
||||
@@ -15975,7 +15979,7 @@ var require_util6 = __commonJS({
|
||||
validateCookiePath,
|
||||
validateCookieValue,
|
||||
toIMFDate,
|
||||
stringify: stringify2
|
||||
stringify: stringify3
|
||||
};
|
||||
}
|
||||
});
|
||||
@@ -16125,7 +16129,7 @@ var require_cookies = __commonJS({
|
||||
"node_modules/@actions/http-client/node_modules/undici/lib/web/cookies/index.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var { parseSetCookie } = require_parse();
|
||||
var { stringify: stringify2 } = require_util6();
|
||||
var { stringify: stringify3 } = require_util6();
|
||||
var { webidl } = require_webidl();
|
||||
var { Headers: Headers2 } = require_headers();
|
||||
function getCookies(headers) {
|
||||
@@ -16168,7 +16172,7 @@ var require_cookies = __commonJS({
|
||||
webidl.argumentLengthCheck(arguments, 2, "setCookie");
|
||||
webidl.brandCheck(headers, Headers2, { strict: false });
|
||||
cookie = webidl.converters.Cookie(cookie);
|
||||
const str = stringify2(cookie);
|
||||
const str = stringify3(cookie);
|
||||
if (str) {
|
||||
headers.append("Set-Cookie", str);
|
||||
}
|
||||
@@ -17536,7 +17540,7 @@ var require_websocket = __commonJS({
|
||||
var { ByteParser } = require_receiver();
|
||||
var { kEnumerableProperty, isBlobLike } = require_util();
|
||||
var { getGlobalDispatcher } = require_global2();
|
||||
var { types } = require("node:util");
|
||||
var { types: types2 } = require("node:util");
|
||||
var { ErrorEvent, CloseEvent } = require_events();
|
||||
var { SendQueue } = require_sender();
|
||||
var WebSocket = class _WebSocket extends EventTarget {
|
||||
@@ -17659,7 +17663,7 @@ var require_websocket = __commonJS({
|
||||
this.#sendQueue.add(data, () => {
|
||||
this.#bufferedAmount -= length;
|
||||
}, sendHints.string);
|
||||
} else if (types.isArrayBuffer(data)) {
|
||||
} else if (types2.isArrayBuffer(data)) {
|
||||
this.#bufferedAmount += data.byteLength;
|
||||
this.#sendQueue.add(data, () => {
|
||||
this.#bufferedAmount -= data.byteLength;
|
||||
@@ -17865,7 +17869,7 @@ var require_websocket = __commonJS({
|
||||
if (isBlobLike(V)) {
|
||||
return webidl.converters.Blob(V, { strict: false });
|
||||
}
|
||||
if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) {
|
||||
if (ArrayBuffer.isView(V) || types2.isArrayBuffer(V)) {
|
||||
return webidl.converters.BufferSource(V);
|
||||
}
|
||||
}
|
||||
@@ -18513,11 +18517,11 @@ var require_undici = __commonJS({
|
||||
if (typeof opts.path !== "string") {
|
||||
throw new InvalidArgumentError("invalid opts.path");
|
||||
}
|
||||
let path12 = opts.path;
|
||||
let path13 = opts.path;
|
||||
if (!opts.path.startsWith("/")) {
|
||||
path12 = `/${path12}`;
|
||||
path13 = `/${path13}`;
|
||||
}
|
||||
url2 = new URL(util4.parseOrigin(url2).origin + path12);
|
||||
url2 = new URL(util4.parseOrigin(url2).origin + path13);
|
||||
} else {
|
||||
if (!opts) {
|
||||
opts = typeof url2 === "object" ? url2 : {};
|
||||
@@ -18610,11 +18614,11 @@ var require_concat_map = __commonJS({
|
||||
var require_balanced_match = __commonJS({
|
||||
"node_modules/balanced-match/index.js"(exports2, module2) {
|
||||
"use strict";
|
||||
module2.exports = balanced;
|
||||
function balanced(a, b, str) {
|
||||
if (a instanceof RegExp) a = maybeMatch(a, str);
|
||||
if (b instanceof RegExp) b = maybeMatch(b, str);
|
||||
var r = range2(a, b, str);
|
||||
module2.exports = balanced2;
|
||||
function balanced2(a, b, str) {
|
||||
if (a instanceof RegExp) a = maybeMatch2(a, str);
|
||||
if (b instanceof RegExp) b = maybeMatch2(b, str);
|
||||
var r = range3(a, b, str);
|
||||
return r && {
|
||||
start: r[0],
|
||||
end: r[1],
|
||||
@@ -18623,12 +18627,12 @@ var require_balanced_match = __commonJS({
|
||||
post: str.slice(r[1] + b.length)
|
||||
};
|
||||
}
|
||||
function maybeMatch(reg, str) {
|
||||
function maybeMatch2(reg, str) {
|
||||
var m = str.match(reg);
|
||||
return m ? m[0] : null;
|
||||
}
|
||||
balanced.range = range2;
|
||||
function range2(a, b, str) {
|
||||
balanced2.range = range3;
|
||||
function range3(a, b, str) {
|
||||
var begs, beg, left, right, result;
|
||||
var ai = str.indexOf(a);
|
||||
var bi = str.indexOf(b, ai + 1);
|
||||
@@ -18665,27 +18669,27 @@ var require_balanced_match = __commonJS({
|
||||
var require_brace_expansion = __commonJS({
|
||||
"node_modules/brace-expansion/index.js"(exports2, module2) {
|
||||
var concatMap = require_concat_map();
|
||||
var balanced = require_balanced_match();
|
||||
var balanced2 = require_balanced_match();
|
||||
module2.exports = expandTop;
|
||||
var escSlash = "\0SLASH" + Math.random() + "\0";
|
||||
var escOpen = "\0OPEN" + Math.random() + "\0";
|
||||
var escClose = "\0CLOSE" + Math.random() + "\0";
|
||||
var escComma = "\0COMMA" + Math.random() + "\0";
|
||||
var escPeriod = "\0PERIOD" + Math.random() + "\0";
|
||||
function numeric(str) {
|
||||
var escSlash2 = "\0SLASH" + Math.random() + "\0";
|
||||
var escOpen2 = "\0OPEN" + Math.random() + "\0";
|
||||
var escClose2 = "\0CLOSE" + Math.random() + "\0";
|
||||
var escComma2 = "\0COMMA" + Math.random() + "\0";
|
||||
var escPeriod2 = "\0PERIOD" + Math.random() + "\0";
|
||||
function numeric2(str) {
|
||||
return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0);
|
||||
}
|
||||
function escapeBraces(str) {
|
||||
return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod);
|
||||
function escapeBraces2(str) {
|
||||
return str.split("\\\\").join(escSlash2).split("\\{").join(escOpen2).split("\\}").join(escClose2).split("\\,").join(escComma2).split("\\.").join(escPeriod2);
|
||||
}
|
||||
function unescapeBraces(str) {
|
||||
return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join(".");
|
||||
function unescapeBraces2(str) {
|
||||
return str.split(escSlash2).join("\\").split(escOpen2).join("{").split(escClose2).join("}").split(escComma2).join(",").split(escPeriod2).join(".");
|
||||
}
|
||||
function parseCommaParts(str) {
|
||||
function parseCommaParts2(str) {
|
||||
if (!str)
|
||||
return [""];
|
||||
var parts = [];
|
||||
var m = balanced("{", "}", str);
|
||||
var m = balanced2("{", "}", str);
|
||||
if (!m)
|
||||
return str.split(",");
|
||||
var pre = m.pre;
|
||||
@@ -18693,7 +18697,7 @@ var require_brace_expansion = __commonJS({
|
||||
var post = m.post;
|
||||
var p = pre.split(",");
|
||||
p[p.length - 1] += "{" + body2 + "}";
|
||||
var postParts = parseCommaParts(post);
|
||||
var postParts = parseCommaParts2(post);
|
||||
if (post.length) {
|
||||
p[p.length - 1] += postParts.shift();
|
||||
p.push.apply(p, postParts);
|
||||
@@ -18707,23 +18711,23 @@ var require_brace_expansion = __commonJS({
|
||||
if (str.substr(0, 2) === "{}") {
|
||||
str = "\\{\\}" + str.substr(2);
|
||||
}
|
||||
return expand(escapeBraces(str), true).map(unescapeBraces);
|
||||
return expand2(escapeBraces2(str), true).map(unescapeBraces2);
|
||||
}
|
||||
function embrace(str) {
|
||||
function embrace2(str) {
|
||||
return "{" + str + "}";
|
||||
}
|
||||
function isPadded(el) {
|
||||
function isPadded2(el) {
|
||||
return /^-?0\d/.test(el);
|
||||
}
|
||||
function lte(i, y) {
|
||||
function lte2(i, y) {
|
||||
return i <= y;
|
||||
}
|
||||
function gte2(i, y) {
|
||||
return i >= y;
|
||||
}
|
||||
function expand(str, isTop) {
|
||||
function expand2(str, isTop) {
|
||||
var expansions = [];
|
||||
var m = balanced("{", "}", str);
|
||||
var m = balanced2("{", "}", str);
|
||||
if (!m || /\$$/.test(m.pre)) return [str];
|
||||
var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
|
||||
var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
|
||||
@@ -18731,8 +18735,8 @@ var require_brace_expansion = __commonJS({
|
||||
var isOptions = m.body.indexOf(",") >= 0;
|
||||
if (!isSequence && !isOptions) {
|
||||
if (m.post.match(/,(?!,).*\}/)) {
|
||||
str = m.pre + "{" + m.body + escClose + m.post;
|
||||
return expand(str);
|
||||
str = m.pre + "{" + m.body + escClose2 + m.post;
|
||||
return expand2(str);
|
||||
}
|
||||
return [str];
|
||||
}
|
||||
@@ -18740,11 +18744,11 @@ var require_brace_expansion = __commonJS({
|
||||
if (isSequence) {
|
||||
n = m.body.split(/\.\./);
|
||||
} else {
|
||||
n = parseCommaParts(m.body);
|
||||
n = parseCommaParts2(m.body);
|
||||
if (n.length === 1) {
|
||||
n = expand(n[0], false).map(embrace);
|
||||
n = expand2(n[0], false).map(embrace2);
|
||||
if (n.length === 1) {
|
||||
var post = m.post.length ? expand(m.post, false) : [""];
|
||||
var post = m.post.length ? expand2(m.post, false) : [""];
|
||||
return post.map(function(p) {
|
||||
return m.pre + n[0] + p;
|
||||
});
|
||||
@@ -18752,20 +18756,20 @@ var require_brace_expansion = __commonJS({
|
||||
}
|
||||
}
|
||||
var pre = m.pre;
|
||||
var post = m.post.length ? expand(m.post, false) : [""];
|
||||
var post = m.post.length ? expand2(m.post, false) : [""];
|
||||
var N;
|
||||
if (isSequence) {
|
||||
var x = numeric(n[0]);
|
||||
var y = numeric(n[1]);
|
||||
var x = numeric2(n[0]);
|
||||
var y = numeric2(n[1]);
|
||||
var width = Math.max(n[0].length, n[1].length);
|
||||
var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1;
|
||||
var test = lte;
|
||||
var incr = n.length == 3 ? Math.abs(numeric2(n[2])) : 1;
|
||||
var test = lte2;
|
||||
var reverse = y < x;
|
||||
if (reverse) {
|
||||
incr *= -1;
|
||||
test = gte2;
|
||||
}
|
||||
var pad = n.some(isPadded);
|
||||
var pad = n.some(isPadded2);
|
||||
N = [];
|
||||
for (var i = x; test(i, y); i += incr) {
|
||||
var c;
|
||||
@@ -18790,7 +18794,7 @@ var require_brace_expansion = __commonJS({
|
||||
}
|
||||
} else {
|
||||
N = concatMap(n, function(el) {
|
||||
return expand(el, false);
|
||||
return expand2(el, false);
|
||||
});
|
||||
}
|
||||
for (var j = 0; j < N.length; j++) {
|
||||
@@ -18808,9 +18812,9 @@ var require_brace_expansion = __commonJS({
|
||||
// node_modules/minimatch/minimatch.js
|
||||
var require_minimatch = __commonJS({
|
||||
"node_modules/minimatch/minimatch.js"(exports2, module2) {
|
||||
module2.exports = minimatch2;
|
||||
minimatch2.Minimatch = Minimatch2;
|
||||
var path12 = (function() {
|
||||
module2.exports = minimatch3;
|
||||
minimatch3.Minimatch = Minimatch3;
|
||||
var path13 = (function() {
|
||||
try {
|
||||
return require("path");
|
||||
} catch (e) {
|
||||
@@ -18818,9 +18822,9 @@ var require_minimatch = __commonJS({
|
||||
})() || {
|
||||
sep: "/"
|
||||
};
|
||||
minimatch2.sep = path12.sep;
|
||||
var GLOBSTAR = minimatch2.GLOBSTAR = Minimatch2.GLOBSTAR = {};
|
||||
var expand = require_brace_expansion();
|
||||
minimatch3.sep = path13.sep;
|
||||
var GLOBSTAR2 = minimatch3.GLOBSTAR = Minimatch3.GLOBSTAR = {};
|
||||
var expand2 = require_brace_expansion();
|
||||
var plTypes = {
|
||||
"!": { open: "(?:(?!(?:", close: "))[^/]*?)" },
|
||||
"?": { open: "(?:", close: ")?" },
|
||||
@@ -18828,11 +18832,11 @@ var require_minimatch = __commonJS({
|
||||
"*": { open: "(?:", close: ")*" },
|
||||
"@": { open: "(?:", close: ")" }
|
||||
};
|
||||
var qmark = "[^/]";
|
||||
var star = qmark + "*?";
|
||||
var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";
|
||||
var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?";
|
||||
var reSpecials = charSet("().*{}+?[]^$\\!");
|
||||
var qmark3 = "[^/]";
|
||||
var star3 = qmark3 + "*?";
|
||||
var twoStarDot2 = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";
|
||||
var twoStarNoDot2 = "(?:(?!(?:\\/|^)\\.).)*?";
|
||||
var reSpecials2 = charSet("().*{}+?[]^$\\!");
|
||||
function charSet(s) {
|
||||
return s.split("").reduce(function(set, c) {
|
||||
set[c] = true;
|
||||
@@ -18840,14 +18844,14 @@ var require_minimatch = __commonJS({
|
||||
}, {});
|
||||
}
|
||||
var slashSplit = /\/+/;
|
||||
minimatch2.filter = filter;
|
||||
function filter(pattern, options) {
|
||||
minimatch3.filter = filter3;
|
||||
function filter3(pattern, options) {
|
||||
options = options || {};
|
||||
return function(p, i, list) {
|
||||
return minimatch2(p, pattern, options);
|
||||
return minimatch3(p, pattern, options);
|
||||
};
|
||||
}
|
||||
function ext(a, b) {
|
||||
function ext2(a, b) {
|
||||
b = b || {};
|
||||
var t = {};
|
||||
Object.keys(a).forEach(function(k) {
|
||||
@@ -18858,57 +18862,57 @@ var require_minimatch = __commonJS({
|
||||
});
|
||||
return t;
|
||||
}
|
||||
minimatch2.defaults = function(def) {
|
||||
minimatch3.defaults = function(def) {
|
||||
if (!def || typeof def !== "object" || !Object.keys(def).length) {
|
||||
return minimatch2;
|
||||
return minimatch3;
|
||||
}
|
||||
var orig = minimatch2;
|
||||
var m = function minimatch3(p, pattern, options) {
|
||||
return orig(p, pattern, ext(def, options));
|
||||
var orig = minimatch3;
|
||||
var m = function minimatch4(p, pattern, options) {
|
||||
return orig(p, pattern, ext2(def, options));
|
||||
};
|
||||
m.Minimatch = function Minimatch3(pattern, options) {
|
||||
return new orig.Minimatch(pattern, ext(def, options));
|
||||
m.Minimatch = function Minimatch4(pattern, options) {
|
||||
return new orig.Minimatch(pattern, ext2(def, options));
|
||||
};
|
||||
m.Minimatch.defaults = function defaults(options) {
|
||||
return orig.defaults(ext(def, options)).Minimatch;
|
||||
m.Minimatch.defaults = function defaults2(options) {
|
||||
return orig.defaults(ext2(def, options)).Minimatch;
|
||||
};
|
||||
m.filter = function filter2(pattern, options) {
|
||||
return orig.filter(pattern, ext(def, options));
|
||||
m.filter = function filter4(pattern, options) {
|
||||
return orig.filter(pattern, ext2(def, options));
|
||||
};
|
||||
m.defaults = function defaults(options) {
|
||||
return orig.defaults(ext(def, options));
|
||||
m.defaults = function defaults2(options) {
|
||||
return orig.defaults(ext2(def, options));
|
||||
};
|
||||
m.makeRe = function makeRe2(pattern, options) {
|
||||
return orig.makeRe(pattern, ext(def, options));
|
||||
m.makeRe = function makeRe3(pattern, options) {
|
||||
return orig.makeRe(pattern, ext2(def, options));
|
||||
};
|
||||
m.braceExpand = function braceExpand2(pattern, options) {
|
||||
return orig.braceExpand(pattern, ext(def, options));
|
||||
m.braceExpand = function braceExpand3(pattern, options) {
|
||||
return orig.braceExpand(pattern, ext2(def, options));
|
||||
};
|
||||
m.match = function(list, pattern, options) {
|
||||
return orig.match(list, pattern, ext(def, options));
|
||||
return orig.match(list, pattern, ext2(def, options));
|
||||
};
|
||||
return m;
|
||||
};
|
||||
Minimatch2.defaults = function(def) {
|
||||
return minimatch2.defaults(def).Minimatch;
|
||||
Minimatch3.defaults = function(def) {
|
||||
return minimatch3.defaults(def).Minimatch;
|
||||
};
|
||||
function minimatch2(p, pattern, options) {
|
||||
assertValidPattern(pattern);
|
||||
function minimatch3(p, pattern, options) {
|
||||
assertValidPattern2(pattern);
|
||||
if (!options) options = {};
|
||||
if (!options.nocomment && pattern.charAt(0) === "#") {
|
||||
return false;
|
||||
}
|
||||
return new Minimatch2(pattern, options).match(p);
|
||||
return new Minimatch3(pattern, options).match(p);
|
||||
}
|
||||
function Minimatch2(pattern, options) {
|
||||
if (!(this instanceof Minimatch2)) {
|
||||
return new Minimatch2(pattern, options);
|
||||
function Minimatch3(pattern, options) {
|
||||
if (!(this instanceof Minimatch3)) {
|
||||
return new Minimatch3(pattern, options);
|
||||
}
|
||||
assertValidPattern(pattern);
|
||||
assertValidPattern2(pattern);
|
||||
if (!options) options = {};
|
||||
pattern = pattern.trim();
|
||||
if (!options.allowWindowsEscape && path12.sep !== "/") {
|
||||
pattern = pattern.split(path12.sep).join("/");
|
||||
if (!options.allowWindowsEscape && path13.sep !== "/") {
|
||||
pattern = pattern.split(path13.sep).join("/");
|
||||
}
|
||||
this.options = options;
|
||||
this.set = [];
|
||||
@@ -18920,9 +18924,9 @@ var require_minimatch = __commonJS({
|
||||
this.partial = !!options.partial;
|
||||
this.make();
|
||||
}
|
||||
Minimatch2.prototype.debug = function() {
|
||||
Minimatch3.prototype.debug = function() {
|
||||
};
|
||||
Minimatch2.prototype.make = make;
|
||||
Minimatch3.prototype.make = make;
|
||||
function make() {
|
||||
var pattern = this.pattern;
|
||||
var options = this.options;
|
||||
@@ -18936,7 +18940,7 @@ var require_minimatch = __commonJS({
|
||||
}
|
||||
this.parseNegate();
|
||||
var set = this.globSet = this.braceExpand();
|
||||
if (options.debug) this.debug = function debug2() {
|
||||
if (options.debug) this.debug = function debug3() {
|
||||
console.error.apply(console, arguments);
|
||||
};
|
||||
this.debug(this.pattern, set);
|
||||
@@ -18954,7 +18958,7 @@ var require_minimatch = __commonJS({
|
||||
this.debug(this.pattern, set);
|
||||
this.set = set;
|
||||
}
|
||||
Minimatch2.prototype.parseNegate = parseNegate;
|
||||
Minimatch3.prototype.parseNegate = parseNegate;
|
||||
function parseNegate() {
|
||||
var pattern = this.pattern;
|
||||
var negate = false;
|
||||
@@ -18968,42 +18972,42 @@ var require_minimatch = __commonJS({
|
||||
if (negateOffset) this.pattern = pattern.substr(negateOffset);
|
||||
this.negate = negate;
|
||||
}
|
||||
minimatch2.braceExpand = function(pattern, options) {
|
||||
return braceExpand(pattern, options);
|
||||
minimatch3.braceExpand = function(pattern, options) {
|
||||
return braceExpand2(pattern, options);
|
||||
};
|
||||
Minimatch2.prototype.braceExpand = braceExpand;
|
||||
function braceExpand(pattern, options) {
|
||||
Minimatch3.prototype.braceExpand = braceExpand2;
|
||||
function braceExpand2(pattern, options) {
|
||||
if (!options) {
|
||||
if (this instanceof Minimatch2) {
|
||||
if (this instanceof Minimatch3) {
|
||||
options = this.options;
|
||||
} else {
|
||||
options = {};
|
||||
}
|
||||
}
|
||||
pattern = typeof pattern === "undefined" ? this.pattern : pattern;
|
||||
assertValidPattern(pattern);
|
||||
assertValidPattern2(pattern);
|
||||
if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
|
||||
return [pattern];
|
||||
}
|
||||
return expand(pattern);
|
||||
return expand2(pattern);
|
||||
}
|
||||
var MAX_PATTERN_LENGTH = 1024 * 64;
|
||||
var assertValidPattern = function(pattern) {
|
||||
var MAX_PATTERN_LENGTH2 = 1024 * 64;
|
||||
var assertValidPattern2 = function(pattern) {
|
||||
if (typeof pattern !== "string") {
|
||||
throw new TypeError("invalid pattern");
|
||||
}
|
||||
if (pattern.length > MAX_PATTERN_LENGTH) {
|
||||
if (pattern.length > MAX_PATTERN_LENGTH2) {
|
||||
throw new TypeError("pattern is too long");
|
||||
}
|
||||
};
|
||||
Minimatch2.prototype.parse = parse3;
|
||||
Minimatch3.prototype.parse = parse4;
|
||||
var SUBPARSE = {};
|
||||
function parse3(pattern, isSub) {
|
||||
assertValidPattern(pattern);
|
||||
function parse4(pattern, isSub) {
|
||||
assertValidPattern2(pattern);
|
||||
var options = this.options;
|
||||
if (pattern === "**") {
|
||||
if (!options.noglobstar)
|
||||
return GLOBSTAR;
|
||||
return GLOBSTAR2;
|
||||
else
|
||||
pattern = "*";
|
||||
}
|
||||
@@ -19023,11 +19027,11 @@ var require_minimatch = __commonJS({
|
||||
if (stateChar) {
|
||||
switch (stateChar) {
|
||||
case "*":
|
||||
re += star;
|
||||
re += star3;
|
||||
hasMagic = true;
|
||||
break;
|
||||
case "?":
|
||||
re += qmark;
|
||||
re += qmark3;
|
||||
hasMagic = true;
|
||||
break;
|
||||
default:
|
||||
@@ -19040,7 +19044,7 @@ var require_minimatch = __commonJS({
|
||||
}
|
||||
for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) {
|
||||
this.debug("%s %s %s %j", pattern, i, re, c);
|
||||
if (escaping && reSpecials[c]) {
|
||||
if (escaping && reSpecials2[c]) {
|
||||
re += "\\" + c;
|
||||
escaping = false;
|
||||
continue;
|
||||
@@ -19152,7 +19156,7 @@ var require_minimatch = __commonJS({
|
||||
clearStateChar();
|
||||
if (escaping) {
|
||||
escaping = false;
|
||||
} else if (reSpecials[c] && !(c === "^" && inClass)) {
|
||||
} else if (reSpecials2[c] && !(c === "^" && inClass)) {
|
||||
re += "\\";
|
||||
}
|
||||
re += c;
|
||||
@@ -19174,7 +19178,7 @@ var require_minimatch = __commonJS({
|
||||
return $1 + $1 + $2 + "|";
|
||||
});
|
||||
this.debug("tail=%j\n %s", tail, tail, pl, re);
|
||||
var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type;
|
||||
var t = pl.type === "*" ? star3 : pl.type === "?" ? qmark3 : "\\" + pl.type;
|
||||
hasMagic = true;
|
||||
re = re.slice(0, pl.reStart) + t + "\\(" + tail;
|
||||
}
|
||||
@@ -19182,12 +19186,12 @@ var require_minimatch = __commonJS({
|
||||
if (escaping) {
|
||||
re += "\\\\";
|
||||
}
|
||||
var addPatternStart = false;
|
||||
var addPatternStart2 = false;
|
||||
switch (re.charAt(0)) {
|
||||
case "[":
|
||||
case ".":
|
||||
case "(":
|
||||
addPatternStart = true;
|
||||
addPatternStart2 = true;
|
||||
}
|
||||
for (var n = negativeLists.length - 1; n > -1; n--) {
|
||||
var nl = negativeLists[n];
|
||||
@@ -19212,7 +19216,7 @@ var require_minimatch = __commonJS({
|
||||
if (re !== "" && hasMagic) {
|
||||
re = "(?=.)" + re;
|
||||
}
|
||||
if (addPatternStart) {
|
||||
if (addPatternStart2) {
|
||||
re = patternStart + re;
|
||||
}
|
||||
if (isSub === SUBPARSE) {
|
||||
@@ -19231,11 +19235,11 @@ var require_minimatch = __commonJS({
|
||||
regExp._src = re;
|
||||
return regExp;
|
||||
}
|
||||
minimatch2.makeRe = function(pattern, options) {
|
||||
return new Minimatch2(pattern, options || {}).makeRe();
|
||||
minimatch3.makeRe = function(pattern, options) {
|
||||
return new Minimatch3(pattern, options || {}).makeRe();
|
||||
};
|
||||
Minimatch2.prototype.makeRe = makeRe;
|
||||
function makeRe() {
|
||||
Minimatch3.prototype.makeRe = makeRe2;
|
||||
function makeRe2() {
|
||||
if (this.regexp || this.regexp === false) return this.regexp;
|
||||
var set = this.set;
|
||||
if (!set.length) {
|
||||
@@ -19243,11 +19247,11 @@ var require_minimatch = __commonJS({
|
||||
return this.regexp;
|
||||
}
|
||||
var options = this.options;
|
||||
var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot;
|
||||
var twoStar = options.noglobstar ? star3 : options.dot ? twoStarDot2 : twoStarNoDot2;
|
||||
var flags = options.nocase ? "i" : "";
|
||||
var re = set.map(function(pattern) {
|
||||
return pattern.map(function(p) {
|
||||
return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src;
|
||||
return p === GLOBSTAR2 ? twoStar : typeof p === "string" ? regExpEscape3(p) : p._src;
|
||||
}).join("\\/");
|
||||
}).join("|");
|
||||
re = "^(?:" + re + ")$";
|
||||
@@ -19259,9 +19263,9 @@ var require_minimatch = __commonJS({
|
||||
}
|
||||
return this.regexp;
|
||||
}
|
||||
minimatch2.match = function(list, pattern, options) {
|
||||
minimatch3.match = function(list, pattern, options) {
|
||||
options = options || {};
|
||||
var mm = new Minimatch2(pattern, options);
|
||||
var mm = new Minimatch3(pattern, options);
|
||||
list = list.filter(function(f) {
|
||||
return mm.match(f);
|
||||
});
|
||||
@@ -19270,15 +19274,15 @@ var require_minimatch = __commonJS({
|
||||
}
|
||||
return list;
|
||||
};
|
||||
Minimatch2.prototype.match = function match2(f, partial) {
|
||||
Minimatch3.prototype.match = function match4(f, partial) {
|
||||
if (typeof partial === "undefined") partial = this.partial;
|
||||
this.debug("match", f, this.pattern);
|
||||
if (this.comment) return false;
|
||||
if (this.empty) return f === "";
|
||||
if (f === "/" && partial) return true;
|
||||
var options = this.options;
|
||||
if (path12.sep !== "/") {
|
||||
f = f.split(path12.sep).join("/");
|
||||
if (path13.sep !== "/") {
|
||||
f = f.split(path13.sep).join("/");
|
||||
}
|
||||
f = f.split(slashSplit);
|
||||
this.debug(this.pattern, "split", f);
|
||||
@@ -19305,7 +19309,7 @@ var require_minimatch = __commonJS({
|
||||
if (options.flipNegate) return false;
|
||||
return this.negate;
|
||||
};
|
||||
Minimatch2.prototype.matchOne = function(file, pattern, partial) {
|
||||
Minimatch3.prototype.matchOne = function(file, pattern, partial) {
|
||||
var options = this.options;
|
||||
this.debug(
|
||||
"matchOne",
|
||||
@@ -19318,7 +19322,7 @@ var require_minimatch = __commonJS({
|
||||
var f = file[fi];
|
||||
this.debug(pattern, p, f);
|
||||
if (p === false) return false;
|
||||
if (p === GLOBSTAR) {
|
||||
if (p === GLOBSTAR2) {
|
||||
this.debug("GLOBSTAR", [pattern, p, f]);
|
||||
var fr = fi;
|
||||
var pr = pi + 1;
|
||||
@@ -19372,7 +19376,7 @@ var require_minimatch = __commonJS({
|
||||
function globUnescape(s) {
|
||||
return s.replace(/\\(.)/g, "$1");
|
||||
}
|
||||
function regExpEscape(s) {
|
||||
function regExpEscape3(s) {
|
||||
return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||||
}
|
||||
}
|
||||
@@ -19414,9 +19418,9 @@ var require_constants6 = __commonJS({
|
||||
var require_debug = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/internal/debug.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
|
||||
var debug3 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
|
||||
};
|
||||
module2.exports = debug2;
|
||||
module2.exports = debug3;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -19429,7 +19433,7 @@ var require_re = __commonJS({
|
||||
MAX_SAFE_BUILD_LENGTH,
|
||||
MAX_LENGTH
|
||||
} = require_constants6();
|
||||
var debug2 = require_debug();
|
||||
var debug3 = require_debug();
|
||||
exports2 = module2.exports = {};
|
||||
var re = exports2.re = [];
|
||||
var safeRe = exports2.safeRe = [];
|
||||
@@ -19452,7 +19456,7 @@ var require_re = __commonJS({
|
||||
var createToken = (name, value, isGlobal) => {
|
||||
const safe = makeSafeRegex(value);
|
||||
const index = R++;
|
||||
debug2(name, index, value);
|
||||
debug3(name, index, value);
|
||||
t[name] = index;
|
||||
src[index] = value;
|
||||
safeSrc[index] = safe;
|
||||
@@ -19531,13 +19535,13 @@ var require_parse_options = __commonJS({
|
||||
var require_identifiers = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/internal/identifiers.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var numeric = /^[0-9]+$/;
|
||||
var numeric2 = /^[0-9]+$/;
|
||||
var compareIdentifiers = (a, b) => {
|
||||
if (typeof a === "number" && typeof b === "number") {
|
||||
return a === b ? 0 : a < b ? -1 : 1;
|
||||
}
|
||||
const anum = numeric.test(a);
|
||||
const bnum = numeric.test(b);
|
||||
const anum = numeric2.test(a);
|
||||
const bnum = numeric2.test(b);
|
||||
if (anum && bnum) {
|
||||
a = +a;
|
||||
b = +b;
|
||||
@@ -19556,7 +19560,7 @@ var require_identifiers = __commonJS({
|
||||
var require_semver = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/classes/semver.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var debug2 = require_debug();
|
||||
var debug3 = require_debug();
|
||||
var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants6();
|
||||
var { safeRe: re, t } = require_re();
|
||||
var parseOptions = require_parse_options();
|
||||
@@ -19578,7 +19582,7 @@ var require_semver = __commonJS({
|
||||
`version is longer than ${MAX_LENGTH} characters`
|
||||
);
|
||||
}
|
||||
debug2("SemVer", version3, options);
|
||||
debug3("SemVer", version3, options);
|
||||
this.options = options;
|
||||
this.loose = !!options.loose;
|
||||
this.includePrerelease = !!options.includePrerelease;
|
||||
@@ -19626,7 +19630,7 @@ var require_semver = __commonJS({
|
||||
return this.version;
|
||||
}
|
||||
compare(other) {
|
||||
debug2("SemVer.compare", this.version, this.options, other);
|
||||
debug3("SemVer.compare", this.version, this.options, other);
|
||||
if (!(other instanceof _SemVer)) {
|
||||
if (typeof other === "string" && other === this.version) {
|
||||
return 0;
|
||||
@@ -19677,7 +19681,7 @@ var require_semver = __commonJS({
|
||||
do {
|
||||
const a = this.prerelease[i];
|
||||
const b = other.prerelease[i];
|
||||
debug2("prerelease compare", i, a, b);
|
||||
debug3("prerelease compare", i, a, b);
|
||||
if (a === void 0 && b === void 0) {
|
||||
return 0;
|
||||
} else if (b === void 0) {
|
||||
@@ -19699,7 +19703,7 @@ var require_semver = __commonJS({
|
||||
do {
|
||||
const a = this.build[i];
|
||||
const b = other.build[i];
|
||||
debug2("build compare", i, a, b);
|
||||
debug3("build compare", i, a, b);
|
||||
if (a === void 0 && b === void 0) {
|
||||
return 0;
|
||||
} else if (b === void 0) {
|
||||
@@ -19721,8 +19725,8 @@ var require_semver = __commonJS({
|
||||
throw new Error("invalid increment argument: identifier is empty");
|
||||
}
|
||||
if (identifier) {
|
||||
const match2 = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);
|
||||
if (!match2 || match2[1] !== identifier) {
|
||||
const match4 = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);
|
||||
if (!match4 || match4[1] !== identifier) {
|
||||
throw new Error(`invalid identifier: ${identifier}`);
|
||||
}
|
||||
}
|
||||
@@ -19836,7 +19840,7 @@ var require_parse2 = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/parse.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var SemVer = require_semver();
|
||||
var parse3 = (version3, options, throwErrors = false) => {
|
||||
var parse4 = (version3, options, throwErrors = false) => {
|
||||
if (version3 instanceof SemVer) {
|
||||
return version3;
|
||||
}
|
||||
@@ -19849,7 +19853,7 @@ var require_parse2 = __commonJS({
|
||||
throw er;
|
||||
}
|
||||
};
|
||||
module2.exports = parse3;
|
||||
module2.exports = parse4;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -19857,12 +19861,12 @@ var require_parse2 = __commonJS({
|
||||
var require_valid = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/valid.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var parse3 = require_parse2();
|
||||
var valid = (version3, options) => {
|
||||
const v = parse3(version3, options);
|
||||
var parse4 = require_parse2();
|
||||
var valid2 = (version3, options) => {
|
||||
const v = parse4(version3, options);
|
||||
return v ? v.version : null;
|
||||
};
|
||||
module2.exports = valid;
|
||||
module2.exports = valid2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -19870,12 +19874,12 @@ var require_valid = __commonJS({
|
||||
var require_clean = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/clean.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var parse3 = require_parse2();
|
||||
var clean2 = (version3, options) => {
|
||||
const s = parse3(version3.trim().replace(/^[=v]+/, ""), options);
|
||||
var parse4 = require_parse2();
|
||||
var clean3 = (version3, options) => {
|
||||
const s = parse4(version3.trim().replace(/^[=v]+/, ""), options);
|
||||
return s ? s.version : null;
|
||||
};
|
||||
module2.exports = clean2;
|
||||
module2.exports = clean3;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -19884,7 +19888,7 @@ var require_inc = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/inc.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var SemVer = require_semver();
|
||||
var inc = (version3, release, options, identifier, identifierBase) => {
|
||||
var inc2 = (version3, release, options, identifier, identifierBase) => {
|
||||
if (typeof options === "string") {
|
||||
identifierBase = identifier;
|
||||
identifier = options;
|
||||
@@ -19899,7 +19903,7 @@ var require_inc = __commonJS({
|
||||
return null;
|
||||
}
|
||||
};
|
||||
module2.exports = inc;
|
||||
module2.exports = inc2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -19907,10 +19911,10 @@ var require_inc = __commonJS({
|
||||
var require_diff = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/diff.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var parse3 = require_parse2();
|
||||
var parse4 = require_parse2();
|
||||
var diff = (version1, version22) => {
|
||||
const v1 = parse3(version1, null, true);
|
||||
const v2 = parse3(version22, null, true);
|
||||
const v1 = parse4(version1, null, true);
|
||||
const v2 = parse4(version22, null, true);
|
||||
const comparison = v1.compare(v2);
|
||||
if (comparison === 0) {
|
||||
return null;
|
||||
@@ -19952,8 +19956,8 @@ var require_major = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/major.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var SemVer = require_semver();
|
||||
var major = (a, loose) => new SemVer(a, loose).major;
|
||||
module2.exports = major;
|
||||
var major2 = (a, loose) => new SemVer(a, loose).major;
|
||||
module2.exports = major2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -19962,8 +19966,8 @@ var require_minor = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/minor.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var SemVer = require_semver();
|
||||
var minor = (a, loose) => new SemVer(a, loose).minor;
|
||||
module2.exports = minor;
|
||||
var minor2 = (a, loose) => new SemVer(a, loose).minor;
|
||||
module2.exports = minor2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -19972,8 +19976,8 @@ var require_patch = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/patch.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var SemVer = require_semver();
|
||||
var patch = (a, loose) => new SemVer(a, loose).patch;
|
||||
module2.exports = patch;
|
||||
var patch2 = (a, loose) => new SemVer(a, loose).patch;
|
||||
module2.exports = patch2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -19981,9 +19985,9 @@ var require_patch = __commonJS({
|
||||
var require_prerelease = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/prerelease.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var parse3 = require_parse2();
|
||||
var parse4 = require_parse2();
|
||||
var prerelease = (version3, options) => {
|
||||
const parsed = parse3(version3, options);
|
||||
const parsed = parse4(version3, options);
|
||||
return parsed && parsed.prerelease.length ? parsed.prerelease : null;
|
||||
};
|
||||
module2.exports = prerelease;
|
||||
@@ -19995,8 +19999,8 @@ var require_compare = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/compare.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var SemVer = require_semver();
|
||||
var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
|
||||
module2.exports = compare;
|
||||
var compare2 = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
|
||||
module2.exports = compare2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20004,9 +20008,9 @@ var require_compare = __commonJS({
|
||||
var require_rcompare = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/rcompare.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var compare = require_compare();
|
||||
var rcompare = (a, b, loose) => compare(b, a, loose);
|
||||
module2.exports = rcompare;
|
||||
var compare2 = require_compare();
|
||||
var rcompare2 = (a, b, loose) => compare2(b, a, loose);
|
||||
module2.exports = rcompare2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20014,8 +20018,8 @@ var require_rcompare = __commonJS({
|
||||
var require_compare_loose = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/compare-loose.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var compare = require_compare();
|
||||
var compareLoose = (a, b) => compare(a, b, true);
|
||||
var compare2 = require_compare();
|
||||
var compareLoose = (a, b) => compare2(a, b, true);
|
||||
module2.exports = compareLoose;
|
||||
}
|
||||
});
|
||||
@@ -20058,9 +20062,9 @@ var require_rsort = __commonJS({
|
||||
var require_gt = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/gt.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var compare = require_compare();
|
||||
var gt = (a, b, loose) => compare(a, b, loose) > 0;
|
||||
module2.exports = gt;
|
||||
var compare2 = require_compare();
|
||||
var gt2 = (a, b, loose) => compare2(a, b, loose) > 0;
|
||||
module2.exports = gt2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20068,9 +20072,9 @@ var require_gt = __commonJS({
|
||||
var require_lt = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/lt.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var compare = require_compare();
|
||||
var lt = (a, b, loose) => compare(a, b, loose) < 0;
|
||||
module2.exports = lt;
|
||||
var compare2 = require_compare();
|
||||
var lt2 = (a, b, loose) => compare2(a, b, loose) < 0;
|
||||
module2.exports = lt2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20078,9 +20082,9 @@ var require_lt = __commonJS({
|
||||
var require_eq = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/eq.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var compare = require_compare();
|
||||
var eq = (a, b, loose) => compare(a, b, loose) === 0;
|
||||
module2.exports = eq;
|
||||
var compare2 = require_compare();
|
||||
var eq2 = (a, b, loose) => compare2(a, b, loose) === 0;
|
||||
module2.exports = eq2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20088,8 +20092,8 @@ var require_eq = __commonJS({
|
||||
var require_neq = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/neq.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var compare = require_compare();
|
||||
var neq = (a, b, loose) => compare(a, b, loose) !== 0;
|
||||
var compare2 = require_compare();
|
||||
var neq = (a, b, loose) => compare2(a, b, loose) !== 0;
|
||||
module2.exports = neq;
|
||||
}
|
||||
});
|
||||
@@ -20098,8 +20102,8 @@ var require_neq = __commonJS({
|
||||
var require_gte = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/gte.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var compare = require_compare();
|
||||
var gte2 = (a, b, loose) => compare(a, b, loose) >= 0;
|
||||
var compare2 = require_compare();
|
||||
var gte2 = (a, b, loose) => compare2(a, b, loose) >= 0;
|
||||
module2.exports = gte2;
|
||||
}
|
||||
});
|
||||
@@ -20108,9 +20112,9 @@ var require_gte = __commonJS({
|
||||
var require_lte = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/lte.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var compare = require_compare();
|
||||
var lte = (a, b, loose) => compare(a, b, loose) <= 0;
|
||||
module2.exports = lte;
|
||||
var compare2 = require_compare();
|
||||
var lte2 = (a, b, loose) => compare2(a, b, loose) <= 0;
|
||||
module2.exports = lte2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20118,12 +20122,12 @@ var require_lte = __commonJS({
|
||||
var require_cmp = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/cmp.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var eq = require_eq();
|
||||
var eq2 = require_eq();
|
||||
var neq = require_neq();
|
||||
var gt = require_gt();
|
||||
var gt2 = require_gt();
|
||||
var gte2 = require_gte();
|
||||
var lt = require_lt();
|
||||
var lte = require_lte();
|
||||
var lt2 = require_lt();
|
||||
var lte2 = require_lte();
|
||||
var cmp = (a, op, b, loose) => {
|
||||
switch (op) {
|
||||
case "===":
|
||||
@@ -20145,17 +20149,17 @@ var require_cmp = __commonJS({
|
||||
case "":
|
||||
case "=":
|
||||
case "==":
|
||||
return eq(a, b, loose);
|
||||
return eq2(a, b, loose);
|
||||
case "!=":
|
||||
return neq(a, b, loose);
|
||||
case ">":
|
||||
return gt(a, b, loose);
|
||||
return gt2(a, b, loose);
|
||||
case ">=":
|
||||
return gte2(a, b, loose);
|
||||
case "<":
|
||||
return lt(a, b, loose);
|
||||
return lt2(a, b, loose);
|
||||
case "<=":
|
||||
return lte(a, b, loose);
|
||||
return lte2(a, b, loose);
|
||||
default:
|
||||
throw new TypeError(`Invalid operator: ${op}`);
|
||||
}
|
||||
@@ -20169,7 +20173,7 @@ var require_coerce = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/coerce.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var SemVer = require_semver();
|
||||
var parse3 = require_parse2();
|
||||
var parse4 = require_parse2();
|
||||
var { safeRe: re, t } = require_re();
|
||||
var coerce = (version3, options) => {
|
||||
if (version3 instanceof SemVer) {
|
||||
@@ -20182,29 +20186,29 @@ var require_coerce = __commonJS({
|
||||
return null;
|
||||
}
|
||||
options = options || {};
|
||||
let match2 = null;
|
||||
let match4 = null;
|
||||
if (!options.rtl) {
|
||||
match2 = version3.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);
|
||||
match4 = version3.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);
|
||||
} else {
|
||||
const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL];
|
||||
let next;
|
||||
while ((next = coerceRtlRegex.exec(version3)) && (!match2 || match2.index + match2[0].length !== version3.length)) {
|
||||
if (!match2 || next.index + next[0].length !== match2.index + match2[0].length) {
|
||||
match2 = next;
|
||||
while ((next = coerceRtlRegex.exec(version3)) && (!match4 || match4.index + match4[0].length !== version3.length)) {
|
||||
if (!match4 || next.index + next[0].length !== match4.index + match4[0].length) {
|
||||
match4 = next;
|
||||
}
|
||||
coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length;
|
||||
}
|
||||
coerceRtlRegex.lastIndex = -1;
|
||||
}
|
||||
if (match2 === null) {
|
||||
if (match4 === null) {
|
||||
return null;
|
||||
}
|
||||
const major = match2[2];
|
||||
const minor = match2[3] || "0";
|
||||
const patch = match2[4] || "0";
|
||||
const prerelease = options.includePrerelease && match2[5] ? `-${match2[5]}` : "";
|
||||
const build = options.includePrerelease && match2[6] ? `+${match2[6]}` : "";
|
||||
return parse3(`${major}.${minor}.${patch}${prerelease}${build}`, options);
|
||||
const major2 = match4[2];
|
||||
const minor2 = match4[3] || "0";
|
||||
const patch2 = match4[4] || "0";
|
||||
const prerelease = options.includePrerelease && match4[5] ? `-${match4[5]}` : "";
|
||||
const build = options.includePrerelease && match4[6] ? `+${match4[6]}` : "";
|
||||
return parse4(`${major2}.${minor2}.${patch2}${prerelease}${build}`, options);
|
||||
};
|
||||
module2.exports = coerce;
|
||||
}
|
||||
@@ -20254,25 +20258,25 @@ var require_range = __commonJS({
|
||||
"use strict";
|
||||
var SPACE_CHARACTERS = /\s+/g;
|
||||
var Range = class _Range {
|
||||
constructor(range2, options) {
|
||||
constructor(range3, options) {
|
||||
options = parseOptions(options);
|
||||
if (range2 instanceof _Range) {
|
||||
if (range2.loose === !!options.loose && range2.includePrerelease === !!options.includePrerelease) {
|
||||
return range2;
|
||||
if (range3 instanceof _Range) {
|
||||
if (range3.loose === !!options.loose && range3.includePrerelease === !!options.includePrerelease) {
|
||||
return range3;
|
||||
} else {
|
||||
return new _Range(range2.raw, options);
|
||||
return new _Range(range3.raw, options);
|
||||
}
|
||||
}
|
||||
if (range2 instanceof Comparator) {
|
||||
this.raw = range2.value;
|
||||
this.set = [[range2]];
|
||||
if (range3 instanceof Comparator) {
|
||||
this.raw = range3.value;
|
||||
this.set = [[range3]];
|
||||
this.formatted = void 0;
|
||||
return this;
|
||||
}
|
||||
this.options = options;
|
||||
this.loose = !!options.loose;
|
||||
this.includePrerelease = !!options.includePrerelease;
|
||||
this.raw = range2.trim().replace(SPACE_CHARACTERS, " ");
|
||||
this.raw = range3.trim().replace(SPACE_CHARACTERS, " ");
|
||||
this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length);
|
||||
if (!this.set.length) {
|
||||
throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
|
||||
@@ -20317,31 +20321,31 @@ var require_range = __commonJS({
|
||||
toString() {
|
||||
return this.range;
|
||||
}
|
||||
parseRange(range2) {
|
||||
parseRange(range3) {
|
||||
const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
|
||||
const memoKey = memoOpts + ":" + range2;
|
||||
const memoKey = memoOpts + ":" + range3;
|
||||
const cached = cache.get(memoKey);
|
||||
if (cached) {
|
||||
return cached;
|
||||
}
|
||||
const loose = this.options.loose;
|
||||
const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
|
||||
range2 = range2.replace(hr, hyphenReplace(this.options.includePrerelease));
|
||||
debug2("hyphen replace", range2);
|
||||
range2 = range2.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
|
||||
debug2("comparator trim", range2);
|
||||
range2 = range2.replace(re[t.TILDETRIM], tildeTrimReplace);
|
||||
debug2("tilde trim", range2);
|
||||
range2 = range2.replace(re[t.CARETTRIM], caretTrimReplace);
|
||||
debug2("caret trim", range2);
|
||||
let rangeList = range2.split(" ").map((comp26) => parseComparator(comp26, this.options)).join(" ").split(/\s+/).map((comp26) => replaceGTE0(comp26, this.options));
|
||||
range3 = range3.replace(hr, hyphenReplace(this.options.includePrerelease));
|
||||
debug3("hyphen replace", range3);
|
||||
range3 = range3.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
|
||||
debug3("comparator trim", range3);
|
||||
range3 = range3.replace(re[t.TILDETRIM], tildeTrimReplace);
|
||||
debug3("tilde trim", range3);
|
||||
range3 = range3.replace(re[t.CARETTRIM], caretTrimReplace);
|
||||
debug3("caret trim", range3);
|
||||
let rangeList = range3.split(" ").map((comp26) => parseComparator(comp26, this.options)).join(" ").split(/\s+/).map((comp26) => replaceGTE0(comp26, this.options));
|
||||
if (loose) {
|
||||
rangeList = rangeList.filter((comp26) => {
|
||||
debug2("loose invalid filter", comp26, this.options);
|
||||
debug3("loose invalid filter", comp26, this.options);
|
||||
return !!comp26.match(re[t.COMPARATORLOOSE]);
|
||||
});
|
||||
}
|
||||
debug2("range list", rangeList);
|
||||
debug3("range list", rangeList);
|
||||
const rangeMap = /* @__PURE__ */ new Map();
|
||||
const comparators = rangeList.map((comp26) => new Comparator(comp26, this.options));
|
||||
for (const comp26 of comparators) {
|
||||
@@ -20357,12 +20361,12 @@ var require_range = __commonJS({
|
||||
cache.set(memoKey, result);
|
||||
return result;
|
||||
}
|
||||
intersects(range2, options) {
|
||||
if (!(range2 instanceof _Range)) {
|
||||
intersects(range3, options) {
|
||||
if (!(range3 instanceof _Range)) {
|
||||
throw new TypeError("a Range is required");
|
||||
}
|
||||
return this.set.some((thisComparators) => {
|
||||
return isSatisfiable(thisComparators, options) && range2.set.some((rangeComparators) => {
|
||||
return isSatisfiable(thisComparators, options) && range3.set.some((rangeComparators) => {
|
||||
return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {
|
||||
return rangeComparators.every((rangeComparator) => {
|
||||
return thisComparator.intersects(rangeComparator, options);
|
||||
@@ -20396,7 +20400,7 @@ var require_range = __commonJS({
|
||||
var cache = new LRU();
|
||||
var parseOptions = require_parse_options();
|
||||
var Comparator = require_comparator();
|
||||
var debug2 = require_debug();
|
||||
var debug3 = require_debug();
|
||||
var SemVer = require_semver();
|
||||
var {
|
||||
safeRe: re,
|
||||
@@ -20422,15 +20426,15 @@ var require_range = __commonJS({
|
||||
};
|
||||
var parseComparator = (comp26, options) => {
|
||||
comp26 = comp26.replace(re[t.BUILD], "");
|
||||
debug2("comp", comp26, options);
|
||||
debug3("comp", comp26, options);
|
||||
comp26 = replaceCarets(comp26, options);
|
||||
debug2("caret", comp26);
|
||||
debug3("caret", comp26);
|
||||
comp26 = replaceTildes(comp26, options);
|
||||
debug2("tildes", comp26);
|
||||
debug3("tildes", comp26);
|
||||
comp26 = replaceXRanges(comp26, options);
|
||||
debug2("xrange", comp26);
|
||||
debug3("xrange", comp26);
|
||||
comp26 = replaceStars(comp26, options);
|
||||
debug2("stars", comp26);
|
||||
debug3("stars", comp26);
|
||||
return comp26;
|
||||
};
|
||||
var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
|
||||
@@ -20440,7 +20444,7 @@ var require_range = __commonJS({
|
||||
var replaceTilde = (comp26, options) => {
|
||||
const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
|
||||
return comp26.replace(r, (_, M, m, p, pr) => {
|
||||
debug2("tilde", comp26, _, M, m, p, pr);
|
||||
debug3("tilde", comp26, _, M, m, p, pr);
|
||||
let ret;
|
||||
if (isX(M)) {
|
||||
ret = "";
|
||||
@@ -20449,12 +20453,12 @@ var require_range = __commonJS({
|
||||
} else if (isX(p)) {
|
||||
ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
|
||||
} else if (pr) {
|
||||
debug2("replaceTilde pr", pr);
|
||||
debug3("replaceTilde pr", pr);
|
||||
ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
|
||||
} else {
|
||||
ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
|
||||
}
|
||||
debug2("tilde return", ret);
|
||||
debug3("tilde return", ret);
|
||||
return ret;
|
||||
});
|
||||
};
|
||||
@@ -20462,11 +20466,11 @@ var require_range = __commonJS({
|
||||
return comp26.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
|
||||
};
|
||||
var replaceCaret = (comp26, options) => {
|
||||
debug2("caret", comp26, options);
|
||||
debug3("caret", comp26, options);
|
||||
const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
|
||||
const z = options.includePrerelease ? "-0" : "";
|
||||
return comp26.replace(r, (_, M, m, p, pr) => {
|
||||
debug2("caret", comp26, _, M, m, p, pr);
|
||||
debug3("caret", comp26, _, M, m, p, pr);
|
||||
let ret;
|
||||
if (isX(M)) {
|
||||
ret = "";
|
||||
@@ -20479,7 +20483,7 @@ var require_range = __commonJS({
|
||||
ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
|
||||
}
|
||||
} else if (pr) {
|
||||
debug2("replaceCaret pr", pr);
|
||||
debug3("replaceCaret pr", pr);
|
||||
if (M === "0") {
|
||||
if (m === "0") {
|
||||
ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
|
||||
@@ -20490,7 +20494,7 @@ var require_range = __commonJS({
|
||||
ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
|
||||
}
|
||||
} else {
|
||||
debug2("no pr");
|
||||
debug3("no pr");
|
||||
if (M === "0") {
|
||||
if (m === "0") {
|
||||
ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
|
||||
@@ -20501,19 +20505,19 @@ var require_range = __commonJS({
|
||||
ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
|
||||
}
|
||||
}
|
||||
debug2("caret return", ret);
|
||||
debug3("caret return", ret);
|
||||
return ret;
|
||||
});
|
||||
};
|
||||
var replaceXRanges = (comp26, options) => {
|
||||
debug2("replaceXRanges", comp26, options);
|
||||
debug3("replaceXRanges", comp26, options);
|
||||
return comp26.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
|
||||
};
|
||||
var replaceXRange = (comp26, options) => {
|
||||
comp26 = comp26.trim();
|
||||
const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
|
||||
return comp26.replace(r, (ret, gtlt, M, m, p, pr) => {
|
||||
debug2("xRange", comp26, ret, gtlt, M, m, p, pr);
|
||||
debug3("xRange", comp26, ret, gtlt, M, m, p, pr);
|
||||
const xM = isX(M);
|
||||
const xm = xM || isX(m);
|
||||
const xp = xm || isX(p);
|
||||
@@ -20560,16 +20564,16 @@ var require_range = __commonJS({
|
||||
} else if (xp) {
|
||||
ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
|
||||
}
|
||||
debug2("xRange return", ret);
|
||||
debug3("xRange return", ret);
|
||||
return ret;
|
||||
});
|
||||
};
|
||||
var replaceStars = (comp26, options) => {
|
||||
debug2("replaceStars", comp26, options);
|
||||
debug3("replaceStars", comp26, options);
|
||||
return comp26.trim().replace(re[t.STAR], "");
|
||||
};
|
||||
var replaceGTE0 = (comp26, options) => {
|
||||
debug2("replaceGTE0", comp26, options);
|
||||
debug3("replaceGTE0", comp26, options);
|
||||
return comp26.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
|
||||
};
|
||||
var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {
|
||||
@@ -20607,7 +20611,7 @@ var require_range = __commonJS({
|
||||
}
|
||||
if (version3.prerelease.length && !options.includePrerelease) {
|
||||
for (let i = 0; i < set.length; i++) {
|
||||
debug2(set[i].semver);
|
||||
debug3(set[i].semver);
|
||||
if (set[i].semver === Comparator.ANY) {
|
||||
continue;
|
||||
}
|
||||
@@ -20644,7 +20648,7 @@ var require_comparator = __commonJS({
|
||||
}
|
||||
}
|
||||
comp26 = comp26.trim().split(/\s+/).join(" ");
|
||||
debug2("comparator", comp26, options);
|
||||
debug3("comparator", comp26, options);
|
||||
this.options = options;
|
||||
this.loose = !!options.loose;
|
||||
this.parse(comp26);
|
||||
@@ -20653,7 +20657,7 @@ var require_comparator = __commonJS({
|
||||
} else {
|
||||
this.value = this.operator + this.semver.version;
|
||||
}
|
||||
debug2("comp", this);
|
||||
debug3("comp", this);
|
||||
}
|
||||
parse(comp26) {
|
||||
const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
|
||||
@@ -20675,7 +20679,7 @@ var require_comparator = __commonJS({
|
||||
return this.value;
|
||||
}
|
||||
test(version3) {
|
||||
debug2("Comparator.test", version3, this.options.loose);
|
||||
debug3("Comparator.test", version3, this.options.loose);
|
||||
if (this.semver === ANY || version3 === ANY) {
|
||||
return true;
|
||||
}
|
||||
@@ -20732,7 +20736,7 @@ var require_comparator = __commonJS({
|
||||
var parseOptions = require_parse_options();
|
||||
var { safeRe: re, t } = require_re();
|
||||
var cmp = require_cmp();
|
||||
var debug2 = require_debug();
|
||||
var debug3 = require_debug();
|
||||
var SemVer = require_semver();
|
||||
var Range = require_range();
|
||||
}
|
||||
@@ -20743,15 +20747,15 @@ var require_satisfies = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/functions/satisfies.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var Range = require_range();
|
||||
var satisfies = (version3, range2, options) => {
|
||||
var satisfies2 = (version3, range3, options) => {
|
||||
try {
|
||||
range2 = new Range(range2, options);
|
||||
range3 = new Range(range3, options);
|
||||
} catch (er) {
|
||||
return false;
|
||||
}
|
||||
return range2.test(version3);
|
||||
return range3.test(version3);
|
||||
};
|
||||
module2.exports = satisfies;
|
||||
module2.exports = satisfies2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20760,7 +20764,7 @@ var require_to_comparators = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/ranges/to-comparators.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var Range = require_range();
|
||||
var toComparators = (range2, options) => new Range(range2, options).set.map((comp26) => comp26.map((c) => c.value).join(" ").trim().split(" "));
|
||||
var toComparators = (range3, options) => new Range(range3, options).set.map((comp26) => comp26.map((c) => c.value).join(" ").trim().split(" "));
|
||||
module2.exports = toComparators;
|
||||
}
|
||||
});
|
||||
@@ -20771,12 +20775,12 @@ var require_max_satisfying = __commonJS({
|
||||
"use strict";
|
||||
var SemVer = require_semver();
|
||||
var Range = require_range();
|
||||
var maxSatisfying = (versions, range2, options) => {
|
||||
var maxSatisfying2 = (versions, range3, options) => {
|
||||
let max = null;
|
||||
let maxSV = null;
|
||||
let rangeObj = null;
|
||||
try {
|
||||
rangeObj = new Range(range2, options);
|
||||
rangeObj = new Range(range3, options);
|
||||
} catch (er) {
|
||||
return null;
|
||||
}
|
||||
@@ -20790,7 +20794,7 @@ var require_max_satisfying = __commonJS({
|
||||
});
|
||||
return max;
|
||||
};
|
||||
module2.exports = maxSatisfying;
|
||||
module2.exports = maxSatisfying2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20800,12 +20804,12 @@ var require_min_satisfying = __commonJS({
|
||||
"use strict";
|
||||
var SemVer = require_semver();
|
||||
var Range = require_range();
|
||||
var minSatisfying = (versions, range2, options) => {
|
||||
var minSatisfying2 = (versions, range3, options) => {
|
||||
let min = null;
|
||||
let minSV = null;
|
||||
let rangeObj = null;
|
||||
try {
|
||||
rangeObj = new Range(range2, options);
|
||||
rangeObj = new Range(range3, options);
|
||||
} catch (er) {
|
||||
return null;
|
||||
}
|
||||
@@ -20819,7 +20823,7 @@ var require_min_satisfying = __commonJS({
|
||||
});
|
||||
return min;
|
||||
};
|
||||
module2.exports = minSatisfying;
|
||||
module2.exports = minSatisfying2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20829,20 +20833,20 @@ var require_min_version = __commonJS({
|
||||
"use strict";
|
||||
var SemVer = require_semver();
|
||||
var Range = require_range();
|
||||
var gt = require_gt();
|
||||
var minVersion = (range2, loose) => {
|
||||
range2 = new Range(range2, loose);
|
||||
var gt2 = require_gt();
|
||||
var minVersion = (range3, loose) => {
|
||||
range3 = new Range(range3, loose);
|
||||
let minver = new SemVer("0.0.0");
|
||||
if (range2.test(minver)) {
|
||||
if (range3.test(minver)) {
|
||||
return minver;
|
||||
}
|
||||
minver = new SemVer("0.0.0-0");
|
||||
if (range2.test(minver)) {
|
||||
if (range3.test(minver)) {
|
||||
return minver;
|
||||
}
|
||||
minver = null;
|
||||
for (let i = 0; i < range2.set.length; ++i) {
|
||||
const comparators = range2.set[i];
|
||||
for (let i = 0; i < range3.set.length; ++i) {
|
||||
const comparators = range3.set[i];
|
||||
let setMin = null;
|
||||
comparators.forEach((comparator) => {
|
||||
const compver = new SemVer(comparator.semver.version);
|
||||
@@ -20857,7 +20861,7 @@ var require_min_version = __commonJS({
|
||||
/* fallthrough */
|
||||
case "":
|
||||
case ">=":
|
||||
if (!setMin || gt(compver, setMin)) {
|
||||
if (!setMin || gt2(compver, setMin)) {
|
||||
setMin = compver;
|
||||
}
|
||||
break;
|
||||
@@ -20869,11 +20873,11 @@ var require_min_version = __commonJS({
|
||||
throw new Error(`Unexpected operation: ${comparator.operator}`);
|
||||
}
|
||||
});
|
||||
if (setMin && (!minver || gt(minver, setMin))) {
|
||||
if (setMin && (!minver || gt2(minver, setMin))) {
|
||||
minver = setMin;
|
||||
}
|
||||
}
|
||||
if (minver && range2.test(minver)) {
|
||||
if (minver && range3.test(minver)) {
|
||||
return minver;
|
||||
}
|
||||
return null;
|
||||
@@ -20887,14 +20891,14 @@ var require_valid2 = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/ranges/valid.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var Range = require_range();
|
||||
var validRange = (range2, options) => {
|
||||
var validRange2 = (range3, options) => {
|
||||
try {
|
||||
return new Range(range2, options).range || "*";
|
||||
return new Range(range3, options).range || "*";
|
||||
} catch (er) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
module2.exports = validRange;
|
||||
module2.exports = validRange2;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20906,38 +20910,38 @@ var require_outside = __commonJS({
|
||||
var Comparator = require_comparator();
|
||||
var { ANY } = Comparator;
|
||||
var Range = require_range();
|
||||
var satisfies = require_satisfies();
|
||||
var gt = require_gt();
|
||||
var lt = require_lt();
|
||||
var lte = require_lte();
|
||||
var satisfies2 = require_satisfies();
|
||||
var gt2 = require_gt();
|
||||
var lt2 = require_lt();
|
||||
var lte2 = require_lte();
|
||||
var gte2 = require_gte();
|
||||
var outside = (version3, range2, hilo, options) => {
|
||||
var outside = (version3, range3, hilo, options) => {
|
||||
version3 = new SemVer(version3, options);
|
||||
range2 = new Range(range2, options);
|
||||
range3 = new Range(range3, options);
|
||||
let gtfn, ltefn, ltfn, comp26, ecomp;
|
||||
switch (hilo) {
|
||||
case ">":
|
||||
gtfn = gt;
|
||||
ltefn = lte;
|
||||
ltfn = lt;
|
||||
gtfn = gt2;
|
||||
ltefn = lte2;
|
||||
ltfn = lt2;
|
||||
comp26 = ">";
|
||||
ecomp = ">=";
|
||||
break;
|
||||
case "<":
|
||||
gtfn = lt;
|
||||
gtfn = lt2;
|
||||
ltefn = gte2;
|
||||
ltfn = gt;
|
||||
ltfn = gt2;
|
||||
comp26 = "<";
|
||||
ecomp = "<=";
|
||||
break;
|
||||
default:
|
||||
throw new TypeError('Must provide a hilo val of "<" or ">"');
|
||||
}
|
||||
if (satisfies(version3, range2, options)) {
|
||||
if (satisfies2(version3, range3, options)) {
|
||||
return false;
|
||||
}
|
||||
for (let i = 0; i < range2.set.length; ++i) {
|
||||
const comparators = range2.set[i];
|
||||
for (let i = 0; i < range3.set.length; ++i) {
|
||||
const comparators = range3.set[i];
|
||||
let high = null;
|
||||
let low = null;
|
||||
comparators.forEach((comparator) => {
|
||||
@@ -20972,7 +20976,7 @@ var require_gtr = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/ranges/gtr.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var outside = require_outside();
|
||||
var gtr = (version3, range2, options) => outside(version3, range2, ">", options);
|
||||
var gtr = (version3, range3, options) => outside(version3, range3, ">", options);
|
||||
module2.exports = gtr;
|
||||
}
|
||||
});
|
||||
@@ -20982,7 +20986,7 @@ var require_ltr = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/ranges/ltr.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var outside = require_outside();
|
||||
var ltr = (version3, range2, options) => outside(version3, range2, "<", options);
|
||||
var ltr = (version3, range3, options) => outside(version3, range3, "<", options);
|
||||
module2.exports = ltr;
|
||||
}
|
||||
});
|
||||
@@ -21005,15 +21009,15 @@ var require_intersects = __commonJS({
|
||||
var require_simplify = __commonJS({
|
||||
"node_modules/@actions/cache/node_modules/semver/ranges/simplify.js"(exports2, module2) {
|
||||
"use strict";
|
||||
var satisfies = require_satisfies();
|
||||
var compare = require_compare();
|
||||
module2.exports = (versions, range2, options) => {
|
||||
var satisfies2 = require_satisfies();
|
||||
var compare2 = require_compare();
|
||||
module2.exports = (versions, range3, options) => {
|
||||
const set = [];
|
||||
let first = null;
|
||||
let prev = null;
|
||||
const v = versions.sort((a, b) => compare(a, b, options));
|
||||
const v = versions.sort((a, b) => compare2(a, b, options));
|
||||
for (const version3 of v) {
|
||||
const included = satisfies(version3, range2, options);
|
||||
const included = satisfies2(version3, range3, options);
|
||||
if (included) {
|
||||
prev = version3;
|
||||
if (!first) {
|
||||
@@ -21045,8 +21049,8 @@ var require_simplify = __commonJS({
|
||||
}
|
||||
}
|
||||
const simplified = ranges.join(" || ");
|
||||
const original = typeof range2.raw === "string" ? range2.raw : String(range2);
|
||||
return simplified.length < original.length ? simplified : range2;
|
||||
const original = typeof range3.raw === "string" ? range3.raw : String(range3);
|
||||
return simplified.length < original.length ? simplified : range3;
|
||||
};
|
||||
}
|
||||
});
|
||||
@@ -21058,8 +21062,8 @@ var require_subset = __commonJS({
|
||||
var Range = require_range();
|
||||
var Comparator = require_comparator();
|
||||
var { ANY } = Comparator;
|
||||
var satisfies = require_satisfies();
|
||||
var compare = require_compare();
|
||||
var satisfies2 = require_satisfies();
|
||||
var compare2 = require_compare();
|
||||
var subset = (sub, dom, options = {}) => {
|
||||
if (sub === dom) {
|
||||
return true;
|
||||
@@ -21104,12 +21108,12 @@ var require_subset = __commonJS({
|
||||
}
|
||||
}
|
||||
const eqSet = /* @__PURE__ */ new Set();
|
||||
let gt, lt;
|
||||
let gt2, lt2;
|
||||
for (const c of sub) {
|
||||
if (c.operator === ">" || c.operator === ">=") {
|
||||
gt = higherGT(gt, c, options);
|
||||
gt2 = higherGT(gt2, c, options);
|
||||
} else if (c.operator === "<" || c.operator === "<=") {
|
||||
lt = lowerLT(lt, c, options);
|
||||
lt2 = lowerLT(lt2, c, options);
|
||||
} else {
|
||||
eqSet.add(c.semver);
|
||||
}
|
||||
@@ -21118,23 +21122,23 @@ var require_subset = __commonJS({
|
||||
return null;
|
||||
}
|
||||
let gtltComp;
|
||||
if (gt && lt) {
|
||||
gtltComp = compare(gt.semver, lt.semver, options);
|
||||
if (gt2 && lt2) {
|
||||
gtltComp = compare2(gt2.semver, lt2.semver, options);
|
||||
if (gtltComp > 0) {
|
||||
return null;
|
||||
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
|
||||
} else if (gtltComp === 0 && (gt2.operator !== ">=" || lt2.operator !== "<=")) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
for (const eq of eqSet) {
|
||||
if (gt && !satisfies(eq, String(gt), options)) {
|
||||
for (const eq2 of eqSet) {
|
||||
if (gt2 && !satisfies2(eq2, String(gt2), options)) {
|
||||
return null;
|
||||
}
|
||||
if (lt && !satisfies(eq, String(lt), options)) {
|
||||
if (lt2 && !satisfies2(eq2, String(lt2), options)) {
|
||||
return null;
|
||||
}
|
||||
for (const c of dom) {
|
||||
if (!satisfies(eq, String(c), options)) {
|
||||
if (!satisfies2(eq2, String(c), options)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -21142,52 +21146,52 @@ var require_subset = __commonJS({
|
||||
}
|
||||
let higher, lower;
|
||||
let hasDomLT, hasDomGT;
|
||||
let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
|
||||
let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
|
||||
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
|
||||
let needDomLTPre = lt2 && !options.includePrerelease && lt2.semver.prerelease.length ? lt2.semver : false;
|
||||
let needDomGTPre = gt2 && !options.includePrerelease && gt2.semver.prerelease.length ? gt2.semver : false;
|
||||
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt2.operator === "<" && needDomLTPre.prerelease[0] === 0) {
|
||||
needDomLTPre = false;
|
||||
}
|
||||
for (const c of dom) {
|
||||
hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">=";
|
||||
hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<=";
|
||||
if (gt) {
|
||||
if (gt2) {
|
||||
if (needDomGTPre) {
|
||||
if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) {
|
||||
needDomGTPre = false;
|
||||
}
|
||||
}
|
||||
if (c.operator === ">" || c.operator === ">=") {
|
||||
higher = higherGT(gt, c, options);
|
||||
if (higher === c && higher !== gt) {
|
||||
higher = higherGT(gt2, c, options);
|
||||
if (higher === c && higher !== gt2) {
|
||||
return false;
|
||||
}
|
||||
} else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options)) {
|
||||
} else if (gt2.operator === ">=" && !satisfies2(gt2.semver, String(c), options)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (lt) {
|
||||
if (lt2) {
|
||||
if (needDomLTPre) {
|
||||
if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
|
||||
needDomLTPre = false;
|
||||
}
|
||||
}
|
||||
if (c.operator === "<" || c.operator === "<=") {
|
||||
lower = lowerLT(lt, c, options);
|
||||
if (lower === c && lower !== lt) {
|
||||
lower = lowerLT(lt2, c, options);
|
||||
if (lower === c && lower !== lt2) {
|
||||
return false;
|
||||
}
|
||||
} else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options)) {
|
||||
} else if (lt2.operator === "<=" && !satisfies2(lt2.semver, String(c), options)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (!c.operator && (lt || gt) && gtltComp !== 0) {
|
||||
if (!c.operator && (lt2 || gt2) && gtltComp !== 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (gt && hasDomLT && !lt && gtltComp !== 0) {
|
||||
if (gt2 && hasDomLT && !lt2 && gtltComp !== 0) {
|
||||
return false;
|
||||
}
|
||||
if (lt && hasDomGT && !gt && gtltComp !== 0) {
|
||||
if (lt2 && hasDomGT && !gt2 && gtltComp !== 0) {
|
||||
return false;
|
||||
}
|
||||
if (needDomGTPre || needDomLTPre) {
|
||||
@@ -21199,14 +21203,14 @@ var require_subset = __commonJS({
|
||||
if (!a) {
|
||||
return b;
|
||||
}
|
||||
const comp26 = compare(a.semver, b.semver, options);
|
||||
const comp26 = compare2(a.semver, b.semver, options);
|
||||
return comp26 > 0 ? a : comp26 < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a;
|
||||
};
|
||||
var lowerLT = (a, b, options) => {
|
||||
if (!a) {
|
||||
return b;
|
||||
}
|
||||
const comp26 = compare(a.semver, b.semver, options);
|
||||
const comp26 = compare2(a.semver, b.semver, options);
|
||||
return comp26 < 0 ? a : comp26 > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a;
|
||||
};
|
||||
module2.exports = subset;
|
||||
@@ -21221,37 +21225,37 @@ var require_semver2 = __commonJS({
|
||||
var constants3 = require_constants6();
|
||||
var SemVer = require_semver();
|
||||
var identifiers = require_identifiers();
|
||||
var parse3 = require_parse2();
|
||||
var valid = require_valid();
|
||||
var clean2 = require_clean();
|
||||
var inc = require_inc();
|
||||
var parse4 = require_parse2();
|
||||
var valid2 = require_valid();
|
||||
var clean3 = require_clean();
|
||||
var inc2 = require_inc();
|
||||
var diff = require_diff();
|
||||
var major = require_major();
|
||||
var minor = require_minor();
|
||||
var patch = require_patch();
|
||||
var major2 = require_major();
|
||||
var minor2 = require_minor();
|
||||
var patch2 = require_patch();
|
||||
var prerelease = require_prerelease();
|
||||
var compare = require_compare();
|
||||
var rcompare = require_rcompare();
|
||||
var compare2 = require_compare();
|
||||
var rcompare2 = require_rcompare();
|
||||
var compareLoose = require_compare_loose();
|
||||
var compareBuild = require_compare_build();
|
||||
var sort = require_sort();
|
||||
var rsort = require_rsort();
|
||||
var gt = require_gt();
|
||||
var lt = require_lt();
|
||||
var eq = require_eq();
|
||||
var gt2 = require_gt();
|
||||
var lt2 = require_lt();
|
||||
var eq2 = require_eq();
|
||||
var neq = require_neq();
|
||||
var gte2 = require_gte();
|
||||
var lte = require_lte();
|
||||
var lte2 = require_lte();
|
||||
var cmp = require_cmp();
|
||||
var coerce = require_coerce();
|
||||
var Comparator = require_comparator();
|
||||
var Range = require_range();
|
||||
var satisfies = require_satisfies();
|
||||
var satisfies2 = require_satisfies();
|
||||
var toComparators = require_to_comparators();
|
||||
var maxSatisfying = require_max_satisfying();
|
||||
var minSatisfying = require_min_satisfying();
|
||||
var maxSatisfying2 = require_max_satisfying();
|
||||
var minSatisfying2 = require_min_satisfying();
|
||||
var minVersion = require_min_version();
|
||||
var validRange = require_valid2();
|
||||
var validRange2 = require_valid2();
|
||||
var outside = require_outside();
|
||||
var gtr = require_gtr();
|
||||
var ltr = require_ltr();
|
||||
@@ -21259,37 +21263,37 @@ var require_semver2 = __commonJS({
|
||||
var simplifyRange = require_simplify();
|
||||
var subset = require_subset();
|
||||
module2.exports = {
|
||||
parse: parse3,
|
||||
valid,
|
||||
clean: clean2,
|
||||
inc,
|
||||
parse: parse4,
|
||||
valid: valid2,
|
||||
clean: clean3,
|
||||
inc: inc2,
|
||||
diff,
|
||||
major,
|
||||
minor,
|
||||
patch,
|
||||
major: major2,
|
||||
minor: minor2,
|
||||
patch: patch2,
|
||||
prerelease,
|
||||
compare,
|
||||
rcompare,
|
||||
compare: compare2,
|
||||
rcompare: rcompare2,
|
||||
compareLoose,
|
||||
compareBuild,
|
||||
sort,
|
||||
rsort,
|
||||
gt,
|
||||
lt,
|
||||
eq,
|
||||
gt: gt2,
|
||||
lt: lt2,
|
||||
eq: eq2,
|
||||
neq,
|
||||
gte: gte2,
|
||||
lte,
|
||||
lte: lte2,
|
||||
cmp,
|
||||
coerce,
|
||||
Comparator,
|
||||
Range,
|
||||
satisfies,
|
||||
satisfies: satisfies2,
|
||||
toComparators,
|
||||
maxSatisfying,
|
||||
minSatisfying,
|
||||
maxSatisfying: maxSatisfying2,
|
||||
minSatisfying: minSatisfying2,
|
||||
minVersion,
|
||||
validRange,
|
||||
validRange: validRange2,
|
||||
outside,
|
||||
gtr,
|
||||
ltr,
|
||||
@@ -21321,7 +21325,7 @@ var require_ms = __commonJS({
|
||||
options = options || {};
|
||||
var type = typeof val;
|
||||
if (type === "string" && val.length > 0) {
|
||||
return parse3(val);
|
||||
return parse4(val);
|
||||
} else if (type === "number" && isFinite(val)) {
|
||||
return options.long ? fmtLong(val) : fmtShort(val);
|
||||
}
|
||||
@@ -21329,19 +21333,19 @@ var require_ms = __commonJS({
|
||||
"val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
|
||||
);
|
||||
};
|
||||
function parse3(str) {
|
||||
function parse4(str) {
|
||||
str = String(str);
|
||||
if (str.length > 100) {
|
||||
return;
|
||||
}
|
||||
var match2 = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
|
||||
var match4 = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
|
||||
str
|
||||
);
|
||||
if (!match2) {
|
||||
if (!match4) {
|
||||
return;
|
||||
}
|
||||
var n = parseFloat(match2[1]);
|
||||
var type = (match2[2] || "ms").toLowerCase();
|
||||
var n = parseFloat(match4[1]);
|
||||
var type = (match4[2] || "ms").toLowerCase();
|
||||
switch (type) {
|
||||
case "years":
|
||||
case "year":
|
||||
@@ -21456,11 +21460,11 @@ var require_common = __commonJS({
|
||||
let enableOverride = null;
|
||||
let namespacesCache;
|
||||
let enabledCache;
|
||||
function debug2(...args) {
|
||||
if (!debug2.enabled) {
|
||||
function debug3(...args) {
|
||||
if (!debug3.enabled) {
|
||||
return;
|
||||
}
|
||||
const self2 = debug2;
|
||||
const self2 = debug3;
|
||||
const curr = Number(/* @__PURE__ */ new Date());
|
||||
const ms = curr - (prevTime || curr);
|
||||
self2.diff = ms;
|
||||
@@ -21472,30 +21476,30 @@ var require_common = __commonJS({
|
||||
args.unshift("%O");
|
||||
}
|
||||
let index = 0;
|
||||
args[0] = args[0].replace(/%([a-zA-Z%])/g, (match2, format) => {
|
||||
if (match2 === "%%") {
|
||||
args[0] = args[0].replace(/%([a-zA-Z%])/g, (match4, format) => {
|
||||
if (match4 === "%%") {
|
||||
return "%";
|
||||
}
|
||||
index++;
|
||||
const formatter = createDebug.formatters[format];
|
||||
if (typeof formatter === "function") {
|
||||
const val = args[index];
|
||||
match2 = formatter.call(self2, val);
|
||||
match4 = formatter.call(self2, val);
|
||||
args.splice(index, 1);
|
||||
index--;
|
||||
}
|
||||
return match2;
|
||||
return match4;
|
||||
});
|
||||
createDebug.formatArgs.call(self2, args);
|
||||
const logFn = self2.log || createDebug.log;
|
||||
logFn.apply(self2, args);
|
||||
}
|
||||
debug2.namespace = namespace;
|
||||
debug2.useColors = createDebug.useColors();
|
||||
debug2.color = createDebug.selectColor(namespace);
|
||||
debug2.extend = extend2;
|
||||
debug2.destroy = createDebug.destroy;
|
||||
Object.defineProperty(debug2, "enabled", {
|
||||
debug3.namespace = namespace;
|
||||
debug3.useColors = createDebug.useColors();
|
||||
debug3.color = createDebug.selectColor(namespace);
|
||||
debug3.extend = extend2;
|
||||
debug3.destroy = createDebug.destroy;
|
||||
Object.defineProperty(debug3, "enabled", {
|
||||
enumerable: true,
|
||||
configurable: false,
|
||||
get: () => {
|
||||
@@ -21513,9 +21517,9 @@ var require_common = __commonJS({
|
||||
}
|
||||
});
|
||||
if (typeof createDebug.init === "function") {
|
||||
createDebug.init(debug2);
|
||||
createDebug.init(debug3);
|
||||
}
|
||||
return debug2;
|
||||
return debug3;
|
||||
}
|
||||
function extend2(namespace, delimiter3) {
|
||||
const newDebug = createDebug(this.namespace + (typeof delimiter3 === "undefined" ? ":" : delimiter3) + namespace);
|
||||
@@ -21704,12 +21708,12 @@ var require_browser = __commonJS({
|
||||
args.splice(1, 0, c, "color: inherit");
|
||||
let index = 0;
|
||||
let lastC = 0;
|
||||
args[0].replace(/%[a-zA-Z%]/g, (match2) => {
|
||||
if (match2 === "%%") {
|
||||
args[0].replace(/%[a-zA-Z%]/g, (match4) => {
|
||||
if (match4 === "%%") {
|
||||
return;
|
||||
}
|
||||
index++;
|
||||
if (match2 === "%c") {
|
||||
if (match4 === "%c") {
|
||||
lastC = index;
|
||||
}
|
||||
});
|
||||
@@ -22025,11 +22029,11 @@ var require_node = __commonJS({
|
||||
function load() {
|
||||
return process.env.DEBUG;
|
||||
}
|
||||
function init(debug2) {
|
||||
debug2.inspectOpts = {};
|
||||
function init(debug3) {
|
||||
debug3.inspectOpts = {};
|
||||
const keys = Object.keys(exports2.inspectOpts);
|
||||
for (let i = 0; i < keys.length; i++) {
|
||||
debug2.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]];
|
||||
debug3.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]];
|
||||
}
|
||||
}
|
||||
module2.exports = require_common()(exports2);
|
||||
@@ -22292,7 +22296,7 @@ var require_parse_proxy_response = __commonJS({
|
||||
Object.defineProperty(exports2, "__esModule", { value: true });
|
||||
exports2.parseProxyResponse = void 0;
|
||||
var debug_1 = __importDefault(require_src());
|
||||
var debug2 = (0, debug_1.default)("https-proxy-agent:parse-proxy-response");
|
||||
var debug3 = (0, debug_1.default)("https-proxy-agent:parse-proxy-response");
|
||||
function parseProxyResponse(socket) {
|
||||
return new Promise((resolve2, reject) => {
|
||||
let buffersLength = 0;
|
||||
@@ -22311,12 +22315,12 @@ var require_parse_proxy_response = __commonJS({
|
||||
}
|
||||
function onend() {
|
||||
cleanup();
|
||||
debug2("onend");
|
||||
debug3("onend");
|
||||
reject(new Error("Proxy connection ended before receiving CONNECT response"));
|
||||
}
|
||||
function onerror(err) {
|
||||
cleanup();
|
||||
debug2("onerror %o", err);
|
||||
debug3("onerror %o", err);
|
||||
reject(err);
|
||||
}
|
||||
function ondata(b) {
|
||||
@@ -22325,7 +22329,7 @@ var require_parse_proxy_response = __commonJS({
|
||||
const buffered = Buffer.concat(buffers, buffersLength);
|
||||
const endOfHeaders = buffered.indexOf("\r\n\r\n");
|
||||
if (endOfHeaders === -1) {
|
||||
debug2("have not received end of HTTP headers yet...");
|
||||
debug3("have not received end of HTTP headers yet...");
|
||||
read();
|
||||
return;
|
||||
}
|
||||
@@ -22358,7 +22362,7 @@ var require_parse_proxy_response = __commonJS({
|
||||
headers[key] = value;
|
||||
}
|
||||
}
|
||||
debug2("got proxy server response: %o %o", firstLine, headers);
|
||||
debug3("got proxy server response: %o %o", firstLine, headers);
|
||||
cleanup();
|
||||
resolve2({
|
||||
connect: {
|
||||
@@ -22421,7 +22425,7 @@ var require_dist2 = __commonJS({
|
||||
var agent_base_1 = require_dist();
|
||||
var url_1 = require("url");
|
||||
var parse_proxy_response_1 = require_parse_proxy_response();
|
||||
var debug2 = (0, debug_1.default)("https-proxy-agent");
|
||||
var debug3 = (0, debug_1.default)("https-proxy-agent");
|
||||
var setServernameFromNonIpHost = (options) => {
|
||||
if (options.servername === void 0 && options.host && !net.isIP(options.host)) {
|
||||
return {
|
||||
@@ -22437,7 +22441,7 @@ var require_dist2 = __commonJS({
|
||||
this.options = { path: void 0 };
|
||||
this.proxy = typeof proxy === "string" ? new url_1.URL(proxy) : proxy;
|
||||
this.proxyHeaders = opts?.headers ?? {};
|
||||
debug2("Creating new HttpsProxyAgent instance: %o", this.proxy.href);
|
||||
debug3("Creating new HttpsProxyAgent instance: %o", this.proxy.href);
|
||||
const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, "");
|
||||
const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80;
|
||||
this.connectOpts = {
|
||||
@@ -22459,10 +22463,10 @@ var require_dist2 = __commonJS({
|
||||
}
|
||||
let socket;
|
||||
if (proxy.protocol === "https:") {
|
||||
debug2("Creating `tls.Socket`: %o", this.connectOpts);
|
||||
debug3("Creating `tls.Socket`: %o", this.connectOpts);
|
||||
socket = tls.connect(setServernameFromNonIpHost(this.connectOpts));
|
||||
} else {
|
||||
debug2("Creating `net.Socket`: %o", this.connectOpts);
|
||||
debug3("Creating `net.Socket`: %o", this.connectOpts);
|
||||
socket = net.connect(this.connectOpts);
|
||||
}
|
||||
const headers = typeof this.proxyHeaders === "function" ? this.proxyHeaders() : { ...this.proxyHeaders };
|
||||
@@ -22490,7 +22494,7 @@ var require_dist2 = __commonJS({
|
||||
if (connect.statusCode === 200) {
|
||||
req.once("socket", resume);
|
||||
if (opts.secureEndpoint) {
|
||||
debug2("Upgrading socket connection to TLS");
|
||||
debug3("Upgrading socket connection to TLS");
|
||||
return tls.connect({
|
||||
...omit(setServernameFromNonIpHost(opts), "host", "path", "port"),
|
||||
socket
|
||||
@@ -22502,7 +22506,7 @@ var require_dist2 = __commonJS({
|
||||
const fakeSocket = new net.Socket({ writable: false });
|
||||
fakeSocket.readable = true;
|
||||
req.once("socket", (s) => {
|
||||
debug2("Replaying proxy buffer for failed request");
|
||||
debug3("Replaying proxy buffer for failed request");
|
||||
(0, assert_1.default)(s.listenerCount("data") > 0);
|
||||
s.push(buffered);
|
||||
s.push(null);
|
||||
@@ -22570,13 +22574,13 @@ var require_dist3 = __commonJS({
|
||||
var events_1 = require("events");
|
||||
var agent_base_1 = require_dist();
|
||||
var url_1 = require("url");
|
||||
var debug2 = (0, debug_1.default)("http-proxy-agent");
|
||||
var debug3 = (0, debug_1.default)("http-proxy-agent");
|
||||
var HttpProxyAgent2 = class extends agent_base_1.Agent {
|
||||
constructor(proxy, opts) {
|
||||
super(opts);
|
||||
this.proxy = typeof proxy === "string" ? new url_1.URL(proxy) : proxy;
|
||||
this.proxyHeaders = opts?.headers ?? {};
|
||||
debug2("Creating new HttpProxyAgent instance: %o", this.proxy.href);
|
||||
debug3("Creating new HttpProxyAgent instance: %o", this.proxy.href);
|
||||
const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, "");
|
||||
const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80;
|
||||
this.connectOpts = {
|
||||
@@ -22622,21 +22626,21 @@ var require_dist3 = __commonJS({
|
||||
}
|
||||
let first;
|
||||
let endOfHeaders;
|
||||
debug2("Regenerating stored HTTP header string for request");
|
||||
debug3("Regenerating stored HTTP header string for request");
|
||||
req._implicitHeader();
|
||||
if (req.outputData && req.outputData.length > 0) {
|
||||
debug2("Patching connection write() output buffer with updated header");
|
||||
debug3("Patching connection write() output buffer with updated header");
|
||||
first = req.outputData[0].data;
|
||||
endOfHeaders = first.indexOf("\r\n\r\n") + 4;
|
||||
req.outputData[0].data = req._header + first.substring(endOfHeaders);
|
||||
debug2("Output buffer: %o", req.outputData[0].data);
|
||||
debug3("Output buffer: %o", req.outputData[0].data);
|
||||
}
|
||||
let socket;
|
||||
if (this.proxy.protocol === "https:") {
|
||||
debug2("Creating `tls.Socket`: %o", this.connectOpts);
|
||||
debug3("Creating `tls.Socket`: %o", this.connectOpts);
|
||||
socket = tls.connect(this.connectOpts);
|
||||
} else {
|
||||
debug2("Creating `net.Socket`: %o", this.connectOpts);
|
||||
debug3("Creating `net.Socket`: %o", this.connectOpts);
|
||||
socket = net.connect(this.connectOpts);
|
||||
}
|
||||
await (0, events_1.once)(socket, "connect");
|
||||
@@ -22687,7 +22691,7 @@ var require_package = __commonJS({
|
||||
"node_modules/@actions/cache/package.json"(exports2, module2) {
|
||||
module2.exports = {
|
||||
name: "@actions/cache",
|
||||
version: "6.0.0",
|
||||
version: "6.2.0",
|
||||
description: "Actions cache lib",
|
||||
keywords: [
|
||||
"github",
|
||||
@@ -22730,21 +22734,21 @@ var require_package = __commonJS({
|
||||
url: "https://github.com/actions/toolkit/issues"
|
||||
},
|
||||
dependencies: {
|
||||
"@actions/core": "^3.0.0",
|
||||
"@actions/core": "^3.0.1",
|
||||
"@actions/exec": "^3.0.0",
|
||||
"@actions/glob": "^0.6.1",
|
||||
"@actions/http-client": "^4.0.0",
|
||||
"@actions/io": "^3.0.0",
|
||||
"@azure/core-rest-pipeline": "^1.22.0",
|
||||
"@azure/storage-blob": "^12.30.0",
|
||||
"@actions/http-client": "^4.0.1",
|
||||
"@actions/io": "^3.0.2",
|
||||
"@azure/core-rest-pipeline": "^1.23.0",
|
||||
"@azure/storage-blob": "^12.31.0",
|
||||
"@protobuf-ts/runtime-rpc": "^2.11.1",
|
||||
semver: "^7.7.3"
|
||||
semver: "^7.7.4"
|
||||
},
|
||||
devDependencies: {
|
||||
"@protobuf-ts/plugin": "^2.9.4",
|
||||
"@types/node": "^25.1.0",
|
||||
"@protobuf-ts/plugin": "^2.11.1",
|
||||
"@types/node": "^25.6.0",
|
||||
"@types/semver": "^7.7.1",
|
||||
typescript: "^5.2.2"
|
||||
typescript: "^5.9.3"
|
||||
},
|
||||
overrides: {
|
||||
"uri-js": "npm:uri-js-replace@^1.0.1",
|
||||
@@ -23840,9 +23844,9 @@ var require_json_format_contract = __commonJS({
|
||||
}
|
||||
exports2.jsonWriteOptions = jsonWriteOptions;
|
||||
function mergeJsonOptions(a, b) {
|
||||
var _a, _b;
|
||||
var _a2, _b;
|
||||
let c = Object.assign(Object.assign({}, a), b);
|
||||
c.typeRegistry = [...(_a = a === null || a === void 0 ? void 0 : a.typeRegistry) !== null && _a !== void 0 ? _a : [], ...(_b = b === null || b === void 0 ? void 0 : b.typeRegistry) !== null && _b !== void 0 ? _b : []];
|
||||
c.typeRegistry = [...(_a2 = a === null || a === void 0 ? void 0 : a.typeRegistry) !== null && _a2 !== void 0 ? _a2 : [], ...(_b = b === null || b === void 0 ? void 0 : b.typeRegistry) !== null && _b !== void 0 ? _b : []];
|
||||
return c;
|
||||
}
|
||||
exports2.mergeJsonOptions = mergeJsonOptions;
|
||||
@@ -23928,8 +23932,8 @@ var require_reflection_info = __commonJS({
|
||||
RepeatType2[RepeatType2["UNPACKED"] = 2] = "UNPACKED";
|
||||
})(RepeatType = exports2.RepeatType || (exports2.RepeatType = {}));
|
||||
function normalizeFieldInfo(field) {
|
||||
var _a, _b, _c, _d;
|
||||
field.localName = (_a = field.localName) !== null && _a !== void 0 ? _a : lower_camel_case_1.lowerCamelCase(field.name);
|
||||
var _a2, _b, _c, _d;
|
||||
field.localName = (_a2 = field.localName) !== null && _a2 !== void 0 ? _a2 : lower_camel_case_1.lowerCamelCase(field.name);
|
||||
field.jsonName = (_b = field.jsonName) !== null && _b !== void 0 ? _b : lower_camel_case_1.lowerCamelCase(field.name);
|
||||
field.repeat = (_c = field.repeat) !== null && _c !== void 0 ? _c : RepeatType.NO;
|
||||
field.opt = (_d = field.opt) !== null && _d !== void 0 ? _d : field.repeat ? false : field.oneof ? false : field.kind == "message";
|
||||
@@ -23937,14 +23941,14 @@ var require_reflection_info = __commonJS({
|
||||
}
|
||||
exports2.normalizeFieldInfo = normalizeFieldInfo;
|
||||
function readFieldOptions(messageType, fieldName, extensionName, extensionType) {
|
||||
var _a;
|
||||
const options = (_a = messageType.fields.find((m, i) => m.localName == fieldName || i == fieldName)) === null || _a === void 0 ? void 0 : _a.options;
|
||||
var _a2;
|
||||
const options = (_a2 = messageType.fields.find((m, i) => m.localName == fieldName || i == fieldName)) === null || _a2 === void 0 ? void 0 : _a2.options;
|
||||
return options && options[extensionName] ? extensionType.fromJson(options[extensionName]) : void 0;
|
||||
}
|
||||
exports2.readFieldOptions = readFieldOptions;
|
||||
function readFieldOption(messageType, fieldName, extensionName, extensionType) {
|
||||
var _a;
|
||||
const options = (_a = messageType.fields.find((m, i) => m.localName == fieldName || i == fieldName)) === null || _a === void 0 ? void 0 : _a.options;
|
||||
var _a2;
|
||||
const options = (_a2 = messageType.fields.find((m, i) => m.localName == fieldName || i == fieldName)) === null || _a2 === void 0 ? void 0 : _a2.options;
|
||||
if (!options) {
|
||||
return void 0;
|
||||
}
|
||||
@@ -24039,9 +24043,9 @@ var require_reflection_type_check = __commonJS({
|
||||
var reflection_info_1 = require_reflection_info();
|
||||
var oneof_1 = require_oneof();
|
||||
var ReflectionTypeCheck = class {
|
||||
constructor(info2) {
|
||||
var _a;
|
||||
this.fields = (_a = info2.fields) !== null && _a !== void 0 ? _a : [];
|
||||
constructor(info3) {
|
||||
var _a2;
|
||||
this.fields = (_a2 = info3.fields) !== null && _a2 !== void 0 ? _a2 : [];
|
||||
}
|
||||
prepare() {
|
||||
if (this.data)
|
||||
@@ -24287,14 +24291,14 @@ var require_reflection_json_reader = __commonJS({
|
||||
var assert_1 = require_assert();
|
||||
var reflection_long_convert_1 = require_reflection_long_convert();
|
||||
var ReflectionJsonReader = class {
|
||||
constructor(info2) {
|
||||
this.info = info2;
|
||||
constructor(info3) {
|
||||
this.info = info3;
|
||||
}
|
||||
prepare() {
|
||||
var _a;
|
||||
var _a2;
|
||||
if (this.fMap === void 0) {
|
||||
this.fMap = {};
|
||||
const fieldsInput = (_a = this.info.fields) !== null && _a !== void 0 ? _a : [];
|
||||
const fieldsInput = (_a2 = this.info.fields) !== null && _a2 !== void 0 ? _a2 : [];
|
||||
for (const field of fieldsInput) {
|
||||
this.fMap[field.name] = field;
|
||||
this.fMap[field.jsonName] = field;
|
||||
@@ -24584,9 +24588,9 @@ var require_reflection_json_writer = __commonJS({
|
||||
var reflection_info_1 = require_reflection_info();
|
||||
var assert_1 = require_assert();
|
||||
var ReflectionJsonWriter = class {
|
||||
constructor(info2) {
|
||||
var _a;
|
||||
this.fields = (_a = info2.fields) !== null && _a !== void 0 ? _a : [];
|
||||
constructor(info3) {
|
||||
var _a2;
|
||||
this.fields = (_a2 = info3.fields) !== null && _a2 !== void 0 ? _a2 : [];
|
||||
}
|
||||
/**
|
||||
* Converts the message to a JSON object, based on the field descriptors.
|
||||
@@ -24839,13 +24843,13 @@ var require_reflection_binary_reader = __commonJS({
|
||||
var reflection_long_convert_1 = require_reflection_long_convert();
|
||||
var reflection_scalar_default_1 = require_reflection_scalar_default();
|
||||
var ReflectionBinaryReader = class {
|
||||
constructor(info2) {
|
||||
this.info = info2;
|
||||
constructor(info3) {
|
||||
this.info = info3;
|
||||
}
|
||||
prepare() {
|
||||
var _a;
|
||||
var _a2;
|
||||
if (!this.fieldNoToField) {
|
||||
const fieldsInput = (_a = this.info.fields) !== null && _a !== void 0 ? _a : [];
|
||||
const fieldsInput = (_a2 = this.info.fields) !== null && _a2 !== void 0 ? _a2 : [];
|
||||
this.fieldNoToField = new Map(fieldsInput.map((field) => [field.no, field]));
|
||||
}
|
||||
}
|
||||
@@ -25013,8 +25017,8 @@ var require_reflection_binary_writer = __commonJS({
|
||||
var assert_1 = require_assert();
|
||||
var pb_long_1 = require_pb_long();
|
||||
var ReflectionBinaryWriter = class {
|
||||
constructor(info2) {
|
||||
this.info = info2;
|
||||
constructor(info3) {
|
||||
this.info = info3;
|
||||
}
|
||||
prepare() {
|
||||
if (!this.fields) {
|
||||
@@ -25264,9 +25268,9 @@ var require_reflection_merge_partial = __commonJS({
|
||||
"use strict";
|
||||
Object.defineProperty(exports2, "__esModule", { value: true });
|
||||
exports2.reflectionMergePartial = void 0;
|
||||
function reflectionMergePartial4(info2, target, source) {
|
||||
function reflectionMergePartial4(info3, target, source) {
|
||||
let fieldValue, input = source, output;
|
||||
for (let field of info2.fields) {
|
||||
for (let field of info3.fields) {
|
||||
let name = field.localName;
|
||||
if (field.oneof) {
|
||||
const group = input[field.oneof];
|
||||
@@ -25335,12 +25339,12 @@ var require_reflection_equals = __commonJS({
|
||||
Object.defineProperty(exports2, "__esModule", { value: true });
|
||||
exports2.reflectionEquals = void 0;
|
||||
var reflection_info_1 = require_reflection_info();
|
||||
function reflectionEquals(info2, a, b) {
|
||||
function reflectionEquals(info3, a, b) {
|
||||
if (a === b)
|
||||
return true;
|
||||
if (!a || !b)
|
||||
return false;
|
||||
for (let field of info2.fields) {
|
||||
for (let field of info3.fields) {
|
||||
let localName = field.localName;
|
||||
let val_a = field.oneof ? a[field.oneof][localName] : a[localName];
|
||||
let val_b = field.oneof ? b[field.oneof][localName] : b[localName];
|
||||
@@ -25513,9 +25517,9 @@ var require_message_type = __commonJS({
|
||||
* This is equivalent to `JSON.stringify(T.toJson(t))`
|
||||
*/
|
||||
toJsonString(message, options) {
|
||||
var _a;
|
||||
var _a2;
|
||||
let value = this.toJson(message, options);
|
||||
return JSON.stringify(value, null, (_a = options === null || options === void 0 ? void 0 : options.prettySpaces) !== null && _a !== void 0 ? _a : 0);
|
||||
return JSON.stringify(value, null, (_a2 = options === null || options === void 0 ? void 0 : options.prettySpaces) !== null && _a2 !== void 0 ? _a2 : 0);
|
||||
}
|
||||
/**
|
||||
* Write the message to binary format.
|
||||
@@ -25841,10 +25845,10 @@ var require_reflection_info2 = __commonJS({
|
||||
exports2.readServiceOption = exports2.readMethodOption = exports2.readMethodOptions = exports2.normalizeMethodInfo = void 0;
|
||||
var runtime_1 = require_commonjs();
|
||||
function normalizeMethodInfo(method, service) {
|
||||
var _a, _b, _c;
|
||||
var _a2, _b, _c;
|
||||
let m = method;
|
||||
m.service = service;
|
||||
m.localName = (_a = m.localName) !== null && _a !== void 0 ? _a : runtime_1.lowerCamelCase(m.name);
|
||||
m.localName = (_a2 = m.localName) !== null && _a2 !== void 0 ? _a2 : runtime_1.lowerCamelCase(m.name);
|
||||
m.serverStreaming = !!m.serverStreaming;
|
||||
m.clientStreaming = !!m.clientStreaming;
|
||||
m.options = (_b = m.options) !== null && _b !== void 0 ? _b : {};
|
||||
@@ -25853,14 +25857,14 @@ var require_reflection_info2 = __commonJS({
|
||||
}
|
||||
exports2.normalizeMethodInfo = normalizeMethodInfo;
|
||||
function readMethodOptions(service, methodName, extensionName, extensionType) {
|
||||
var _a;
|
||||
const options = (_a = service.methods.find((m, i) => m.localName === methodName || i === methodName)) === null || _a === void 0 ? void 0 : _a.options;
|
||||
var _a2;
|
||||
const options = (_a2 = service.methods.find((m, i) => m.localName === methodName || i === methodName)) === null || _a2 === void 0 ? void 0 : _a2.options;
|
||||
return options && options[extensionName] ? extensionType.fromJson(options[extensionName]) : void 0;
|
||||
}
|
||||
exports2.readMethodOptions = readMethodOptions;
|
||||
function readMethodOption(service, methodName, extensionName, extensionType) {
|
||||
var _a;
|
||||
const options = (_a = service.methods.find((m, i) => m.localName === methodName || i === methodName)) === null || _a === void 0 ? void 0 : _a.options;
|
||||
var _a2;
|
||||
const options = (_a2 = service.methods.find((m, i) => m.localName === methodName || i === methodName)) === null || _a2 === void 0 ? void 0 : _a2.options;
|
||||
if (!options) {
|
||||
return void 0;
|
||||
}
|
||||
@@ -25949,28 +25953,28 @@ var require_rpc_options = __commonJS({
|
||||
Object.defineProperty(exports2, "__esModule", { value: true });
|
||||
exports2.mergeRpcOptions = void 0;
|
||||
var runtime_1 = require_commonjs();
|
||||
function mergeRpcOptions(defaults, options) {
|
||||
function mergeRpcOptions(defaults2, options) {
|
||||
if (!options)
|
||||
return defaults;
|
||||
return defaults2;
|
||||
let o = {};
|
||||
copy(defaults, o);
|
||||
copy(defaults2, o);
|
||||
copy(options, o);
|
||||
for (let key of Object.keys(options)) {
|
||||
let val = options[key];
|
||||
switch (key) {
|
||||
case "jsonOptions":
|
||||
o.jsonOptions = runtime_1.mergeJsonOptions(defaults.jsonOptions, o.jsonOptions);
|
||||
o.jsonOptions = runtime_1.mergeJsonOptions(defaults2.jsonOptions, o.jsonOptions);
|
||||
break;
|
||||
case "binaryOptions":
|
||||
o.binaryOptions = runtime_1.mergeBinaryOptions(defaults.binaryOptions, o.binaryOptions);
|
||||
o.binaryOptions = runtime_1.mergeBinaryOptions(defaults2.binaryOptions, o.binaryOptions);
|
||||
break;
|
||||
case "meta":
|
||||
o.meta = {};
|
||||
copy(defaults.meta, o.meta);
|
||||
copy(defaults2.meta, o.meta);
|
||||
copy(options.meta, o.meta);
|
||||
break;
|
||||
case "interceptors":
|
||||
o.interceptors = defaults.interceptors ? defaults.interceptors.concat(val) : val.concat();
|
||||
o.interceptors = defaults2.interceptors ? defaults2.interceptors.concat(val) : val.concat();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -26583,8 +26587,8 @@ var require_test_transport = __commonJS({
|
||||
}
|
||||
// Creates a promise for response headers from the mock data.
|
||||
promiseHeaders() {
|
||||
var _a;
|
||||
const headers = (_a = this.data.headers) !== null && _a !== void 0 ? _a : _TestTransport.defaultHeaders;
|
||||
var _a2;
|
||||
const headers = (_a2 = this.data.headers) !== null && _a2 !== void 0 ? _a2 : _TestTransport.defaultHeaders;
|
||||
return headers instanceof rpc_error_1.RpcError ? Promise.reject(headers) : Promise.resolve(headers);
|
||||
}
|
||||
// Creates a promise for a single, valid, message from the mock data.
|
||||
@@ -26659,14 +26663,14 @@ var require_test_transport = __commonJS({
|
||||
}
|
||||
// Creates a promise for response status from the mock data.
|
||||
promiseStatus() {
|
||||
var _a;
|
||||
const status = (_a = this.data.status) !== null && _a !== void 0 ? _a : _TestTransport.defaultStatus;
|
||||
var _a2;
|
||||
const status = (_a2 = this.data.status) !== null && _a2 !== void 0 ? _a2 : _TestTransport.defaultStatus;
|
||||
return status instanceof rpc_error_1.RpcError ? Promise.reject(status) : Promise.resolve(status);
|
||||
}
|
||||
// Creates a promise for response trailers from the mock data.
|
||||
promiseTrailers() {
|
||||
var _a;
|
||||
const trailers = (_a = this.data.trailers) !== null && _a !== void 0 ? _a : _TestTransport.defaultTrailers;
|
||||
var _a2;
|
||||
const trailers = (_a2 = this.data.trailers) !== null && _a2 !== void 0 ? _a2 : _TestTransport.defaultTrailers;
|
||||
return trailers instanceof rpc_error_1.RpcError ? Promise.reject(trailers) : Promise.resolve(trailers);
|
||||
}
|
||||
maybeSuppressUncaught(...promise) {
|
||||
@@ -26681,8 +26685,8 @@ var require_test_transport = __commonJS({
|
||||
return rpc_options_1.mergeRpcOptions({}, options);
|
||||
}
|
||||
unary(method, input, options) {
|
||||
var _a;
|
||||
const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders().then(delay4(this.headerDelay, options.abort)), responsePromise = headersPromise.catch((_) => {
|
||||
var _a2;
|
||||
const requestHeaders = (_a2 = options.meta) !== null && _a2 !== void 0 ? _a2 : {}, headersPromise = this.promiseHeaders().then(delay4(this.headerDelay, options.abort)), responsePromise = headersPromise.catch((_) => {
|
||||
}).then(delay4(this.responseDelay, options.abort)).then((_) => this.promiseSingleResponse(method)), statusPromise = responsePromise.catch((_) => {
|
||||
}).then(delay4(this.afterResponseDelay, options.abort)).then((_) => this.promiseStatus()), trailersPromise = responsePromise.catch((_) => {
|
||||
}).then(delay4(this.afterResponseDelay, options.abort)).then((_) => this.promiseTrailers());
|
||||
@@ -26691,16 +26695,16 @@ var require_test_transport = __commonJS({
|
||||
return new unary_call_1.UnaryCall(method, requestHeaders, input, headersPromise, responsePromise, statusPromise, trailersPromise);
|
||||
}
|
||||
serverStreaming(method, input, options) {
|
||||
var _a;
|
||||
const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders().then(delay4(this.headerDelay, options.abort)), outputStream = new rpc_output_stream_1.RpcOutputStreamController(), responseStreamClosedPromise = headersPromise.then(delay4(this.responseDelay, options.abort)).catch(() => {
|
||||
var _a2;
|
||||
const requestHeaders = (_a2 = options.meta) !== null && _a2 !== void 0 ? _a2 : {}, headersPromise = this.promiseHeaders().then(delay4(this.headerDelay, options.abort)), outputStream = new rpc_output_stream_1.RpcOutputStreamController(), responseStreamClosedPromise = headersPromise.then(delay4(this.responseDelay, options.abort)).catch(() => {
|
||||
}).then(() => this.streamResponses(method, outputStream, options.abort)).then(delay4(this.afterResponseDelay, options.abort)), statusPromise = responseStreamClosedPromise.then(() => this.promiseStatus()), trailersPromise = responseStreamClosedPromise.then(() => this.promiseTrailers());
|
||||
this.maybeSuppressUncaught(statusPromise, trailersPromise);
|
||||
this.lastInput = { single: input };
|
||||
return new server_streaming_call_1.ServerStreamingCall(method, requestHeaders, input, headersPromise, outputStream, statusPromise, trailersPromise);
|
||||
}
|
||||
clientStreaming(method, options) {
|
||||
var _a;
|
||||
const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders().then(delay4(this.headerDelay, options.abort)), responsePromise = headersPromise.catch((_) => {
|
||||
var _a2;
|
||||
const requestHeaders = (_a2 = options.meta) !== null && _a2 !== void 0 ? _a2 : {}, headersPromise = this.promiseHeaders().then(delay4(this.headerDelay, options.abort)), responsePromise = headersPromise.catch((_) => {
|
||||
}).then(delay4(this.responseDelay, options.abort)).then((_) => this.promiseSingleResponse(method)), statusPromise = responsePromise.catch((_) => {
|
||||
}).then(delay4(this.afterResponseDelay, options.abort)).then((_) => this.promiseStatus()), trailersPromise = responsePromise.catch((_) => {
|
||||
}).then(delay4(this.afterResponseDelay, options.abort)).then((_) => this.promiseTrailers());
|
||||
@@ -26709,8 +26713,8 @@ var require_test_transport = __commonJS({
|
||||
return new client_streaming_call_1.ClientStreamingCall(method, requestHeaders, this.lastInput, headersPromise, responsePromise, statusPromise, trailersPromise);
|
||||
}
|
||||
duplex(method, options) {
|
||||
var _a;
|
||||
const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders().then(delay4(this.headerDelay, options.abort)), outputStream = new rpc_output_stream_1.RpcOutputStreamController(), responseStreamClosedPromise = headersPromise.then(delay4(this.responseDelay, options.abort)).catch(() => {
|
||||
var _a2;
|
||||
const requestHeaders = (_a2 = options.meta) !== null && _a2 !== void 0 ? _a2 : {}, headersPromise = this.promiseHeaders().then(delay4(this.headerDelay, options.abort)), outputStream = new rpc_output_stream_1.RpcOutputStreamController(), responseStreamClosedPromise = headersPromise.then(delay4(this.responseDelay, options.abort)).catch(() => {
|
||||
}).then(() => this.streamResponses(method, outputStream, options.abort)).then(delay4(this.afterResponseDelay, options.abort)), statusPromise = responseStreamClosedPromise.then(() => this.promiseStatus()), trailersPromise = responseStreamClosedPromise.then(() => this.promiseTrailers());
|
||||
this.maybeSuppressUncaught(statusPromise, trailersPromise);
|
||||
this.lastInput = new TestInputStream(this.data, options.abort);
|
||||
@@ -26786,10 +26790,10 @@ var require_rpc_interceptor = __commonJS({
|
||||
exports2.stackDuplexStreamingInterceptors = exports2.stackClientStreamingInterceptors = exports2.stackServerStreamingInterceptors = exports2.stackUnaryInterceptors = exports2.stackIntercept = void 0;
|
||||
var runtime_1 = require_commonjs();
|
||||
function stackIntercept(kind, transport, method, options, input) {
|
||||
var _a, _b, _c, _d;
|
||||
var _a2, _b, _c, _d;
|
||||
if (kind == "unary") {
|
||||
let tail = (mtd, inp, opt) => transport.unary(mtd, inp, opt);
|
||||
for (const curr of ((_a = options.interceptors) !== null && _a !== void 0 ? _a : []).filter((i) => i.interceptUnary).reverse()) {
|
||||
for (const curr of ((_a2 = options.interceptors) !== null && _a2 !== void 0 ? _a2 : []).filter((i) => i.interceptUnary).reverse()) {
|
||||
const next = tail;
|
||||
tail = (mtd, inp, opt) => curr.interceptUnary(next, mtd, inp, opt);
|
||||
}
|
||||
@@ -26988,661 +26992,13 @@ var require_commonjs2 = __commonJS({
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/@renovatebot/pep440/lib/version.js
|
||||
var require_version = __commonJS({
|
||||
"node_modules/@renovatebot/pep440/lib/version.js"(exports2, module2) {
|
||||
var VERSION_PATTERN = [
|
||||
"v?",
|
||||
"(?:",
|
||||
/* */
|
||||
"(?:(?<epoch>[0-9]+)!)?",
|
||||
// epoch
|
||||
/* */
|
||||
"(?<release>[0-9]+(?:\\.[0-9]+)*)",
|
||||
// release segment
|
||||
/* */
|
||||
"(?<pre>",
|
||||
// pre-release
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<pre_l>(a|b|c|rc|alpha|beta|pre|preview))",
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<pre_n>[0-9]+)?",
|
||||
/* */
|
||||
")?",
|
||||
/* */
|
||||
"(?<post>",
|
||||
// post release
|
||||
/* */
|
||||
"(?:-(?<post_n1>[0-9]+))",
|
||||
/* */
|
||||
"|",
|
||||
/* */
|
||||
"(?:",
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<post_l>post|rev|r)",
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<post_n2>[0-9]+)?",
|
||||
/* */
|
||||
")",
|
||||
/* */
|
||||
")?",
|
||||
/* */
|
||||
"(?<dev>",
|
||||
// dev release
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<dev_l>dev)",
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<dev_n>[0-9]+)?",
|
||||
/* */
|
||||
")?",
|
||||
")",
|
||||
"(?:\\+(?<local>[a-z0-9]+(?:[-_\\.][a-z0-9]+)*))?"
|
||||
// local version
|
||||
].join("");
|
||||
module2.exports = {
|
||||
VERSION_PATTERN,
|
||||
valid,
|
||||
clean: clean2,
|
||||
explain,
|
||||
parse: parse3,
|
||||
stringify: stringify2
|
||||
};
|
||||
var validRegex = new RegExp("^" + VERSION_PATTERN + "$", "i");
|
||||
function valid(version3) {
|
||||
return validRegex.test(version3) ? version3 : null;
|
||||
}
|
||||
var cleanRegex = new RegExp("^\\s*" + VERSION_PATTERN + "\\s*$", "i");
|
||||
function clean2(version3) {
|
||||
return stringify2(parse3(version3, cleanRegex));
|
||||
}
|
||||
function parse3(version3, regex) {
|
||||
const { groups } = (regex || validRegex).exec(version3) || {};
|
||||
if (!groups) {
|
||||
return null;
|
||||
}
|
||||
const parsed = {
|
||||
epoch: Number(groups.epoch ? groups.epoch : 0),
|
||||
release: groups.release.split(".").map(Number),
|
||||
pre: normalize_letter_version(groups.pre_l, groups.pre_n),
|
||||
post: normalize_letter_version(
|
||||
groups.post_l,
|
||||
groups.post_n1 || groups.post_n2
|
||||
),
|
||||
dev: normalize_letter_version(groups.dev_l, groups.dev_n),
|
||||
local: parse_local_version(groups.local)
|
||||
};
|
||||
return parsed;
|
||||
}
|
||||
function stringify2(parsed) {
|
||||
if (!parsed) {
|
||||
return null;
|
||||
}
|
||||
const { epoch, release, pre, post, dev, local } = parsed;
|
||||
const parts = [];
|
||||
if (epoch !== 0) {
|
||||
parts.push(`${epoch}!`);
|
||||
}
|
||||
parts.push(release.join("."));
|
||||
if (pre) {
|
||||
parts.push(pre.join(""));
|
||||
}
|
||||
if (post) {
|
||||
parts.push("." + post.join(""));
|
||||
}
|
||||
if (dev) {
|
||||
parts.push("." + dev.join(""));
|
||||
}
|
||||
if (local) {
|
||||
parts.push(`+${local}`);
|
||||
}
|
||||
return parts.join("");
|
||||
}
|
||||
function normalize_letter_version(letterIn, numberIn) {
|
||||
let letter = letterIn;
|
||||
let number = numberIn;
|
||||
if (letter) {
|
||||
if (!number) {
|
||||
number = 0;
|
||||
}
|
||||
letter = letter.toLowerCase();
|
||||
if (letter === "alpha") {
|
||||
letter = "a";
|
||||
} else if (letter === "beta") {
|
||||
letter = "b";
|
||||
} else if (["c", "pre", "preview"].includes(letter)) {
|
||||
letter = "rc";
|
||||
} else if (["rev", "r"].includes(letter)) {
|
||||
letter = "post";
|
||||
}
|
||||
return [letter, Number(number)];
|
||||
}
|
||||
if (!letter && number) {
|
||||
letter = "post";
|
||||
return [letter, Number(number)];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
function parse_local_version(local) {
|
||||
if (local) {
|
||||
return local.split(/[._-]/).map(
|
||||
(part) => Number.isNaN(Number(part)) ? part.toLowerCase() : Number(part)
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
function explain(version3) {
|
||||
const parsed = parse3(version3);
|
||||
if (!parsed) {
|
||||
return parsed;
|
||||
}
|
||||
const { epoch, release, pre, post, dev, local } = parsed;
|
||||
let base_version = "";
|
||||
if (epoch !== 0) {
|
||||
base_version += epoch + "!";
|
||||
}
|
||||
base_version += release.join(".");
|
||||
const is_prerelease = Boolean(dev || pre);
|
||||
const is_devrelease = Boolean(dev);
|
||||
const is_postrelease = Boolean(post);
|
||||
return {
|
||||
epoch,
|
||||
release,
|
||||
pre,
|
||||
post: post ? post[1] : post,
|
||||
dev: dev ? dev[1] : dev,
|
||||
local: local ? local.join(".") : local,
|
||||
public: stringify2(parsed).split("+", 1)[0],
|
||||
base_version,
|
||||
is_prerelease,
|
||||
is_devrelease,
|
||||
is_postrelease
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/@renovatebot/pep440/lib/operator.js
|
||||
var require_operator = __commonJS({
|
||||
"node_modules/@renovatebot/pep440/lib/operator.js"(exports2, module2) {
|
||||
var { parse: parse3 } = require_version();
|
||||
module2.exports = {
|
||||
compare,
|
||||
rcompare,
|
||||
lt,
|
||||
le,
|
||||
eq,
|
||||
ne,
|
||||
ge,
|
||||
gt,
|
||||
"<": lt,
|
||||
"<=": le,
|
||||
"==": eq,
|
||||
"!=": ne,
|
||||
">=": ge,
|
||||
">": gt,
|
||||
"===": arbitrary
|
||||
};
|
||||
function lt(version3, other) {
|
||||
return compare(version3, other) < 0;
|
||||
}
|
||||
function le(version3, other) {
|
||||
return compare(version3, other) <= 0;
|
||||
}
|
||||
function eq(version3, other) {
|
||||
return compare(version3, other) === 0;
|
||||
}
|
||||
function ne(version3, other) {
|
||||
return compare(version3, other) !== 0;
|
||||
}
|
||||
function ge(version3, other) {
|
||||
return compare(version3, other) >= 0;
|
||||
}
|
||||
function gt(version3, other) {
|
||||
return compare(version3, other) > 0;
|
||||
}
|
||||
function arbitrary(version3, other) {
|
||||
return version3.toLowerCase() === other.toLowerCase();
|
||||
}
|
||||
function compare(version3, other) {
|
||||
const parsedVersion = parse3(version3);
|
||||
const parsedOther = parse3(other);
|
||||
const keyVersion = calculateKey(parsedVersion);
|
||||
const keyOther = calculateKey(parsedOther);
|
||||
return pyCompare(keyVersion, keyOther);
|
||||
}
|
||||
function rcompare(version3, other) {
|
||||
return -compare(version3, other);
|
||||
}
|
||||
function pyCompare(elemIn, otherIn) {
|
||||
let elem = elemIn;
|
||||
let other = otherIn;
|
||||
if (elem === other) {
|
||||
return 0;
|
||||
}
|
||||
if (Array.isArray(elem) !== Array.isArray(other)) {
|
||||
elem = Array.isArray(elem) ? elem : [elem];
|
||||
other = Array.isArray(other) ? other : [other];
|
||||
}
|
||||
if (Array.isArray(elem)) {
|
||||
const len = Math.min(elem.length, other.length);
|
||||
for (let i = 0; i < len; i += 1) {
|
||||
const res = pyCompare(elem[i], other[i]);
|
||||
if (res !== 0) {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
return elem.length - other.length;
|
||||
}
|
||||
if (elem === -Infinity || other === Infinity) {
|
||||
return -1;
|
||||
}
|
||||
if (elem === Infinity || other === -Infinity) {
|
||||
return 1;
|
||||
}
|
||||
return elem < other ? -1 : 1;
|
||||
}
|
||||
function calculateKey(input) {
|
||||
const { epoch } = input;
|
||||
let { release, pre, post, local, dev } = input;
|
||||
release = release.concat();
|
||||
release.reverse();
|
||||
while (release.length && release[0] === 0) {
|
||||
release.shift();
|
||||
}
|
||||
release.reverse();
|
||||
if (!pre && !post && dev) pre = -Infinity;
|
||||
else if (!pre) pre = Infinity;
|
||||
if (!post) post = -Infinity;
|
||||
if (!dev) dev = Infinity;
|
||||
if (!local) {
|
||||
local = -Infinity;
|
||||
} else {
|
||||
local = local.map(
|
||||
(i) => Number.isNaN(Number(i)) ? [-Infinity, i] : [Number(i), ""]
|
||||
);
|
||||
}
|
||||
return [epoch, release, pre, post, dev, local];
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/@renovatebot/pep440/lib/specifier.js
|
||||
var require_specifier = __commonJS({
|
||||
"node_modules/@renovatebot/pep440/lib/specifier.js"(exports2, module2) {
|
||||
var { VERSION_PATTERN, explain: explainVersion } = require_version();
|
||||
var Operator = require_operator();
|
||||
var RANGE_PATTERN = [
|
||||
"(?<operator>(===|~=|==|!=|<=|>=|<|>))",
|
||||
"\\s*",
|
||||
"(",
|
||||
/* */
|
||||
"(?<version>(?:" + VERSION_PATTERN.replace(/\?<\w+>/g, "?:") + "))",
|
||||
/* */
|
||||
"(?<prefix>\\.\\*)?",
|
||||
/* */
|
||||
"|",
|
||||
/* */
|
||||
"(?<legacy>[^,;\\s)]+)",
|
||||
")"
|
||||
].join("");
|
||||
module2.exports = {
|
||||
RANGE_PATTERN,
|
||||
parse: parse3,
|
||||
satisfies,
|
||||
filter,
|
||||
validRange,
|
||||
maxSatisfying,
|
||||
minSatisfying
|
||||
};
|
||||
var isEqualityOperator = (op) => ["==", "!=", "==="].includes(op);
|
||||
var rangeRegex = new RegExp("^" + RANGE_PATTERN + "$", "i");
|
||||
function parse3(ranges) {
|
||||
if (!ranges.trim()) {
|
||||
return [];
|
||||
}
|
||||
const specifiers = ranges.split(",").map((range2) => rangeRegex.exec(range2.trim()) || {}).map(({ groups }) => {
|
||||
if (!groups) {
|
||||
return null;
|
||||
}
|
||||
let { ...spec } = groups;
|
||||
const { operator, version: version3, prefix: prefix2, legacy } = groups;
|
||||
if (version3) {
|
||||
spec = { ...spec, ...explainVersion(version3) };
|
||||
if (operator === "~=") {
|
||||
if (spec.release.length < 2) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (!isEqualityOperator(operator) && spec.local) {
|
||||
return null;
|
||||
}
|
||||
if (prefix2) {
|
||||
if (!isEqualityOperator(operator) || spec.dev || spec.local) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (legacy && operator !== "===") {
|
||||
return null;
|
||||
}
|
||||
return spec;
|
||||
});
|
||||
if (specifiers.filter(Boolean).length !== specifiers.length) {
|
||||
return null;
|
||||
}
|
||||
return specifiers;
|
||||
}
|
||||
function filter(versions, specifier, options = {}) {
|
||||
const filtered = pick(versions, specifier, options);
|
||||
if (filtered.length === 0 && options.prereleases === void 0) {
|
||||
return pick(versions, specifier, { prereleases: true });
|
||||
}
|
||||
return filtered;
|
||||
}
|
||||
function maxSatisfying(versions, range2, options) {
|
||||
const found = filter(versions, range2, options).sort(Operator.compare);
|
||||
return found.length === 0 ? null : found[found.length - 1];
|
||||
}
|
||||
function minSatisfying(versions, range2, options) {
|
||||
const found = filter(versions, range2, options).sort(Operator.compare);
|
||||
return found.length === 0 ? null : found[0];
|
||||
}
|
||||
function pick(versions, specifier, options) {
|
||||
const parsed = parse3(specifier);
|
||||
if (!parsed) {
|
||||
return [];
|
||||
}
|
||||
return versions.filter((version3) => {
|
||||
const explained = explainVersion(version3);
|
||||
if (!parsed.length) {
|
||||
return explained && !(explained.is_prerelease && !options.prereleases);
|
||||
}
|
||||
return parsed.reduce((pass, spec) => {
|
||||
if (!pass) {
|
||||
return false;
|
||||
}
|
||||
return contains({ ...spec, ...options }, { version: version3, explained });
|
||||
}, true);
|
||||
});
|
||||
}
|
||||
function satisfies(version3, specifier, options = {}) {
|
||||
const filtered = pick([version3], specifier, options);
|
||||
return filtered.length === 1;
|
||||
}
|
||||
function arrayStartsWith(array, prefix2) {
|
||||
if (prefix2.length > array.length) {
|
||||
return false;
|
||||
}
|
||||
for (let i = 0; i < prefix2.length; i += 1) {
|
||||
if (prefix2[i] !== array[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
function contains(specifier, input) {
|
||||
const { explained } = input;
|
||||
let { version: version3 } = input;
|
||||
const { ...spec } = specifier;
|
||||
if (spec.prereleases === void 0) {
|
||||
spec.prereleases = spec.is_prerelease;
|
||||
}
|
||||
if (explained && explained.is_prerelease && !spec.prereleases) {
|
||||
return false;
|
||||
}
|
||||
if (spec.operator === "~=") {
|
||||
let compatiblePrefix = spec.release.slice(0, -1).concat("*").join(".");
|
||||
if (spec.epoch) {
|
||||
compatiblePrefix = spec.epoch + "!" + compatiblePrefix;
|
||||
}
|
||||
return satisfies(version3, `>=${spec.version}, ==${compatiblePrefix}`, {
|
||||
prereleases: spec.prereleases
|
||||
});
|
||||
}
|
||||
if (spec.prefix) {
|
||||
const isMatching = explained.epoch === spec.epoch && arrayStartsWith(explained.release, spec.release);
|
||||
const isEquality = spec.operator !== "!=";
|
||||
return isEquality ? isMatching : !isMatching;
|
||||
}
|
||||
if (explained) {
|
||||
if (explained.local && spec.version) {
|
||||
version3 = explained.public;
|
||||
spec.version = explainVersion(spec.version).public;
|
||||
}
|
||||
}
|
||||
if (spec.operator === "<" || spec.operator === ">") {
|
||||
if (Operator.eq(spec.release.join("."), explained.release.join("."))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
const op = Operator[spec.operator];
|
||||
return op(version3, spec.version || spec.legacy);
|
||||
}
|
||||
function validRange(specifier) {
|
||||
return Boolean(parse3(specifier));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/@renovatebot/pep440/lib/semantic.js
|
||||
var require_semantic = __commonJS({
|
||||
"node_modules/@renovatebot/pep440/lib/semantic.js"(exports2, module2) {
|
||||
var { explain, parse: parse3, stringify: stringify2 } = require_version();
|
||||
module2.exports = {
|
||||
major,
|
||||
minor,
|
||||
patch,
|
||||
inc
|
||||
};
|
||||
function major(input) {
|
||||
const version3 = explain(input);
|
||||
if (!version3) {
|
||||
throw new TypeError("Invalid Version: " + input);
|
||||
}
|
||||
return version3.release[0];
|
||||
}
|
||||
function minor(input) {
|
||||
const version3 = explain(input);
|
||||
if (!version3) {
|
||||
throw new TypeError("Invalid Version: " + input);
|
||||
}
|
||||
if (version3.release.length < 2) {
|
||||
return 0;
|
||||
}
|
||||
return version3.release[1];
|
||||
}
|
||||
function patch(input) {
|
||||
const version3 = explain(input);
|
||||
if (!version3) {
|
||||
throw new TypeError("Invalid Version: " + input);
|
||||
}
|
||||
if (version3.release.length < 3) {
|
||||
return 0;
|
||||
}
|
||||
return version3.release[2];
|
||||
}
|
||||
function inc(input, release, preReleaseIdentifier) {
|
||||
let identifier = preReleaseIdentifier || `a`;
|
||||
const version3 = parse3(input);
|
||||
if (!version3) {
|
||||
return null;
|
||||
}
|
||||
if (!["a", "b", "c", "rc", "alpha", "beta", "pre", "preview"].includes(
|
||||
identifier
|
||||
)) {
|
||||
return null;
|
||||
}
|
||||
switch (release) {
|
||||
case "premajor":
|
||||
{
|
||||
const [majorVersion] = version3.release;
|
||||
version3.release.fill(0);
|
||||
version3.release[0] = majorVersion + 1;
|
||||
}
|
||||
version3.pre = [identifier, 0];
|
||||
delete version3.post;
|
||||
delete version3.dev;
|
||||
delete version3.local;
|
||||
break;
|
||||
case "preminor":
|
||||
{
|
||||
const [majorVersion, minorVersion = 0] = version3.release;
|
||||
version3.release.fill(0);
|
||||
version3.release[0] = majorVersion;
|
||||
version3.release[1] = minorVersion + 1;
|
||||
}
|
||||
version3.pre = [identifier, 0];
|
||||
delete version3.post;
|
||||
delete version3.dev;
|
||||
delete version3.local;
|
||||
break;
|
||||
case "prepatch":
|
||||
{
|
||||
const [majorVersion, minorVersion = 0, patchVersion = 0] = version3.release;
|
||||
version3.release.fill(0);
|
||||
version3.release[0] = majorVersion;
|
||||
version3.release[1] = minorVersion;
|
||||
version3.release[2] = patchVersion + 1;
|
||||
}
|
||||
version3.pre = [identifier, 0];
|
||||
delete version3.post;
|
||||
delete version3.dev;
|
||||
delete version3.local;
|
||||
break;
|
||||
case "prerelease":
|
||||
if (version3.pre === null) {
|
||||
const [majorVersion, minorVersion = 0, patchVersion = 0] = version3.release;
|
||||
version3.release.fill(0);
|
||||
version3.release[0] = majorVersion;
|
||||
version3.release[1] = minorVersion;
|
||||
version3.release[2] = patchVersion + 1;
|
||||
version3.pre = [identifier, 0];
|
||||
} else {
|
||||
if (preReleaseIdentifier === void 0 && version3.pre !== null) {
|
||||
[identifier] = version3.pre;
|
||||
}
|
||||
const [letter, number] = version3.pre;
|
||||
if (letter === identifier) {
|
||||
version3.pre = [letter, number + 1];
|
||||
} else {
|
||||
version3.pre = [identifier, 0];
|
||||
}
|
||||
}
|
||||
delete version3.post;
|
||||
delete version3.dev;
|
||||
delete version3.local;
|
||||
break;
|
||||
case "major":
|
||||
if (version3.release.slice(1).some((value) => value !== 0) || version3.pre === null) {
|
||||
const [majorVersion] = version3.release;
|
||||
version3.release.fill(0);
|
||||
version3.release[0] = majorVersion + 1;
|
||||
}
|
||||
delete version3.pre;
|
||||
delete version3.post;
|
||||
delete version3.dev;
|
||||
delete version3.local;
|
||||
break;
|
||||
case "minor":
|
||||
if (version3.release.slice(2).some((value) => value !== 0) || version3.pre === null) {
|
||||
const [majorVersion, minorVersion = 0] = version3.release;
|
||||
version3.release.fill(0);
|
||||
version3.release[0] = majorVersion;
|
||||
version3.release[1] = minorVersion + 1;
|
||||
}
|
||||
delete version3.pre;
|
||||
delete version3.post;
|
||||
delete version3.dev;
|
||||
delete version3.local;
|
||||
break;
|
||||
case "patch":
|
||||
if (version3.release.slice(3).some((value) => value !== 0) || version3.pre === null) {
|
||||
const [majorVersion, minorVersion = 0, patchVersion = 0] = version3.release;
|
||||
version3.release.fill(0);
|
||||
version3.release[0] = majorVersion;
|
||||
version3.release[1] = minorVersion;
|
||||
version3.release[2] = patchVersion + 1;
|
||||
}
|
||||
delete version3.pre;
|
||||
delete version3.post;
|
||||
delete version3.dev;
|
||||
delete version3.local;
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
return stringify2(version3);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/@renovatebot/pep440/index.js
|
||||
var require_pep440 = __commonJS({
|
||||
"node_modules/@renovatebot/pep440/index.js"(exports2, module2) {
|
||||
var { valid, clean: clean2, explain, parse: parse3 } = require_version();
|
||||
var { lt, le, eq, ne, ge, gt, compare, rcompare } = require_operator();
|
||||
var {
|
||||
filter,
|
||||
maxSatisfying,
|
||||
minSatisfying,
|
||||
RANGE_PATTERN,
|
||||
satisfies,
|
||||
validRange
|
||||
} = require_specifier();
|
||||
var { major, minor, patch, inc } = require_semantic();
|
||||
module2.exports = {
|
||||
// version
|
||||
valid,
|
||||
clean: clean2,
|
||||
explain,
|
||||
parse: parse3,
|
||||
// operator
|
||||
lt,
|
||||
le,
|
||||
lte: le,
|
||||
eq,
|
||||
ne,
|
||||
neq: ne,
|
||||
ge,
|
||||
gte: ge,
|
||||
gt,
|
||||
compare,
|
||||
rcompare,
|
||||
// range
|
||||
filter,
|
||||
maxSatisfying,
|
||||
minSatisfying,
|
||||
RANGE_PATTERN,
|
||||
satisfies,
|
||||
validRange,
|
||||
// semantic
|
||||
major,
|
||||
minor,
|
||||
patch,
|
||||
inc
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// src/save-cache.ts
|
||||
var save_cache_exports = {};
|
||||
__export(save_cache_exports, {
|
||||
run: () => run
|
||||
});
|
||||
module.exports = __toCommonJS(save_cache_exports);
|
||||
var fs7 = __toESM(require("node:fs"), 1);
|
||||
var fs9 = __toESM(require("node:fs"), 1);
|
||||
|
||||
// node_modules/@actions/core/lib/command.js
|
||||
var os = __toESM(require("os"), 1);
|
||||
@@ -27738,7 +27094,7 @@ function getProxyUrl(reqUrl) {
|
||||
if (proxyVar) {
|
||||
try {
|
||||
return new DecodedURL(proxyVar);
|
||||
} catch (_a) {
|
||||
} catch (_a2) {
|
||||
if (!proxyVar.startsWith("http://") && !proxyVar.startsWith("https://"))
|
||||
return new DecodedURL(`http://${proxyVar}`);
|
||||
}
|
||||
@@ -28045,12 +27401,12 @@ var HttpClient = class {
|
||||
throw new Error("Client has already been disposed.");
|
||||
}
|
||||
const parsedUrl = new URL(requestUrl);
|
||||
let info2 = this._prepareRequest(verb, parsedUrl, headers);
|
||||
let info3 = this._prepareRequest(verb, parsedUrl, headers);
|
||||
const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1;
|
||||
let numTries = 0;
|
||||
let response;
|
||||
do {
|
||||
response = yield this.requestRaw(info2, data);
|
||||
response = yield this.requestRaw(info3, data);
|
||||
if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) {
|
||||
let authenticationHandler;
|
||||
for (const handler of this.handlers) {
|
||||
@@ -28060,7 +27416,7 @@ var HttpClient = class {
|
||||
}
|
||||
}
|
||||
if (authenticationHandler) {
|
||||
return authenticationHandler.handleAuthentication(this, info2, data);
|
||||
return authenticationHandler.handleAuthentication(this, info3, data);
|
||||
} else {
|
||||
return response;
|
||||
}
|
||||
@@ -28083,8 +27439,8 @@ var HttpClient = class {
|
||||
}
|
||||
}
|
||||
}
|
||||
info2 = this._prepareRequest(verb, parsedRedirectUrl, headers);
|
||||
response = yield this.requestRaw(info2, data);
|
||||
info3 = this._prepareRequest(verb, parsedRedirectUrl, headers);
|
||||
response = yield this.requestRaw(info3, data);
|
||||
redirectsRemaining--;
|
||||
}
|
||||
if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) {
|
||||
@@ -28113,7 +27469,7 @@ var HttpClient = class {
|
||||
* @param info
|
||||
* @param data
|
||||
*/
|
||||
requestRaw(info2, data) {
|
||||
requestRaw(info3, data) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return new Promise((resolve2, reject) => {
|
||||
function callbackForResult(err, res) {
|
||||
@@ -28125,7 +27481,7 @@ var HttpClient = class {
|
||||
resolve2(res);
|
||||
}
|
||||
}
|
||||
this.requestRawWithCallback(info2, data, callbackForResult);
|
||||
this.requestRawWithCallback(info3, data, callbackForResult);
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -28135,12 +27491,12 @@ var HttpClient = class {
|
||||
* @param data
|
||||
* @param onResult
|
||||
*/
|
||||
requestRawWithCallback(info2, data, onResult) {
|
||||
requestRawWithCallback(info3, data, onResult) {
|
||||
if (typeof data === "string") {
|
||||
if (!info2.options.headers) {
|
||||
info2.options.headers = {};
|
||||
if (!info3.options.headers) {
|
||||
info3.options.headers = {};
|
||||
}
|
||||
info2.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8");
|
||||
info3.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8");
|
||||
}
|
||||
let callbackCalled = false;
|
||||
function handleResult(err, res) {
|
||||
@@ -28149,7 +27505,7 @@ var HttpClient = class {
|
||||
onResult(err, res);
|
||||
}
|
||||
}
|
||||
const req = info2.httpModule.request(info2.options, (msg) => {
|
||||
const req = info3.httpModule.request(info3.options, (msg) => {
|
||||
const res = new HttpClientResponse(msg);
|
||||
handleResult(void 0, res);
|
||||
});
|
||||
@@ -28161,7 +27517,7 @@ var HttpClient = class {
|
||||
if (socket) {
|
||||
socket.end();
|
||||
}
|
||||
handleResult(new Error(`Request timeout: ${info2.options.path}`));
|
||||
handleResult(new Error(`Request timeout: ${info3.options.path}`));
|
||||
});
|
||||
req.on("error", function(err) {
|
||||
handleResult(err);
|
||||
@@ -28197,27 +27553,27 @@ var HttpClient = class {
|
||||
return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);
|
||||
}
|
||||
_prepareRequest(method, requestUrl, headers) {
|
||||
const info2 = {};
|
||||
info2.parsedUrl = requestUrl;
|
||||
const usingSsl = info2.parsedUrl.protocol === "https:";
|
||||
info2.httpModule = usingSsl ? https : http;
|
||||
const info3 = {};
|
||||
info3.parsedUrl = requestUrl;
|
||||
const usingSsl = info3.parsedUrl.protocol === "https:";
|
||||
info3.httpModule = usingSsl ? https : http;
|
||||
const defaultPort = usingSsl ? 443 : 80;
|
||||
info2.options = {};
|
||||
info2.options.host = info2.parsedUrl.hostname;
|
||||
info2.options.port = info2.parsedUrl.port ? parseInt(info2.parsedUrl.port) : defaultPort;
|
||||
info2.options.path = (info2.parsedUrl.pathname || "") + (info2.parsedUrl.search || "");
|
||||
info2.options.method = method;
|
||||
info2.options.headers = this._mergeHeaders(headers);
|
||||
info3.options = {};
|
||||
info3.options.host = info3.parsedUrl.hostname;
|
||||
info3.options.port = info3.parsedUrl.port ? parseInt(info3.parsedUrl.port) : defaultPort;
|
||||
info3.options.path = (info3.parsedUrl.pathname || "") + (info3.parsedUrl.search || "");
|
||||
info3.options.method = method;
|
||||
info3.options.headers = this._mergeHeaders(headers);
|
||||
if (this.userAgent != null) {
|
||||
info2.options.headers["user-agent"] = this.userAgent;
|
||||
info3.options.headers["user-agent"] = this.userAgent;
|
||||
}
|
||||
info2.options.agent = this._getAgent(info2.parsedUrl);
|
||||
info3.options.agent = this._getAgent(info3.parsedUrl);
|
||||
if (this.handlers) {
|
||||
for (const handler of this.handlers) {
|
||||
handler.prepareRequest(info2.options);
|
||||
handler.prepareRequest(info3.options);
|
||||
}
|
||||
}
|
||||
return info2;
|
||||
return info3;
|
||||
}
|
||||
_mergeHeaders(headers) {
|
||||
if (this.requestOptions && this.requestOptions.headers) {
|
||||
@@ -28530,7 +27886,7 @@ var Summary = class {
|
||||
}
|
||||
try {
|
||||
yield access(pathFromEnv, import_fs.constants.R_OK | import_fs.constants.W_OK);
|
||||
} catch (_a) {
|
||||
} catch (_a2) {
|
||||
throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);
|
||||
}
|
||||
this._filePath = pathFromEnv;
|
||||
@@ -29546,10 +28902,10 @@ function getState(name) {
|
||||
// node_modules/@actions/cache/lib/cache.js
|
||||
var path10 = __toESM(require("path"), 1);
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-globber.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-globber.js
|
||||
var fs2 = __toESM(require("fs"), 1);
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-glob-options-helper.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-glob-options-helper.js
|
||||
function getOptions(copy) {
|
||||
const result = {
|
||||
followSymbolicLinks: true,
|
||||
@@ -29583,10 +28939,10 @@ function getOptions(copy) {
|
||||
return result;
|
||||
}
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-globber.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-globber.js
|
||||
var path7 = __toESM(require("path"), 1);
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-path-helper.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-path-helper.js
|
||||
var path4 = __toESM(require("path"), 1);
|
||||
var import_assert2 = __toESM(require("assert"), 1);
|
||||
var IS_WINDOWS3 = process.platform === "win32";
|
||||
@@ -29678,16 +29034,16 @@ function safeTrimTrailingSeparator(p) {
|
||||
return p.substr(0, p.length - 1);
|
||||
}
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-match-kind.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-match-kind.js
|
||||
var MatchKind;
|
||||
(function(MatchKind2) {
|
||||
MatchKind2[MatchKind2["None"] = 0] = "None";
|
||||
MatchKind2[MatchKind2["Directory"] = 1] = "Directory";
|
||||
MatchKind2[MatchKind2["File"] = 2] = "File";
|
||||
MatchKind2[MatchKind2["All"] = 3] = "All";
|
||||
(function(MatchKind3) {
|
||||
MatchKind3[MatchKind3["None"] = 0] = "None";
|
||||
MatchKind3[MatchKind3["Directory"] = 1] = "Directory";
|
||||
MatchKind3[MatchKind3["File"] = 2] = "File";
|
||||
MatchKind3[MatchKind3["All"] = 3] = "All";
|
||||
})(MatchKind || (MatchKind = {}));
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-pattern-helper.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-pattern-helper.js
|
||||
var IS_WINDOWS4 = process.platform === "win32";
|
||||
function getSearchPaths(patterns) {
|
||||
patterns = patterns.filter((x) => !x.negate);
|
||||
@@ -29735,13 +29091,13 @@ function partialMatch(patterns, itemPath) {
|
||||
return patterns.some((x) => !x.negate && x.partialMatch(itemPath));
|
||||
}
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-pattern.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-pattern.js
|
||||
var os5 = __toESM(require("os"), 1);
|
||||
var path6 = __toESM(require("path"), 1);
|
||||
var import_assert4 = __toESM(require("assert"), 1);
|
||||
var import_minimatch = __toESM(require_minimatch(), 1);
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-path.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-path.js
|
||||
var path5 = __toESM(require("path"), 1);
|
||||
var import_assert3 = __toESM(require("assert"), 1);
|
||||
var IS_WINDOWS5 = process.platform === "win32";
|
||||
@@ -29803,7 +29159,7 @@ var Path = class {
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-pattern.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-pattern.js
|
||||
var { Minimatch } = import_minimatch.default;
|
||||
var IS_WINDOWS6 = process.platform === "win32";
|
||||
var Pattern = class _Pattern {
|
||||
@@ -29964,15 +29320,15 @@ var Pattern = class _Pattern {
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-search-state.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-search-state.js
|
||||
var SearchState = class {
|
||||
constructor(path12, level) {
|
||||
this.path = path12;
|
||||
constructor(path13, level) {
|
||||
this.path = path13;
|
||||
this.level = level;
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-globber.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/internal-globber.js
|
||||
var __awaiter8 = function(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) {
|
||||
return value instanceof P ? value : new P(function(resolve2) {
|
||||
@@ -30075,10 +29431,10 @@ var DefaultGlobber = class _DefaultGlobber {
|
||||
}
|
||||
glob() {
|
||||
return __awaiter8(this, void 0, void 0, function* () {
|
||||
var _a, e_1, _b, _c;
|
||||
var _a2, e_1, _b, _c;
|
||||
const result = [];
|
||||
try {
|
||||
for (var _d = true, _e = __asyncValues(this.globGenerator()), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
|
||||
for (var _d = true, _e = __asyncValues(this.globGenerator()), _f; _f = yield _e.next(), _a2 = _f.done, !_a2; _d = true) {
|
||||
_c = _f.value;
|
||||
_d = false;
|
||||
const itemPath = _c;
|
||||
@@ -30088,7 +29444,7 @@ var DefaultGlobber = class _DefaultGlobber {
|
||||
e_1 = { error: e_1_1 };
|
||||
} finally {
|
||||
try {
|
||||
if (!_d && !_a && (_b = _e.return)) yield _b.call(_e);
|
||||
if (!_d && !_a2 && (_b = _e.return)) yield _b.call(_e);
|
||||
} finally {
|
||||
if (e_1) throw e_1.error;
|
||||
}
|
||||
@@ -30122,9 +29478,9 @@ var DefaultGlobber = class _DefaultGlobber {
|
||||
const traversalChain = [];
|
||||
while (stack.length) {
|
||||
const item = stack.pop();
|
||||
const match2 = match(patterns, item.path);
|
||||
const partialMatch2 = !!match2 || partialMatch(patterns, item.path);
|
||||
if (!match2 && !partialMatch2) {
|
||||
const match4 = match(patterns, item.path);
|
||||
const partialMatch3 = !!match4 || partialMatch(patterns, item.path);
|
||||
if (!match4 && !partialMatch3) {
|
||||
continue;
|
||||
}
|
||||
const stats = yield __await(
|
||||
@@ -30138,15 +29494,15 @@ var DefaultGlobber = class _DefaultGlobber {
|
||||
continue;
|
||||
}
|
||||
if (stats.isDirectory()) {
|
||||
if (match2 & MatchKind.Directory && options.matchDirectories) {
|
||||
if (match4 & MatchKind.Directory && options.matchDirectories) {
|
||||
yield yield __await(item.path);
|
||||
} else if (!partialMatch2) {
|
||||
} else if (!partialMatch3) {
|
||||
continue;
|
||||
}
|
||||
const childLevel = item.level + 1;
|
||||
const childItems = (yield __await(fs2.promises.readdir(item.path))).map((x) => new SearchState(path7.join(item.path, x), childLevel));
|
||||
stack.push(...childItems.reverse());
|
||||
} else if (match2 & MatchKind.File) {
|
||||
} else if (match4 & MatchKind.File) {
|
||||
yield yield __await(item.path);
|
||||
}
|
||||
}
|
||||
@@ -30209,7 +29565,7 @@ var DefaultGlobber = class _DefaultGlobber {
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/@actions/glob/lib/glob.js
|
||||
// node_modules/@actions/cache/node_modules/@actions/glob/lib/glob.js
|
||||
var __awaiter9 = function(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) {
|
||||
return value instanceof P ? value : new P(function(resolve2) {
|
||||
@@ -30325,11 +29681,11 @@ var __asyncValues2 = function(o) {
|
||||
var versionSalt = "1.0";
|
||||
function createTempDirectory() {
|
||||
return __awaiter10(this, void 0, void 0, function* () {
|
||||
const IS_WINDOWS9 = process.platform === "win32";
|
||||
const IS_WINDOWS14 = process.platform === "win32";
|
||||
let tempDirectory = process.env["RUNNER_TEMP"] || "";
|
||||
if (!tempDirectory) {
|
||||
let baseLocation;
|
||||
if (IS_WINDOWS9) {
|
||||
if (IS_WINDOWS14) {
|
||||
baseLocation = process.env["USERPROFILE"] || "C:\\";
|
||||
} else {
|
||||
if (process.platform === "darwin") {
|
||||
@@ -30350,7 +29706,7 @@ function getArchiveFileSizeInBytes(filePath) {
|
||||
}
|
||||
function resolvePaths(patterns) {
|
||||
return __awaiter10(this, void 0, void 0, function* () {
|
||||
var _a, e_1, _b, _c;
|
||||
var _a2, e_1, _b, _c;
|
||||
var _d;
|
||||
const paths = [];
|
||||
const workspace = (_d = process.env["GITHUB_WORKSPACE"]) !== null && _d !== void 0 ? _d : process.cwd();
|
||||
@@ -30358,7 +29714,7 @@ function resolvePaths(patterns) {
|
||||
implicitDescendants: false
|
||||
});
|
||||
try {
|
||||
for (var _e = true, _f = __asyncValues2(globber.globGenerator()), _g; _g = yield _f.next(), _a = _g.done, !_a; _e = true) {
|
||||
for (var _e = true, _f = __asyncValues2(globber.globGenerator()), _g; _g = yield _f.next(), _a2 = _g.done, !_a2; _e = true) {
|
||||
_c = _g.value;
|
||||
_e = false;
|
||||
const file = _c;
|
||||
@@ -30374,7 +29730,7 @@ function resolvePaths(patterns) {
|
||||
e_1 = { error: e_1_1 };
|
||||
} finally {
|
||||
try {
|
||||
if (!_e && !_a && (_b = _f.return)) yield _b.call(_f);
|
||||
if (!_e && !_a2 && (_b = _f.return)) yield _b.call(_f);
|
||||
} finally {
|
||||
if (e_1) throw e_1.error;
|
||||
}
|
||||
@@ -30601,14 +29957,14 @@ function disable() {
|
||||
return result;
|
||||
}
|
||||
function createDebugger(namespace) {
|
||||
const newDebugger = Object.assign(debug2, {
|
||||
const newDebugger = Object.assign(debug3, {
|
||||
enabled: enabled(namespace),
|
||||
destroy,
|
||||
log: debugObj.log,
|
||||
namespace,
|
||||
extend
|
||||
});
|
||||
function debug2(...args) {
|
||||
function debug3(...args) {
|
||||
if (!newDebugger.enabled) {
|
||||
return;
|
||||
}
|
||||
@@ -33163,10 +32519,10 @@ function parseChallenges(challenges) {
|
||||
const challengeRegex = /(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g;
|
||||
const paramRegex = /(\w+)="([^"]*)"/g;
|
||||
const parsedChallenges = [];
|
||||
let match2;
|
||||
while ((match2 = challengeRegex.exec(challenges)) !== null) {
|
||||
const scheme = match2[1];
|
||||
const paramsString = match2[2];
|
||||
let match4;
|
||||
while ((match4 = challengeRegex.exec(challenges)) !== null) {
|
||||
const scheme = match4[1];
|
||||
const paramsString = match4[2];
|
||||
const params = {};
|
||||
let paramMatch;
|
||||
while ((paramMatch = paramRegex.exec(paramsString)) !== null) {
|
||||
@@ -33302,7 +32658,7 @@ var SerializerImpl = class {
|
||||
throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`);
|
||||
};
|
||||
if (mapper.constraints && value !== void 0 && value !== null) {
|
||||
const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern: Pattern2, UniqueItems } = mapper.constraints;
|
||||
const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern: Pattern3, UniqueItems } = mapper.constraints;
|
||||
if (ExclusiveMaximum !== void 0 && value >= ExclusiveMaximum) {
|
||||
failValidation("ExclusiveMaximum", ExclusiveMaximum);
|
||||
}
|
||||
@@ -33330,10 +32686,10 @@ var SerializerImpl = class {
|
||||
if (MultipleOf !== void 0 && value % MultipleOf !== 0) {
|
||||
failValidation("MultipleOf", MultipleOf);
|
||||
}
|
||||
if (Pattern2) {
|
||||
const pattern = typeof Pattern2 === "string" ? new RegExp(Pattern2) : Pattern2;
|
||||
if (Pattern3) {
|
||||
const pattern = typeof Pattern3 === "string" ? new RegExp(Pattern3) : Pattern3;
|
||||
if (typeof value !== "string" || value.match(pattern) === null) {
|
||||
failValidation("Pattern", Pattern2);
|
||||
failValidation("Pattern", Pattern3);
|
||||
}
|
||||
}
|
||||
if (UniqueItems && value.some((item, i, ar) => ar.indexOf(item) !== i)) {
|
||||
@@ -34098,12 +33454,12 @@ function getOperationRequestInfo(request) {
|
||||
if (hasOriginalRequest(request)) {
|
||||
return getOperationRequestInfo(request[originalRequestSymbol]);
|
||||
}
|
||||
let info2 = state2.operationRequestMap.get(request);
|
||||
if (!info2) {
|
||||
info2 = {};
|
||||
state2.operationRequestMap.set(request, info2);
|
||||
let info3 = state2.operationRequestMap.get(request);
|
||||
if (!info3) {
|
||||
info3 = {};
|
||||
state2.operationRequestMap.set(request, info3);
|
||||
}
|
||||
return info2;
|
||||
return info3;
|
||||
}
|
||||
|
||||
// node_modules/@azure/core-client/dist/esm/deserializationPolicy.js
|
||||
@@ -34470,15 +33826,15 @@ function getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObjec
|
||||
let isAbsolutePath = false;
|
||||
let requestUrl = replaceAll(baseUri, urlReplacements);
|
||||
if (operationSpec.path) {
|
||||
let path12 = replaceAll(operationSpec.path, urlReplacements);
|
||||
if (operationSpec.path === "/{nextLink}" && path12.startsWith("/")) {
|
||||
path12 = path12.substring(1);
|
||||
let path13 = replaceAll(operationSpec.path, urlReplacements);
|
||||
if (operationSpec.path === "/{nextLink}" && path13.startsWith("/")) {
|
||||
path13 = path13.substring(1);
|
||||
}
|
||||
if (isAbsoluteUrl(path12)) {
|
||||
requestUrl = path12;
|
||||
if (isAbsoluteUrl(path13)) {
|
||||
requestUrl = path13;
|
||||
isAbsolutePath = true;
|
||||
} else {
|
||||
requestUrl = appendPath(requestUrl, path12);
|
||||
requestUrl = appendPath(requestUrl, path13);
|
||||
}
|
||||
}
|
||||
const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject);
|
||||
@@ -34524,9 +33880,9 @@ function appendPath(url2, pathToAppend) {
|
||||
}
|
||||
const searchStart = pathToAppend.indexOf("?");
|
||||
if (searchStart !== -1) {
|
||||
const path12 = pathToAppend.substring(0, searchStart);
|
||||
const path13 = pathToAppend.substring(0, searchStart);
|
||||
const search = pathToAppend.substring(searchStart + 1);
|
||||
newPath = newPath + path12;
|
||||
newPath = newPath + path13;
|
||||
if (search) {
|
||||
parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;
|
||||
}
|
||||
@@ -35269,22 +34625,22 @@ var nameRegexp = "[" + nameStartChar + "][" + nameChar + "]*";
|
||||
var regexName = new RegExp("^" + nameRegexp + "$");
|
||||
function getAllMatches(string, regex) {
|
||||
const matches = [];
|
||||
let match2 = regex.exec(string);
|
||||
while (match2) {
|
||||
let match4 = regex.exec(string);
|
||||
while (match4) {
|
||||
const allmatches = [];
|
||||
allmatches.startIndex = regex.lastIndex - match2[0].length;
|
||||
const len = match2.length;
|
||||
allmatches.startIndex = regex.lastIndex - match4[0].length;
|
||||
const len = match4.length;
|
||||
for (let index = 0; index < len; index++) {
|
||||
allmatches.push(match2[index]);
|
||||
allmatches.push(match4[index]);
|
||||
}
|
||||
matches.push(allmatches);
|
||||
match2 = regex.exec(string);
|
||||
match4 = regex.exec(string);
|
||||
}
|
||||
return matches;
|
||||
}
|
||||
var isName = function(string) {
|
||||
const match2 = regexName.exec(string);
|
||||
return !(match2 === null || typeof match2 === "undefined");
|
||||
const match4 = regexName.exec(string);
|
||||
return !(match4 === null || typeof match4 === "undefined");
|
||||
};
|
||||
function isExist(v) {
|
||||
return typeof v !== "undefined";
|
||||
@@ -35605,8 +34961,8 @@ function getLineNumberForPosition(xmlData, index) {
|
||||
col: lines[lines.length - 1].length + 1
|
||||
};
|
||||
}
|
||||
function getPositionFromMatch(match2) {
|
||||
return match2.startIndex + match2[1].length;
|
||||
function getPositionFromMatch(match4) {
|
||||
return match4.startIndex + match4[1].length;
|
||||
}
|
||||
|
||||
// node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js
|
||||
@@ -36077,11 +35433,11 @@ function toNumber(str, options = {}) {
|
||||
} else if (trimmedStr.includes("e") || trimmedStr.includes("E")) {
|
||||
return resolveEnotation(str, trimmedStr, options);
|
||||
} else {
|
||||
const match2 = numRegex.exec(trimmedStr);
|
||||
if (match2) {
|
||||
const sign = match2[1] || "";
|
||||
const leadingZeros = match2[2];
|
||||
let numTrimmedByZeros = trimZeros(match2[3]);
|
||||
const match4 = numRegex.exec(trimmedStr);
|
||||
if (match4) {
|
||||
const sign = match4[1] || "";
|
||||
const leadingZeros = match4[2];
|
||||
let numTrimmedByZeros = trimZeros(match4[3]);
|
||||
const decimalAdjacentToLeadingZeros = sign ? (
|
||||
// 0., -00., 000.
|
||||
str[leadingZeros.length + 1] === "."
|
||||
@@ -36497,13 +35853,13 @@ var Matcher = class {
|
||||
* @returns {string}
|
||||
*/
|
||||
toString(separator, includeNamespace = true) {
|
||||
const sep7 = separator || this.separator;
|
||||
const sep8 = separator || this.separator;
|
||||
return this.path.map((n) => {
|
||||
if (includeNamespace && n.namespace) {
|
||||
return `${n.namespace}:${n.tag}`;
|
||||
}
|
||||
return n.tag;
|
||||
}).join(sep7);
|
||||
}).join(sep8);
|
||||
}
|
||||
/**
|
||||
* Get path as array of tag names
|
||||
@@ -38123,17 +37479,17 @@ var XML_CHARKEY2 = "_";
|
||||
|
||||
// node_modules/@azure/core-xml/dist/esm/xml.js
|
||||
function getCommonOptions(options) {
|
||||
var _a;
|
||||
var _a2;
|
||||
return {
|
||||
attributesGroupName: XML_ATTRKEY2,
|
||||
textNodeName: (_a = options.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY2,
|
||||
textNodeName: (_a2 = options.xmlCharKey) !== null && _a2 !== void 0 ? _a2 : XML_CHARKEY2,
|
||||
ignoreAttributes: false,
|
||||
suppressBooleanAttributes: false
|
||||
};
|
||||
}
|
||||
function getSerializerOptions(options = {}) {
|
||||
var _a, _b;
|
||||
return Object.assign(Object.assign({}, getCommonOptions(options)), { attributeNamePrefix: "@_", format: true, suppressEmptyNode: true, indentBy: "", rootNodeName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "root", cdataPropName: (_b = options.cdataPropName) !== null && _b !== void 0 ? _b : "__cdata" });
|
||||
var _a2, _b;
|
||||
return Object.assign(Object.assign({}, getCommonOptions(options)), { attributeNamePrefix: "@_", format: true, suppressEmptyNode: true, indentBy: "", rootNodeName: (_a2 = options.rootName) !== null && _a2 !== void 0 ? _a2 : "root", cdataPropName: (_b = options.cdataPropName) !== null && _b !== void 0 ? _b : "__cdata" });
|
||||
}
|
||||
function getParserOptions(options = {}) {
|
||||
return Object.assign(Object.assign({}, getCommonOptions(options)), { parseAttributeValue: false, parseTagValue: false, attributeNamePrefix: "", stopNodes: options.stopNodes, processEntities: true, trimValues: false });
|
||||
@@ -39368,9 +38724,9 @@ var StorageSharedKeyCredentialPolicy = class extends CredentialPolicy {
|
||||
* @param request -
|
||||
*/
|
||||
getCanonicalizedResourceString(request) {
|
||||
const path12 = getURLPath(request.url) || "/";
|
||||
const path13 = getURLPath(request.url) || "/";
|
||||
let canonicalizedResourceString = "";
|
||||
canonicalizedResourceString += `/${this.factory.accountName}${path12}`;
|
||||
canonicalizedResourceString += `/${this.factory.accountName}${path13}`;
|
||||
const queries = getURLQueries(request.url);
|
||||
const lowercaseQueries = {};
|
||||
if (queries) {
|
||||
@@ -39860,9 +39216,9 @@ function storageSharedKeyCredentialPolicy(options) {
|
||||
return canonicalizedHeadersStringToSign;
|
||||
}
|
||||
function getCanonicalizedResourceString(request) {
|
||||
const path12 = getURLPath(request.url) || "/";
|
||||
const path13 = getURLPath(request.url) || "/";
|
||||
let canonicalizedResourceString = "";
|
||||
canonicalizedResourceString += `/${options.accountName}${path12}`;
|
||||
canonicalizedResourceString += `/${options.accountName}${path13}`;
|
||||
const queries = getURLQueries(request.url);
|
||||
const lowercaseQueries = {};
|
||||
if (queries) {
|
||||
@@ -52761,8 +52117,8 @@ var PageBlobImpl = class {
|
||||
* aligned and range-end is required.
|
||||
* @param options The options parameters.
|
||||
*/
|
||||
uploadPagesFromURL(sourceUrl2, sourceRange2, contentLength2, range2, options) {
|
||||
return this.client.sendOperationRequest({ sourceUrl: sourceUrl2, sourceRange: sourceRange2, contentLength: contentLength2, range: range2, options }, uploadPagesFromURLOperationSpec);
|
||||
uploadPagesFromURL(sourceUrl2, sourceRange2, contentLength2, range3, options) {
|
||||
return this.client.sendOperationRequest({ sourceUrl: sourceUrl2, sourceRange: sourceRange2, contentLength: contentLength2, range: range3, options }, uploadPagesFromURLOperationSpec);
|
||||
}
|
||||
/**
|
||||
* The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a
|
||||
@@ -53758,13 +53114,13 @@ var StorageClient = class extends ExtendedServiceClient {
|
||||
if (!options) {
|
||||
options = {};
|
||||
}
|
||||
const defaults = {
|
||||
const defaults2 = {
|
||||
requestContentType: "application/json; charset=utf-8"
|
||||
};
|
||||
const packageDetails = `azsdk-js-azure-storage-blob/12.30.0`;
|
||||
const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` : `${packageDetails}`;
|
||||
const optionsWithDefaults = {
|
||||
...defaults,
|
||||
...defaults2,
|
||||
...options,
|
||||
userAgentOptions: {
|
||||
userAgentPrefix
|
||||
@@ -53803,10 +53159,10 @@ var StorageContextClient = class extends StorageClient {
|
||||
// node_modules/@azure/storage-blob/dist/esm/utils/utils.common.js
|
||||
function escapeURLPath(url2) {
|
||||
const urlParsed = new URL(url2);
|
||||
let path12 = urlParsed.pathname;
|
||||
path12 = path12 || "/";
|
||||
path12 = escape(path12);
|
||||
urlParsed.pathname = path12;
|
||||
let path13 = urlParsed.pathname;
|
||||
path13 = path13 || "/";
|
||||
path13 = escape(path13);
|
||||
urlParsed.pathname = path13;
|
||||
return urlParsed.toString();
|
||||
}
|
||||
function getProxyUriFromDevConnString(connectionString) {
|
||||
@@ -53891,9 +53247,9 @@ function escape(text) {
|
||||
}
|
||||
function appendToURLPath(url2, name) {
|
||||
const urlParsed = new URL(url2);
|
||||
let path12 = urlParsed.pathname;
|
||||
path12 = path12 ? path12.endsWith("/") ? `${path12}${name}` : `${path12}/${name}` : name;
|
||||
urlParsed.pathname = path12;
|
||||
let path13 = urlParsed.pathname;
|
||||
path13 = path13 ? path13.endsWith("/") ? `${path13}${name}` : `${path13}/${name}` : name;
|
||||
urlParsed.pathname = path13;
|
||||
return urlParsed.toString();
|
||||
}
|
||||
function setURLParameter2(url2, name, value) {
|
||||
@@ -56415,9 +55771,9 @@ var AvroEnumType = class extends AvroType {
|
||||
};
|
||||
var AvroUnionType = class extends AvroType {
|
||||
_types;
|
||||
constructor(types) {
|
||||
constructor(types2) {
|
||||
super();
|
||||
this._types = types;
|
||||
this._types = types2;
|
||||
}
|
||||
async read(stream, options = {}) {
|
||||
const typeIndex = await AvroParser.readInt(stream, options);
|
||||
@@ -60479,7 +59835,7 @@ NetworkError.isNetworkErrorCode = (code) => {
|
||||
};
|
||||
var UsageError = class extends Error {
|
||||
constructor() {
|
||||
const message = `Cache storage quota has been hit. Unable to upload any new cache entries. Usage is recalculated every 6-12 hours.
|
||||
const message = `Cache storage quota has been hit. Unable to upload any new cache entries.
|
||||
More info on storage limits: https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions#calculating-minute-and-storage-spending`;
|
||||
super(message);
|
||||
this.name = "UsageError";
|
||||
@@ -60606,10 +59962,10 @@ var UploadProgress = class {
|
||||
};
|
||||
function uploadCacheArchiveSDK(signedUploadURL, archivePath, options) {
|
||||
return __awaiter11(this, void 0, void 0, function* () {
|
||||
var _a;
|
||||
var _a2;
|
||||
const blobClient = new BlobClient(signedUploadURL);
|
||||
const blockBlobClient = blobClient.getBlockBlobClient();
|
||||
const uploadProgress = new UploadProgress((_a = options === null || options === void 0 ? void 0 : options.archiveSizeBytes) !== null && _a !== void 0 ? _a : 0);
|
||||
const uploadProgress = new UploadProgress((_a2 = options === null || options === void 0 ? void 0 : options.archiveSizeBytes) !== null && _a2 !== void 0 ? _a2 : 0);
|
||||
const uploadOptions = {
|
||||
blockSize: options === null || options === void 0 ? void 0 : options.uploadChunkSize,
|
||||
concurrency: options === null || options === void 0 ? void 0 : options.uploadConcurrency,
|
||||
@@ -60800,6 +60156,15 @@ function getCacheServiceVersion() {
|
||||
return "v1";
|
||||
return process.env["ACTIONS_CACHE_SERVICE_V2"] ? "v2" : "v1";
|
||||
}
|
||||
var KNOWN_CACHE_MODES = ["none", "read", "write", "write-only"];
|
||||
function getCacheMode() {
|
||||
return (process.env["ACTIONS_CACHE_MODE"] || "").trim().toLowerCase();
|
||||
}
|
||||
function isCacheWritable(mode) {
|
||||
if (!KNOWN_CACHE_MODES.includes(mode))
|
||||
return true;
|
||||
return mode === "write" || mode === "write-only";
|
||||
}
|
||||
function getCacheServiceURL() {
|
||||
const version3 = getCacheServiceVersion();
|
||||
switch (version3) {
|
||||
@@ -61932,8 +61297,8 @@ function getCommands(compressionMethod_1, type_1) {
|
||||
});
|
||||
}
|
||||
function getWorkingDirectory() {
|
||||
var _a;
|
||||
return (_a = process.env["GITHUB_WORKSPACE"]) !== null && _a !== void 0 ? _a : process.cwd();
|
||||
var _a2;
|
||||
return (_a2 = process.env["GITHUB_WORKSPACE"]) !== null && _a2 !== void 0 ? _a2 : process.cwd();
|
||||
}
|
||||
function getDecompressionProgram(tarPath, compressionMethod, archivePath) {
|
||||
return __awaiter15(this, void 0, void 0, function* () {
|
||||
@@ -62054,6 +61419,14 @@ var ReserveCacheError = class _ReserveCacheError extends Error {
|
||||
Object.setPrototypeOf(this, _ReserveCacheError.prototype);
|
||||
}
|
||||
};
|
||||
var CACHE_WRITE_DENIED_PREFIX = "cache write denied:";
|
||||
var CacheWriteDeniedError = class _CacheWriteDeniedError extends ReserveCacheError {
|
||||
constructor(message) {
|
||||
super(message);
|
||||
this.name = "CacheWriteDeniedError";
|
||||
Object.setPrototypeOf(this, _CacheWriteDeniedError.prototype);
|
||||
}
|
||||
};
|
||||
var FinalizeCacheError = class _FinalizeCacheError extends Error {
|
||||
constructor(message) {
|
||||
super(message);
|
||||
@@ -62081,6 +61454,12 @@ function saveCache2(paths_1, key_1, options_1) {
|
||||
debug(`Cache service version: ${cacheServiceVersion}`);
|
||||
checkPaths(paths);
|
||||
checkKey(key);
|
||||
const cacheMode = getCacheMode();
|
||||
if (!isCacheWritable(cacheMode)) {
|
||||
info(`Cache save skipped: the effective cache-mode '${cacheMode}' does not permit writes.`);
|
||||
debug(`Skipped save for paths [${paths.join(", ")}] with key '${key}'.`);
|
||||
return -1;
|
||||
}
|
||||
switch (cacheServiceVersion) {
|
||||
case "v2":
|
||||
return yield saveCacheV2(paths, key, options, enableCrossOsArchive);
|
||||
@@ -62092,7 +61471,7 @@ function saveCache2(paths_1, key_1, options_1) {
|
||||
}
|
||||
function saveCacheV1(paths_1, key_1, options_1) {
|
||||
return __awaiter16(this, arguments, void 0, function* (paths, key, options, enableCrossOsArchive = false) {
|
||||
var _a, _b, _c, _d, _e;
|
||||
var _a2, _b, _c, _d, _e, _f;
|
||||
const compressionMethod = yield getCompressionMethod();
|
||||
let cacheId = -1;
|
||||
const cachePaths = yield resolvePaths(paths);
|
||||
@@ -62121,12 +61500,16 @@ function saveCacheV1(paths_1, key_1, options_1) {
|
||||
enableCrossOsArchive,
|
||||
cacheSize: archiveFileSize
|
||||
});
|
||||
if ((_a = reserveCacheResponse === null || reserveCacheResponse === void 0 ? void 0 : reserveCacheResponse.result) === null || _a === void 0 ? void 0 : _a.cacheId) {
|
||||
if ((_a2 = reserveCacheResponse === null || reserveCacheResponse === void 0 ? void 0 : reserveCacheResponse.result) === null || _a2 === void 0 ? void 0 : _a2.cacheId) {
|
||||
cacheId = (_b = reserveCacheResponse === null || reserveCacheResponse === void 0 ? void 0 : reserveCacheResponse.result) === null || _b === void 0 ? void 0 : _b.cacheId;
|
||||
} else if ((reserveCacheResponse === null || reserveCacheResponse === void 0 ? void 0 : reserveCacheResponse.statusCode) === 400) {
|
||||
throw new Error((_d = (_c = reserveCacheResponse === null || reserveCacheResponse === void 0 ? void 0 : reserveCacheResponse.error) === null || _c === void 0 ? void 0 : _c.message) !== null && _d !== void 0 ? _d : `Cache size of ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B) is over the data cap limit, not saving cache.`);
|
||||
} else {
|
||||
throw new ReserveCacheError(`Unable to reserve cache with key ${key}, another job may be creating this cache. More details: ${(_e = reserveCacheResponse === null || reserveCacheResponse === void 0 ? void 0 : reserveCacheResponse.error) === null || _e === void 0 ? void 0 : _e.message}`);
|
||||
const detailMessage = (_e = reserveCacheResponse === null || reserveCacheResponse === void 0 ? void 0 : reserveCacheResponse.error) === null || _e === void 0 ? void 0 : _e.message;
|
||||
if (detailMessage === null || detailMessage === void 0 ? void 0 : detailMessage.startsWith(CACHE_WRITE_DENIED_PREFIX)) {
|
||||
throw new CacheWriteDeniedError(`Unable to reserve cache with key ${key}. More details: ${detailMessage}`);
|
||||
}
|
||||
throw new ReserveCacheError(`Unable to reserve cache with key ${key}, another job may be creating this cache. More details: ${(_f = reserveCacheResponse === null || reserveCacheResponse === void 0 ? void 0 : reserveCacheResponse.error) === null || _f === void 0 ? void 0 : _f.message}`);
|
||||
}
|
||||
debug(`Saving Cache (ID: ${cacheId})`);
|
||||
yield saveCache(cacheId, archivePath, "", options);
|
||||
@@ -62155,6 +61538,7 @@ function saveCacheV1(paths_1, key_1, options_1) {
|
||||
}
|
||||
function saveCacheV2(paths_1, key_1, options_1) {
|
||||
return __awaiter16(this, arguments, void 0, function* (paths, key, options, enableCrossOsArchive = false) {
|
||||
var _a2;
|
||||
options = Object.assign(Object.assign({}, options), { uploadChunkSize: 64 * 1024 * 1024, uploadConcurrency: 8, useAzureSdk: true });
|
||||
const compressionMethod = yield getCompressionMethod();
|
||||
const twirpClient = internalCacheTwirpClient();
|
||||
@@ -62186,7 +61570,7 @@ function saveCacheV2(paths_1, key_1, options_1) {
|
||||
try {
|
||||
const response = yield twirpClient.CreateCacheEntry(request);
|
||||
if (!response.ok) {
|
||||
if (response.message) {
|
||||
if (response.message && !response.message.startsWith(CACHE_WRITE_DENIED_PREFIX)) {
|
||||
warning(`Cache reservation failed: ${response.message}`);
|
||||
}
|
||||
throw new Error(response.message || "Response was not ok");
|
||||
@@ -62194,6 +61578,10 @@ function saveCacheV2(paths_1, key_1, options_1) {
|
||||
signedUploadUrl = response.signedUploadUrl;
|
||||
} catch (error2) {
|
||||
debug(`Failed to reserve cache: ${error2}`);
|
||||
const errorMessage = (_a2 = error2 === null || error2 === void 0 ? void 0 : error2.message) !== null && _a2 !== void 0 ? _a2 : "";
|
||||
if (errorMessage.startsWith(CACHE_WRITE_DENIED_PREFIX)) {
|
||||
throw new CacheWriteDeniedError(`Unable to reserve cache with key ${key}. More details: ${errorMessage}`);
|
||||
}
|
||||
throw new ReserveCacheError(`Unable to reserve cache with key ${key}, another job may be creating this cache.`);
|
||||
}
|
||||
debug(`Attempting to upload cache located at: ${archivePath}`);
|
||||
@@ -62238,8 +61626,2093 @@ function saveCacheV2(paths_1, key_1, options_1) {
|
||||
});
|
||||
}
|
||||
|
||||
// src/save-cache.ts
|
||||
var pep440 = __toESM(require_pep440(), 1);
|
||||
// node_modules/@renovatebot/pep440/lib/version.js
|
||||
var VERSION_PATTERN = [
|
||||
"v?",
|
||||
"(?:",
|
||||
/* */
|
||||
"(?:(?<epoch>[0-9]+)!)?",
|
||||
// epoch
|
||||
/* */
|
||||
"(?<release>[0-9]+(?:\\.[0-9]+)*)",
|
||||
// release segment
|
||||
/* */
|
||||
"(?<pre>",
|
||||
// pre-release
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<pre_l>(a|b|c|rc|alpha|beta|pre|preview))",
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<pre_n>[0-9]+)?",
|
||||
/* */
|
||||
")?",
|
||||
/* */
|
||||
"(?<post>",
|
||||
// post release
|
||||
/* */
|
||||
"(?:-(?<post_n1>[0-9]+))",
|
||||
/* */
|
||||
"|",
|
||||
/* */
|
||||
"(?:",
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<post_l>post|rev|r)",
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<post_n2>[0-9]+)?",
|
||||
/* */
|
||||
")",
|
||||
/* */
|
||||
")?",
|
||||
/* */
|
||||
"(?<dev>",
|
||||
// dev release
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<dev_l>dev)",
|
||||
/* */
|
||||
"[-_\\.]?",
|
||||
/* */
|
||||
"(?<dev_n>[0-9]+)?",
|
||||
/* */
|
||||
")?",
|
||||
")",
|
||||
"(?:\\+(?<local>[a-z0-9]+(?:[-_\\.][a-z0-9]+)*))?"
|
||||
// local version
|
||||
].join("");
|
||||
var validRegex = new RegExp("^" + VERSION_PATTERN + "$", "i");
|
||||
var cleanRegex = new RegExp("^\\s*" + VERSION_PATTERN + "\\s*$", "i");
|
||||
function parse2(version3, regex) {
|
||||
const { groups } = (regex || validRegex).exec(version3) || {};
|
||||
if (!groups) {
|
||||
return null;
|
||||
}
|
||||
const parsed = {
|
||||
epoch: Number(groups.epoch ? groups.epoch : 0),
|
||||
release: groups.release.split(".").map(Number),
|
||||
pre: normalize_letter_version(groups.pre_l, groups.pre_n),
|
||||
post: normalize_letter_version(
|
||||
groups.post_l,
|
||||
groups.post_n1 || groups.post_n2
|
||||
),
|
||||
dev: normalize_letter_version(groups.dev_l, groups.dev_n),
|
||||
local: parse_local_version(groups.local)
|
||||
};
|
||||
return parsed;
|
||||
}
|
||||
function normalize_letter_version(letterIn, numberIn) {
|
||||
let letter = letterIn;
|
||||
let number = numberIn;
|
||||
if (letter) {
|
||||
if (!number) {
|
||||
number = 0;
|
||||
}
|
||||
letter = letter.toLowerCase();
|
||||
if (letter === "alpha") {
|
||||
letter = "a";
|
||||
} else if (letter === "beta") {
|
||||
letter = "b";
|
||||
} else if (["c", "pre", "preview"].includes(letter)) {
|
||||
letter = "rc";
|
||||
} else if (["rev", "r"].includes(letter)) {
|
||||
letter = "post";
|
||||
}
|
||||
return [letter, Number(number)];
|
||||
}
|
||||
if (!letter && number) {
|
||||
letter = "post";
|
||||
return [letter, Number(number)];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
function parse_local_version(local) {
|
||||
if (local) {
|
||||
return local.split(/[._-]/).map(
|
||||
(part) => Number.isNaN(Number(part)) ? part.toLowerCase() : Number(part)
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// node_modules/@renovatebot/pep440/lib/operator.js
|
||||
function ge(version3, other) {
|
||||
return compare(version3, other) >= 0;
|
||||
}
|
||||
function compare(version3, other) {
|
||||
const parsedVersion = parse2(version3);
|
||||
const parsedOther = parse2(other);
|
||||
const keyVersion = calculateKey(parsedVersion);
|
||||
const keyOther = calculateKey(parsedOther);
|
||||
return pyCompare(keyVersion, keyOther);
|
||||
}
|
||||
function pyCompare(elemIn, otherIn) {
|
||||
let elem = elemIn;
|
||||
let other = otherIn;
|
||||
if (elem === other) {
|
||||
return 0;
|
||||
}
|
||||
if (Array.isArray(elem) !== Array.isArray(other)) {
|
||||
elem = Array.isArray(elem) ? elem : [elem];
|
||||
other = Array.isArray(other) ? other : [other];
|
||||
}
|
||||
if (Array.isArray(elem)) {
|
||||
const len = Math.min(elem.length, other.length);
|
||||
for (let i = 0; i < len; i += 1) {
|
||||
const res = pyCompare(elem[i], other[i]);
|
||||
if (res !== 0) {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
return elem.length - other.length;
|
||||
}
|
||||
if (elem === -Infinity || other === Infinity) {
|
||||
return -1;
|
||||
}
|
||||
if (elem === Infinity || other === -Infinity) {
|
||||
return 1;
|
||||
}
|
||||
return elem < other ? -1 : 1;
|
||||
}
|
||||
function calculateKey(input) {
|
||||
const { epoch } = input;
|
||||
let { release, pre, post, local, dev } = input;
|
||||
release = release.concat();
|
||||
release.reverse();
|
||||
while (release.length && release[0] === 0) {
|
||||
release.shift();
|
||||
}
|
||||
release.reverse();
|
||||
if (!pre && !post && dev) pre = -Infinity;
|
||||
else if (!pre) pre = Infinity;
|
||||
if (!post) post = -Infinity;
|
||||
if (!dev) dev = Infinity;
|
||||
if (!local) {
|
||||
local = -Infinity;
|
||||
} else {
|
||||
local = local.map(
|
||||
(i) => Number.isNaN(Number(i)) ? [-Infinity, i] : [Number(i), ""]
|
||||
);
|
||||
}
|
||||
return [epoch, release, pre, post, dev, local];
|
||||
}
|
||||
|
||||
// node_modules/@renovatebot/pep440/lib/specifier.js
|
||||
var RANGE_PATTERN = [
|
||||
"(?<operator>(===|~=|==|!=|<=|>=|<|>))",
|
||||
"\\s*",
|
||||
"(",
|
||||
/* */
|
||||
"(?<version>(?:" + VERSION_PATTERN.replace(/\?<\w+>/g, "?:") + "))",
|
||||
/* */
|
||||
"(?<prefix>\\.\\*)?",
|
||||
/* */
|
||||
"|",
|
||||
/* */
|
||||
"(?<legacy>[^,;\\s)]+)",
|
||||
")"
|
||||
].join("");
|
||||
var rangeRegex = new RegExp("^" + RANGE_PATTERN + "$", "i");
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-path-helper.js
|
||||
var IS_WINDOWS9 = process.platform === "win32";
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-match-kind.js
|
||||
var MatchKind2;
|
||||
(function(MatchKind3) {
|
||||
MatchKind3[MatchKind3["None"] = 0] = "None";
|
||||
MatchKind3[MatchKind3["Directory"] = 1] = "Directory";
|
||||
MatchKind3[MatchKind3["File"] = 2] = "File";
|
||||
MatchKind3[MatchKind3["All"] = 3] = "All";
|
||||
})(MatchKind2 || (MatchKind2 = {}));
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-pattern-helper.js
|
||||
var IS_WINDOWS10 = process.platform === "win32";
|
||||
|
||||
// node_modules/@actions/glob/node_modules/balanced-match/dist/esm/index.js
|
||||
var balanced = (a, b, str) => {
|
||||
const ma = a instanceof RegExp ? maybeMatch(a, str) : a;
|
||||
const mb = b instanceof RegExp ? maybeMatch(b, str) : b;
|
||||
const r = ma !== null && mb != null && range2(ma, mb, str);
|
||||
return r && {
|
||||
start: r[0],
|
||||
end: r[1],
|
||||
pre: str.slice(0, r[0]),
|
||||
body: str.slice(r[0] + ma.length, r[1]),
|
||||
post: str.slice(r[1] + mb.length)
|
||||
};
|
||||
};
|
||||
var maybeMatch = (reg, str) => {
|
||||
const m = str.match(reg);
|
||||
return m ? m[0] : null;
|
||||
};
|
||||
var range2 = (a, b, str) => {
|
||||
let begs, beg, left, right = void 0, result;
|
||||
let ai = str.indexOf(a);
|
||||
let bi = str.indexOf(b, ai + 1);
|
||||
let i = ai;
|
||||
if (ai >= 0 && bi > 0) {
|
||||
if (a === b) {
|
||||
return [ai, bi];
|
||||
}
|
||||
begs = [];
|
||||
left = str.length;
|
||||
while (i >= 0 && !result) {
|
||||
if (i === ai) {
|
||||
begs.push(i);
|
||||
ai = str.indexOf(a, i + 1);
|
||||
} else if (begs.length === 1) {
|
||||
const r = begs.pop();
|
||||
if (r !== void 0)
|
||||
result = [r, bi];
|
||||
} else {
|
||||
beg = begs.pop();
|
||||
if (beg !== void 0 && beg < left) {
|
||||
left = beg;
|
||||
right = bi;
|
||||
}
|
||||
bi = str.indexOf(b, i + 1);
|
||||
}
|
||||
i = ai < bi && ai >= 0 ? ai : bi;
|
||||
}
|
||||
if (begs.length && right !== void 0) {
|
||||
result = [left, right];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
// node_modules/@actions/glob/node_modules/brace-expansion/dist/esm/index.js
|
||||
var escSlash = "\0SLASH" + Math.random() + "\0";
|
||||
var escOpen = "\0OPEN" + Math.random() + "\0";
|
||||
var escClose = "\0CLOSE" + Math.random() + "\0";
|
||||
var escComma = "\0COMMA" + Math.random() + "\0";
|
||||
var escPeriod = "\0PERIOD" + Math.random() + "\0";
|
||||
var escSlashPattern = new RegExp(escSlash, "g");
|
||||
var escOpenPattern = new RegExp(escOpen, "g");
|
||||
var escClosePattern = new RegExp(escClose, "g");
|
||||
var escCommaPattern = new RegExp(escComma, "g");
|
||||
var escPeriodPattern = new RegExp(escPeriod, "g");
|
||||
var slashPattern = /\\\\/g;
|
||||
var openPattern = /\\{/g;
|
||||
var closePattern = /\\}/g;
|
||||
var commaPattern = /\\,/g;
|
||||
var periodPattern = /\\\./g;
|
||||
var EXPANSION_MAX = 1e5;
|
||||
var EXPANSION_MAX_LENGTH = 4e6;
|
||||
function numeric(str) {
|
||||
return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);
|
||||
}
|
||||
function escapeBraces(str) {
|
||||
return str.replace(slashPattern, escSlash).replace(openPattern, escOpen).replace(closePattern, escClose).replace(commaPattern, escComma).replace(periodPattern, escPeriod);
|
||||
}
|
||||
function unescapeBraces(str) {
|
||||
return str.replace(escSlashPattern, "\\").replace(escOpenPattern, "{").replace(escClosePattern, "}").replace(escCommaPattern, ",").replace(escPeriodPattern, ".");
|
||||
}
|
||||
function parseCommaParts(str) {
|
||||
if (!str) {
|
||||
return [""];
|
||||
}
|
||||
const parts = [];
|
||||
const m = balanced("{", "}", str);
|
||||
if (!m) {
|
||||
return str.split(",");
|
||||
}
|
||||
const { pre, body: body2, post } = m;
|
||||
const p = pre.split(",");
|
||||
p[p.length - 1] += "{" + body2 + "}";
|
||||
const postParts = parseCommaParts(post);
|
||||
if (post.length) {
|
||||
;
|
||||
p[p.length - 1] += postParts.shift();
|
||||
p.push.apply(p, postParts);
|
||||
}
|
||||
parts.push.apply(parts, p);
|
||||
return parts;
|
||||
}
|
||||
function expand(str, options = {}) {
|
||||
if (!str) {
|
||||
return [];
|
||||
}
|
||||
const { max = EXPANSION_MAX, maxLength = EXPANSION_MAX_LENGTH } = options;
|
||||
if (str.slice(0, 2) === "{}") {
|
||||
str = "\\{\\}" + str.slice(2);
|
||||
}
|
||||
return expand_(escapeBraces(str), max, maxLength, true).map(unescapeBraces);
|
||||
}
|
||||
function embrace(str) {
|
||||
return "{" + str + "}";
|
||||
}
|
||||
function isPadded(el) {
|
||||
return /^-?0\d/.test(el);
|
||||
}
|
||||
function lte(i, y) {
|
||||
return i <= y;
|
||||
}
|
||||
function gte(i, y) {
|
||||
return i >= y;
|
||||
}
|
||||
function combine(acc, pre, values, max, maxLength, dropEmpties) {
|
||||
const out = [];
|
||||
let length = 0;
|
||||
for (let a = 0; a < acc.length; a++) {
|
||||
for (let v = 0; v < values.length; v++) {
|
||||
if (out.length >= max)
|
||||
return out;
|
||||
const expansion = acc[a] + pre + values[v];
|
||||
if (dropEmpties && !expansion)
|
||||
continue;
|
||||
if (length + expansion.length > maxLength)
|
||||
return out;
|
||||
out.push(expansion);
|
||||
length += expansion.length;
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
function expandSequence(body2, isAlphaSequence, max, maxLength) {
|
||||
const n = body2.split(/\.\./);
|
||||
const N = [];
|
||||
if (n[0] === void 0 || n[1] === void 0) {
|
||||
return N;
|
||||
}
|
||||
const x = numeric(n[0]);
|
||||
const y = numeric(n[1]);
|
||||
const width = Math.max(n[0].length, n[1].length);
|
||||
let incr = n.length === 3 && n[2] !== void 0 ? Math.max(Math.abs(numeric(n[2])), 1) : 1;
|
||||
let test = lte;
|
||||
const reverse = y < x;
|
||||
if (reverse) {
|
||||
incr *= -1;
|
||||
test = gte;
|
||||
}
|
||||
const pad = n.some(isPadded);
|
||||
let length = 0;
|
||||
for (let i = x; test(i, y) && N.length < max; i += incr) {
|
||||
let c;
|
||||
if (isAlphaSequence) {
|
||||
c = String.fromCharCode(i);
|
||||
if (c === "\\") {
|
||||
c = "";
|
||||
}
|
||||
} else {
|
||||
c = String(i);
|
||||
if (pad) {
|
||||
const need = width - c.length;
|
||||
if (need > 0) {
|
||||
const z = new Array(need + 1).join("0");
|
||||
if (i < 0) {
|
||||
c = "-" + z + c.slice(1);
|
||||
} else {
|
||||
c = z + c;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (length + c.length > maxLength)
|
||||
break;
|
||||
N.push(c);
|
||||
length += c.length;
|
||||
}
|
||||
return N;
|
||||
}
|
||||
function expand_(str, max, maxLength, isTop) {
|
||||
let acc = [""];
|
||||
let dropEmpties = false;
|
||||
let firstGroup = true;
|
||||
for (; ; ) {
|
||||
const m = balanced("{", "}", str);
|
||||
if (!m) {
|
||||
return combine(acc, str, [""], max, maxLength, dropEmpties);
|
||||
}
|
||||
const pre = m.pre;
|
||||
if (/\$$/.test(pre)) {
|
||||
acc = combine(acc, pre + "{" + m.body + "}", [""], max, maxLength, dropEmpties && !m.post.length);
|
||||
firstGroup = false;
|
||||
if (!m.post.length)
|
||||
break;
|
||||
str = m.post;
|
||||
continue;
|
||||
}
|
||||
const isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
|
||||
const isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
|
||||
const isSequence = isNumericSequence || isAlphaSequence;
|
||||
const isOptions = m.body.indexOf(",") >= 0;
|
||||
if (!isSequence && !isOptions) {
|
||||
if (m.post.match(/,(?!,).*\}/)) {
|
||||
str = m.pre + "{" + m.body + escClose + m.post;
|
||||
isTop = true;
|
||||
continue;
|
||||
}
|
||||
return combine(acc, pre + "{" + m.body + "}" + m.post, [""], max, maxLength, dropEmpties);
|
||||
}
|
||||
if (firstGroup) {
|
||||
dropEmpties = isTop && !isSequence;
|
||||
firstGroup = false;
|
||||
}
|
||||
let values;
|
||||
if (isSequence) {
|
||||
values = expandSequence(m.body, isAlphaSequence, max, maxLength);
|
||||
} else {
|
||||
let n = parseCommaParts(m.body);
|
||||
if (n.length === 1 && n[0] !== void 0) {
|
||||
n = expand_(n[0], max, maxLength, false).map(embrace);
|
||||
if (n.length === 1) {
|
||||
acc = combine(acc, pre + n[0], [""], max, maxLength, dropEmpties && !m.post.length);
|
||||
if (!m.post.length)
|
||||
break;
|
||||
str = m.post;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
let dropsEmpties = dropEmpties && !m.post.length && !pre;
|
||||
for (let d = 0; dropsEmpties && d < acc.length; d++) {
|
||||
if (acc[d]) {
|
||||
dropsEmpties = false;
|
||||
}
|
||||
}
|
||||
values = [];
|
||||
let valuesLength = 0;
|
||||
outer: for (let j = 0; j < n.length; j++) {
|
||||
const expanded = expand_(n[j], max, maxLength, false);
|
||||
for (let k = 0; k < expanded.length; k++) {
|
||||
const v = expanded[k];
|
||||
if (dropsEmpties && !v)
|
||||
continue;
|
||||
if (values.length >= max || valuesLength + v.length > maxLength) {
|
||||
break outer;
|
||||
}
|
||||
values.push(v);
|
||||
valuesLength += v.length;
|
||||
}
|
||||
}
|
||||
}
|
||||
acc = combine(acc, pre, values, max, maxLength, dropEmpties && !m.post.length);
|
||||
if (!m.post.length)
|
||||
break;
|
||||
str = m.post;
|
||||
}
|
||||
return acc;
|
||||
}
|
||||
|
||||
// node_modules/@actions/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.js
|
||||
var MAX_PATTERN_LENGTH = 1024 * 64;
|
||||
var assertValidPattern = (pattern) => {
|
||||
if (typeof pattern !== "string") {
|
||||
throw new TypeError("invalid pattern");
|
||||
}
|
||||
if (pattern.length > MAX_PATTERN_LENGTH) {
|
||||
throw new TypeError("pattern is too long");
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/@actions/glob/node_modules/minimatch/dist/esm/brace-expressions.js
|
||||
var posixClasses = {
|
||||
"[:alnum:]": ["\\p{L}\\p{Nl}\\p{Nd}", true],
|
||||
"[:alpha:]": ["\\p{L}\\p{Nl}", true],
|
||||
"[:ascii:]": ["\\x00-\\x7f", false],
|
||||
"[:blank:]": ["\\p{Zs}\\t", true],
|
||||
"[:cntrl:]": ["\\p{Cc}", true],
|
||||
"[:digit:]": ["\\p{Nd}", true],
|
||||
"[:graph:]": ["\\p{Z}\\p{C}", true, true],
|
||||
"[:lower:]": ["\\p{Ll}", true],
|
||||
"[:print:]": ["\\p{C}", true],
|
||||
"[:punct:]": ["\\p{P}", true],
|
||||
"[:space:]": ["\\p{Z}\\t\\r\\n\\v\\f", true],
|
||||
"[:upper:]": ["\\p{Lu}", true],
|
||||
"[:word:]": ["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}", true],
|
||||
"[:xdigit:]": ["A-Fa-f0-9", false]
|
||||
};
|
||||
var braceEscape = (s) => s.replace(/[[\]\\-]/g, "\\$&");
|
||||
var regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||||
var rangesToString = (ranges) => ranges.join("");
|
||||
var parseClass = (glob, position) => {
|
||||
const pos = position;
|
||||
if (glob.charAt(pos) !== "[") {
|
||||
throw new Error("not in a brace expression");
|
||||
}
|
||||
const ranges = [];
|
||||
const negs = [];
|
||||
let i = pos + 1;
|
||||
let sawStart = false;
|
||||
let uflag = false;
|
||||
let escaping = false;
|
||||
let negate = false;
|
||||
let endPos = pos;
|
||||
let rangeStart = "";
|
||||
WHILE: while (i < glob.length) {
|
||||
const c = glob.charAt(i);
|
||||
if ((c === "!" || c === "^") && i === pos + 1) {
|
||||
negate = true;
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
if (c === "]" && sawStart && !escaping) {
|
||||
endPos = i + 1;
|
||||
break;
|
||||
}
|
||||
sawStart = true;
|
||||
if (c === "\\") {
|
||||
if (!escaping) {
|
||||
escaping = true;
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (c === "[" && !escaping) {
|
||||
for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {
|
||||
if (glob.startsWith(cls, i)) {
|
||||
if (rangeStart) {
|
||||
return ["$.", false, glob.length - pos, true];
|
||||
}
|
||||
i += cls.length;
|
||||
if (neg)
|
||||
negs.push(unip);
|
||||
else
|
||||
ranges.push(unip);
|
||||
uflag = uflag || u;
|
||||
continue WHILE;
|
||||
}
|
||||
}
|
||||
}
|
||||
escaping = false;
|
||||
if (rangeStart) {
|
||||
if (c > rangeStart) {
|
||||
ranges.push(braceEscape(rangeStart) + "-" + braceEscape(c));
|
||||
} else if (c === rangeStart) {
|
||||
ranges.push(braceEscape(c));
|
||||
}
|
||||
rangeStart = "";
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
if (glob.startsWith("-]", i + 1)) {
|
||||
ranges.push(braceEscape(c + "-"));
|
||||
i += 2;
|
||||
continue;
|
||||
}
|
||||
if (glob.startsWith("-", i + 1)) {
|
||||
rangeStart = c;
|
||||
i += 2;
|
||||
continue;
|
||||
}
|
||||
ranges.push(braceEscape(c));
|
||||
i++;
|
||||
}
|
||||
if (endPos < i) {
|
||||
return ["", false, 0, false];
|
||||
}
|
||||
if (!ranges.length && !negs.length) {
|
||||
return ["$.", false, glob.length - pos, true];
|
||||
}
|
||||
if (negs.length === 0 && ranges.length === 1 && /^\\?.$/.test(ranges[0]) && !negate) {
|
||||
const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];
|
||||
return [regexpEscape(r), false, endPos - pos, false];
|
||||
}
|
||||
const sranges = "[" + (negate ? "^" : "") + rangesToString(ranges) + "]";
|
||||
const snegs = "[" + (negate ? "" : "^") + rangesToString(negs) + "]";
|
||||
const comb = ranges.length && negs.length ? "(" + sranges + "|" + snegs + ")" : ranges.length ? sranges : snegs;
|
||||
return [comb, uflag, endPos - pos, true];
|
||||
};
|
||||
|
||||
// node_modules/@actions/glob/node_modules/minimatch/dist/esm/unescape.js
|
||||
var unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true } = {}) => {
|
||||
if (magicalBraces) {
|
||||
return windowsPathsNoEscape ? s.replace(/\[([^/\\])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^/\\])\]/g, "$1$2").replace(/\\([^/])/g, "$1");
|
||||
}
|
||||
return windowsPathsNoEscape ? s.replace(/\[([^/\\{}])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^/\\{}])\]/g, "$1$2").replace(/\\([^/{}])/g, "$1");
|
||||
};
|
||||
|
||||
// node_modules/@actions/glob/node_modules/minimatch/dist/esm/ast.js
|
||||
var _a;
|
||||
var types = /* @__PURE__ */ new Set(["!", "?", "+", "*", "@"]);
|
||||
var isExtglobType = (c) => types.has(c);
|
||||
var isExtglobAST = (c) => isExtglobType(c.type);
|
||||
var adoptionMap = /* @__PURE__ */ new Map([
|
||||
["!", ["@"]],
|
||||
["?", ["?", "@"]],
|
||||
["@", ["@"]],
|
||||
["*", ["*", "+", "?", "@"]],
|
||||
["+", ["+", "@"]]
|
||||
]);
|
||||
var adoptionWithSpaceMap = /* @__PURE__ */ new Map([
|
||||
["!", ["?"]],
|
||||
["@", ["?"]],
|
||||
["+", ["?", "*"]]
|
||||
]);
|
||||
var adoptionAnyMap = /* @__PURE__ */ new Map([
|
||||
["!", ["?", "@"]],
|
||||
["?", ["?", "@"]],
|
||||
["@", ["?", "@"]],
|
||||
["*", ["*", "+", "?", "@"]],
|
||||
["+", ["+", "@", "?", "*"]]
|
||||
]);
|
||||
var usurpMap = /* @__PURE__ */ new Map([
|
||||
["!", /* @__PURE__ */ new Map([["!", "@"]])],
|
||||
[
|
||||
"?",
|
||||
/* @__PURE__ */ new Map([
|
||||
["*", "*"],
|
||||
["+", "*"]
|
||||
])
|
||||
],
|
||||
[
|
||||
"@",
|
||||
/* @__PURE__ */ new Map([
|
||||
["!", "!"],
|
||||
["?", "?"],
|
||||
["@", "@"],
|
||||
["*", "*"],
|
||||
["+", "+"]
|
||||
])
|
||||
],
|
||||
[
|
||||
"+",
|
||||
/* @__PURE__ */ new Map([
|
||||
["?", "*"],
|
||||
["*", "*"]
|
||||
])
|
||||
]
|
||||
]);
|
||||
var startNoTraversal = "(?!(?:^|/)\\.\\.?(?:$|/))";
|
||||
var startNoDot = "(?!\\.)";
|
||||
var addPatternStart = /* @__PURE__ */ new Set(["[", "."]);
|
||||
var justDots = /* @__PURE__ */ new Set(["..", "."]);
|
||||
var reSpecials = new Set("().*{}+?[]^$\\!");
|
||||
var regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||||
var qmark = "[^/]";
|
||||
var star = qmark + "*?";
|
||||
var starNoEmpty = qmark + "+?";
|
||||
var ID = 0;
|
||||
var AST = class {
|
||||
type;
|
||||
#root;
|
||||
#hasMagic;
|
||||
#uflag = false;
|
||||
#parts = [];
|
||||
#parent;
|
||||
#parentIndex;
|
||||
#negs;
|
||||
#filledNegs = false;
|
||||
#options;
|
||||
#toString;
|
||||
// set to true if it's an extglob with no children
|
||||
// (which really means one child of '')
|
||||
#emptyExt = false;
|
||||
id = ++ID;
|
||||
get depth() {
|
||||
return (this.#parent?.depth ?? -1) + 1;
|
||||
}
|
||||
[/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")]() {
|
||||
return {
|
||||
"@@type": "AST",
|
||||
id: this.id,
|
||||
type: this.type,
|
||||
root: this.#root.id,
|
||||
parent: this.#parent?.id,
|
||||
depth: this.depth,
|
||||
partsLength: this.#parts.length,
|
||||
parts: this.#parts
|
||||
};
|
||||
}
|
||||
constructor(type, parent, options = {}) {
|
||||
this.type = type;
|
||||
if (type)
|
||||
this.#hasMagic = true;
|
||||
this.#parent = parent;
|
||||
this.#root = this.#parent ? this.#parent.#root : this;
|
||||
this.#options = this.#root === this ? options : this.#root.#options;
|
||||
this.#negs = this.#root === this ? [] : this.#root.#negs;
|
||||
if (type === "!" && !this.#root.#filledNegs)
|
||||
this.#negs.push(this);
|
||||
this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;
|
||||
}
|
||||
get hasMagic() {
|
||||
if (this.#hasMagic !== void 0)
|
||||
return this.#hasMagic;
|
||||
for (const p of this.#parts) {
|
||||
if (typeof p === "string")
|
||||
continue;
|
||||
if (p.type || p.hasMagic)
|
||||
return this.#hasMagic = true;
|
||||
}
|
||||
return this.#hasMagic;
|
||||
}
|
||||
// reconstructs the pattern
|
||||
toString() {
|
||||
return this.#toString !== void 0 ? this.#toString : !this.type ? this.#toString = this.#parts.map((p) => String(p)).join("") : this.#toString = this.type + "(" + this.#parts.map((p) => String(p)).join("|") + ")";
|
||||
}
|
||||
#fillNegs() {
|
||||
if (this !== this.#root)
|
||||
throw new Error("should only call on root");
|
||||
if (this.#filledNegs)
|
||||
return this;
|
||||
this.toString();
|
||||
this.#filledNegs = true;
|
||||
let n;
|
||||
while (n = this.#negs.pop()) {
|
||||
if (n.type !== "!")
|
||||
continue;
|
||||
let p = n;
|
||||
let pp = p.#parent;
|
||||
while (pp) {
|
||||
for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {
|
||||
for (const part of n.#parts) {
|
||||
if (typeof part === "string") {
|
||||
throw new Error("string part in extglob AST??");
|
||||
}
|
||||
part.copyIn(pp.#parts[i]);
|
||||
}
|
||||
}
|
||||
p = pp;
|
||||
pp = p.#parent;
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
push(...parts) {
|
||||
for (const p of parts) {
|
||||
if (p === "")
|
||||
continue;
|
||||
if (typeof p !== "string" && !(p instanceof _a && p.#parent === this)) {
|
||||
throw new Error("invalid part: " + p);
|
||||
}
|
||||
this.#parts.push(p);
|
||||
}
|
||||
}
|
||||
toJSON() {
|
||||
const ret = this.type === null ? this.#parts.slice().map((p) => typeof p === "string" ? p : p.toJSON()) : [this.type, ...this.#parts.map((p) => p.toJSON())];
|
||||
if (this.isStart() && !this.type)
|
||||
ret.unshift([]);
|
||||
if (this.isEnd() && (this === this.#root || this.#root.#filledNegs && this.#parent?.type === "!")) {
|
||||
ret.push({});
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
isStart() {
|
||||
if (this.#root === this)
|
||||
return true;
|
||||
if (!this.#parent?.isStart())
|
||||
return false;
|
||||
if (this.#parentIndex === 0)
|
||||
return true;
|
||||
const p = this.#parent;
|
||||
for (let i = 0; i < this.#parentIndex; i++) {
|
||||
const pp = p.#parts[i];
|
||||
if (!(pp instanceof _a && pp.type === "!")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
isEnd() {
|
||||
if (this.#root === this)
|
||||
return true;
|
||||
if (this.#parent?.type === "!")
|
||||
return true;
|
||||
if (!this.#parent?.isEnd())
|
||||
return false;
|
||||
if (!this.type)
|
||||
return this.#parent?.isEnd();
|
||||
const pl = this.#parent ? this.#parent.#parts.length : 0;
|
||||
return this.#parentIndex === pl - 1;
|
||||
}
|
||||
copyIn(part) {
|
||||
if (typeof part === "string")
|
||||
this.push(part);
|
||||
else
|
||||
this.push(part.clone(this));
|
||||
}
|
||||
clone(parent) {
|
||||
const c = new _a(this.type, parent);
|
||||
for (const p of this.#parts) {
|
||||
c.copyIn(p);
|
||||
}
|
||||
return c;
|
||||
}
|
||||
static #parseAST(str, ast, pos, opt, extDepth) {
|
||||
const maxDepth = opt.maxExtglobRecursion ?? 2;
|
||||
let escaping = false;
|
||||
let inBrace = false;
|
||||
let braceStart = -1;
|
||||
let braceNeg = false;
|
||||
if (ast.type === null) {
|
||||
let i2 = pos;
|
||||
let acc2 = "";
|
||||
while (i2 < str.length) {
|
||||
const c = str.charAt(i2++);
|
||||
if (escaping || c === "\\") {
|
||||
escaping = !escaping;
|
||||
acc2 += c;
|
||||
continue;
|
||||
}
|
||||
if (inBrace) {
|
||||
if (i2 === braceStart + 1) {
|
||||
if (c === "^" || c === "!") {
|
||||
braceNeg = true;
|
||||
}
|
||||
} else if (c === "]" && !(i2 === braceStart + 2 && braceNeg)) {
|
||||
inBrace = false;
|
||||
}
|
||||
acc2 += c;
|
||||
continue;
|
||||
} else if (c === "[") {
|
||||
inBrace = true;
|
||||
braceStart = i2;
|
||||
braceNeg = false;
|
||||
acc2 += c;
|
||||
continue;
|
||||
}
|
||||
const doRecurse = !opt.noext && isExtglobType(c) && str.charAt(i2) === "(" && extDepth <= maxDepth;
|
||||
if (doRecurse) {
|
||||
ast.push(acc2);
|
||||
acc2 = "";
|
||||
const ext2 = new _a(c, ast);
|
||||
i2 = _a.#parseAST(str, ext2, i2, opt, extDepth + 1);
|
||||
ast.push(ext2);
|
||||
continue;
|
||||
}
|
||||
acc2 += c;
|
||||
}
|
||||
ast.push(acc2);
|
||||
return i2;
|
||||
}
|
||||
let i = pos + 1;
|
||||
let part = new _a(null, ast);
|
||||
const parts = [];
|
||||
let acc = "";
|
||||
while (i < str.length) {
|
||||
const c = str.charAt(i++);
|
||||
if (escaping || c === "\\") {
|
||||
escaping = !escaping;
|
||||
acc += c;
|
||||
continue;
|
||||
}
|
||||
if (inBrace) {
|
||||
if (i === braceStart + 1) {
|
||||
if (c === "^" || c === "!") {
|
||||
braceNeg = true;
|
||||
}
|
||||
} else if (c === "]" && !(i === braceStart + 2 && braceNeg)) {
|
||||
inBrace = false;
|
||||
}
|
||||
acc += c;
|
||||
continue;
|
||||
} else if (c === "[") {
|
||||
inBrace = true;
|
||||
braceStart = i;
|
||||
braceNeg = false;
|
||||
acc += c;
|
||||
continue;
|
||||
}
|
||||
const doRecurse = !opt.noext && isExtglobType(c) && str.charAt(i) === "(" && /* c8 ignore start - the maxDepth is sufficient here */
|
||||
(extDepth <= maxDepth || ast && ast.#canAdoptType(c));
|
||||
if (doRecurse) {
|
||||
const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;
|
||||
part.push(acc);
|
||||
acc = "";
|
||||
const ext2 = new _a(c, part);
|
||||
part.push(ext2);
|
||||
i = _a.#parseAST(str, ext2, i, opt, extDepth + depthAdd);
|
||||
continue;
|
||||
}
|
||||
if (c === "|") {
|
||||
part.push(acc);
|
||||
acc = "";
|
||||
parts.push(part);
|
||||
part = new _a(null, ast);
|
||||
continue;
|
||||
}
|
||||
if (c === ")") {
|
||||
if (acc === "" && ast.#parts.length === 0) {
|
||||
ast.#emptyExt = true;
|
||||
}
|
||||
part.push(acc);
|
||||
acc = "";
|
||||
ast.push(...parts, part);
|
||||
return i;
|
||||
}
|
||||
acc += c;
|
||||
}
|
||||
ast.type = null;
|
||||
ast.#hasMagic = void 0;
|
||||
ast.#parts = [str.substring(pos - 1)];
|
||||
return i;
|
||||
}
|
||||
#canAdoptWithSpace(child2) {
|
||||
return this.#canAdopt(child2, adoptionWithSpaceMap);
|
||||
}
|
||||
#canAdopt(child2, map = adoptionMap) {
|
||||
if (!child2 || typeof child2 !== "object" || child2.type !== null || child2.#parts.length !== 1 || this.type === null) {
|
||||
return false;
|
||||
}
|
||||
const gc = child2.#parts[0];
|
||||
if (!gc || typeof gc !== "object" || gc.type === null) {
|
||||
return false;
|
||||
}
|
||||
return this.#canAdoptType(gc.type, map);
|
||||
}
|
||||
#canAdoptType(c, map = adoptionAnyMap) {
|
||||
return !!map.get(this.type)?.includes(c);
|
||||
}
|
||||
#adoptWithSpace(child2, index) {
|
||||
const gc = child2.#parts[0];
|
||||
const blank = new _a(null, gc, this.options);
|
||||
blank.#parts.push("");
|
||||
gc.push(blank);
|
||||
this.#adopt(child2, index);
|
||||
}
|
||||
#adopt(child2, index) {
|
||||
const gc = child2.#parts[0];
|
||||
this.#parts.splice(index, 1, ...gc.#parts);
|
||||
for (const p of gc.#parts) {
|
||||
if (typeof p === "object")
|
||||
p.#parent = this;
|
||||
}
|
||||
this.#toString = void 0;
|
||||
}
|
||||
#canUsurpType(c) {
|
||||
const m = usurpMap.get(this.type);
|
||||
return !!m?.has(c);
|
||||
}
|
||||
#canUsurp(child2) {
|
||||
if (!child2 || typeof child2 !== "object" || child2.type !== null || child2.#parts.length !== 1 || this.type === null || this.#parts.length !== 1) {
|
||||
return false;
|
||||
}
|
||||
const gc = child2.#parts[0];
|
||||
if (!gc || typeof gc !== "object" || gc.type === null) {
|
||||
return false;
|
||||
}
|
||||
return this.#canUsurpType(gc.type);
|
||||
}
|
||||
#usurp(child2) {
|
||||
const m = usurpMap.get(this.type);
|
||||
const gc = child2.#parts[0];
|
||||
const nt = m?.get(gc.type);
|
||||
if (!nt)
|
||||
return false;
|
||||
this.#parts = gc.#parts;
|
||||
for (const p of this.#parts) {
|
||||
if (typeof p === "object") {
|
||||
p.#parent = this;
|
||||
}
|
||||
}
|
||||
this.type = nt;
|
||||
this.#toString = void 0;
|
||||
this.#emptyExt = false;
|
||||
}
|
||||
static fromGlob(pattern, options = {}) {
|
||||
const ast = new _a(null, void 0, options);
|
||||
_a.#parseAST(pattern, ast, 0, options, 0);
|
||||
return ast;
|
||||
}
|
||||
// returns the regular expression if there's magic, or the unescaped
|
||||
// string if not.
|
||||
toMMPattern() {
|
||||
if (this !== this.#root)
|
||||
return this.#root.toMMPattern();
|
||||
const glob = this.toString();
|
||||
const [re, body2, hasMagic, uflag] = this.toRegExpSource();
|
||||
const anyMagic = hasMagic || this.#hasMagic || this.#options.nocase && !this.#options.nocaseMagicOnly && glob.toUpperCase() !== glob.toLowerCase();
|
||||
if (!anyMagic) {
|
||||
return body2;
|
||||
}
|
||||
const flags = (this.#options.nocase ? "i" : "") + (uflag ? "u" : "");
|
||||
return Object.assign(new RegExp(`^${re}$`, flags), {
|
||||
_src: re,
|
||||
_glob: glob
|
||||
});
|
||||
}
|
||||
get options() {
|
||||
return this.#options;
|
||||
}
|
||||
// returns the string match, the regexp source, whether there's magic
|
||||
// in the regexp (so a regular expression is required) and whether or
|
||||
// not the uflag is needed for the regular expression (for posix classes)
|
||||
// TODO: instead of injecting the start/end at this point, just return
|
||||
// the BODY of the regexp, along with the start/end portions suitable
|
||||
// for binding the start/end in either a joined full-path makeRe context
|
||||
// (where we bind to (^|/), or a standalone matchPart context (where
|
||||
// we bind to ^, and not /). Otherwise slashes get duped!
|
||||
//
|
||||
// In part-matching mode, the start is:
|
||||
// - if not isStart: nothing
|
||||
// - if traversal possible, but not allowed: ^(?!\.\.?$)
|
||||
// - if dots allowed or not possible: ^
|
||||
// - if dots possible and not allowed: ^(?!\.)
|
||||
// end is:
|
||||
// - if not isEnd(): nothing
|
||||
// - else: $
|
||||
//
|
||||
// In full-path matching mode, we put the slash at the START of the
|
||||
// pattern, so start is:
|
||||
// - if first pattern: same as part-matching mode
|
||||
// - if not isStart(): nothing
|
||||
// - if traversal possible, but not allowed: /(?!\.\.?(?:$|/))
|
||||
// - if dots allowed or not possible: /
|
||||
// - if dots possible and not allowed: /(?!\.)
|
||||
// end is:
|
||||
// - if last pattern, same as part-matching mode
|
||||
// - else nothing
|
||||
//
|
||||
// Always put the (?:$|/) on negated tails, though, because that has to be
|
||||
// there to bind the end of the negated pattern portion, and it's easier to
|
||||
// just stick it in now rather than try to inject it later in the middle of
|
||||
// the pattern.
|
||||
//
|
||||
// We can just always return the same end, and leave it up to the caller
|
||||
// to know whether it's going to be used joined or in parts.
|
||||
// And, if the start is adjusted slightly, can do the same there:
|
||||
// - if not isStart: nothing
|
||||
// - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$)
|
||||
// - if dots allowed or not possible: (?:/|^)
|
||||
// - if dots possible and not allowed: (?:/|^)(?!\.)
|
||||
//
|
||||
// But it's better to have a simpler binding without a conditional, for
|
||||
// performance, so probably better to return both start options.
|
||||
//
|
||||
// Then the caller just ignores the end if it's not the first pattern,
|
||||
// and the start always gets applied.
|
||||
//
|
||||
// But that's always going to be $ if it's the ending pattern, or nothing,
|
||||
// so the caller can just attach $ at the end of the pattern when building.
|
||||
//
|
||||
// So the todo is:
|
||||
// - better detect what kind of start is needed
|
||||
// - return both flavors of starting pattern
|
||||
// - attach $ at the end of the pattern when creating the actual RegExp
|
||||
//
|
||||
// Ah, but wait, no, that all only applies to the root when the first pattern
|
||||
// is not an extglob. If the first pattern IS an extglob, then we need all
|
||||
// that dot prevention biz to live in the extglob portions, because eg
|
||||
// +(*|.x*) can match .xy but not .yx.
|
||||
//
|
||||
// So, return the two flavors if it's #root and the first child is not an
|
||||
// AST, otherwise leave it to the child AST to handle it, and there,
|
||||
// use the (?:^|/) style of start binding.
|
||||
//
|
||||
// Even simplified further:
|
||||
// - Since the start for a join is eg /(?!\.) and the start for a part
|
||||
// is ^(?!\.), we can just prepend (?!\.) to the pattern (either root
|
||||
// or start or whatever) and prepend ^ or / at the Regexp construction.
|
||||
toRegExpSource(allowDot) {
|
||||
const dot = allowDot ?? !!this.#options.dot;
|
||||
if (this.#root === this) {
|
||||
this.#flatten();
|
||||
this.#fillNegs();
|
||||
}
|
||||
if (!isExtglobAST(this)) {
|
||||
const noEmpty = this.isStart() && this.isEnd() && !this.#parts.some((s) => typeof s !== "string");
|
||||
const src = this.#parts.map((p) => {
|
||||
const [re, _, hasMagic, uflag] = typeof p === "string" ? _a.#parseGlob(p, this.#hasMagic, noEmpty) : p.toRegExpSource(allowDot);
|
||||
this.#hasMagic = this.#hasMagic || hasMagic;
|
||||
this.#uflag = this.#uflag || uflag;
|
||||
return re;
|
||||
}).join("");
|
||||
let start2 = "";
|
||||
if (this.isStart()) {
|
||||
if (typeof this.#parts[0] === "string") {
|
||||
const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);
|
||||
if (!dotTravAllowed) {
|
||||
const aps = addPatternStart;
|
||||
const needNoTrav = (
|
||||
// dots are allowed, and the pattern starts with [ or .
|
||||
dot && aps.has(src.charAt(0)) || // the pattern starts with \., and then [ or .
|
||||
src.startsWith("\\.") && aps.has(src.charAt(2)) || // the pattern starts with \.\., and then [ or .
|
||||
src.startsWith("\\.\\.") && aps.has(src.charAt(4))
|
||||
);
|
||||
const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
|
||||
start2 = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : "";
|
||||
}
|
||||
}
|
||||
}
|
||||
let end = "";
|
||||
if (this.isEnd() && this.#root.#filledNegs && this.#parent?.type === "!") {
|
||||
end = "(?:$|\\/)";
|
||||
}
|
||||
const final2 = start2 + src + end;
|
||||
return [
|
||||
final2,
|
||||
unescape(src),
|
||||
this.#hasMagic = !!this.#hasMagic,
|
||||
this.#uflag
|
||||
];
|
||||
}
|
||||
const repeated = this.type === "*" || this.type === "+";
|
||||
const start = this.type === "!" ? "(?:(?!(?:" : "(?:";
|
||||
let body2 = this.#partsToRegExp(dot);
|
||||
if (this.isStart() && this.isEnd() && !body2 && this.type !== "!") {
|
||||
const s = this.toString();
|
||||
const me = this;
|
||||
me.#parts = [s];
|
||||
me.type = null;
|
||||
me.#hasMagic = void 0;
|
||||
return [s, unescape(this.toString()), false, false];
|
||||
}
|
||||
let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? "" : this.#partsToRegExp(true);
|
||||
if (bodyDotAllowed === body2) {
|
||||
bodyDotAllowed = "";
|
||||
}
|
||||
if (bodyDotAllowed) {
|
||||
body2 = `(?:${body2})(?:${bodyDotAllowed})*?`;
|
||||
}
|
||||
let final = "";
|
||||
if (this.type === "!" && this.#emptyExt) {
|
||||
final = (this.isStart() && !dot ? startNoDot : "") + starNoEmpty;
|
||||
} else {
|
||||
const close = this.type === "!" ? (
|
||||
// !() must match something,but !(x) can match ''
|
||||
"))" + (this.isStart() && !dot && !allowDot ? startNoDot : "") + star + ")"
|
||||
) : this.type === "@" ? ")" : this.type === "?" ? ")?" : this.type === "+" && bodyDotAllowed ? ")" : this.type === "*" && bodyDotAllowed ? `)?` : `)${this.type}`;
|
||||
final = start + body2 + close;
|
||||
}
|
||||
return [
|
||||
final,
|
||||
unescape(body2),
|
||||
this.#hasMagic = !!this.#hasMagic,
|
||||
this.#uflag
|
||||
];
|
||||
}
|
||||
#flatten() {
|
||||
if (!isExtglobAST(this)) {
|
||||
for (const p of this.#parts) {
|
||||
if (typeof p === "object") {
|
||||
p.#flatten();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let iterations = 0;
|
||||
let done = false;
|
||||
do {
|
||||
done = true;
|
||||
for (let i = 0; i < this.#parts.length; i++) {
|
||||
const c = this.#parts[i];
|
||||
if (typeof c === "object") {
|
||||
c.#flatten();
|
||||
if (this.#canAdopt(c)) {
|
||||
done = false;
|
||||
this.#adopt(c, i);
|
||||
} else if (this.#canAdoptWithSpace(c)) {
|
||||
done = false;
|
||||
this.#adoptWithSpace(c, i);
|
||||
} else if (this.#canUsurp(c)) {
|
||||
done = false;
|
||||
this.#usurp(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (!done && ++iterations < 10);
|
||||
}
|
||||
this.#toString = void 0;
|
||||
}
|
||||
#partsToRegExp(dot) {
|
||||
return this.#parts.map((p) => {
|
||||
if (typeof p === "string") {
|
||||
throw new Error("string type in extglob ast??");
|
||||
}
|
||||
const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);
|
||||
this.#uflag = this.#uflag || uflag;
|
||||
return re;
|
||||
}).filter((p) => !(this.isStart() && this.isEnd()) || !!p).join("|");
|
||||
}
|
||||
static #parseGlob(glob, hasMagic, noEmpty = false) {
|
||||
let escaping = false;
|
||||
let re = "";
|
||||
let uflag = false;
|
||||
let inStar = false;
|
||||
for (let i = 0; i < glob.length; i++) {
|
||||
const c = glob.charAt(i);
|
||||
if (escaping) {
|
||||
escaping = false;
|
||||
re += (reSpecials.has(c) ? "\\" : "") + c;
|
||||
continue;
|
||||
}
|
||||
if (c === "*") {
|
||||
if (inStar)
|
||||
continue;
|
||||
inStar = true;
|
||||
re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;
|
||||
hasMagic = true;
|
||||
continue;
|
||||
} else {
|
||||
inStar = false;
|
||||
}
|
||||
if (c === "\\") {
|
||||
if (i === glob.length - 1) {
|
||||
re += "\\\\";
|
||||
} else {
|
||||
escaping = true;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (c === "[") {
|
||||
const [src, needUflag, consumed, magic] = parseClass(glob, i);
|
||||
if (consumed) {
|
||||
re += src;
|
||||
uflag = uflag || needUflag;
|
||||
i += consumed - 1;
|
||||
hasMagic = hasMagic || magic;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (c === "?") {
|
||||
re += qmark;
|
||||
hasMagic = true;
|
||||
continue;
|
||||
}
|
||||
re += regExpEscape(c);
|
||||
}
|
||||
return [re, unescape(glob), !!hasMagic, uflag];
|
||||
}
|
||||
};
|
||||
_a = AST;
|
||||
|
||||
// node_modules/@actions/glob/node_modules/minimatch/dist/esm/escape.js
|
||||
var escape2 = (s, { windowsPathsNoEscape = false, magicalBraces = false } = {}) => {
|
||||
if (magicalBraces) {
|
||||
return windowsPathsNoEscape ? s.replace(/[?*()[\]{}]/g, "[$&]") : s.replace(/[?*()[\]\\{}]/g, "\\$&");
|
||||
}
|
||||
return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, "[$&]") : s.replace(/[?*()[\]\\]/g, "\\$&");
|
||||
};
|
||||
|
||||
// node_modules/@actions/glob/node_modules/minimatch/dist/esm/index.js
|
||||
var minimatch2 = (p, pattern, options = {}) => {
|
||||
assertValidPattern(pattern);
|
||||
if (!options.nocomment && pattern.charAt(0) === "#") {
|
||||
return false;
|
||||
}
|
||||
return new Minimatch2(pattern, options).match(p);
|
||||
};
|
||||
var starDotExtRE = /^\*+([^+@!?*[(]*)$/;
|
||||
var starDotExtTest = (ext2) => (f) => !f.startsWith(".") && f.endsWith(ext2);
|
||||
var starDotExtTestDot = (ext2) => (f) => f.endsWith(ext2);
|
||||
var starDotExtTestNocase = (ext2) => {
|
||||
ext2 = ext2.toLowerCase();
|
||||
return (f) => !f.startsWith(".") && f.toLowerCase().endsWith(ext2);
|
||||
};
|
||||
var starDotExtTestNocaseDot = (ext2) => {
|
||||
ext2 = ext2.toLowerCase();
|
||||
return (f) => f.toLowerCase().endsWith(ext2);
|
||||
};
|
||||
var starDotStarRE = /^\*+\.\*+$/;
|
||||
var starDotStarTest = (f) => !f.startsWith(".") && f.includes(".");
|
||||
var starDotStarTestDot = (f) => f !== "." && f !== ".." && f.includes(".");
|
||||
var dotStarRE = /^\.\*+$/;
|
||||
var dotStarTest = (f) => f !== "." && f !== ".." && f.startsWith(".");
|
||||
var starRE = /^\*+$/;
|
||||
var starTest = (f) => f.length !== 0 && !f.startsWith(".");
|
||||
var starTestDot = (f) => f.length !== 0 && f !== "." && f !== "..";
|
||||
var qmarksRE = /^\?+([^+@!?*[(]*)?$/;
|
||||
var qmarksTestNocase = ([$0, ext2 = ""]) => {
|
||||
const noext = qmarksTestNoExt([$0]);
|
||||
if (!ext2)
|
||||
return noext;
|
||||
ext2 = ext2.toLowerCase();
|
||||
return (f) => noext(f) && f.toLowerCase().endsWith(ext2);
|
||||
};
|
||||
var qmarksTestNocaseDot = ([$0, ext2 = ""]) => {
|
||||
const noext = qmarksTestNoExtDot([$0]);
|
||||
if (!ext2)
|
||||
return noext;
|
||||
ext2 = ext2.toLowerCase();
|
||||
return (f) => noext(f) && f.toLowerCase().endsWith(ext2);
|
||||
};
|
||||
var qmarksTestDot = ([$0, ext2 = ""]) => {
|
||||
const noext = qmarksTestNoExtDot([$0]);
|
||||
return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2);
|
||||
};
|
||||
var qmarksTest = ([$0, ext2 = ""]) => {
|
||||
const noext = qmarksTestNoExt([$0]);
|
||||
return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2);
|
||||
};
|
||||
var qmarksTestNoExt = ([$0]) => {
|
||||
const len = $0.length;
|
||||
return (f) => f.length === len && !f.startsWith(".");
|
||||
};
|
||||
var qmarksTestNoExtDot = ([$0]) => {
|
||||
const len = $0.length;
|
||||
return (f) => f.length === len && f !== "." && f !== "..";
|
||||
};
|
||||
var defaultPlatform = typeof process === "object" && process ? typeof process.env === "object" && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : "posix";
|
||||
var path11 = {
|
||||
win32: { sep: "\\" },
|
||||
posix: { sep: "/" }
|
||||
};
|
||||
var sep7 = defaultPlatform === "win32" ? path11.win32.sep : path11.posix.sep;
|
||||
minimatch2.sep = sep7;
|
||||
var GLOBSTAR = /* @__PURE__ */ Symbol("globstar **");
|
||||
minimatch2.GLOBSTAR = GLOBSTAR;
|
||||
var qmark2 = "[^/]";
|
||||
var star2 = qmark2 + "*?";
|
||||
var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";
|
||||
var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?";
|
||||
var filter2 = (pattern, options = {}) => (p) => minimatch2(p, pattern, options);
|
||||
minimatch2.filter = filter2;
|
||||
var ext = (a, b = {}) => Object.assign({}, a, b);
|
||||
var defaults = (def) => {
|
||||
if (!def || typeof def !== "object" || !Object.keys(def).length) {
|
||||
return minimatch2;
|
||||
}
|
||||
const orig = minimatch2;
|
||||
const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));
|
||||
return Object.assign(m, {
|
||||
Minimatch: class Minimatch extends orig.Minimatch {
|
||||
constructor(pattern, options = {}) {
|
||||
super(pattern, ext(def, options));
|
||||
}
|
||||
static defaults(options) {
|
||||
return orig.defaults(ext(def, options)).Minimatch;
|
||||
}
|
||||
},
|
||||
AST: class AST extends orig.AST {
|
||||
/* c8 ignore start */
|
||||
constructor(type, parent, options = {}) {
|
||||
super(type, parent, ext(def, options));
|
||||
}
|
||||
/* c8 ignore stop */
|
||||
static fromGlob(pattern, options = {}) {
|
||||
return orig.AST.fromGlob(pattern, ext(def, options));
|
||||
}
|
||||
},
|
||||
unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),
|
||||
escape: (s, options = {}) => orig.escape(s, ext(def, options)),
|
||||
filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),
|
||||
defaults: (options) => orig.defaults(ext(def, options)),
|
||||
makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),
|
||||
braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),
|
||||
match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),
|
||||
sep: orig.sep,
|
||||
GLOBSTAR
|
||||
});
|
||||
};
|
||||
minimatch2.defaults = defaults;
|
||||
var braceExpand = (pattern, options = {}) => {
|
||||
assertValidPattern(pattern);
|
||||
if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
|
||||
return [pattern];
|
||||
}
|
||||
return expand(pattern, { max: options.braceExpandMax });
|
||||
};
|
||||
minimatch2.braceExpand = braceExpand;
|
||||
var makeRe = (pattern, options = {}) => new Minimatch2(pattern, options).makeRe();
|
||||
minimatch2.makeRe = makeRe;
|
||||
var match2 = (list, pattern, options = {}) => {
|
||||
const mm = new Minimatch2(pattern, options);
|
||||
list = list.filter((f) => mm.match(f));
|
||||
if (mm.options.nonull && !list.length) {
|
||||
list.push(pattern);
|
||||
}
|
||||
return list;
|
||||
};
|
||||
minimatch2.match = match2;
|
||||
var globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/;
|
||||
var regExpEscape2 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||||
var Minimatch2 = class {
|
||||
options;
|
||||
set;
|
||||
pattern;
|
||||
windowsPathsNoEscape;
|
||||
nonegate;
|
||||
negate;
|
||||
comment;
|
||||
empty;
|
||||
preserveMultipleSlashes;
|
||||
partial;
|
||||
globSet;
|
||||
globParts;
|
||||
nocase;
|
||||
isWindows;
|
||||
platform;
|
||||
windowsNoMagicRoot;
|
||||
maxGlobstarRecursion;
|
||||
regexp;
|
||||
constructor(pattern, options = {}) {
|
||||
assertValidPattern(pattern);
|
||||
options = options || {};
|
||||
this.options = options;
|
||||
this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;
|
||||
this.pattern = pattern;
|
||||
this.platform = options.platform || defaultPlatform;
|
||||
this.isWindows = this.platform === "win32";
|
||||
const awe = "allowWindowsEscape";
|
||||
this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options[awe] === false;
|
||||
if (this.windowsPathsNoEscape) {
|
||||
this.pattern = this.pattern.replace(/\\/g, "/");
|
||||
}
|
||||
this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;
|
||||
this.regexp = null;
|
||||
this.negate = false;
|
||||
this.nonegate = !!options.nonegate;
|
||||
this.comment = false;
|
||||
this.empty = false;
|
||||
this.partial = !!options.partial;
|
||||
this.nocase = !!this.options.nocase;
|
||||
this.windowsNoMagicRoot = options.windowsNoMagicRoot !== void 0 ? options.windowsNoMagicRoot : !!(this.isWindows && this.nocase);
|
||||
this.globSet = [];
|
||||
this.globParts = [];
|
||||
this.set = [];
|
||||
this.make();
|
||||
}
|
||||
hasMagic() {
|
||||
if (this.options.magicalBraces && this.set.length > 1) {
|
||||
return true;
|
||||
}
|
||||
for (const pattern of this.set) {
|
||||
for (const part of pattern) {
|
||||
if (typeof part !== "string")
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
debug(..._) {
|
||||
}
|
||||
make() {
|
||||
const pattern = this.pattern;
|
||||
const options = this.options;
|
||||
if (!options.nocomment && pattern.charAt(0) === "#") {
|
||||
this.comment = true;
|
||||
return;
|
||||
}
|
||||
if (!pattern) {
|
||||
this.empty = true;
|
||||
return;
|
||||
}
|
||||
this.parseNegate();
|
||||
this.globSet = [...new Set(this.braceExpand())];
|
||||
if (options.debug) {
|
||||
this.debug = (...args) => console.error(...args);
|
||||
}
|
||||
this.debug(this.pattern, this.globSet);
|
||||
const rawGlobParts = this.globSet.map((s) => this.slashSplit(s));
|
||||
this.globParts = this.preprocess(rawGlobParts);
|
||||
this.debug(this.pattern, this.globParts);
|
||||
let set = this.globParts.map((s, _, __) => {
|
||||
if (this.isWindows && this.windowsNoMagicRoot) {
|
||||
const isUNC = s[0] === "" && s[1] === "" && (s[2] === "?" || !globMagic.test(s[2])) && !globMagic.test(s[3]);
|
||||
const isDrive = /^[a-z]:/i.test(s[0]);
|
||||
if (isUNC) {
|
||||
return [
|
||||
...s.slice(0, 4),
|
||||
...s.slice(4).map((ss) => this.parse(ss))
|
||||
];
|
||||
} else if (isDrive) {
|
||||
return [s[0], ...s.slice(1).map((ss) => this.parse(ss))];
|
||||
}
|
||||
}
|
||||
return s.map((ss) => this.parse(ss));
|
||||
});
|
||||
this.debug(this.pattern, set);
|
||||
this.set = set.filter((s) => s.indexOf(false) === -1);
|
||||
if (this.isWindows) {
|
||||
for (let i = 0; i < this.set.length; i++) {
|
||||
const p = this.set[i];
|
||||
if (p[0] === "" && p[1] === "" && this.globParts[i][2] === "?" && typeof p[3] === "string" && /^[a-z]:$/i.test(p[3])) {
|
||||
p[2] = "?";
|
||||
}
|
||||
}
|
||||
}
|
||||
this.debug(this.pattern, this.set);
|
||||
}
|
||||
// various transforms to equivalent pattern sets that are
|
||||
// faster to process in a filesystem walk. The goal is to
|
||||
// eliminate what we can, and push all ** patterns as far
|
||||
// to the right as possible, even if it increases the number
|
||||
// of patterns that we have to process.
|
||||
preprocess(globParts) {
|
||||
if (this.options.noglobstar) {
|
||||
for (const partset of globParts) {
|
||||
for (let j = 0; j < partset.length; j++) {
|
||||
if (partset[j] === "**") {
|
||||
partset[j] = "*";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const { optimizationLevel = 1 } = this.options;
|
||||
if (optimizationLevel >= 2) {
|
||||
globParts = this.firstPhasePreProcess(globParts);
|
||||
globParts = this.secondPhasePreProcess(globParts);
|
||||
} else if (optimizationLevel >= 1) {
|
||||
globParts = this.levelOneOptimize(globParts);
|
||||
} else {
|
||||
globParts = this.adjascentGlobstarOptimize(globParts);
|
||||
}
|
||||
return globParts;
|
||||
}
|
||||
// just get rid of adjascent ** portions
|
||||
adjascentGlobstarOptimize(globParts) {
|
||||
return globParts.map((parts) => {
|
||||
let gs = -1;
|
||||
while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
|
||||
let i = gs;
|
||||
while (parts[i + 1] === "**") {
|
||||
i++;
|
||||
}
|
||||
if (i !== gs) {
|
||||
parts.splice(gs, i - gs);
|
||||
}
|
||||
}
|
||||
return parts;
|
||||
});
|
||||
}
|
||||
// get rid of adjascent ** and resolve .. portions
|
||||
levelOneOptimize(globParts) {
|
||||
return globParts.map((parts) => {
|
||||
parts = parts.reduce((set, part) => {
|
||||
const prev = set[set.length - 1];
|
||||
if (part === "**" && prev === "**") {
|
||||
return set;
|
||||
}
|
||||
if (part === "..") {
|
||||
if (prev && prev !== ".." && prev !== "." && prev !== "**") {
|
||||
set.pop();
|
||||
return set;
|
||||
}
|
||||
}
|
||||
set.push(part);
|
||||
return set;
|
||||
}, []);
|
||||
return parts.length === 0 ? [""] : parts;
|
||||
});
|
||||
}
|
||||
levelTwoFileOptimize(parts) {
|
||||
if (!Array.isArray(parts)) {
|
||||
parts = this.slashSplit(parts);
|
||||
}
|
||||
let didSomething = false;
|
||||
do {
|
||||
didSomething = false;
|
||||
if (!this.preserveMultipleSlashes) {
|
||||
for (let i = 1; i < parts.length - 1; i++) {
|
||||
const p = parts[i];
|
||||
if (i === 1 && p === "" && parts[0] === "")
|
||||
continue;
|
||||
if (p === "." || p === "") {
|
||||
didSomething = true;
|
||||
parts.splice(i, 1);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
|
||||
didSomething = true;
|
||||
parts.pop();
|
||||
}
|
||||
}
|
||||
let dd = 0;
|
||||
while (-1 !== (dd = parts.indexOf("..", dd + 1))) {
|
||||
const p = parts[dd - 1];
|
||||
if (p && p !== "." && p !== ".." && p !== "**" && !(this.isWindows && /^[a-z]:$/i.test(p))) {
|
||||
didSomething = true;
|
||||
parts.splice(dd - 1, 2);
|
||||
dd -= 2;
|
||||
}
|
||||
}
|
||||
} while (didSomething);
|
||||
return parts.length === 0 ? [""] : parts;
|
||||
}
|
||||
// First phase: single-pattern processing
|
||||
// <pre> is 1 or more portions
|
||||
// <rest> is 1 or more portions
|
||||
// <p> is any portion other than ., .., '', or **
|
||||
// <e> is . or ''
|
||||
//
|
||||
// **/.. is *brutal* for filesystem walking performance, because
|
||||
// it effectively resets the recursive walk each time it occurs,
|
||||
// and ** cannot be reduced out by a .. pattern part like a regexp
|
||||
// or most strings (other than .., ., and '') can be.
|
||||
//
|
||||
// <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
|
||||
// <pre>/<e>/<rest> -> <pre>/<rest>
|
||||
// <pre>/<p>/../<rest> -> <pre>/<rest>
|
||||
// **/**/<rest> -> **/<rest>
|
||||
//
|
||||
// **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow
|
||||
// this WOULD be allowed if ** did follow symlinks, or * didn't
|
||||
firstPhasePreProcess(globParts) {
|
||||
let didSomething = false;
|
||||
do {
|
||||
didSomething = false;
|
||||
for (let parts of globParts) {
|
||||
let gs = -1;
|
||||
while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
|
||||
let gss = gs;
|
||||
while (parts[gss + 1] === "**") {
|
||||
gss++;
|
||||
}
|
||||
if (gss > gs) {
|
||||
parts.splice(gs + 1, gss - gs);
|
||||
}
|
||||
let next = parts[gs + 1];
|
||||
const p = parts[gs + 2];
|
||||
const p2 = parts[gs + 3];
|
||||
if (next !== "..")
|
||||
continue;
|
||||
if (!p || p === "." || p === ".." || !p2 || p2 === "." || p2 === "..") {
|
||||
continue;
|
||||
}
|
||||
didSomething = true;
|
||||
parts.splice(gs, 1);
|
||||
const other = parts.slice(0);
|
||||
other[gs] = "**";
|
||||
globParts.push(other);
|
||||
gs--;
|
||||
}
|
||||
if (!this.preserveMultipleSlashes) {
|
||||
for (let i = 1; i < parts.length - 1; i++) {
|
||||
const p = parts[i];
|
||||
if (i === 1 && p === "" && parts[0] === "")
|
||||
continue;
|
||||
if (p === "." || p === "") {
|
||||
didSomething = true;
|
||||
parts.splice(i, 1);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
|
||||
didSomething = true;
|
||||
parts.pop();
|
||||
}
|
||||
}
|
||||
let dd = 0;
|
||||
while (-1 !== (dd = parts.indexOf("..", dd + 1))) {
|
||||
const p = parts[dd - 1];
|
||||
if (p && p !== "." && p !== ".." && p !== "**") {
|
||||
didSomething = true;
|
||||
const needDot = dd === 1 && parts[dd + 1] === "**";
|
||||
const splin = needDot ? ["."] : [];
|
||||
parts.splice(dd - 1, 2, ...splin);
|
||||
if (parts.length === 0)
|
||||
parts.push("");
|
||||
dd -= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (didSomething);
|
||||
return globParts;
|
||||
}
|
||||
// second phase: multi-pattern dedupes
|
||||
// {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>
|
||||
// {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>
|
||||
// {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>
|
||||
//
|
||||
// {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>
|
||||
// ^-- not valid because ** doens't follow symlinks
|
||||
secondPhasePreProcess(globParts) {
|
||||
for (let i = 0; i < globParts.length - 1; i++) {
|
||||
for (let j = i + 1; j < globParts.length; j++) {
|
||||
const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
|
||||
if (matched) {
|
||||
globParts[i] = [];
|
||||
globParts[j] = matched;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return globParts.filter((gs) => gs.length);
|
||||
}
|
||||
partsMatch(a, b, emptyGSMatch = false) {
|
||||
let ai = 0;
|
||||
let bi = 0;
|
||||
let result = [];
|
||||
let which2 = "";
|
||||
while (ai < a.length && bi < b.length) {
|
||||
if (a[ai] === b[bi]) {
|
||||
result.push(which2 === "b" ? b[bi] : a[ai]);
|
||||
ai++;
|
||||
bi++;
|
||||
} else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) {
|
||||
result.push(a[ai]);
|
||||
ai++;
|
||||
} else if (emptyGSMatch && b[bi] === "**" && a[ai] === b[bi + 1]) {
|
||||
result.push(b[bi]);
|
||||
bi++;
|
||||
} else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") {
|
||||
if (which2 === "b")
|
||||
return false;
|
||||
which2 = "a";
|
||||
result.push(a[ai]);
|
||||
ai++;
|
||||
bi++;
|
||||
} else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") {
|
||||
if (which2 === "a")
|
||||
return false;
|
||||
which2 = "b";
|
||||
result.push(b[bi]);
|
||||
ai++;
|
||||
bi++;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return a.length === b.length && result;
|
||||
}
|
||||
parseNegate() {
|
||||
if (this.nonegate)
|
||||
return;
|
||||
const pattern = this.pattern;
|
||||
let negate = false;
|
||||
let negateOffset = 0;
|
||||
for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) {
|
||||
negate = !negate;
|
||||
negateOffset++;
|
||||
}
|
||||
if (negateOffset)
|
||||
this.pattern = pattern.slice(negateOffset);
|
||||
this.negate = negate;
|
||||
}
|
||||
// set partial to true to test if, for example,
|
||||
// "/a/b" matches the start of "/*/b/*/d"
|
||||
// Partial means, if you run out of file before you run
|
||||
// out of pattern, then that's fine, as long as all
|
||||
// the parts match.
|
||||
matchOne(file, pattern, partial = false) {
|
||||
let fileStartIndex = 0;
|
||||
let patternStartIndex = 0;
|
||||
if (this.isWindows) {
|
||||
const fileDrive = typeof file[0] === "string" && /^[a-z]:$/i.test(file[0]);
|
||||
const fileUNC = !fileDrive && file[0] === "" && file[1] === "" && file[2] === "?" && /^[a-z]:$/i.test(file[3]);
|
||||
const patternDrive = typeof pattern[0] === "string" && /^[a-z]:$/i.test(pattern[0]);
|
||||
const patternUNC = !patternDrive && pattern[0] === "" && pattern[1] === "" && pattern[2] === "?" && typeof pattern[3] === "string" && /^[a-z]:$/i.test(pattern[3]);
|
||||
const fdi = fileUNC ? 3 : fileDrive ? 0 : void 0;
|
||||
const pdi = patternUNC ? 3 : patternDrive ? 0 : void 0;
|
||||
if (typeof fdi === "number" && typeof pdi === "number") {
|
||||
const [fd, pd] = [
|
||||
file[fdi],
|
||||
pattern[pdi]
|
||||
];
|
||||
if (fd.toLowerCase() === pd.toLowerCase()) {
|
||||
pattern[pdi] = fd;
|
||||
patternStartIndex = pdi;
|
||||
fileStartIndex = fdi;
|
||||
}
|
||||
}
|
||||
}
|
||||
const { optimizationLevel = 1 } = this.options;
|
||||
if (optimizationLevel >= 2) {
|
||||
file = this.levelTwoFileOptimize(file);
|
||||
}
|
||||
if (pattern.includes(GLOBSTAR)) {
|
||||
return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);
|
||||
}
|
||||
return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);
|
||||
}
|
||||
#matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {
|
||||
const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);
|
||||
const lastgs = pattern.lastIndexOf(GLOBSTAR);
|
||||
const [head, body2, tail] = partial ? [
|
||||
pattern.slice(patternIndex, firstgs),
|
||||
pattern.slice(firstgs + 1),
|
||||
[]
|
||||
] : [
|
||||
pattern.slice(patternIndex, firstgs),
|
||||
pattern.slice(firstgs + 1, lastgs),
|
||||
pattern.slice(lastgs + 1)
|
||||
];
|
||||
if (head.length) {
|
||||
const fileHead = file.slice(fileIndex, fileIndex + head.length);
|
||||
if (!this.#matchOne(fileHead, head, partial, 0, 0)) {
|
||||
return false;
|
||||
}
|
||||
fileIndex += head.length;
|
||||
patternIndex += head.length;
|
||||
}
|
||||
let fileTailMatch = 0;
|
||||
if (tail.length) {
|
||||
if (tail.length + fileIndex > file.length)
|
||||
return false;
|
||||
let tailStart = file.length - tail.length;
|
||||
if (this.#matchOne(file, tail, partial, tailStart, 0)) {
|
||||
fileTailMatch = tail.length;
|
||||
} else {
|
||||
if (file[file.length - 1] !== "" || fileIndex + tail.length === file.length) {
|
||||
return false;
|
||||
}
|
||||
tailStart--;
|
||||
if (!this.#matchOne(file, tail, partial, tailStart, 0)) {
|
||||
return false;
|
||||
}
|
||||
fileTailMatch = tail.length + 1;
|
||||
}
|
||||
}
|
||||
if (!body2.length) {
|
||||
let sawSome = !!fileTailMatch;
|
||||
for (let i2 = fileIndex; i2 < file.length - fileTailMatch; i2++) {
|
||||
const f = String(file[i2]);
|
||||
sawSome = true;
|
||||
if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return partial || sawSome;
|
||||
}
|
||||
const bodySegments = [[[], 0]];
|
||||
let currentBody = bodySegments[0];
|
||||
let nonGsParts = 0;
|
||||
const nonGsPartsSums = [0];
|
||||
for (const b of body2) {
|
||||
if (b === GLOBSTAR) {
|
||||
nonGsPartsSums.push(nonGsParts);
|
||||
currentBody = [[], 0];
|
||||
bodySegments.push(currentBody);
|
||||
} else {
|
||||
currentBody[0].push(b);
|
||||
nonGsParts++;
|
||||
}
|
||||
}
|
||||
let i = bodySegments.length - 1;
|
||||
const fileLength = file.length - fileTailMatch;
|
||||
for (const b of bodySegments) {
|
||||
b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);
|
||||
}
|
||||
return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);
|
||||
}
|
||||
// return false for "nope, not matching"
|
||||
// return null for "not matching, cannot keep trying"
|
||||
#matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {
|
||||
const bs = bodySegments[bodyIndex];
|
||||
if (!bs) {
|
||||
for (let i = fileIndex; i < file.length; i++) {
|
||||
sawTail = true;
|
||||
const f = file[i];
|
||||
if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return sawTail;
|
||||
}
|
||||
const [body2, after] = bs;
|
||||
while (fileIndex <= after) {
|
||||
const m = this.#matchOne(file.slice(0, fileIndex + body2.length), body2, partial, fileIndex, 0);
|
||||
if (m && globStarDepth < this.maxGlobstarRecursion) {
|
||||
const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body2.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);
|
||||
if (sub !== false) {
|
||||
return sub;
|
||||
}
|
||||
}
|
||||
const f = file[fileIndex];
|
||||
if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
|
||||
return false;
|
||||
}
|
||||
fileIndex++;
|
||||
}
|
||||
return partial || null;
|
||||
}
|
||||
#matchOne(file, pattern, partial, fileIndex, patternIndex) {
|
||||
let fi;
|
||||
let pi;
|
||||
let pl;
|
||||
let fl;
|
||||
for (fi = fileIndex, pi = patternIndex, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
|
||||
this.debug("matchOne loop");
|
||||
let p = pattern[pi];
|
||||
let f = file[fi];
|
||||
this.debug(pattern, p, f);
|
||||
if (p === false || p === GLOBSTAR) {
|
||||
return false;
|
||||
}
|
||||
let hit;
|
||||
if (typeof p === "string") {
|
||||
hit = f === p;
|
||||
this.debug("string match", p, f, hit);
|
||||
} else {
|
||||
hit = p.test(f);
|
||||
this.debug("pattern match", p, f, hit);
|
||||
}
|
||||
if (!hit)
|
||||
return false;
|
||||
}
|
||||
if (fi === fl && pi === pl) {
|
||||
return true;
|
||||
} else if (fi === fl) {
|
||||
return partial;
|
||||
} else if (pi === pl) {
|
||||
return fi === fl - 1 && file[fi] === "";
|
||||
} else {
|
||||
throw new Error("wtf?");
|
||||
}
|
||||
}
|
||||
braceExpand() {
|
||||
return braceExpand(this.pattern, this.options);
|
||||
}
|
||||
parse(pattern) {
|
||||
assertValidPattern(pattern);
|
||||
const options = this.options;
|
||||
if (pattern === "**")
|
||||
return GLOBSTAR;
|
||||
if (pattern === "")
|
||||
return "";
|
||||
let m;
|
||||
let fastTest = null;
|
||||
if (m = pattern.match(starRE)) {
|
||||
fastTest = options.dot ? starTestDot : starTest;
|
||||
} else if (m = pattern.match(starDotExtRE)) {
|
||||
fastTest = (options.nocase ? options.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : options.dot ? starDotExtTestDot : starDotExtTest)(m[1]);
|
||||
} else if (m = pattern.match(qmarksRE)) {
|
||||
fastTest = (options.nocase ? options.dot ? qmarksTestNocaseDot : qmarksTestNocase : options.dot ? qmarksTestDot : qmarksTest)(m);
|
||||
} else if (m = pattern.match(starDotStarRE)) {
|
||||
fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
|
||||
} else if (m = pattern.match(dotStarRE)) {
|
||||
fastTest = dotStarTest;
|
||||
}
|
||||
const re = AST.fromGlob(pattern, this.options).toMMPattern();
|
||||
if (fastTest && typeof re === "object") {
|
||||
Reflect.defineProperty(re, "test", { value: fastTest });
|
||||
}
|
||||
return re;
|
||||
}
|
||||
makeRe() {
|
||||
if (this.regexp || this.regexp === false)
|
||||
return this.regexp;
|
||||
const set = this.set;
|
||||
if (!set.length) {
|
||||
this.regexp = false;
|
||||
return this.regexp;
|
||||
}
|
||||
const options = this.options;
|
||||
const twoStar = options.noglobstar ? star2 : options.dot ? twoStarDot : twoStarNoDot;
|
||||
const flags = new Set(options.nocase ? ["i"] : []);
|
||||
let re = set.map((pattern) => {
|
||||
const pp = pattern.map((p) => {
|
||||
if (p instanceof RegExp) {
|
||||
for (const f of p.flags.split(""))
|
||||
flags.add(f);
|
||||
}
|
||||
return typeof p === "string" ? regExpEscape2(p) : p === GLOBSTAR ? GLOBSTAR : p._src;
|
||||
});
|
||||
pp.forEach((p, i) => {
|
||||
const next = pp[i + 1];
|
||||
const prev = pp[i - 1];
|
||||
if (p !== GLOBSTAR || prev === GLOBSTAR) {
|
||||
return;
|
||||
}
|
||||
if (prev === void 0) {
|
||||
if (next !== void 0 && next !== GLOBSTAR) {
|
||||
pp[i + 1] = "(?:\\/|" + twoStar + "\\/)?" + next;
|
||||
} else {
|
||||
pp[i] = twoStar;
|
||||
}
|
||||
} else if (next === void 0) {
|
||||
pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + ")?";
|
||||
} else if (next !== GLOBSTAR) {
|
||||
pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + "\\/)" + next;
|
||||
pp[i + 1] = GLOBSTAR;
|
||||
}
|
||||
});
|
||||
const filtered = pp.filter((p) => p !== GLOBSTAR);
|
||||
if (this.partial && filtered.length >= 1) {
|
||||
const prefixes = [];
|
||||
for (let i = 1; i <= filtered.length; i++) {
|
||||
prefixes.push(filtered.slice(0, i).join("/"));
|
||||
}
|
||||
return "(?:" + prefixes.join("|") + ")";
|
||||
}
|
||||
return filtered.join("/");
|
||||
}).join("|");
|
||||
const [open2, close] = set.length > 1 ? ["(?:", ")"] : ["", ""];
|
||||
re = "^" + open2 + re + close + "$";
|
||||
if (this.partial) {
|
||||
re = "^(?:\\/|" + open2 + re.slice(1, -1) + close + ")$";
|
||||
}
|
||||
if (this.negate)
|
||||
re = "^(?!" + re + ").+$";
|
||||
try {
|
||||
this.regexp = new RegExp(re, [...flags].join(""));
|
||||
} catch {
|
||||
this.regexp = false;
|
||||
}
|
||||
return this.regexp;
|
||||
}
|
||||
slashSplit(p) {
|
||||
if (this.preserveMultipleSlashes) {
|
||||
return p.split("/");
|
||||
} else if (this.isWindows && /^\/\/[^/]+/.test(p)) {
|
||||
return ["", ...p.split(/\/+/)];
|
||||
} else {
|
||||
return p.split(/\/+/);
|
||||
}
|
||||
}
|
||||
match(f, partial = this.partial) {
|
||||
this.debug("match", f, this.pattern);
|
||||
if (this.comment) {
|
||||
return false;
|
||||
}
|
||||
if (this.empty) {
|
||||
return f === "";
|
||||
}
|
||||
if (f === "/" && partial) {
|
||||
return true;
|
||||
}
|
||||
const options = this.options;
|
||||
if (this.isWindows) {
|
||||
f = f.split("\\").join("/");
|
||||
}
|
||||
const ff = this.slashSplit(f);
|
||||
this.debug(this.pattern, "split", ff);
|
||||
const set = this.set;
|
||||
this.debug(this.pattern, "set", set);
|
||||
let filename = ff[ff.length - 1];
|
||||
if (!filename) {
|
||||
for (let i = ff.length - 2; !filename && i >= 0; i--) {
|
||||
filename = ff[i];
|
||||
}
|
||||
}
|
||||
for (const pattern of set) {
|
||||
let file = ff;
|
||||
if (options.matchBase && pattern.length === 1) {
|
||||
file = [filename];
|
||||
}
|
||||
const hit = this.matchOne(file, pattern, partial);
|
||||
if (hit) {
|
||||
if (options.flipNegate) {
|
||||
return true;
|
||||
}
|
||||
return !this.negate;
|
||||
}
|
||||
}
|
||||
if (options.flipNegate) {
|
||||
return false;
|
||||
}
|
||||
return this.negate;
|
||||
}
|
||||
static defaults(def) {
|
||||
return minimatch2.defaults(def).Minimatch;
|
||||
}
|
||||
};
|
||||
minimatch2.AST = AST;
|
||||
minimatch2.Minimatch = Minimatch2;
|
||||
minimatch2.escape = escape2;
|
||||
minimatch2.unescape = unescape;
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-path.js
|
||||
var IS_WINDOWS11 = process.platform === "win32";
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-pattern.js
|
||||
var IS_WINDOWS12 = process.platform === "win32";
|
||||
|
||||
// node_modules/@actions/glob/lib/internal-globber.js
|
||||
var IS_WINDOWS13 = process.platform === "win32";
|
||||
|
||||
// src/utils/logging.ts
|
||||
var quiet;
|
||||
function isQuiet() {
|
||||
if (quiet === void 0) {
|
||||
quiet = typeof getInput === "function" && getInput("quiet") === "true";
|
||||
}
|
||||
return quiet;
|
||||
}
|
||||
function info2(msg) {
|
||||
if (!isQuiet()) {
|
||||
info(msg);
|
||||
}
|
||||
}
|
||||
var warning2 = warning;
|
||||
|
||||
// src/cache/restore-cache.ts
|
||||
var STATE_CACHE_KEY = "cache-key";
|
||||
@@ -62251,124 +63724,57 @@ var STATE_UV_PATH = "uv-path";
|
||||
var STATE_UV_VERSION = "uv-version";
|
||||
|
||||
// src/utils/inputs.ts
|
||||
var import_node_fs4 = __toESM(require("node:fs"), 1);
|
||||
var import_node_path = __toESM(require("node:path"), 1);
|
||||
|
||||
// src/utils/config-file.ts
|
||||
// src/version/tool-versions-file.ts
|
||||
var import_node_fs2 = __toESM(require("node:fs"), 1);
|
||||
|
||||
// node_modules/smol-toml/dist/error.js
|
||||
function getLineColFromPtr(string, ptr) {
|
||||
let lines = string.slice(0, ptr).split(/\r\n|\n|\r/g);
|
||||
return [lines.length, lines.pop().length + 1];
|
||||
function getPythonVersionFromToolVersions(filePath) {
|
||||
const versions = getToolVersions(filePath, "python");
|
||||
if (versions === void 0 || versions.length === 0) {
|
||||
return void 0;
|
||||
}
|
||||
if (versions.length > 1) {
|
||||
warning(
|
||||
"Multiple Python versions in .tool-versions are not supported. The Python entry will be ignored."
|
||||
);
|
||||
return void 0;
|
||||
}
|
||||
const version3 = stripVersionPrefix(versions[0]);
|
||||
if (version3 === "system" || version3.startsWith("ref:") || version3.startsWith("path:") || isPath(version3)) {
|
||||
warning(
|
||||
`The Python version ${versions[0]} in .tool-versions is not supported. The Python entry will be ignored.`
|
||||
);
|
||||
return void 0;
|
||||
}
|
||||
return version3;
|
||||
}
|
||||
function makeCodeBlock(string, line, column) {
|
||||
let lines = string.split(/\r\n|\n|\r/g);
|
||||
let codeblock = "";
|
||||
let numberLen = (Math.log10(line + 1) | 0) + 1;
|
||||
for (let i = line - 1; i <= line + 1; i++) {
|
||||
let l = lines[i - 1];
|
||||
if (!l)
|
||||
function getToolVersions(filePath, toolName) {
|
||||
if (!filePath.endsWith(".tool-versions")) {
|
||||
return void 0;
|
||||
}
|
||||
const fileContents = import_node_fs2.default.readFileSync(filePath, "utf8");
|
||||
for (const line of fileContents.split("\n")) {
|
||||
const content = line.split("#", 1)[0].trim();
|
||||
if (content === "") {
|
||||
continue;
|
||||
codeblock += i.toString().padEnd(numberLen, " ");
|
||||
codeblock += ": ";
|
||||
codeblock += l;
|
||||
codeblock += "\n";
|
||||
if (i === line) {
|
||||
codeblock += " ".repeat(numberLen + column + 2);
|
||||
codeblock += "^\n";
|
||||
}
|
||||
const [tool, ...versions] = content.split(/\s+/);
|
||||
if (tool === toolName) {
|
||||
return versions;
|
||||
}
|
||||
}
|
||||
return codeblock;
|
||||
return void 0;
|
||||
}
|
||||
function stripVersionPrefix(version3) {
|
||||
return version3.startsWith("v") ? version3.slice(1) : version3;
|
||||
}
|
||||
function isPath(version3) {
|
||||
return version3.includes("/") || version3.includes("\\");
|
||||
}
|
||||
var TomlError = class extends Error {
|
||||
line;
|
||||
column;
|
||||
codeblock;
|
||||
constructor(message, options) {
|
||||
const [line, column] = getLineColFromPtr(options.toml, options.ptr);
|
||||
const codeblock = makeCodeBlock(options.toml, line, column);
|
||||
super(`Invalid TOML document: ${message}
|
||||
|
||||
${codeblock}`, options);
|
||||
this.line = line;
|
||||
this.column = column;
|
||||
this.codeblock = codeblock;
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/smol-toml/dist/util.js
|
||||
function isEscaped(str, ptr) {
|
||||
let i = 0;
|
||||
while (str[ptr - ++i] === "\\")
|
||||
;
|
||||
return --i && i % 2;
|
||||
}
|
||||
function indexOfNewline(str, start = 0, end = str.length) {
|
||||
let idx = str.indexOf("\n", start);
|
||||
if (str[idx - 1] === "\r")
|
||||
idx--;
|
||||
return idx <= end ? idx : -1;
|
||||
}
|
||||
function skipComment(str, ptr) {
|
||||
for (let i = ptr; i < str.length; i++) {
|
||||
let c = str[i];
|
||||
if (c === "\n")
|
||||
return i;
|
||||
if (c === "\r" && str[i + 1] === "\n")
|
||||
return i + 1;
|
||||
if (c < " " && c !== " " || c === "\x7F") {
|
||||
throw new TomlError("control characters are not allowed in comments", {
|
||||
toml: str,
|
||||
ptr
|
||||
});
|
||||
}
|
||||
}
|
||||
return str.length;
|
||||
}
|
||||
function skipVoid(str, ptr, banNewLines, banComments) {
|
||||
let c;
|
||||
while ((c = str[ptr]) === " " || c === " " || !banNewLines && (c === "\n" || c === "\r" && str[ptr + 1] === "\n"))
|
||||
ptr++;
|
||||
return banComments || c !== "#" ? ptr : skipVoid(str, skipComment(str, ptr), banNewLines);
|
||||
}
|
||||
function skipUntil(str, ptr, sep7, end, banNewLines = false) {
|
||||
if (!end) {
|
||||
ptr = indexOfNewline(str, ptr);
|
||||
return ptr < 0 ? str.length : ptr;
|
||||
}
|
||||
for (let i = ptr; i < str.length; i++) {
|
||||
let c = str[i];
|
||||
if (c === "#") {
|
||||
i = indexOfNewline(str, i);
|
||||
} else if (c === sep7) {
|
||||
return i + 1;
|
||||
} else if (c === end || banNewLines && (c === "\n" || c === "\r" && str[i + 1] === "\n")) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
throw new TomlError("cannot find end of structure", {
|
||||
toml: str,
|
||||
ptr
|
||||
});
|
||||
}
|
||||
function getStringEnd(str, seek) {
|
||||
let first = str[seek];
|
||||
let target = first === str[seek + 1] && str[seek + 1] === str[seek + 2] ? str.slice(seek, seek + 3) : first;
|
||||
seek += target.length - 1;
|
||||
do
|
||||
seek = str.indexOf(target, ++seek);
|
||||
while (seek > -1 && first !== "'" && isEscaped(str, seek));
|
||||
if (seek > -1) {
|
||||
seek += target.length;
|
||||
if (target.length > 1) {
|
||||
if (str[seek] === first)
|
||||
seek++;
|
||||
if (str[seek] === first)
|
||||
seek++;
|
||||
}
|
||||
}
|
||||
return seek;
|
||||
}
|
||||
// src/utils/config-file.ts
|
||||
var import_node_fs3 = __toESM(require("node:fs"), 1);
|
||||
|
||||
// node_modules/smol-toml/dist/date.js
|
||||
var DATE_TIME_RE = /^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;
|
||||
@@ -62381,18 +63787,18 @@ var TomlDate = class _TomlDate extends Date {
|
||||
let hasTime = true;
|
||||
let offset = "Z";
|
||||
if (typeof date === "string") {
|
||||
let match2 = date.match(DATE_TIME_RE);
|
||||
if (match2) {
|
||||
if (!match2[1]) {
|
||||
let match4 = date.match(DATE_TIME_RE);
|
||||
if (match4) {
|
||||
if (!match4[1]) {
|
||||
hasDate = false;
|
||||
date = `0000-01-01T${date}`;
|
||||
}
|
||||
hasTime = !!match2[2];
|
||||
hasTime = !!match4[2];
|
||||
hasTime && date[10] === " " && (date = date.replace(" ", "T"));
|
||||
if (match2[2] && +match2[2] > 23) {
|
||||
if (match4[2] && +match4[2] > 23) {
|
||||
date = "";
|
||||
} else {
|
||||
offset = match2[3] || null;
|
||||
offset = match4[3] || null;
|
||||
date = date.toUpperCase();
|
||||
if (!offset && hasTime)
|
||||
date += "Z";
|
||||
@@ -62462,93 +63868,153 @@ var TomlDate = class _TomlDate extends Date {
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/smol-toml/dist/error.js
|
||||
function getLineColFromPtr(string, ptr) {
|
||||
let lines = string.slice(0, ptr).split(/\r\n|\n|\r/g);
|
||||
return [lines.length, lines.pop().length + 1];
|
||||
}
|
||||
function makeCodeBlock(string, line, column) {
|
||||
let lines = string.split(/\r\n|\n|\r/g);
|
||||
let codeblock = "";
|
||||
let numberLen = (Math.log10(line + 1) | 0) + 1;
|
||||
for (let i = line - 1; i <= line + 1; i++) {
|
||||
let l = lines[i - 1];
|
||||
if (!l)
|
||||
continue;
|
||||
codeblock += i.toString().padEnd(numberLen, " ");
|
||||
codeblock += ": ";
|
||||
codeblock += l;
|
||||
codeblock += "\n";
|
||||
if (i === line) {
|
||||
codeblock += " ".repeat(numberLen + column + 2);
|
||||
codeblock += "^\n";
|
||||
}
|
||||
}
|
||||
return codeblock;
|
||||
}
|
||||
var TomlError = class extends Error {
|
||||
line;
|
||||
column;
|
||||
codeblock;
|
||||
constructor(message, options) {
|
||||
const [line, column] = getLineColFromPtr(options.toml, options.ptr);
|
||||
const codeblock = makeCodeBlock(options.toml, line, column);
|
||||
super(`Invalid TOML document: ${message}
|
||||
|
||||
${codeblock}`, options);
|
||||
this.line = line;
|
||||
this.column = column;
|
||||
this.codeblock = codeblock;
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/smol-toml/dist/primitive.js
|
||||
var INT_REGEX = /^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/;
|
||||
var FLOAT_REGEX = /^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/;
|
||||
var LEADING_ZERO = /^[+-]?0[0-9_]/;
|
||||
var ESCAPE_REGEX = /^[0-9a-f]{2,8}$/i;
|
||||
var ESC_MAP = {
|
||||
b: "\b",
|
||||
t: " ",
|
||||
n: "\n",
|
||||
f: "\f",
|
||||
r: "\r",
|
||||
e: "\x1B",
|
||||
'"': '"',
|
||||
"\\": "\\"
|
||||
};
|
||||
function parseString(str, ptr = 0, endPtr = str.length) {
|
||||
let isLiteral = str[ptr] === "'";
|
||||
let isMultiline = str[ptr++] === str[ptr] && str[ptr] === str[ptr + 1];
|
||||
function parseString(str, ptr) {
|
||||
let c = str[ptr++];
|
||||
let first = c;
|
||||
let isLiteral = c === "'";
|
||||
let isMultiline = c === str[ptr] && c === str[ptr + 1];
|
||||
if (isMultiline) {
|
||||
endPtr -= 2;
|
||||
if (str[ptr += 2] === "\r")
|
||||
ptr++;
|
||||
if (str[ptr] === "\n")
|
||||
if (str[ptr += 2] === "\n")
|
||||
ptr++;
|
||||
else if (str[ptr] === "\r" && str[ptr + 1] === "\n")
|
||||
ptr += 2;
|
||||
}
|
||||
let tmp = 0;
|
||||
let isEscape;
|
||||
let parsed = "";
|
||||
let sliceStart = ptr;
|
||||
while (ptr < endPtr - 1) {
|
||||
let c = str[ptr++];
|
||||
if (c === "\n" || c === "\r" && str[ptr] === "\n") {
|
||||
if (!isMultiline) {
|
||||
throw new TomlError("newlines are not allowed in strings", {
|
||||
toml: str,
|
||||
ptr: ptr - 1
|
||||
});
|
||||
}
|
||||
let state3 = 0;
|
||||
for (let i = ptr; i < str.length; i++) {
|
||||
c = str[i];
|
||||
if (isMultiline && (c === "\n" || c === "\r" && str[i + 1] === "\n")) {
|
||||
state3 = state3 && 3;
|
||||
} else if (c < " " && c !== " " || c === "\x7F") {
|
||||
throw new TomlError("control characters are not allowed in strings", {
|
||||
toml: str,
|
||||
ptr: ptr - 1
|
||||
ptr: i
|
||||
});
|
||||
}
|
||||
if (isEscape) {
|
||||
isEscape = false;
|
||||
} else if ((!state3 || state3 === 3) && c === first && (!isMultiline || str[i + 1] === first && str[i + 2] === first)) {
|
||||
if (isMultiline) {
|
||||
if (str[i + 3] === first)
|
||||
i++;
|
||||
if (str[i + 3] === first)
|
||||
i++;
|
||||
}
|
||||
return [
|
||||
// If we're in a newline escape still, then there's nothing to add.
|
||||
// Also try to avoid concat if there's nothing to add to parsed, or nothing has been added to parsed.
|
||||
state3 ? parsed : parsed + str.slice(sliceStart, i),
|
||||
i + (isMultiline ? 3 : 1)
|
||||
];
|
||||
} else if (!state3) {
|
||||
if (!isLiteral && c === "\\") {
|
||||
parsed += str.slice(sliceStart, sliceStart = i);
|
||||
state3 = 1;
|
||||
}
|
||||
} else if (state3 === 1) {
|
||||
if (c === "x" || c === "u" || c === "U") {
|
||||
let code = str.slice(ptr, ptr += c === "x" ? 2 : c === "u" ? 4 : 8);
|
||||
if (!ESCAPE_REGEX.test(code)) {
|
||||
throw new TomlError("invalid unicode escape", {
|
||||
toml: str,
|
||||
ptr: tmp
|
||||
});
|
||||
let value = 0;
|
||||
let len = c === "x" ? 2 : c === "u" ? 4 : 8;
|
||||
for (let j = 0; j < len; j++, i++) {
|
||||
let hex = str.charCodeAt(i + 1);
|
||||
let digit = (
|
||||
/* 0-9 */
|
||||
hex >= 48 && hex <= 57 ? hex - 48 : (
|
||||
/* A-F */
|
||||
hex >= 65 && hex <= 70 ? hex - 65 + 10 : (
|
||||
/* a-f */
|
||||
hex >= 97 && hex <= 102 ? hex - 97 + 10 : -1
|
||||
)
|
||||
)
|
||||
);
|
||||
if (digit < 0)
|
||||
throw new TomlError("invalid non-hex character in unicode escape", { toml: str, ptr: i + 1 });
|
||||
value = value << 4 | digit;
|
||||
}
|
||||
try {
|
||||
parsed += String.fromCodePoint(parseInt(code, 16));
|
||||
} catch {
|
||||
throw new TomlError("invalid unicode escape", {
|
||||
toml: str,
|
||||
ptr: tmp
|
||||
});
|
||||
if (value < 0 || value > 1114111 || value >= 55296 && value <= 57343) {
|
||||
throw new TomlError("invalid unicode escape", { toml: str, ptr: i });
|
||||
}
|
||||
} else if (isMultiline && (c === "\n" || c === " " || c === " " || c === "\r")) {
|
||||
ptr = skipVoid(str, ptr - 1, true);
|
||||
if (str[ptr] !== "\n" && str[ptr] !== "\r") {
|
||||
throw new TomlError("invalid escape: only line-ending whitespace may be escaped", {
|
||||
toml: str,
|
||||
ptr: tmp
|
||||
});
|
||||
}
|
||||
ptr = skipVoid(str, ptr);
|
||||
} else if (c in ESC_MAP) {
|
||||
parsed += ESC_MAP[c];
|
||||
parsed += String.fromCodePoint(value);
|
||||
sliceStart = i + 1;
|
||||
state3 = 0;
|
||||
} else if (c === " " || c === " ") {
|
||||
state3 = 2;
|
||||
} else {
|
||||
throw new TomlError("unrecognized escape sequence", {
|
||||
if (c === "b")
|
||||
parsed += "\b";
|
||||
else if (c === "t")
|
||||
parsed += " ";
|
||||
else if (c === "n")
|
||||
parsed += "\n";
|
||||
else if (c === "f")
|
||||
parsed += "\f";
|
||||
else if (c === "r")
|
||||
parsed += "\r";
|
||||
else if (c === "e")
|
||||
parsed += "\x1B";
|
||||
else if (c === '"')
|
||||
parsed += '"';
|
||||
else if (c === "\\")
|
||||
parsed += "\\";
|
||||
else
|
||||
throw new TomlError("unrecognized escape sequence", { toml: str, ptr: i });
|
||||
sliceStart = i + 1;
|
||||
state3 = 0;
|
||||
}
|
||||
} else if (c !== " " && c !== " ") {
|
||||
if (state3 === 2) {
|
||||
throw new TomlError("invalid escape: only line-ending whitespace may be escaped", {
|
||||
toml: str,
|
||||
ptr: tmp
|
||||
ptr: sliceStart
|
||||
});
|
||||
}
|
||||
sliceStart = ptr;
|
||||
} else if (!isLiteral && c === "\\") {
|
||||
tmp = ptr - 1;
|
||||
isEscape = true;
|
||||
parsed += str.slice(sliceStart, tmp);
|
||||
state3 = !isLiteral && c === "\\" ? 1 : 0;
|
||||
sliceStart = i;
|
||||
}
|
||||
}
|
||||
return parsed + str.slice(sliceStart, endPtr - 1);
|
||||
throw new TomlError("unfinished string", { toml: str, ptr });
|
||||
}
|
||||
function parseValue2(value, toml, ptr, integersAsBigInt) {
|
||||
if (value === "true")
|
||||
@@ -62572,24 +64038,24 @@ function parseValue2(value, toml, ptr, integersAsBigInt) {
|
||||
});
|
||||
}
|
||||
value = value.replace(/_/g, "");
|
||||
let numeric = +value;
|
||||
if (isNaN(numeric)) {
|
||||
let numeric2 = +value;
|
||||
if (isNaN(numeric2)) {
|
||||
throw new TomlError("invalid number", {
|
||||
toml,
|
||||
ptr
|
||||
});
|
||||
}
|
||||
if (isInt) {
|
||||
if ((isInt = !Number.isSafeInteger(numeric)) && !integersAsBigInt) {
|
||||
if ((isInt = !Number.isSafeInteger(numeric2)) && !integersAsBigInt) {
|
||||
throw new TomlError("integer value cannot be represented losslessly", {
|
||||
toml,
|
||||
ptr
|
||||
});
|
||||
}
|
||||
if (isInt || integersAsBigInt === true)
|
||||
numeric = BigInt(value);
|
||||
numeric2 = BigInt(value);
|
||||
}
|
||||
return numeric;
|
||||
return numeric2;
|
||||
}
|
||||
const date = new TomlDate(value);
|
||||
if (!date.isValid()) {
|
||||
@@ -62601,6 +64067,63 @@ function parseValue2(value, toml, ptr, integersAsBigInt) {
|
||||
return date;
|
||||
}
|
||||
|
||||
// node_modules/smol-toml/dist/util.js
|
||||
function indexOfNewline(str, start = 0, end = str.length) {
|
||||
let idx = str.indexOf("\n", start);
|
||||
if (str[idx - 1] === "\r")
|
||||
idx--;
|
||||
return idx <= end ? idx : -1;
|
||||
}
|
||||
function skipComment(str, ptr) {
|
||||
for (let i = ptr; i < str.length; i++) {
|
||||
let c = str[i];
|
||||
if (c === "\n")
|
||||
return i;
|
||||
if (c === "\r" && str[i + 1] === "\n")
|
||||
return i + 1;
|
||||
if (c < " " && c !== " " || c === "\x7F") {
|
||||
throw new TomlError("control characters are not allowed in comments", {
|
||||
toml: str,
|
||||
ptr
|
||||
});
|
||||
}
|
||||
}
|
||||
return str.length;
|
||||
}
|
||||
function skipVoid(str, ptr, banNewLines, banComments) {
|
||||
let c;
|
||||
while (1) {
|
||||
while ((c = str[ptr]) === " " || c === " " || !banNewLines && (c === "\n" || c === "\r" && str[ptr + 1] === "\n"))
|
||||
ptr++;
|
||||
if (banComments || c !== "#")
|
||||
break;
|
||||
ptr = skipComment(str, ptr);
|
||||
}
|
||||
return ptr;
|
||||
}
|
||||
function skipUntil(str, ptr, sep8, end, banNewLines = false) {
|
||||
if (!end) {
|
||||
ptr = indexOfNewline(str, ptr);
|
||||
return ptr < 0 ? str.length : ptr;
|
||||
}
|
||||
for (let i = ptr; i < str.length; i++) {
|
||||
let c = str[i];
|
||||
if (c === "#") {
|
||||
i = indexOfNewline(str, i);
|
||||
if (i < 0)
|
||||
break;
|
||||
} else if (c === sep8) {
|
||||
return i + 1;
|
||||
} else if (c === end || banNewLines && (c === "\n" || c === "\r" && str[i + 1] === "\n")) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
throw new TomlError("cannot find end of structure", {
|
||||
toml: str,
|
||||
ptr
|
||||
});
|
||||
}
|
||||
|
||||
// node_modules/smol-toml/dist/extract.js
|
||||
function sliceAndTrimEndOf(str, startPtr, endPtr) {
|
||||
let value = str.slice(startPtr, endPtr);
|
||||
@@ -62634,24 +64157,23 @@ function extractValue(str, ptr, end, depth, integersAsBigInt) {
|
||||
}
|
||||
return [value, endPtr2];
|
||||
}
|
||||
let endPtr;
|
||||
if (c === '"' || c === "'") {
|
||||
endPtr = getStringEnd(str, ptr);
|
||||
let parsed = parseString(str, ptr, endPtr);
|
||||
let [parsed, endPtr2] = parseString(str, ptr);
|
||||
if (end) {
|
||||
endPtr = skipVoid(str, endPtr);
|
||||
if (str[endPtr] && str[endPtr] !== "," && str[endPtr] !== end && str[endPtr] !== "\n" && str[endPtr] !== "\r") {
|
||||
endPtr2 = skipVoid(str, endPtr2);
|
||||
if (str[endPtr2] && str[endPtr2] !== "," && str[endPtr2] !== end && str[endPtr2] !== "\n" && str[endPtr2] !== "\r") {
|
||||
throw new TomlError("unexpected character encountered", {
|
||||
toml: str,
|
||||
ptr: endPtr
|
||||
ptr: endPtr2
|
||||
});
|
||||
}
|
||||
endPtr += +(str[endPtr] === ",");
|
||||
if (str[endPtr2] === ",")
|
||||
endPtr2++;
|
||||
}
|
||||
return [parsed, endPtr];
|
||||
return [parsed, endPtr2];
|
||||
}
|
||||
endPtr = skipUntil(str, ptr, ",", end);
|
||||
let slice = sliceAndTrimEndOf(str, ptr, endPtr - +(str[endPtr - 1] === ","));
|
||||
let endPtr = skipUntil(str, ptr, ",", end);
|
||||
let slice = sliceAndTrimEndOf(str, ptr, endPtr - (str[endPtr - 1] === "," ? 1 : 0));
|
||||
if (!slice[0]) {
|
||||
throw new TomlError("incomplete key-value declaration: no value specified", {
|
||||
toml: str,
|
||||
@@ -62660,7 +64182,8 @@ function extractValue(str, ptr, end, depth, integersAsBigInt) {
|
||||
}
|
||||
if (end && slice[1] > -1) {
|
||||
endPtr = skipVoid(str, ptr + slice[1]);
|
||||
endPtr += +(str[endPtr] === ",");
|
||||
if (str[endPtr] === ",")
|
||||
endPtr++;
|
||||
}
|
||||
return [
|
||||
parseValue2(slice[0], str, ptr, integersAsBigInt),
|
||||
@@ -62690,13 +64213,7 @@ function parseKey(str, ptr, end = "=") {
|
||||
ptr
|
||||
});
|
||||
}
|
||||
let eos = getStringEnd(str, ptr);
|
||||
if (eos < 0) {
|
||||
throw new TomlError("unfinished string encountered", {
|
||||
toml: str,
|
||||
ptr
|
||||
});
|
||||
}
|
||||
let [part, eos] = parseString(str, ptr);
|
||||
dot = str.indexOf(".", eos);
|
||||
let strEnd = str.slice(eos, dot < 0 || dot > endPtr ? endPtr : dot);
|
||||
let newLine = indexOfNewline(strEnd);
|
||||
@@ -62721,7 +64238,7 @@ function parseKey(str, ptr, end = "=") {
|
||||
});
|
||||
}
|
||||
}
|
||||
parsed.push(parseString(str, ptr, eos));
|
||||
parsed.push(part);
|
||||
} else {
|
||||
dot = str.indexOf(".", ptr);
|
||||
let part = str.slice(ptr, dot < 0 || dot > endPtr ? endPtr : dot);
|
||||
@@ -62876,7 +64393,7 @@ function peekTable(key, table, meta, type) {
|
||||
}
|
||||
return [k, t, state3.c];
|
||||
}
|
||||
function parse2(toml, { maxDepth = 1e3, integersAsBigInt } = {}) {
|
||||
function parse3(toml, { maxDepth = 1e3, integersAsBigInt } = {}) {
|
||||
let res = {};
|
||||
let meta = {};
|
||||
let tbl = res;
|
||||
@@ -62943,10 +64460,10 @@ function parse2(toml, { maxDepth = 1e3, integersAsBigInt } = {}) {
|
||||
|
||||
// src/utils/config-file.ts
|
||||
function getConfigValueFromTomlFile(filePath, key) {
|
||||
if (!import_node_fs2.default.existsSync(filePath) || !filePath.endsWith(".toml")) {
|
||||
if (!import_node_fs3.default.existsSync(filePath) || !filePath.endsWith(".toml")) {
|
||||
return void 0;
|
||||
}
|
||||
const fileContent = import_node_fs2.default.readFileSync(filePath, "utf-8");
|
||||
const fileContent = import_node_fs3.default.readFileSync(filePath, "utf-8");
|
||||
return getConfigValueFromTomlContent(filePath, fileContent, key);
|
||||
}
|
||||
function getConfigValueFromTomlContent(filePath, fileContent, key) {
|
||||
@@ -62954,10 +64471,10 @@ function getConfigValueFromTomlContent(filePath, fileContent, key) {
|
||||
return void 0;
|
||||
}
|
||||
if (filePath.endsWith("pyproject.toml")) {
|
||||
const tomlContent2 = parse2(fileContent);
|
||||
const tomlContent2 = parse3(fileContent);
|
||||
return tomlContent2?.tool?.uv?.[key];
|
||||
}
|
||||
const tomlContent = parse2(fileContent);
|
||||
const tomlContent = parse3(fileContent);
|
||||
return tomlContent[key];
|
||||
}
|
||||
|
||||
@@ -62966,7 +64483,7 @@ function loadInputs() {
|
||||
const workingDirectory = getInput("working-directory");
|
||||
const version3 = getInput("version");
|
||||
const versionFile = getVersionFile(workingDirectory);
|
||||
const pythonVersion = getInput("python-version");
|
||||
const pythonVersion = getPythonVersion(versionFile);
|
||||
const activateEnvironment = getBooleanInput("activate-environment");
|
||||
const noProject = getBooleanInput("no-project");
|
||||
const venvPath = getVenvPath(workingDirectory, activateEnvironment);
|
||||
@@ -62990,7 +64507,9 @@ function loadInputs() {
|
||||
const pythonDir = getUvPythonDir();
|
||||
const githubToken = getInput("github-token");
|
||||
const manifestFile = getManifestFile();
|
||||
const downloadFromAstralMirror = getInput("download-from-astral-mirror") === "true";
|
||||
const addProblemMatchers = getInput("add-problem-matchers") === "true";
|
||||
const quiet2 = getInput("quiet") === "true";
|
||||
const resolutionStrategy = getResolutionStrategy();
|
||||
return {
|
||||
activateEnvironment,
|
||||
@@ -63000,6 +64519,7 @@ function loadInputs() {
|
||||
cachePython,
|
||||
cacheSuffix,
|
||||
checksum,
|
||||
downloadFromAstralMirror,
|
||||
enableCache,
|
||||
githubToken,
|
||||
ignoreEmptyWorkdir,
|
||||
@@ -63009,6 +64529,7 @@ function loadInputs() {
|
||||
pruneCache: pruneCache2,
|
||||
pythonDir,
|
||||
pythonVersion,
|
||||
quiet: quiet2,
|
||||
resolutionStrategy,
|
||||
restoreCache: restoreCache2,
|
||||
saveCache: saveCache4,
|
||||
@@ -63028,11 +64549,31 @@ function getVersionFile(workingDirectory) {
|
||||
}
|
||||
return versionFileInput;
|
||||
}
|
||||
function getPythonVersion(versionFile) {
|
||||
const pythonVersionInput = getInput("python-version");
|
||||
if (pythonVersionInput !== "") {
|
||||
return pythonVersionInput;
|
||||
}
|
||||
if (process.env.UV_PYTHON !== void 0 && process.env.UV_PYTHON !== "") {
|
||||
return "";
|
||||
}
|
||||
if (versionFile === "" || !import_node_fs4.default.existsSync(versionFile)) {
|
||||
return "";
|
||||
}
|
||||
try {
|
||||
return getPythonVersionFromToolVersions(versionFile) ?? "";
|
||||
} catch (err) {
|
||||
warning2(
|
||||
`Error while parsing Python version from ${versionFile}: ${err.message}`
|
||||
);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
function getVenvPath(workingDirectory, activateEnvironment) {
|
||||
const venvPathInput = getInput("venv-path");
|
||||
if (venvPathInput !== "") {
|
||||
if (!activateEnvironment) {
|
||||
warning("venv-path is only used when activate-environment is true");
|
||||
warning2("venv-path is only used when activate-environment is true");
|
||||
}
|
||||
const tildeExpanded = expandTilde(venvPathInput);
|
||||
return normalizePath(resolveRelativePath(workingDirectory, tildeExpanded));
|
||||
@@ -63042,7 +64583,20 @@ function getVenvPath(workingDirectory, activateEnvironment) {
|
||||
function getEnableCache() {
|
||||
const enableCacheInput = getInput("enable-cache");
|
||||
if (enableCacheInput === "auto") {
|
||||
return process.env.RUNNER_ENVIRONMENT === "github-hosted";
|
||||
if (process.env.RUNNER_ENVIRONMENT !== "github-hosted") {
|
||||
return false;
|
||||
}
|
||||
const eventName = process.env.GITHUB_EVENT_NAME;
|
||||
const isTagPush = eventName === "push" && process.env.GITHUB_REF?.startsWith("refs/tags/");
|
||||
if (isTagPush) {
|
||||
info2("Caching is disabled for tag pushes");
|
||||
return false;
|
||||
}
|
||||
if (eventName === "pull_request_target" || eventName === "workflow_run" || eventName === "release") {
|
||||
info2(`Caching is disabled for the ${eventName} event`);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return enableCacheInput === "true";
|
||||
}
|
||||
@@ -63095,7 +64649,7 @@ function getCacheLocalPath(workingDirectory, versionFile, enableCache) {
|
||||
return { path: cacheDirFromConfig, source: 1 /* Config */ };
|
||||
}
|
||||
if (process.env.UV_CACHE_DIR !== void 0) {
|
||||
info(`UV_CACHE_DIR is already set to ${process.env.UV_CACHE_DIR}`);
|
||||
info2(`UV_CACHE_DIR is already set to ${process.env.UV_CACHE_DIR}`);
|
||||
return { path: process.env.UV_CACHE_DIR, source: 2 /* Env */ };
|
||||
}
|
||||
if (enableCache) {
|
||||
@@ -63128,12 +64682,12 @@ function getCacheDirFromConfig(workingDirectory, versionFile) {
|
||||
try {
|
||||
const cacheDir = getConfigValueFromTomlFile(resolvedPath, "cache-dir");
|
||||
if (cacheDir !== void 0) {
|
||||
info(`Found cache-dir in ${resolvedPath}: ${cacheDir}`);
|
||||
info2(`Found cache-dir in ${resolvedPath}: ${cacheDir}`);
|
||||
return cacheDir;
|
||||
}
|
||||
} catch (err) {
|
||||
const message = err.message;
|
||||
warning(`Error while parsing ${filePath}: ${message}`);
|
||||
warning2(`Error while parsing ${filePath}: ${message}`);
|
||||
return void 0;
|
||||
}
|
||||
}
|
||||
@@ -63141,7 +64695,7 @@ function getCacheDirFromConfig(workingDirectory, versionFile) {
|
||||
}
|
||||
function getUvPythonDir() {
|
||||
if (process.env.UV_PYTHON_INSTALL_DIR !== void 0) {
|
||||
info(
|
||||
info2(
|
||||
`UV_PYTHON_INSTALL_DIR is already set to ${process.env.UV_PYTHON_INSTALL_DIR}`
|
||||
);
|
||||
return process.env.UV_PYTHON_INSTALL_DIR;
|
||||
@@ -63211,6 +64765,22 @@ function getResolutionStrategy() {
|
||||
}
|
||||
|
||||
// src/save-cache.ts
|
||||
function formatUnexpectedFailure(error2) {
|
||||
if (error2 instanceof Error) {
|
||||
return error2.stack ?? error2.message;
|
||||
}
|
||||
return String(error2);
|
||||
}
|
||||
function failUnexpectedly(event, error2) {
|
||||
setFailed(`${event}: ${formatUnexpectedFailure(error2)}`);
|
||||
process.exit(1);
|
||||
}
|
||||
process.on("uncaughtException", (error2) => {
|
||||
failUnexpectedly("Uncaught exception", error2);
|
||||
});
|
||||
process.on("unhandledRejection", (reason) => {
|
||||
failUnexpectedly("Unhandled promise rejection", reason);
|
||||
});
|
||||
async function run() {
|
||||
try {
|
||||
const inputs = loadInputs();
|
||||
@@ -63218,9 +64788,9 @@ async function run() {
|
||||
if (inputs.saveCache) {
|
||||
await saveCache3(inputs);
|
||||
} else {
|
||||
info("save-cache is false. Skipping save cache step.");
|
||||
info2("save-cache is false. Skipping save cache step.");
|
||||
}
|
||||
await new Promise((resolve2) => setTimeout(resolve2, 50));
|
||||
await new Promise((resolve2) => setTimeout(resolve2, 100));
|
||||
process.exit(0);
|
||||
}
|
||||
} catch (error2) {
|
||||
@@ -63232,19 +64802,19 @@ async function saveCache3(inputs) {
|
||||
const cacheKey = getState(STATE_CACHE_KEY);
|
||||
const matchedKey = getState(STATE_CACHE_MATCHED_KEY);
|
||||
if (!cacheKey) {
|
||||
warning("Error retrieving cache key from state.");
|
||||
warning2("Error retrieving cache key from state.");
|
||||
return;
|
||||
}
|
||||
if (matchedKey === cacheKey) {
|
||||
info(`Cache hit occurred on key ${cacheKey}, not saving cache.`);
|
||||
info2(`Cache hit occurred on key ${cacheKey}, not saving cache.`);
|
||||
} else {
|
||||
if (inputs.pruneCache) {
|
||||
await pruneCache();
|
||||
}
|
||||
const actualCachePath = getUvCachePath(inputs);
|
||||
if (!fs7.existsSync(actualCachePath)) {
|
||||
if (!fs9.existsSync(actualCachePath)) {
|
||||
if (inputs.ignoreNothingToCache) {
|
||||
info(
|
||||
info2(
|
||||
"No cacheable uv cache paths were found. Ignoring because ignore-nothing-to-cache is enabled."
|
||||
);
|
||||
} else {
|
||||
@@ -63262,8 +64832,8 @@ async function saveCache3(inputs) {
|
||||
}
|
||||
}
|
||||
if (inputs.cachePython) {
|
||||
if (!fs7.existsSync(inputs.pythonDir)) {
|
||||
warning(
|
||||
if (!fs9.existsSync(inputs.pythonDir)) {
|
||||
warning2(
|
||||
`Python cache path ${inputs.pythonDir} does not exist on disk. Skipping Python cache save because no managed Python installation was found. If you want uv to install managed Python instead of using a system interpreter, set UV_PYTHON_PREFERENCE=only-managed.`
|
||||
);
|
||||
return;
|
||||
@@ -63278,7 +64848,7 @@ async function saveCache3(inputs) {
|
||||
}
|
||||
}
|
||||
async function pruneCache() {
|
||||
const forceSupported = pep440.gte(getState(STATE_UV_VERSION), "0.8.24");
|
||||
const forceSupported = ge(getState(STATE_UV_VERSION), "0.8.24");
|
||||
const options = {
|
||||
silent: false
|
||||
};
|
||||
@@ -63286,7 +64856,7 @@ async function pruneCache() {
|
||||
if (forceSupported) {
|
||||
execArgs.push("--force");
|
||||
}
|
||||
info("Pruning cache...");
|
||||
info2("Pruning cache...");
|
||||
const uvPath = getState(STATE_UV_PATH);
|
||||
await exec(uvPath, execArgs, options);
|
||||
}
|
||||
@@ -63297,7 +64867,7 @@ function getUvCachePath(inputs) {
|
||||
);
|
||||
}
|
||||
if (process.env.UV_CACHE_DIR && process.env.UV_CACHE_DIR !== inputs.cacheLocalPath.path) {
|
||||
warning(
|
||||
warning2(
|
||||
`The environment variable UV_CACHE_DIR has been changed to "${process.env.UV_CACHE_DIR}", by an action or step running after astral-sh/setup-uv. This can lead to unexpected behavior. If you expected this to happen set the cache-local-path input to "${process.env.UV_CACHE_DIR}" instead of "${inputs.cacheLocalPath.path}".`
|
||||
);
|
||||
return process.env.UV_CACHE_DIR;
|
||||
@@ -63307,14 +64877,12 @@ function getUvCachePath(inputs) {
|
||||
async function saveCacheToKey(cacheKey, cachePath, stateKey, cacheName) {
|
||||
const matchedKey = getState(stateKey);
|
||||
if (matchedKey === cacheKey) {
|
||||
info(
|
||||
`${cacheName} hit occurred on key ${cacheKey}, not saving cache.`
|
||||
);
|
||||
info2(`${cacheName} hit occurred on key ${cacheKey}, not saving cache.`);
|
||||
return;
|
||||
}
|
||||
info(`Including ${cacheName} path: ${cachePath}`);
|
||||
info2(`Including ${cacheName} path: ${cachePath}`);
|
||||
await saveCache2([cachePath], cacheKey);
|
||||
info(`${cacheName} saved with key: ${cacheKey}`);
|
||||
info2(`${cacheName} saved with key: ${cacheKey}`);
|
||||
}
|
||||
run();
|
||||
// Annotate the CommonJS export names for ESM import in node:
|
||||
@@ -63329,10 +64897,10 @@ undici/lib/web/fetch/body.js:
|
||||
undici/lib/web/websocket/frame.js:
|
||||
(*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
|
||||
|
||||
smol-toml/dist/error.js:
|
||||
smol-toml/dist/util.js:
|
||||
smol-toml/dist/date.js:
|
||||
smol-toml/dist/error.js:
|
||||
smol-toml/dist/primitive.js:
|
||||
smol-toml/dist/util.js:
|
||||
smol-toml/dist/extract.js:
|
||||
smol-toml/dist/struct.js:
|
||||
smol-toml/dist/parse.js:
|
||||
|
||||
+9600
-4837
File diff suppressed because one or more lines are too long
+4934
-2035
File diff suppressed because one or more lines are too long
@@ -6,16 +6,29 @@ This document covers advanced options for configuring which version of uv to ins
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version: "latest"
|
||||
```
|
||||
|
||||
## Install the latest version with a checksum verified by this action
|
||||
|
||||
Use `latest-known` to install the newest uv version whose checksums were bundled with the version of setup-uv used by your workflow. Version resolution is performed locally without fetching the latest release, so updating setup-uv also updates the version selected by `latest-known`.
|
||||
|
||||
When `manifest-file` is set, `latest-known` still selects a version from setup-uv's bundled checksum table, but the artifact and checksum come from the custom manifest.
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv known to setup-uv
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version: "latest-known"
|
||||
```
|
||||
|
||||
## Install a specific version
|
||||
|
||||
```yaml
|
||||
- name: Install a specific version of uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version: "0.4.4"
|
||||
```
|
||||
@@ -28,21 +41,21 @@ to install the latest version that satisfies the range.
|
||||
|
||||
```yaml
|
||||
- name: Install a semver range of uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version: ">=0.4.0"
|
||||
```
|
||||
|
||||
```yaml
|
||||
- name: Pinning a minor version of uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version: "0.4.x"
|
||||
```
|
||||
|
||||
```yaml
|
||||
- name: Install a pep440-specifier-satisfying version of uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version: ">=0.4.25,<0.5"
|
||||
```
|
||||
@@ -54,7 +67,7 @@ You can change this behavior using the `resolution-strategy` input:
|
||||
|
||||
```yaml
|
||||
- name: Install the lowest compatible version of uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version: ">=0.4.0"
|
||||
resolution-strategy: "lowest"
|
||||
@@ -72,11 +85,25 @@ You can use the `version-file` input to specify a file that contains the version
|
||||
This can either be a `pyproject.toml` or `uv.toml` file which defines a `required-version` or
|
||||
uv defined as a dependency in `pyproject.toml` or `requirements.txt`.
|
||||
|
||||
[asdf](https://asdf-vm.com/) `.tool-versions` is also supported, but without the `ref` syntax.
|
||||
[asdf](https://asdf-vm.com/) `.tool-versions` is also supported for selecting uv. If neither
|
||||
`python-version` nor `UV_PYTHON` is set, the `python` entry from the selected file is also exported
|
||||
as `UV_PYTHON`. Only a single Python version is supported; multiple fallback versions and the asdf
|
||||
`ref:`, `path:`, and `system` forms are ignored with a warning.
|
||||
|
||||
```yaml
|
||||
- name: Install uv based on the version defined in pyproject.toml
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version-file: "pyproject.toml"
|
||||
```
|
||||
|
||||
If uv is locked as a dependency in your `uv.lock`, you can point `version-file` at the
|
||||
lockfile to install the exact pinned version. This keeps CI runs deterministic and avoids
|
||||
silently picking up a newer uv until the lockfile is updated.
|
||||
|
||||
```yaml
|
||||
- name: Install uv based on the version locked in uv.lock
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version-file: "uv.lock"
|
||||
```
|
||||
|
||||
+29
-27
@@ -23,7 +23,7 @@ The computed cache key is available as the `cache-key` output:
|
||||
```yaml
|
||||
- name: Setup uv
|
||||
id: setup-uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
- name: Print cache key
|
||||
@@ -33,12 +33,15 @@ The computed cache key is available as the `cache-key` output:
|
||||
## Enable caching
|
||||
|
||||
> [!NOTE]
|
||||
> The cache is pruned before it is uploaded to the GitHub Actions cache. This can lead to
|
||||
> a small or empty cache. See [Disable cache pruning](#disable-cache-pruning) for more details.
|
||||
> The entire uv cache is uploaded to the GitHub Actions cache by default. To reduce the cache size,
|
||||
> see [Enable cache pruning](#enable-cache-pruning).
|
||||
|
||||
If you enable caching, the [uv cache](https://docs.astral.sh/uv/concepts/cache/) will be uploaded to
|
||||
the GitHub Actions cache. This can speed up runs that reuse the cache by several minutes.
|
||||
Caching is enabled by default on GitHub-hosted runners.
|
||||
With the default `enable-cache: auto`, caching is enabled on GitHub-hosted runners except for
|
||||
`release`, tag push, `pull_request_target`, and `workflow_run` events. Caching is disabled for these
|
||||
events to prevent insecure or release-sensitive jobs from restoring potentially poisoned caches.
|
||||
Set `enable-cache: true` to explicitly enable caching for any event.
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
@@ -50,7 +53,7 @@ You can optionally define a custom cache key suffix.
|
||||
```yaml
|
||||
- name: Enable caching and define a custom cache key suffix
|
||||
id: setup-uv
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-suffix: "optional-suffix"
|
||||
@@ -89,7 +92,7 @@ changes. If you use relative paths, they are relative to the working directory.
|
||||
|
||||
```yaml
|
||||
- name: Define a cache dependency glob
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-dependency-glob: "**/pyproject.toml"
|
||||
@@ -97,7 +100,7 @@ changes. If you use relative paths, they are relative to the working directory.
|
||||
|
||||
```yaml
|
||||
- name: Define a list of cache dependency globs
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-dependency-glob: |
|
||||
@@ -107,7 +110,7 @@ changes. If you use relative paths, they are relative to the working directory.
|
||||
|
||||
```yaml
|
||||
- name: Define an absolute cache dependency glob
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-dependency-glob: "/tmp/my-folder/requirements*.txt"
|
||||
@@ -115,7 +118,7 @@ changes. If you use relative paths, they are relative to the working directory.
|
||||
|
||||
```yaml
|
||||
- name: Never invalidate the cache
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-dependency-glob: ""
|
||||
@@ -128,7 +131,7 @@ By default, the cache will be restored.
|
||||
|
||||
```yaml
|
||||
- name: Don't restore an existing cache
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
restore-cache: false
|
||||
@@ -142,7 +145,7 @@ By default, the cache will be saved.
|
||||
|
||||
```yaml
|
||||
- name: Don't save the cache after the run
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
save-cache: false
|
||||
@@ -168,35 +171,34 @@ It defaults to `setup-uv-cache` in the `TMP` dir, `D:\a\_temp\setup-uv-cache` on
|
||||
|
||||
```yaml
|
||||
- name: Define a custom uv cache path
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
cache-local-path: "/path/to/cache"
|
||||
```
|
||||
|
||||
## Disable cache pruning
|
||||
## Enable cache pruning
|
||||
|
||||
By default, the uv cache is pruned after every run, removing pre-built wheels, but retaining any
|
||||
wheels that were built from source. On GitHub-hosted runners, it's typically faster to omit those
|
||||
pre-built wheels from the cache (and instead re-download them from the registry on each run).
|
||||
However, on self-hosted or local runners, preserving the cache may be more efficient. See
|
||||
the [documentation](https://docs.astral.sh/uv/concepts/cache/#caching-in-continuous-integration) for
|
||||
more information.
|
||||
By default, the entire uv cache is persisted across runs. On GitHub-hosted runners, it's typically
|
||||
faster to prune the cache before saving it, removing pre-built wheels, but retaining any wheels that
|
||||
were built from source. The pre-built wheels are then re-downloaded from the registry on each run.
|
||||
See the [documentation](https://docs.astral.sh/uv/concepts/cache/#caching-in-continuous-integration)
|
||||
for more information.
|
||||
|
||||
If you want to persist the entire cache across runs, disable cache pruning with the `prune-cache`
|
||||
input.
|
||||
If you want to prune the cache before saving it, enable cache pruning with the `prune-cache` input.
|
||||
|
||||
```yaml
|
||||
- name: Don't prune the cache before saving it
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
- name: Prune the cache before saving it
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
prune-cache: false
|
||||
prune-cache: true
|
||||
```
|
||||
|
||||
## Cache Python installs
|
||||
|
||||
By default, the Python install dir (`uv python dir` / `UV_PYTHON_INSTALL_DIR`) is not cached,
|
||||
for the same reason that the dependency cache is pruned.
|
||||
for the same reason that pruning the dependency cache can improve performance on GitHub-hosted
|
||||
runners.
|
||||
If you want to cache Python installs along with your dependencies, set the `cache-python` input to `true`.
|
||||
|
||||
Note that this only caches Python versions that uv actually installs into `UV_PYTHON_INSTALL_DIR`
|
||||
@@ -205,7 +207,7 @@ To force managed Python installs, set `UV_PYTHON_PREFERENCE=only-managed`.
|
||||
|
||||
```yaml
|
||||
- name: Cache Python installs
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-python: true
|
||||
@@ -223,7 +225,7 @@ If you want to ignore this, set the `ignore-nothing-to-cache` input to `true`.
|
||||
|
||||
```yaml
|
||||
- name: Ignore nothing to cache
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
enable-cache: true
|
||||
ignore-nothing-to-cache: true
|
||||
|
||||
@@ -10,7 +10,7 @@ are automatically verified by this action. The sha256 hashes can be found on the
|
||||
|
||||
```yaml
|
||||
- name: Install a specific version and validate the checksum
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
version: "0.3.1"
|
||||
checksum: "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8"
|
||||
@@ -39,7 +39,7 @@ The `archive_format` field is currently ignored.
|
||||
|
||||
```yaml
|
||||
- name: Use a custom manifest file
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
manifest-file: "https://example.com/my-custom-manifest.ndjson"
|
||||
```
|
||||
@@ -58,7 +58,7 @@ You can disable this by setting the `add-problem-matchers` input to `false`.
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv without problem matchers
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
add-problem-matchers: false
|
||||
```
|
||||
|
||||
@@ -9,7 +9,7 @@ This allows directly using it in later steps:
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv and activate the environment
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
activate-environment: true
|
||||
- run: uv pip install pip
|
||||
@@ -20,7 +20,7 @@ By default, the venv is created at `.venv` inside the `working-directory`.
|
||||
You can customize the venv location with `venv-path`, for example to place it in the runner temp directory:
|
||||
|
||||
```yaml
|
||||
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
- uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
activate-environment: true
|
||||
venv-path: ${{ runner.temp }}/custom-venv
|
||||
@@ -51,7 +51,7 @@ are not sufficient, you can provide a custom GitHub token with the necessary per
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv with a custom GitHub token
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
github-token: ${{ secrets.CUSTOM_GITHUB_TOKEN }}
|
||||
```
|
||||
@@ -69,7 +69,7 @@ input:
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv with a custom tool dir
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
tool-dir: "/path/to/tool/dir"
|
||||
```
|
||||
@@ -88,7 +88,7 @@ If you want to change this behaviour (especially on self-hosted runners) you can
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv with a custom tool bin dir
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
tool-bin-dir: "/path/to/tool-bin/dir"
|
||||
```
|
||||
@@ -105,7 +105,7 @@ This action supports expanding the `~` character to the user's home directory fo
|
||||
|
||||
```yaml
|
||||
- name: Expand the tilde character
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
cache-local-path: "~/path/to/cache"
|
||||
tool-dir: "~/path/to/tool/dir"
|
||||
@@ -122,7 +122,7 @@ If you want to ignore this, set the `ignore-empty-workdir` input to `true`.
|
||||
|
||||
```yaml
|
||||
- name: Ignore empty workdir
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
ignore-empty-workdir: true
|
||||
```
|
||||
@@ -131,7 +131,7 @@ If you want to ignore this, set the `ignore-empty-workdir` input to `true`.
|
||||
|
||||
This action sets several environment variables that influence uv's behavior and can be used by subsequent steps:
|
||||
|
||||
- `UV_PYTHON`: Set when `python-version` input is specified. Controls which Python version uv uses.
|
||||
- `UV_PYTHON`: Set when `python-version` is specified or the selected `.tool-versions` file contains a supported `python` entry. Controls which Python version uv uses.
|
||||
- `UV_CACHE_DIR`: Set when caching is enabled (unless already configured in uv config files). Controls where uv stores its cache.
|
||||
- `UV_TOOL_DIR`: Set when `tool-dir` input is specified. Controls where uv installs tool environments.
|
||||
- `UV_TOOL_BIN_DIR`: Set when `tool-bin-dir` input is specified. Controls where uv installs tool binaries.
|
||||
@@ -142,10 +142,11 @@ This action sets several environment variables that influence uv's behavior and
|
||||
|
||||
- `UV_NO_MODIFY_PATH`: If set, prevents the action from modifying PATH. Cannot be used with `activate-environment`.
|
||||
- `UV_CACHE_DIR`: If already set, the action will respect it instead of setting its own cache directory.
|
||||
- `UV_PYTHON`: If already set and `python-version` is not specified, the action will respect it instead of using the `python` entry from `.tool-versions`.
|
||||
|
||||
```yaml
|
||||
- name: Example using environment variables
|
||||
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
||||
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
|
||||
with:
|
||||
python-version: "3.12"
|
||||
tool-dir: "/custom/tool/dir"
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
# setup-uv Repository Threat Model
|
||||
|
||||
## Overview
|
||||
|
||||
`setup-uv` is a GitHub Action that installs or reuses `uv`, modifies `PATH` and the environment for later steps, may execute a discovered Python interpreter, may create or clear a virtual environment, and may restore or save caches. It may use `github-token` to authenticate GitHub downloads; it requires no OIDC credential or additional workflow secret.
|
||||
|
||||
The consumer runtime is the selected ref's committed action metadata, bundles, and runner-interpreted companion files; source alone is not evidence of shipped behavior. Privileged automation that generates, updates, or publishes those artifacts is also in scope.
|
||||
|
||||
The assets are job credentials; integrity of installed executables, interpreter, environment, checkout, runner, artifacts, and caches; isolation between jobs sharing caches or persistent runners; integrity of published action refs; and workflow compute/storage availability.
|
||||
|
||||
Material failures are unauthorized executable selection, credential disclosure, premature execution of lower-authority content, filesystem escape or destructive path use, cross-authority cache/runner persistence, and unauthorized publication.
|
||||
|
||||
## Threat Model, Trust Boundaries, and Assumptions
|
||||
|
||||
### Authority and trust boundaries
|
||||
|
||||
| Actor or input | Trust decision |
|
||||
|---|---|
|
||||
| Maintainers, repository/configuration administrators, and GitHub infrastructure | Trusted roots for source, bundles, workflows, refs, rulesets, environments, runner protocol, hosted isolation, and cache service. A lower-authority path into these roots is in scope; their compromise alone is not a repository bug. |
|
||||
| Consumer workflow authors and runner operators | Control the action ref, trigger, runner, permissions, secrets, proxy, environment, inputs, paths, globs, and custom sources. These are trusted choices unless derived from lower-authority event data. Selecting a custom manifest delegates metadata and executable authority; selecting a path authorizes normal operations on it and intended referents. |
|
||||
| Selected checkout, project authors, and pull-request contributors | The consumer delegates project/version files, interpreter discovery state, virtual environments, symlinks, cache inputs, and code execution within `setup-uv`'s process environment. Checkout-controlled behavior is trusted unless it overrides an explicit workflow choice or crosses an independent cache, runner, remote, or publication boundary. |
|
||||
| Remote metadata and artifacts | Default official endpoints, TLS roots, and an operator proxy are trusted mutable authorities. A custom manifest authorizes its URLs and hashes; a hash supplied by that same authority detects corruption, not malice. |
|
||||
| Cache and runner-state producers/consumers | Same-principal state is trusted by default. Integrity attacks require a lower-authority producer and higher-authority consumer. Confidentiality can flow the opposite way because lower-authority refs may read eligible higher-authority caches. Shared self-hosted state creates a boundary only when principals and authority differ. |
|
||||
| GitHub-managed automation | Dependency, coding-agent, and review workflows may exist outside the committed tree. Treat them as external principals and obtain their effective trigger, actor, token, environment, ref, and write/secret authority from live evidence. |
|
||||
|
||||
### Assumptions
|
||||
|
||||
- Running the selected `uv` and checkout-selected Python interpreters is intended. Project execution is out of scope unless it bypasses an explicit workflow choice or crosses an independent cache, runner, remote, or publication boundary.
|
||||
- Mutable official manifests, ranges, `latest`, and unprotected refs are not attacker control. A protected ref or independent checksum matters only if the selected bundle actually enforces it.
|
||||
- Same-user changes to paths, environment, proxies, or tool/cache state are not separate attacks. Demonstrate a cross-principal or lower-to-higher boundary.
|
||||
- Content merged through a trust path that can also merge executable code is not a lower-authority source; require a narrower writer or post-review mutation path.
|
||||
- Running `setup-uv` on an untrusted checkout with higher authority is a consumer trust decision; checkout-selected code may inherit the action environment.
|
||||
- Authorized paths include expected symlink/junction referents. Absolute paths and paths outside the workspace are supported; an escape requires independent control crossing an unauthorized boundary.
|
||||
- Hosted runners are assumed ephemeral and isolated. Persistence or hostile co-tenancy on self-hosted runners must be demonstrated.
|
||||
- Branch/tag rules, environments, token defaults, cache visibility, fork policy, dynamic workflows, and runner allocation are external state. Re-query required approvals/checks, bypass actors, tag movement, deployment reviewers/principals, release targets, and effective permissions for each attack path.
|
||||
- Web-application classes such as sessions, CSRF, XSS, SQL injection, and tenant isolation are not applicable.
|
||||
|
||||
### Security invariants
|
||||
|
||||
1. **Published runtime:** review `action.yml`, committed `dist/*.cjs`, and runner-interpreted shipped files; source-only fixes do not protect consumers.
|
||||
2. **Executable identity:** precedence is workflow version, version file, project configuration, then `latest`. Manifest authority, platform, variant, URL, checksum, mirror fallback, extraction, and cache placement must bind the intended artifact. A tool-cache hit bypasses download validation and depends on cache provenance.
|
||||
3. **Credential recipients:** tokens and URL credentials may reach only workflow-authorized origins, redirects, paths, and logs. Metadata authority does not imply token-recipient authority.
|
||||
4. **Executable boundaries:** checkout-selected interpreters are authorized by default. Explicit workflow selections must win, and independent cache, runner, or remote state must not substitute executables or gain additional authority.
|
||||
5. **Paths and action channels:** path/environment changes, virtual-environment clearing, outputs, state, and problem matchers must affect only authorized targets and keep untrusted values as data.
|
||||
6. **Cache boundaries:** keys, scope, restore paths, and executable content must prevent lower-to-higher poisoning; cache contents and post-action path re-resolution must prevent higher-to-lower disclosure, destructive pruning, or persistence.
|
||||
7. **Workflow and release authority:** unreviewed code or mutable tooling must not acquire write, secret, OIDC, artifact, deployment, tag, or publication authority. Only the intended reviewed bundles and commit may be released.
|
||||
8. **Availability:** independently controlled manifests, archives, globs, traversal, and caches must stay within the accepted one-job resource-failure model.
|
||||
|
||||
### Finding gate
|
||||
|
||||
Before reporting, identify the attacker and victim principals; exact controlled input; scanned action and checkout refs; runtime reachability in committed bundles; effective token, secrets/OIDC, environment gates, cache scope, and runner persistence; applicable defaults and opt-ins; validation performed or skipped; declared trust roots; baseline versus incremental capability; and concrete impact. Reproduce platform-specific behavior and distinguish the scanned ref from other versions.
|
||||
|
||||
A report must demonstrate independent attacker control, a violated guarantee, committed-runtime reachability, incremental capability, and practical impact; otherwise it is not a security finding and should not be reported as one.
|
||||
|
||||
## Attack Surface, Mitigations, and Attacker Stories
|
||||
|
||||
| Surface | Security-relevant behavior and controls | Reportable attacker story |
|
||||
|---|---|---|
|
||||
| Published action and build/release supply chain | Consumers execute committed bundles and embedded dependencies. Verify source/bundle alignment, lockfile integrity, dependency-install policy, reproducible/generated-diff checks, immutable action pins, branch enforcement, and publication target checks. | A lower-authority contributor or dependency changes shipped code, or release automation publishes a different commit, by bypassing an effective review, branch, or release control. |
|
||||
| Version, manifest, proxy, and network selection | Project files may select an official version by documented precedence. Custom manifests may select URLs, hashes, variants, and platforms and may reach arbitrary network locations. Parsing should reject malformed, ambiguous, unsupported, or incorrectly typed records; verify HTTPS, time/size bounds, proxy behavior, and selected-ref defaults. | Lower-authority event/project data violates a promised fixed version, escapes the selected manifest, probes runner-only services, causes material resource use, selects attacker bytes, or redirects later credentials. Operator selection of a custom authority is not itself a finding. |
|
||||
| Artifact URL, token, checksum, extraction, and tool cache | Mirror fallback must preserve identity and checksum policy. Origin gating should restrict tokens; redirect handling should strip authorization across unauthorized hosts and reject downgrade. Verify checksum precedence and reject missing/empty hashes when policy requires validation. Independent hashes must precede extraction. Native helpers come from `PATH`; tool-cache hits skip network/hash validation. | An attacker receives a usable token outside delegated authority, bypasses an independent pin, exploits archive/link traversal, substitutes the cached executable, or poisons shared tool state later executed with higher authority. Same-authority manifest hashes and same-user cache changes do not establish the boundary. |
|
||||
| Interpreter, PATH, virtual environment, and action channels | Checkout-selected interpreters, virtual environments, paths, symlinks, and helpers are delegated project authority. Explicit workflow choices must bind; the action also changes later-step paths/environment, emits state/outputs, invokes native helpers, and consumes cache/runner state. | Independent cache, runner, or remote content substitutes an executable; an explicit workflow choice is bypassed; or action channels cross an authority boundary. Same-checkout interpreter, path, and helper effects are not findings. |
|
||||
| GitHub uv/Python caches and post action | Cache keys should partition platform, interpreter, dependency, and policy state and restore without unsafe fallback. Determine cache defaults, visibility, and the exact hit/miss path from the selected ref and GitHub policy; an exact hit may suppress post save/prune. Post processing re-reads inputs/config/environment and may save re-resolved uv or Python paths. | A lower producer supplies executable content to a higher consumer; a higher producer exposes private data to a lower cache reader; or a later successful step retargets a cache miss toward sensitive files, destructive pruning, or cross-job persistence. Existing equal-authority code with the same secrets often gains no new confidentiality. |
|
||||
| CI, updater, dynamic automation, and release workflows | PR workflows intentionally execute contributor code. Verify effective permissions, fork behavior, credential persistence, mutable tooling, security-upload authority, and whether checks are required. Updaters convert remote data into source under write authority. Distinguish ruleset-required deployment from human review present only in a workflow DAG. | Unreviewed code gains write/secret/OIDC/artifact authority; remote metadata becomes executable generated source; a dynamic workflow has unexpected authority; or an actor satisfies a deployment/tag rule without the intended review and publishes a malicious ref. |
|
||||
| Availability and logging | Manifests, version enumeration, archives, globs, hashing, caches, and remote strings can consume resources or influence logs. Verify size/count/expansion bounds, timeouts, retries, top-level error handling, and that parsing never executes data. | Independently controlled input causes reliable material workflow cost, disk/memory exhaustion, or meaningful log/output manipulation. A bounded one-job failure or operator-selected broad input is usually Low or correctness. |
|
||||
| Lower-priority classes | Shell injection is constrained where child execution uses argv, but workflow shell blocks still require quoting review. Prototype pollution requires a dangerous merge/sink. Secret-shaped strings require proof of a genuine usable secret. Documentation drift, range surprises, malformed trusted config, and test-only code normally lack a security boundary. | Report only when a concrete lower-authority value reaches an execution, credential, persistent-state, publication, or material-availability sink. |
|
||||
|
||||
## Severity Calibration (Critical, High, Medium, Low)
|
||||
|
||||
Severity follows the complete attack graph and incremental capability, not the presence of words such as token, checksum, cache, manifest, archive, Python, PATH, release, or OIDC.
|
||||
|
||||
| Severity | Threshold | Representative examples |
|
||||
|---|---|---|
|
||||
| **Critical** | A low-prerequisite remote/lower-authority attacker compromises default distribution or installation across many consumers, publishes trusted malicious action artifacts, or gains broad credentials/runner control under safe defaults without first compromising a declared trust root. | Bypass an effective hash/origin control to distribute an automatically executed malicious binary at scale; reach publication authority to ship malicious bundles or move trusted refs without required approval; exploit default-accepted archive content for host overwrite or cross-job execution across hosted runners. |
|
||||
| **High** | A demonstrated lower-authority input crosses an execution, confidentiality, integrity, or persistence boundary in a privileged job and gains substantial capability. | Independent shared-state interpreter substitution in a write/OIDC release job; shared cache poisoning later executed with secrets; high-value cache disclosure to an untrusted ref; usable write-token disclosure; independent-pin bypass; archive/cache escape into sensitive state. |
|
||||
| **Medium** | A real but constrained crossing causes limited credential/filesystem impact, reliable remote denial of service, scoped persistence, or premature execution in a realistic uncommon configuration. | Limited executable substitution from independent cache/runner state in a read-only job; same-repository cache confusion or disclosure; reliable hosted-runner exhaustion; disclosure of a usable read-only private token; output manipulation without publication or high-value credentials. |
|
||||
| **Low** | A genuine weak boundary causes narrow disclosure, log/annotation spoofing, defense-in-depth weakness, exotic cache aliasing without a privileged consumer, or limited waste. | Confusing logs with no execution effect; bounded job failure; limited overwrite of nonexecuted cache data; disclosure of a path/URL without private data or follow-on capability. |
|
||||
|
||||
Trust-root compromise may have Critical impact but is not a repository Critical without a lower-authority path into that root or an independent control that should have survived. High requires exact trigger, refs, effective authority, sink, and committed runtime; it cannot rely only on a trusted operator choosing malicious inputs, same-user state changes, or code already intentionally executed with equal authority. A separate privileged consumer, broad secret, persistent trusted state, publication path, or cross-repository boundary can raise Medium to High.
|
||||
|
||||
Normally non-reportable without additional evidence: expected mutability of ranges, `latest`, official/custom sources, or unprotected refs; documented project version selection; checkout-selected interpreters, paths, virtual environments, symlinks, and helpers; deliberate operator selection of manifests, proxies, checksums, or paths; same-principal cache/path changes; requested `uv` or dependency execution; trusted-runner `PATH` lookup; test/developer-only code without a shipped or privileged-workflow path; behavior fixed in the scanned ref; and correctness/compatibility/documentation issues without incremental confidentiality, integrity, persistence, or availability impact.
|
||||
Generated
+1509
-1323
@@ -9,44 +9,54 @@
|
||||
"version": "1.0.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/cache": "^6.0.0",
|
||||
"@actions/cache": "^6.2.0",
|
||||
"@actions/core": "^3.0.0",
|
||||
"@actions/exec": "^3.0.0",
|
||||
"@actions/glob": "^0.6.1",
|
||||
"@actions/glob": "^0.7.0",
|
||||
"@actions/io": "^3.0.2",
|
||||
"@actions/tool-cache": "^4.0.0",
|
||||
"@renovatebot/pep440": "^4.2.2",
|
||||
"smol-toml": "^1.6.0",
|
||||
"undici": "^7.24.2"
|
||||
"@renovatebot/pep440": "^5.0.0",
|
||||
"smol-toml": "^1.7.1",
|
||||
"undici": "^8.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "^2.4.7",
|
||||
"@biomejs/biome": "^2.5.7",
|
||||
"@types/js-yaml": "^4.0.9",
|
||||
"@types/node": "^25.5.0",
|
||||
"@types/semver": "^7.7.1",
|
||||
"@vercel/ncc": "^0.38.4",
|
||||
"esbuild": "^0.27.4",
|
||||
"jest": "^30.3.0",
|
||||
"js-yaml": "^4.1.1",
|
||||
"ts-jest": "^29.4.6",
|
||||
"typescript": "^5.9.3"
|
||||
"@types/node": "^26.1.2",
|
||||
"@types/semver": "^7.8.0",
|
||||
"@vercel/ncc": "^0.44.1",
|
||||
"esbuild": "^0.28.1",
|
||||
"jest": "^30.4.2",
|
||||
"js-yaml": "^5.2.3",
|
||||
"ts-jest": "^29.4.11",
|
||||
"typescript": "^6.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-6.0.0.tgz",
|
||||
"integrity": "sha512-+tCs634SyGBQJ3KU1rtAVabmN/gYiT9WgzTSJzWwdPCLmM3zWrdbysaErKv8HyI6OozClrxNvDgPjJimbHZZvw==",
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-6.2.0.tgz",
|
||||
"integrity": "sha512-Nv0xWRmbxfDbAn/70flO/F6tj2Nv4XTYMAsQHiDFSojCDfso/Zni+fRKa14ToI9hnmOW/rQcY1WYb6wsM7Pgwg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^3.0.1",
|
||||
"@actions/exec": "^3.0.0",
|
||||
"@actions/glob": "^0.6.1",
|
||||
"@actions/http-client": "^4.0.1",
|
||||
"@actions/io": "^3.0.2",
|
||||
"@azure/core-rest-pipeline": "^1.23.0",
|
||||
"@azure/storage-blob": "^12.31.0",
|
||||
"@protobuf-ts/runtime-rpc": "^2.11.1",
|
||||
"semver": "^7.7.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/cache/node_modules/@actions/glob": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.6.1.tgz",
|
||||
"integrity": "sha512-K4+2Ac5ILcf2ySdJCha+Pop9NcKjxqCL4xL4zI50dgB2PbXgC0+AcP011xfH4Of6b4QEJJg8dyZYv7zl4byTsw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^3.0.0",
|
||||
"@actions/exec": "^3.0.0",
|
||||
"@actions/glob": "^0.6.1",
|
||||
"@actions/http-client": "^4.0.0",
|
||||
"@actions/io": "^3.0.0",
|
||||
"@azure/core-rest-pipeline": "^1.22.0",
|
||||
"@azure/storage-blob": "^12.30.0",
|
||||
"@protobuf-ts/runtime-rpc": "^2.11.1",
|
||||
"semver": "^7.7.3"
|
||||
"minimatch": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/cache/node_modules/semver": {
|
||||
@@ -62,9 +72,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/core": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-3.0.0.tgz",
|
||||
"integrity": "sha512-zYt6cz+ivnTmiT/ksRVriMBOiuoUpDCJJlZ5KPl2/FRdvwU3f7MPh9qftvbkXJThragzUZieit2nyHUyw53Seg==",
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-3.0.1.tgz",
|
||||
"integrity": "sha512-a6d/Nwahm9fliVGRhdhofo40HjHQasUPusmc7vBfyky+7Z+P2A1J68zyFVaNcEclc/Se+eO595oAr5nwEIoIUA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/exec": "^3.0.0",
|
||||
@@ -81,19 +91,55 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/glob": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.6.1.tgz",
|
||||
"integrity": "sha512-K4+2Ac5ILcf2ySdJCha+Pop9NcKjxqCL4xL4zI50dgB2PbXgC0+AcP011xfH4Of6b4QEJJg8dyZYv7zl4byTsw==",
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.7.0.tgz",
|
||||
"integrity": "sha512-+7s3wM+cXapDLmLL1NVWHawqcJOZzXZy2df/VhNn8DnZtS/x83iTCKaUn9F0llur4h3CII0AilvKKH4CMPL8Gw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^3.0.0",
|
||||
"minimatch": "^3.0.4"
|
||||
"minimatch": "^10.2.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/glob/node_modules/balanced-match": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
|
||||
"integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "18 || 20 || >=22"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/glob/node_modules/brace-expansion": {
|
||||
"version": "5.0.9",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
|
||||
"integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^4.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/glob/node_modules/minimatch": {
|
||||
"version": "10.2.6",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
|
||||
"integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
|
||||
"license": "BlueOak-1.0.0",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^5.0.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": "18 || 20 || >=22"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/http-client": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.0.tgz",
|
||||
"integrity": "sha512-QuwPsgVMsD6qaPD57GLZi9sqzAZCtiJT8kVBCDpLtxhL5MydQ4gS+DrejtZZPdIYyB1e95uCK9Luyds7ybHI3g==",
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.1.tgz",
|
||||
"integrity": "sha512-+Nvd1ImaOZBSoPbsUtEhv+1z99H12xzncCkz0a3RuehINE81FZSe2QTj3uvAPTcJX/SCzUQHQ0D1GrPMbrPitg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tunnel": "^0.0.6",
|
||||
@@ -499,9 +545,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-plugin-utils": {
|
||||
"version": "7.28.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
|
||||
"integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
|
||||
"integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -666,13 +712,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-syntax-jsx": {
|
||||
"version": "7.28.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz",
|
||||
"integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==",
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz",
|
||||
"integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-plugin-utils": "^7.28.6"
|
||||
"@babel/helper-plugin-utils": "^7.29.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -792,13 +838,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-syntax-typescript": {
|
||||
"version": "7.28.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz",
|
||||
"integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==",
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz",
|
||||
"integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-plugin-utils": "^7.28.6"
|
||||
"@babel/helper-plugin-utils": "^7.29.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -863,9 +909,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@biomejs/biome": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.7.tgz",
|
||||
"integrity": "sha512-vXrgcmNGZ4lpdwZSpMf1hWw1aWS6B+SyeSYKTLrNsiUsAdSRN0J4d/7mF3ogJFbIwFFSOL3wT92Zzxia/d5/ng==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.5.7.tgz",
|
||||
"integrity": "sha512-zr8K/DcY5tYsQOQwqMJ0AWElo6QgmgNI7idXgXLhevVszlt8RGVpesEJPqx3ThazLaOwjJ5Y8fz3BtH5fGZNsw==",
|
||||
"dev": true,
|
||||
"license": "MIT OR Apache-2.0",
|
||||
"bin": {
|
||||
@@ -879,20 +925,20 @@
|
||||
"url": "https://opencollective.com/biome"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@biomejs/cli-darwin-arm64": "2.4.7",
|
||||
"@biomejs/cli-darwin-x64": "2.4.7",
|
||||
"@biomejs/cli-linux-arm64": "2.4.7",
|
||||
"@biomejs/cli-linux-arm64-musl": "2.4.7",
|
||||
"@biomejs/cli-linux-x64": "2.4.7",
|
||||
"@biomejs/cli-linux-x64-musl": "2.4.7",
|
||||
"@biomejs/cli-win32-arm64": "2.4.7",
|
||||
"@biomejs/cli-win32-x64": "2.4.7"
|
||||
"@biomejs/cli-darwin-arm64": "2.5.7",
|
||||
"@biomejs/cli-darwin-x64": "2.5.7",
|
||||
"@biomejs/cli-linux-arm64": "2.5.7",
|
||||
"@biomejs/cli-linux-arm64-musl": "2.5.7",
|
||||
"@biomejs/cli-linux-x64": "2.5.7",
|
||||
"@biomejs/cli-linux-x64-musl": "2.5.7",
|
||||
"@biomejs/cli-win32-arm64": "2.5.7",
|
||||
"@biomejs/cli-win32-x64": "2.5.7"
|
||||
}
|
||||
},
|
||||
"node_modules/@biomejs/cli-darwin-arm64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.7.tgz",
|
||||
"integrity": "sha512-Oo0cF5mHzmvDmTXw8XSjhCia8K6YrZnk7aCS54+/HxyMdZMruMO3nfpDsrlar/EQWe41r1qrwKiCa2QDYHDzWA==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.5.7.tgz",
|
||||
"integrity": "sha512-vxo/Ls3/PYdQWyLhYYcgMOCzQypAjcY+iihS8M0wW03l16TCLW4zqZzGo75gm1VdCMj38hTVZ31KBWrZ4G9dJw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -907,9 +953,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@biomejs/cli-darwin-x64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.7.tgz",
|
||||
"integrity": "sha512-I+cOG3sd/7HdFtvDSnF9QQPrWguUH7zrkIMMykM3PtfWU9soTcS2yRb9Myq6MHmzbeCT08D1UmY+BaiMl5CcoQ==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.5.7.tgz",
|
||||
"integrity": "sha512-Cd3Ga61amT/Yl/0x8elP5hhGYaFy4bw6WuysTgf7oo8TA5tJ5A1k+DkVoJ2BHbTVil51gTX9VPzArnrlLJ3Kyg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -924,9 +970,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@biomejs/cli-linux-arm64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.7.tgz",
|
||||
"integrity": "sha512-om6FugwmibzfP/6ALj5WRDVSND4H2G9X0nkI1HZpp2ySf9lW2j0X68oQSaHEnls6666oy4KDsc5RFjT4m0kV0w==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.5.7.tgz",
|
||||
"integrity": "sha512-rR2QE0yF2GYSuYuKIa7pKvODGJqnOH+2eDREAM8wV+mWKSkMQKdAp4zXEZfTaxY8PMoNONnpgSWcBCyLDPDOKg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -941,9 +987,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@biomejs/cli-linux-arm64-musl": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.7.tgz",
|
||||
"integrity": "sha512-I2NvM9KPb09jWml93O2/5WMfNR7Lee5Latag1JThDRMURVhPX74p9UDnyTw3Ae6cE1DgXfw7sqQgX7rkvpc0vw==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.5.7.tgz",
|
||||
"integrity": "sha512-xPI5yB6XlpDbNkS+bm1t42olw5c4l3UrlOmLg7KtLJvjvkNF/1V4tnUgfkylGIeb3u/T+BzMGYqgQhzjAoJzuQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -958,9 +1004,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@biomejs/cli-linux-x64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.7.tgz",
|
||||
"integrity": "sha512-bV8/uo2Tj+gumnk4sUdkerWyCPRabaZdv88IpbmDWARQQoA/Q0YaqPz1a+LSEDIL7OfrnPi9Hq1Llz4ZIGyIQQ==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.5.7.tgz",
|
||||
"integrity": "sha512-FQgqJhscrqJUFptGaRSUJWlXAExwWcDwLuK49dvKfkQ1bB5SEEyFssnsxQY83Xm6jR0EbbX3+8+D5bfvYqUG2Q==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -975,9 +1021,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@biomejs/cli-linux-x64-musl": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.7.tgz",
|
||||
"integrity": "sha512-00kx4YrBMU8374zd2wHuRV5wseh0rom5HqRND+vDldJPrWwQw+mzd/d8byI9hPx926CG+vWzq6AeiT7Yi5y59g==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.5.7.tgz",
|
||||
"integrity": "sha512-rE5VZi+qtmPgQH+l7jVxYoZ18b/TiHEhulhMpjmCZH1PltSbjRcxNWywC3HZ9tYottG7ORkeTtoscBilKSBm0g==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -992,9 +1038,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@biomejs/cli-win32-arm64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.7.tgz",
|
||||
"integrity": "sha512-hOUHBMlFCvDhu3WCq6vaBoG0dp0LkWxSEnEEsxxXvOa9TfT6ZBnbh72A/xBM7CBYB7WgwqboetzFEVDnMxelyw==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.5.7.tgz",
|
||||
"integrity": "sha512-Oq4x0CCwP4jirrcTywXs5kOGZ4v5vuEP+gWrbtjApOA2CL9F3F9GlIdQIci8AKSCa/zURanMRpX/4wQ7Am6hHg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1009,9 +1055,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@biomejs/cli-win32-x64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.7.tgz",
|
||||
"integrity": "sha512-qEpGjSkPC3qX4ycbMUthXvi9CkRq7kZpkqMY1OyhmYlYLnANnooDQ7hDerM8+0NJ+DZKVnsIc07h30XOpt7LtQ==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.5.7.tgz",
|
||||
"integrity": "sha512-V+0wu/nrj2S+MhP4EQ0uHNolP0IALEsz45pg0WoKkHfDeh0+ItHwP/p7bX5RPoMOl9NkpHYWdYPhIcy2mACHvQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1026,21 +1072,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@emnapi/core": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz",
|
||||
"integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==",
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
|
||||
"integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@emnapi/wasi-threads": "1.2.0",
|
||||
"@emnapi/wasi-threads": "1.2.1",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@emnapi/runtime": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz",
|
||||
"integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==",
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
|
||||
"integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
@@ -1049,9 +1095,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@emnapi/wasi-threads": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz",
|
||||
"integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz",
|
||||
"integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
@@ -1060,9 +1106,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/aix-ppc64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz",
|
||||
"integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
|
||||
"integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
@@ -1077,9 +1123,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-arm": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz",
|
||||
"integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz",
|
||||
"integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -1094,9 +1140,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1111,9 +1157,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1128,9 +1174,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/darwin-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1145,9 +1191,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/darwin-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1162,9 +1208,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/freebsd-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1179,9 +1225,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/freebsd-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1196,9 +1242,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-arm": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz",
|
||||
"integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz",
|
||||
"integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -1213,9 +1259,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1230,9 +1276,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-ia32": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz",
|
||||
"integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz",
|
||||
"integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -1247,9 +1293,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-loong64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz",
|
||||
"integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz",
|
||||
"integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
@@ -1264,9 +1310,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-mips64el": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz",
|
||||
"integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz",
|
||||
"integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==",
|
||||
"cpu": [
|
||||
"mips64el"
|
||||
],
|
||||
@@ -1281,9 +1327,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-ppc64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz",
|
||||
"integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz",
|
||||
"integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
@@ -1298,9 +1344,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-riscv64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz",
|
||||
"integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz",
|
||||
"integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
@@ -1315,9 +1361,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-s390x": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz",
|
||||
"integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz",
|
||||
"integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
@@ -1332,9 +1378,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1349,9 +1395,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/netbsd-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1366,9 +1412,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/netbsd-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1383,9 +1429,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openbsd-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1400,9 +1446,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openbsd-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1417,9 +1463,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openharmony-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1434,9 +1480,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/sunos-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1451,9 +1497,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1468,9 +1514,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-ia32": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz",
|
||||
"integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz",
|
||||
"integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -1485,9 +1531,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1570,17 +1616,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/console": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz",
|
||||
"integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/console/-/console-30.4.1.tgz",
|
||||
"integrity": "sha512-v3bhyxUh9Hgmo5p6hAOXe14/R3ZxZDOsvHleh4B07z3m/x4/ngPUXEm9XwK4sF4u+f+P2ORb0Ge+MgpaqRMVDA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"slash": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1588,38 +1634,39 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/core": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz",
|
||||
"integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/core/-/core-30.4.2.tgz",
|
||||
"integrity": "sha512-TZJA6cPJUFxoWhxaLo8t0VX/MZX2wPWr0uIDvLSHIvN4gu9h02vSzqI2kBADG1ExqQlC+cY09xKMSreivvrChQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/console": "30.3.0",
|
||||
"@jest/pattern": "30.0.1",
|
||||
"@jest/reporters": "30.3.0",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/console": "30.4.1",
|
||||
"@jest/pattern": "30.4.0",
|
||||
"@jest/reporters": "30.4.1",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"chalk": "^4.1.2",
|
||||
"ci-info": "^4.2.0",
|
||||
"exit-x": "^0.2.2",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-changed-files": "30.3.0",
|
||||
"jest-config": "30.3.0",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-resolve": "30.3.0",
|
||||
"jest-resolve-dependencies": "30.3.0",
|
||||
"jest-runner": "30.3.0",
|
||||
"jest-runtime": "30.3.0",
|
||||
"jest-snapshot": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-validate": "30.3.0",
|
||||
"jest-watcher": "30.3.0",
|
||||
"pretty-format": "30.3.0",
|
||||
"jest-changed-files": "30.4.1",
|
||||
"jest-config": "30.4.2",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-resolve": "30.4.1",
|
||||
"jest-resolve-dependencies": "30.4.2",
|
||||
"jest-runner": "30.4.2",
|
||||
"jest-runtime": "30.4.2",
|
||||
"jest-snapshot": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-validate": "30.4.1",
|
||||
"jest-watcher": "30.4.1",
|
||||
"pretty-format": "30.4.1",
|
||||
"slash": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1635,9 +1682,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/diff-sequences": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz",
|
||||
"integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz",
|
||||
"integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -1645,39 +1692,39 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/environment": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz",
|
||||
"integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.4.1.tgz",
|
||||
"integrity": "sha512-AK9yNRqgKxiabqMoe4oW+3/TSSeV8vkdC7BGaxZdU0AFXfOpofTLqdru2GXKZghP3sdgwE9XXpnVwfZ8JnFV4w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/fake-timers": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/fake-timers": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "30.3.0"
|
||||
"jest-mock": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/expect": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz",
|
||||
"integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.4.1.tgz",
|
||||
"integrity": "sha512-ginrj6TMgh2GshLUGCjO94Ptx9HhdZA/I6A9iUfyeLKFtdAjnKzHDgzgP9HYQgbxM1lbXScQ2eUBz2lGeVDPWA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"expect": "30.3.0",
|
||||
"jest-snapshot": "30.3.0"
|
||||
"expect": "30.4.1",
|
||||
"jest-snapshot": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/expect-utils": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz",
|
||||
"integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.4.1.tgz",
|
||||
"integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1688,18 +1735,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/fake-timers": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz",
|
||||
"integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.4.1.tgz",
|
||||
"integrity": "sha512-iW5umdmfPeWzehrVhugFQZqCchSCud5S1l2YT0O9ZhjRR0ExclANDZkiSBwzqtnlOn0J1JXvO+HZ6rkuyOVOgQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@sinonjs/fake-timers": "^15.0.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@sinonjs/fake-timers": "^15.4.0",
|
||||
"@types/node": "*",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-mock": "30.3.0",
|
||||
"jest-util": "30.3.0"
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-mock": "30.4.1",
|
||||
"jest-util": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -1716,47 +1763,47 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/globals": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz",
|
||||
"integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.4.1.tgz",
|
||||
"integrity": "sha512-ZbuY4cmXC8DkxYjfvT2DbcHWL2T6vmsMhXCDcmTB2T0y0gaezBI77ufq5ZAIdcRkYZ7NEQEDg1xFeKbxUJ5v5Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/environment": "30.3.0",
|
||||
"@jest/expect": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"jest-mock": "30.3.0"
|
||||
"@jest/environment": "30.4.1",
|
||||
"@jest/expect": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"jest-mock": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/pattern": {
|
||||
"version": "30.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz",
|
||||
"integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz",
|
||||
"integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"jest-regex-util": "30.0.1"
|
||||
"jest-regex-util": "30.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/reporters": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz",
|
||||
"integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.4.1.tgz",
|
||||
"integrity": "sha512-/SnkPCzEQpUaBH81kjdEdDdo2WZl5hxw+BmLDGWjRkm8o7XlhjwsU36cqwe5PGBE5WYpBvDzRSdXx9rbGuJtNA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@bcoe/v8-coverage": "^0.2.3",
|
||||
"@jest/console": "30.3.0",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/console": "30.4.1",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@jridgewell/trace-mapping": "^0.3.25",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
@@ -1769,9 +1816,9 @@
|
||||
"istanbul-lib-report": "^3.0.0",
|
||||
"istanbul-lib-source-maps": "^5.0.0",
|
||||
"istanbul-reports": "^3.1.3",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-worker": "30.3.0",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-worker": "30.4.1",
|
||||
"slash": "^3.0.0",
|
||||
"string-length": "^4.0.2",
|
||||
"v8-to-istanbul": "^9.0.1"
|
||||
@@ -1789,9 +1836,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/schemas": {
|
||||
"version": "30.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz",
|
||||
"integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz",
|
||||
"integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1802,13 +1849,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/snapshot-utils": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz",
|
||||
"integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.4.1.tgz",
|
||||
"integrity": "sha512-ObY4ljvQ95mt6iwKtVLetR/4yXiAgl3H4nJxhztr0MTjrN97TwDYrnCp/kF60Ec9HdhkWTHSu+Hg05aXfngpOA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"natural-compare": "^1.4.0"
|
||||
@@ -1833,14 +1880,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/test-result": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz",
|
||||
"integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.4.1.tgz",
|
||||
"integrity": "sha512-/ZG7pgEiOmmWkN9TplKbOu4id2N5lh7FHwRwlkgBVAzGdRH+OkkQ8wX/kIxg4zmd3ZQvAL1RwL2yWsvNYYECTw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/console": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/console": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/istanbul-lib-coverage": "^2.0.6",
|
||||
"collect-v8-coverage": "^1.0.2"
|
||||
},
|
||||
@@ -1849,15 +1896,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/test-sequencer": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz",
|
||||
"integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.4.1.tgz",
|
||||
"integrity": "sha512-PeYE+4td5rKjoRPxztObrXU+H8hsjZfxKMXOcmrr34JerSyB/ROOxbbicz8B7A5j9R9VayDnVPvBmedqCsFCdw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"slash": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1865,23 +1912,23 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/transform": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz",
|
||||
"integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.4.1.tgz",
|
||||
"integrity": "sha512-Wz0LyktlTvRefoymh+n64hQ84KNXsRGcwdoZ8CSa0Ea+fgYcHZlnk+hDP7v2MS7il2bQ5uTEIxf4/NNfhMN4KQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.27.4",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@jridgewell/trace-mapping": "^0.3.25",
|
||||
"babel-plugin-istanbul": "^7.0.1",
|
||||
"chalk": "^4.1.2",
|
||||
"convert-source-map": "^2.0.0",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-util": "30.4.1",
|
||||
"pirates": "^4.0.7",
|
||||
"slash": "^3.0.0",
|
||||
"write-file-atomic": "^5.0.1"
|
||||
@@ -1891,14 +1938,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/types": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz",
|
||||
"integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz",
|
||||
"integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/pattern": "30.0.1",
|
||||
"@jest/schemas": "30.0.5",
|
||||
"@jest/pattern": "30.4.0",
|
||||
"@jest/schemas": "30.4.1",
|
||||
"@types/istanbul-lib-coverage": "^2.0.6",
|
||||
"@types/istanbul-reports": "^3.0.4",
|
||||
"@types/node": "*",
|
||||
@@ -1959,16 +2006,22 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/wasm-runtime": {
|
||||
"version": "0.2.12",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz",
|
||||
"integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==",
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz",
|
||||
"integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@emnapi/core": "^1.4.3",
|
||||
"@emnapi/runtime": "^1.4.3",
|
||||
"@tybys/wasm-util": "^0.10.0"
|
||||
"@tybys/wasm-util": "^0.10.3"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/Brooooooklyn"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@emnapi/core": "^1.7.1",
|
||||
"@emnapi/runtime": "^1.7.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@pkgjs/parseargs": {
|
||||
@@ -1983,13 +2036,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@pkgr/core": {
|
||||
"version": "0.2.9",
|
||||
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
|
||||
"integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
|
||||
"version": "0.3.6",
|
||||
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz",
|
||||
"integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.18.0 || >=16.0.0"
|
||||
"node": "^14.18.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/pkgr"
|
||||
@@ -2011,19 +2064,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@renovatebot/pep440": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@renovatebot/pep440/-/pep440-4.2.2.tgz",
|
||||
"integrity": "sha512-dSbrkSS9/NfNwhOgQ0rpKA9KNiKSFhgK707Wi+oX8SZLqvu8dvsVuzORbKOYq5eX4nSiwrHApWisecw0cZhjVQ==",
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@renovatebot/pep440/-/pep440-5.0.0.tgz",
|
||||
"integrity": "sha512-91cFM32/pnOAvC7W1W1kPPI9QM2y6OrYCeomz7pop4A+3Ksh2XnZXGznUMlzR7YbOQlg7X/MNlF27s9Yt9hhTA==",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": "^20.9.0 || ^22.11.0 || ^24",
|
||||
"pnpm": "^10.0.0"
|
||||
"node": "^22.11.0 || >=24.10.0",
|
||||
"pnpm": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@sinclair/typebox": {
|
||||
"version": "0.34.38",
|
||||
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.38.tgz",
|
||||
"integrity": "sha512-HpkxMmc2XmZKhvaKIZZThlHmx1L0I/V1hWK1NubtlFnr6ZqdiOpV72TKudZUNQjZNsyDBay72qFEhEvb+bcwcA==",
|
||||
"version": "0.34.49",
|
||||
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz",
|
||||
"integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -2038,9 +2091,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@sinonjs/fake-timers": {
|
||||
"version": "15.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz",
|
||||
"integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==",
|
||||
"version": "15.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz",
|
||||
"integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==",
|
||||
"dev": true,
|
||||
"license": "BSD-3-Clause",
|
||||
"dependencies": {
|
||||
@@ -2048,9 +2101,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@tybys/wasm-util": {
|
||||
"version": "0.10.1",
|
||||
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
|
||||
"integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
|
||||
"version": "0.10.3",
|
||||
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
|
||||
"integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
@@ -2138,19 +2191,19 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "25.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz",
|
||||
"integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
|
||||
"version": "26.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz",
|
||||
"integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~7.18.0"
|
||||
"undici-types": "~8.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/semver": {
|
||||
"version": "7.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz",
|
||||
"integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==",
|
||||
"version": "7.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.8.0.tgz",
|
||||
"integrity": "sha512-1mAINjtQCXXeLkJ9ehXkwOcBpqtLxiVtKhpUf83DdRNdQKV0iXZpaHYqRr7nj+wvxuJzoAmAwXI+sCNMv1CzLQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -2200,9 +2253,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-android-arm-eabi": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz",
|
||||
"integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz",
|
||||
"integrity": "sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -2214,9 +2267,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-android-arm64": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz",
|
||||
"integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz",
|
||||
"integrity": "sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2228,9 +2281,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-darwin-arm64": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz",
|
||||
"integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz",
|
||||
"integrity": "sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2242,9 +2295,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-darwin-x64": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz",
|
||||
"integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz",
|
||||
"integrity": "sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -2256,9 +2309,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-freebsd-x64": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz",
|
||||
"integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz",
|
||||
"integrity": "sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -2270,9 +2323,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz",
|
||||
"integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz",
|
||||
"integrity": "sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -2284,9 +2337,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-arm-musleabihf": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz",
|
||||
"integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz",
|
||||
"integrity": "sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -2298,9 +2351,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-arm64-gnu": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz",
|
||||
"integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2312,9 +2365,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-arm64-musl": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz",
|
||||
"integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz",
|
||||
"integrity": "sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2325,10 +2378,38 @@
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-loong64-gnu": {
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-loong64-musl": {
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz",
|
||||
"integrity": "sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-ppc64-gnu": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz",
|
||||
"integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
@@ -2340,9 +2421,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-riscv64-gnu": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz",
|
||||
"integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
@@ -2354,9 +2435,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-riscv64-musl": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz",
|
||||
"integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz",
|
||||
"integrity": "sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
@@ -2368,9 +2449,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-s390x-gnu": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz",
|
||||
"integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
@@ -2382,9 +2463,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-x64-gnu": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz",
|
||||
"integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -2396,9 +2477,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-linux-x64-musl": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz",
|
||||
"integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz",
|
||||
"integrity": "sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -2409,10 +2490,24 @@
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-openharmony-arm64": {
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz",
|
||||
"integrity": "sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openharmony"
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-wasm32-wasi": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz",
|
||||
"integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz",
|
||||
"integrity": "sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==",
|
||||
"cpu": [
|
||||
"wasm32"
|
||||
],
|
||||
@@ -2420,16 +2515,18 @@
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@napi-rs/wasm-runtime": "^0.2.11"
|
||||
"@emnapi/core": "1.10.0",
|
||||
"@emnapi/runtime": "1.10.0",
|
||||
"@napi-rs/wasm-runtime": "^1.1.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-win32-arm64-msvc": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz",
|
||||
"integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz",
|
||||
"integrity": "sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2441,9 +2538,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-win32-ia32-msvc": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz",
|
||||
"integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz",
|
||||
"integrity": "sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -2455,9 +2552,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@unrs/resolver-binding-win32-x64-msvc": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz",
|
||||
"integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz",
|
||||
"integrity": "sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -2469,9 +2566,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@vercel/ncc": {
|
||||
"version": "0.38.4",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.4.tgz",
|
||||
"integrity": "sha512-8LwjnlP39s08C08J5NstzriPvW1SP8Zfpp1BvC2sI35kPeZnHfxVkCwu4/+Wodgnd60UtT1n8K8zw+Mp7J9JmQ==",
|
||||
"version": "0.44.1",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.44.1.tgz",
|
||||
"integrity": "sha512-cUjIE5P2YY1n+Kt9rFIazMMpGoPn1Fic04rOmTkElMkiDP5oszGfERMpo2shVkFKDL7rVppdM2pqJKC59shQWQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
@@ -2564,16 +2661,16 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/babel-jest": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz",
|
||||
"integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.4.1.tgz",
|
||||
"integrity": "sha512-fATAbM8piYxkiXQp3RBXmZHxZVNJZAVXXfyeyCN2Tida3+qJ8ea9UxhiJ2y4fLO90ZImKt6k9FlcH2+rLkJGhw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@types/babel__core": "^7.20.5",
|
||||
"babel-plugin-istanbul": "^7.0.1",
|
||||
"babel-preset-jest": "30.3.0",
|
||||
"babel-preset-jest": "30.4.0",
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"slash": "^3.0.0"
|
||||
@@ -2606,9 +2703,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/babel-plugin-jest-hoist": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz",
|
||||
"integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.4.0.tgz",
|
||||
"integrity": "sha512-9EdtWM/sSfXLOGLwSn+GS6pIXyBnL07/8gyJlwFXjWy4DxMOyItqyUT29d4lQiS380EZwYlX7/At4PgBS+m2aA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -2646,13 +2743,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/babel-preset-jest": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz",
|
||||
"integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.4.0.tgz",
|
||||
"integrity": "sha512-lBY4jxsNmCnSiu7kquw8ZC9F4+XLMOKypT3RnNHPvU2Kpd4W0xaPuLr5ZkRyOsvLYAY4yaW1ZwTW4xB7NIiZzg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"babel-plugin-jest-hoist": "30.3.0",
|
||||
"babel-plugin-jest-hoist": "30.4.0",
|
||||
"babel-preset-current-node-syntax": "^1.2.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -3064,9 +3161,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz",
|
||||
"integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
|
||||
"integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
@@ -3077,32 +3174,32 @@
|
||||
"node": ">=18"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esbuild/aix-ppc64": "0.27.4",
|
||||
"@esbuild/android-arm": "0.27.4",
|
||||
"@esbuild/android-arm64": "0.27.4",
|
||||
"@esbuild/android-x64": "0.27.4",
|
||||
"@esbuild/darwin-arm64": "0.27.4",
|
||||
"@esbuild/darwin-x64": "0.27.4",
|
||||
"@esbuild/freebsd-arm64": "0.27.4",
|
||||
"@esbuild/freebsd-x64": "0.27.4",
|
||||
"@esbuild/linux-arm": "0.27.4",
|
||||
"@esbuild/linux-arm64": "0.27.4",
|
||||
"@esbuild/linux-ia32": "0.27.4",
|
||||
"@esbuild/linux-loong64": "0.27.4",
|
||||
"@esbuild/linux-mips64el": "0.27.4",
|
||||
"@esbuild/linux-ppc64": "0.27.4",
|
||||
"@esbuild/linux-riscv64": "0.27.4",
|
||||
"@esbuild/linux-s390x": "0.27.4",
|
||||
"@esbuild/linux-x64": "0.27.4",
|
||||
"@esbuild/netbsd-arm64": "0.27.4",
|
||||
"@esbuild/netbsd-x64": "0.27.4",
|
||||
"@esbuild/openbsd-arm64": "0.27.4",
|
||||
"@esbuild/openbsd-x64": "0.27.4",
|
||||
"@esbuild/openharmony-arm64": "0.27.4",
|
||||
"@esbuild/sunos-x64": "0.27.4",
|
||||
"@esbuild/win32-arm64": "0.27.4",
|
||||
"@esbuild/win32-ia32": "0.27.4",
|
||||
"@esbuild/win32-x64": "0.27.4"
|
||||
"@esbuild/aix-ppc64": "0.28.1",
|
||||
"@esbuild/android-arm": "0.28.1",
|
||||
"@esbuild/android-arm64": "0.28.1",
|
||||
"@esbuild/android-x64": "0.28.1",
|
||||
"@esbuild/darwin-arm64": "0.28.1",
|
||||
"@esbuild/darwin-x64": "0.28.1",
|
||||
"@esbuild/freebsd-arm64": "0.28.1",
|
||||
"@esbuild/freebsd-x64": "0.28.1",
|
||||
"@esbuild/linux-arm": "0.28.1",
|
||||
"@esbuild/linux-arm64": "0.28.1",
|
||||
"@esbuild/linux-ia32": "0.28.1",
|
||||
"@esbuild/linux-loong64": "0.28.1",
|
||||
"@esbuild/linux-mips64el": "0.28.1",
|
||||
"@esbuild/linux-ppc64": "0.28.1",
|
||||
"@esbuild/linux-riscv64": "0.28.1",
|
||||
"@esbuild/linux-s390x": "0.28.1",
|
||||
"@esbuild/linux-x64": "0.28.1",
|
||||
"@esbuild/netbsd-arm64": "0.28.1",
|
||||
"@esbuild/netbsd-x64": "0.28.1",
|
||||
"@esbuild/openbsd-arm64": "0.28.1",
|
||||
"@esbuild/openbsd-x64": "0.28.1",
|
||||
"@esbuild/openharmony-arm64": "0.28.1",
|
||||
"@esbuild/sunos-x64": "0.28.1",
|
||||
"@esbuild/win32-arm64": "0.28.1",
|
||||
"@esbuild/win32-ia32": "0.28.1",
|
||||
"@esbuild/win32-x64": "0.28.1"
|
||||
}
|
||||
},
|
||||
"node_modules/escalade": {
|
||||
@@ -3190,18 +3287,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expect": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz",
|
||||
"integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz",
|
||||
"integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/expect-utils": "30.3.0",
|
||||
"@jest/expect-utils": "30.4.1",
|
||||
"@jest/get-type": "30.1.0",
|
||||
"jest-matcher-utils": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-mock": "30.3.0",
|
||||
"jest-util": "30.3.0"
|
||||
"jest-matcher-utils": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-mock": "30.4.1",
|
||||
"jest-util": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -3374,9 +3471,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/glob/node_modules/brace-expansion": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
|
||||
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
|
||||
"integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -3406,9 +3503,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/handlebars": {
|
||||
"version": "4.7.8",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
|
||||
"integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
|
||||
"version": "4.7.9",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz",
|
||||
"integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -3675,16 +3772,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz",
|
||||
"integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-30.4.2.tgz",
|
||||
"integrity": "sha512-Yi1jqNC/Oq0N4hBgNH/YvBpP1P57QqundgytzYqy3yqAa7NZPNjSoi4SGbRAXDMdBzNE6xBCi5U7RgfrvMEUVQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/core": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/core": "30.4.2",
|
||||
"@jest/types": "30.4.1",
|
||||
"import-local": "^3.2.0",
|
||||
"jest-cli": "30.3.0"
|
||||
"jest-cli": "30.4.2"
|
||||
},
|
||||
"bin": {
|
||||
"jest": "bin/jest.js"
|
||||
@@ -3702,14 +3799,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-changed-files": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz",
|
||||
"integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.4.1.tgz",
|
||||
"integrity": "sha512-IuctmYrxi21iOSOaIXpJWalHyPAsVv0GeBHKDn8C1CA4W5htHn7INL+wdnL4Bo0+olEndvAFkmb++tIQJG+vvg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"execa": "^5.1.1",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-util": "30.4.1",
|
||||
"p-limit": "^3.1.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -3717,29 +3814,29 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-circus": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz",
|
||||
"integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.4.2.tgz",
|
||||
"integrity": "sha512-rvHH7VlY6LgbJXJTQ87GW62g1FntOtbhh0zT+v04kC+pgL6aBKyYINXxWukCpj3dcIBMw5/XUbtDS9dU9JTXeQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/environment": "30.3.0",
|
||||
"@jest/expect": "30.3.0",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/environment": "30.4.1",
|
||||
"@jest/expect": "30.4.1",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"co": "^4.6.0",
|
||||
"dedent": "^1.6.0",
|
||||
"is-generator-fn": "^2.1.0",
|
||||
"jest-each": "30.3.0",
|
||||
"jest-matcher-utils": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-runtime": "30.3.0",
|
||||
"jest-snapshot": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-each": "30.4.1",
|
||||
"jest-matcher-utils": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-runtime": "30.4.2",
|
||||
"jest-snapshot": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"p-limit": "^3.1.0",
|
||||
"pretty-format": "30.3.0",
|
||||
"pretty-format": "30.4.1",
|
||||
"pure-rand": "^7.0.0",
|
||||
"slash": "^3.0.0",
|
||||
"stack-utils": "^2.0.6"
|
||||
@@ -3749,21 +3846,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-cli": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz",
|
||||
"integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.4.2.tgz",
|
||||
"integrity": "sha512-jfA2ocvVHMXS2QijrJ0d31ektP+d/W0T5RpcTX2Pq+3sVqHlsXVCM2+FmwpL+bdY8OfHpIg9xMxLF17Zg0U49Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/core": "30.3.0",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/core": "30.4.2",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"chalk": "^4.1.2",
|
||||
"exit-x": "^0.2.2",
|
||||
"import-local": "^3.2.0",
|
||||
"jest-config": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-validate": "30.3.0",
|
||||
"jest-config": "30.4.2",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-validate": "30.4.1",
|
||||
"yargs": "^17.7.2"
|
||||
},
|
||||
"bin": {
|
||||
@@ -3782,33 +3879,33 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-config": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz",
|
||||
"integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.4.2.tgz",
|
||||
"integrity": "sha512-rNHAShJQqQwFNoL0hbf3BphSBOWnpOUAKvidLS/AjNVLPfoj5mSf4jQMfW3cYOs6hXeZC7nF7mDHaBnbxELOzg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.27.4",
|
||||
"@jest/get-type": "30.1.0",
|
||||
"@jest/pattern": "30.0.1",
|
||||
"@jest/test-sequencer": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"babel-jest": "30.3.0",
|
||||
"@jest/pattern": "30.4.0",
|
||||
"@jest/test-sequencer": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"babel-jest": "30.4.1",
|
||||
"chalk": "^4.1.2",
|
||||
"ci-info": "^4.2.0",
|
||||
"deepmerge": "^4.3.1",
|
||||
"glob": "^10.5.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-circus": "30.3.0",
|
||||
"jest-docblock": "30.2.0",
|
||||
"jest-environment-node": "30.3.0",
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-resolve": "30.3.0",
|
||||
"jest-runner": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-validate": "30.3.0",
|
||||
"jest-circus": "30.4.2",
|
||||
"jest-docblock": "30.4.0",
|
||||
"jest-environment-node": "30.4.1",
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-resolve": "30.4.1",
|
||||
"jest-runner": "30.4.2",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-validate": "30.4.1",
|
||||
"parse-json": "^5.2.0",
|
||||
"pretty-format": "30.3.0",
|
||||
"pretty-format": "30.4.1",
|
||||
"slash": "^3.0.0",
|
||||
"strip-json-comments": "^3.1.1"
|
||||
},
|
||||
@@ -3833,25 +3930,25 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-diff": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz",
|
||||
"integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.4.1.tgz",
|
||||
"integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/diff-sequences": "30.3.0",
|
||||
"@jest/diff-sequences": "30.4.0",
|
||||
"@jest/get-type": "30.1.0",
|
||||
"chalk": "^4.1.2",
|
||||
"pretty-format": "30.3.0"
|
||||
"pretty-format": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-docblock": {
|
||||
"version": "30.2.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz",
|
||||
"integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.4.0.tgz",
|
||||
"integrity": "sha512-ZPMabUZCx5MpbZ2eBYSvZ0J8fvo3dR9oM+eeUpb3aKNQFuS2tu3Duw1TNlMoP8k3WQgKGJuhcMFvwcVuq6T7oA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -3862,56 +3959,56 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-each": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz",
|
||||
"integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.4.1.tgz",
|
||||
"integrity": "sha512-/8MJbH6fuj48TstjrMf+u/pd06Qezz5xOXvZA6442heNOWr8bdeoGZX2d9fCn028CoMgYmroH9//zky5GfyYmA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/get-type": "30.1.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-util": "30.3.0",
|
||||
"pretty-format": "30.3.0"
|
||||
"jest-util": "30.4.1",
|
||||
"pretty-format": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-environment-node": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz",
|
||||
"integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.4.1.tgz",
|
||||
"integrity": "sha512-4FZYVOk85hz2AyT6BbarKy9u37g6DbrDyCdFhsnDdXqyrueYQvB+0zO4f/kqLCRD0BsPRXPMNJeQwihKZV8naw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/environment": "30.3.0",
|
||||
"@jest/fake-timers": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/environment": "30.4.1",
|
||||
"@jest/fake-timers": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-validate": "30.3.0"
|
||||
"jest-mock": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-validate": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-haste-map": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz",
|
||||
"integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.4.1.tgz",
|
||||
"integrity": "sha512-rFrcONd8jeFsyw+Z9CrScJgglRf2+NFmNam8dKu7n+SoHqNYT47mn0DdEcVUZJpvh7Iz6/si7f7yUH7GJHVgnw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"anymatch": "^3.1.3",
|
||||
"fb-watchman": "^2.0.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-worker": "30.3.0",
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-worker": "30.4.1",
|
||||
"picomatch": "^4.0.3",
|
||||
"walker": "^1.0.8"
|
||||
},
|
||||
@@ -3923,9 +4020,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-haste-map/node_modules/picomatch": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
|
||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
|
||||
"integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -3936,49 +4033,50 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-leak-detector": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz",
|
||||
"integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.4.1.tgz",
|
||||
"integrity": "sha512-IpmyiioeHxiWDhesHnUFmOxcTzwCwKpgACgWajtAP+nYQXiY7DakTxB6Bx9JFiRMljr0AX1PvnQdaU1KFoz6NQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/get-type": "30.1.0",
|
||||
"pretty-format": "30.3.0"
|
||||
"pretty-format": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-matcher-utils": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz",
|
||||
"integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz",
|
||||
"integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/get-type": "30.1.0",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-diff": "30.3.0",
|
||||
"pretty-format": "30.3.0"
|
||||
"jest-diff": "30.4.1",
|
||||
"pretty-format": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-message-util": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz",
|
||||
"integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.4.1.tgz",
|
||||
"integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/stack-utils": "^2.0.3",
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-util": "30.4.1",
|
||||
"picomatch": "^4.0.3",
|
||||
"pretty-format": "30.3.0",
|
||||
"pretty-format": "30.4.1",
|
||||
"slash": "^3.0.0",
|
||||
"stack-utils": "^2.0.6"
|
||||
},
|
||||
@@ -3987,9 +4085,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-message-util/node_modules/picomatch": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
|
||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
|
||||
"integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -4000,15 +4098,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-mock": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz",
|
||||
"integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.4.1.tgz",
|
||||
"integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"jest-util": "30.3.0"
|
||||
"jest-util": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -4033,9 +4131,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-regex-util": {
|
||||
"version": "30.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz",
|
||||
"integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz",
|
||||
"integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -4043,18 +4141,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-resolve": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz",
|
||||
"integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.4.1.tgz",
|
||||
"integrity": "sha512-Zry8Yq/yJcNAZ7dJ5F2heic8AheXvbFZ7XI5V+h28nrYZ7Qoyy4dItq8OodjnYD270mvX+ZudmrNV9cysqhW5Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"jest-pnp-resolver": "^1.2.3",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-validate": "30.3.0",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-validate": "30.4.1",
|
||||
"slash": "^3.0.0",
|
||||
"unrs-resolver": "^1.7.11"
|
||||
},
|
||||
@@ -4063,46 +4161,46 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-resolve-dependencies": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz",
|
||||
"integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.4.2.tgz",
|
||||
"integrity": "sha512-gDiVh1I+GxYzz9oXlyw+1wv6VOYX1WYxMOfjsA3iGKePV2oxmbHhwxfkALxNxYy1ciw6APWwkW2zZONwP97aEQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-snapshot": "30.3.0"
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-snapshot": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-runner": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz",
|
||||
"integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.4.2.tgz",
|
||||
"integrity": "sha512-2dw0PslVYXxffXGpLo+Ejad+KcI1Qkjn7f4X4619gf21oCUmL+SPfjqIa/losUem3yEOvfNZe/F1HWUcNpODcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/console": "30.3.0",
|
||||
"@jest/environment": "30.3.0",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/console": "30.4.1",
|
||||
"@jest/environment": "30.4.1",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"emittery": "^0.13.1",
|
||||
"exit-x": "^0.2.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-docblock": "30.2.0",
|
||||
"jest-environment-node": "30.3.0",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-leak-detector": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-resolve": "30.3.0",
|
||||
"jest-runtime": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-watcher": "30.3.0",
|
||||
"jest-worker": "30.3.0",
|
||||
"jest-docblock": "30.4.0",
|
||||
"jest-environment-node": "30.4.1",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"jest-leak-detector": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-resolve": "30.4.1",
|
||||
"jest-runtime": "30.4.2",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-watcher": "30.4.1",
|
||||
"jest-worker": "30.4.1",
|
||||
"p-limit": "^3.1.0",
|
||||
"source-map-support": "0.5.13"
|
||||
},
|
||||
@@ -4111,32 +4209,32 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-runtime": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz",
|
||||
"integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.4.2.tgz",
|
||||
"integrity": "sha512-3/5e8iPz2k/VLqlr8DgTftYyLUv8Su3FkCAO2/Od81UsUTpSxOrS6O5x5KkoQwyUjmpYyDJKeyAvg2T2nvpNkQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/environment": "30.3.0",
|
||||
"@jest/fake-timers": "30.3.0",
|
||||
"@jest/globals": "30.3.0",
|
||||
"@jest/environment": "30.4.1",
|
||||
"@jest/fake-timers": "30.4.1",
|
||||
"@jest/globals": "30.4.1",
|
||||
"@jest/source-map": "30.0.1",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"cjs-module-lexer": "^2.1.0",
|
||||
"collect-v8-coverage": "^1.0.2",
|
||||
"glob": "^10.5.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-mock": "30.3.0",
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-resolve": "30.3.0",
|
||||
"jest-snapshot": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-mock": "30.4.1",
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-resolve": "30.4.1",
|
||||
"jest-snapshot": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"slash": "^3.0.0",
|
||||
"strip-bom": "^4.0.0"
|
||||
},
|
||||
@@ -4145,9 +4243,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-snapshot": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz",
|
||||
"integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.4.1.tgz",
|
||||
"integrity": "sha512-tEOkkfOMppUyeiHwjZswOQ3lcnoTnws/q5FnGIaeIh/jmoU0ZlgMYRR8sTlTj+nNGCoJ0RDq6SfxGxCsyMTPmw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -4156,20 +4254,20 @@
|
||||
"@babel/plugin-syntax-jsx": "^7.27.1",
|
||||
"@babel/plugin-syntax-typescript": "^7.27.1",
|
||||
"@babel/types": "^7.27.3",
|
||||
"@jest/expect-utils": "30.3.0",
|
||||
"@jest/expect-utils": "30.4.1",
|
||||
"@jest/get-type": "30.1.0",
|
||||
"@jest/snapshot-utils": "30.3.0",
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/snapshot-utils": "30.4.1",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"babel-preset-current-node-syntax": "^1.2.0",
|
||||
"chalk": "^4.1.2",
|
||||
"expect": "30.3.0",
|
||||
"expect": "30.4.1",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-diff": "30.3.0",
|
||||
"jest-matcher-utils": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"pretty-format": "30.3.0",
|
||||
"jest-diff": "30.4.1",
|
||||
"jest-matcher-utils": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"pretty-format": "30.4.1",
|
||||
"semver": "^7.7.2",
|
||||
"synckit": "^0.11.8"
|
||||
},
|
||||
@@ -4178,9 +4276,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-snapshot/node_modules/semver": {
|
||||
"version": "7.7.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
|
||||
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
|
||||
"version": "7.8.5",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
|
||||
"integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
@@ -4191,13 +4289,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-util": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz",
|
||||
"integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz",
|
||||
"integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"ci-info": "^4.2.0",
|
||||
@@ -4222,18 +4320,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-validate": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz",
|
||||
"integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.4.1.tgz",
|
||||
"integrity": "sha512-PDWi4SOwLnwqNDfHZjOcsEFyZ4fc/2W2gVL3DEoyqnB6jCQMLRtfBong8s6omIw3lI0HWOus12xfnFmQtjW3fw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/get-type": "30.1.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"camelcase": "^6.3.0",
|
||||
"chalk": "^4.1.2",
|
||||
"leven": "^3.1.0",
|
||||
"pretty-format": "30.3.0"
|
||||
"pretty-format": "30.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -4253,19 +4351,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-watcher": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz",
|
||||
"integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.4.1.tgz",
|
||||
"integrity": "sha512-/l9UonmvCwjHH7d2h3iAwIloLc1H0S8mJZ/LNK3i86hqwPAz8otUJjP9MfYtz9Tt77Su5FD2xGjZn8d31IZHlw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"chalk": "^4.1.2",
|
||||
"emittery": "^0.13.1",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-util": "30.4.1",
|
||||
"string-length": "^4.0.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4273,15 +4371,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-worker": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz",
|
||||
"integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.4.1.tgz",
|
||||
"integrity": "sha512-SHynN/q/QD++iNyvMdy+WMmbCGk8jIsNcRxycXbWubSOhvo6T+j2afcfUSl+3hYsiBebOTo0cT7c2H7CXugu1g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"@ungap/structured-clone": "^1.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-util": "30.4.1",
|
||||
"merge-stream": "^2.0.0",
|
||||
"supports-color": "^8.1.1"
|
||||
},
|
||||
@@ -4313,16 +4411,26 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
|
||||
"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.2.3.tgz",
|
||||
"integrity": "sha512-n+mUVyUX5bVv7G/G2zyIHOhdxfuU1dY2NOFzTQUWiMUbFss8b57NFlgCCaggU78wSw5KVS9cllzeLyzyR+n5nw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/puzrin"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/nodeca"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"argparse": "^2.0.1"
|
||||
},
|
||||
"bin": {
|
||||
"js-yaml": "bin/js-yaml.js"
|
||||
"js-yaml": "bin/js-yaml.mjs"
|
||||
}
|
||||
},
|
||||
"node_modules/jsesc": {
|
||||
@@ -4420,9 +4528,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/make-dir/node_modules/semver": {
|
||||
"version": "7.7.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
|
||||
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
|
||||
"version": "7.8.5",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
|
||||
"integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
@@ -4783,15 +4891,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/pretty-format": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz",
|
||||
"integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz",
|
||||
"integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/schemas": "30.0.5",
|
||||
"@jest/schemas": "30.4.1",
|
||||
"ansi-styles": "^5.2.0",
|
||||
"react-is": "^18.3.1"
|
||||
"react-is-18": "npm:react-is@^18.3.1",
|
||||
"react-is-19": "npm:react-is@^19.2.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -4827,13 +4936,22 @@
|
||||
],
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/react-is": {
|
||||
"node_modules/react-is-18": {
|
||||
"name": "react-is",
|
||||
"version": "18.3.1",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
|
||||
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/react-is-19": {
|
||||
"name": "react-is",
|
||||
"version": "19.2.7",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.7.tgz",
|
||||
"integrity": "sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/require-directory": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||
@@ -4922,9 +5040,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/smol-toml": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz",
|
||||
"integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==",
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.7.1.tgz",
|
||||
"integrity": "sha512-PPlsspAZ4jbMBu5DMFhfUGDQLu/vrL4SyBROVS37x8ynnVmFIs1VPBz1Co8Xks3TvpIaZXmU85y4DrQ+UyVFoQ==",
|
||||
"license": "BSD-3-Clause",
|
||||
"engines": {
|
||||
"node": ">= 18"
|
||||
@@ -5173,13 +5291,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/synckit": {
|
||||
"version": "0.11.12",
|
||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz",
|
||||
"integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==",
|
||||
"version": "0.11.13",
|
||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz",
|
||||
"integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@pkgr/core": "^0.2.9"
|
||||
"@pkgr/core": "^0.3.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.18.0 || >=16.0.0"
|
||||
@@ -5232,19 +5350,19 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/ts-jest": {
|
||||
"version": "29.4.6",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz",
|
||||
"integrity": "sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==",
|
||||
"version": "29.4.11",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.11.tgz",
|
||||
"integrity": "sha512-IrFl7l9AuB/qrNw5quqvAv/hmKMb8dhWOH4jQOGo0Oq8tCeo1O86/iTFG1FaRimgUkF13l4PcepO8ATFT6Ns4g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bs-logger": "^0.2.6",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"handlebars": "^4.7.8",
|
||||
"handlebars": "^4.7.9",
|
||||
"json5": "^2.2.3",
|
||||
"lodash.memoize": "^4.1.2",
|
||||
"make-error": "^1.3.6",
|
||||
"semver": "^7.7.3",
|
||||
"semver": "^7.8.0",
|
||||
"type-fest": "^4.41.0",
|
||||
"yargs-parser": "^21.1.1"
|
||||
},
|
||||
@@ -5261,7 +5379,7 @@
|
||||
"babel-jest": "^29.0.0 || ^30.0.0",
|
||||
"jest": "^29.0.0 || ^30.0.0",
|
||||
"jest-util": "^29.0.0 || ^30.0.0",
|
||||
"typescript": ">=4.3 <6"
|
||||
"typescript": ">=4.3 <7"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@babel/core": {
|
||||
@@ -5285,9 +5403,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/ts-jest/node_modules/semver": {
|
||||
"version": "7.7.3",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
|
||||
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
|
||||
"version": "7.8.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz",
|
||||
"integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
@@ -5336,9 +5454,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "5.9.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
|
||||
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
|
||||
"integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
@@ -5364,54 +5482,57 @@
|
||||
}
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "7.24.2",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-7.24.2.tgz",
|
||||
"integrity": "sha512-P9J1HWYV/ajFr8uCqk5QixwiRKmB1wOamgS0e+o2Z4A44Ej2+thFVRLG/eA7qprx88XXhnV5Bl8LHXTURpzB3Q==",
|
||||
"version": "8.10.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-8.10.0.tgz",
|
||||
"integrity": "sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=20.18.1"
|
||||
"node": ">=22.19.0"
|
||||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "7.18.2",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
|
||||
"integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
|
||||
"version": "8.3.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
|
||||
"integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/unrs-resolver": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz",
|
||||
"integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.12.2.tgz",
|
||||
"integrity": "sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"napi-postinstall": "^0.3.0"
|
||||
"napi-postinstall": "^0.3.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/unrs-resolver"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@unrs/resolver-binding-android-arm-eabi": "1.11.1",
|
||||
"@unrs/resolver-binding-android-arm64": "1.11.1",
|
||||
"@unrs/resolver-binding-darwin-arm64": "1.11.1",
|
||||
"@unrs/resolver-binding-darwin-x64": "1.11.1",
|
||||
"@unrs/resolver-binding-freebsd-x64": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-arm64-gnu": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-arm64-musl": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-riscv64-musl": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-s390x-gnu": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-x64-gnu": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-x64-musl": "1.11.1",
|
||||
"@unrs/resolver-binding-wasm32-wasi": "1.11.1",
|
||||
"@unrs/resolver-binding-win32-arm64-msvc": "1.11.1",
|
||||
"@unrs/resolver-binding-win32-ia32-msvc": "1.11.1",
|
||||
"@unrs/resolver-binding-win32-x64-msvc": "1.11.1"
|
||||
"@unrs/resolver-binding-android-arm-eabi": "1.12.2",
|
||||
"@unrs/resolver-binding-android-arm64": "1.12.2",
|
||||
"@unrs/resolver-binding-darwin-arm64": "1.12.2",
|
||||
"@unrs/resolver-binding-darwin-x64": "1.12.2",
|
||||
"@unrs/resolver-binding-freebsd-x64": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-arm-gnueabihf": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-arm-musleabihf": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-arm64-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-arm64-musl": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-loong64-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-loong64-musl": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-ppc64-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-riscv64-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-riscv64-musl": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-s390x-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-x64-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-x64-musl": "1.12.2",
|
||||
"@unrs/resolver-binding-openharmony-arm64": "1.12.2",
|
||||
"@unrs/resolver-binding-wasm32-wasi": "1.12.2",
|
||||
"@unrs/resolver-binding-win32-arm64-msvc": "1.12.2",
|
||||
"@unrs/resolver-binding-win32-ia32-msvc": "1.12.2",
|
||||
"@unrs/resolver-binding-win32-x64-msvc": "1.12.2"
|
||||
}
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
@@ -5626,9 +5747,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/yargs": {
|
||||
"version": "17.7.2",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
|
||||
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
|
||||
"version": "17.7.3",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz",
|
||||
"integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -5714,21 +5835,30 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-6.0.0.tgz",
|
||||
"integrity": "sha512-+tCs634SyGBQJ3KU1rtAVabmN/gYiT9WgzTSJzWwdPCLmM3zWrdbysaErKv8HyI6OozClrxNvDgPjJimbHZZvw==",
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-6.2.0.tgz",
|
||||
"integrity": "sha512-Nv0xWRmbxfDbAn/70flO/F6tj2Nv4XTYMAsQHiDFSojCDfso/Zni+fRKa14ToI9hnmOW/rQcY1WYb6wsM7Pgwg==",
|
||||
"requires": {
|
||||
"@actions/core": "^3.0.0",
|
||||
"@actions/core": "^3.0.1",
|
||||
"@actions/exec": "^3.0.0",
|
||||
"@actions/glob": "^0.6.1",
|
||||
"@actions/http-client": "^4.0.0",
|
||||
"@actions/io": "^3.0.0",
|
||||
"@azure/core-rest-pipeline": "^1.22.0",
|
||||
"@azure/storage-blob": "^12.30.0",
|
||||
"@actions/http-client": "^4.0.1",
|
||||
"@actions/io": "^3.0.2",
|
||||
"@azure/core-rest-pipeline": "^1.23.0",
|
||||
"@azure/storage-blob": "^12.31.0",
|
||||
"@protobuf-ts/runtime-rpc": "^2.11.1",
|
||||
"semver": "^7.7.3"
|
||||
"semver": "^7.7.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/glob": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.6.1.tgz",
|
||||
"integrity": "sha512-K4+2Ac5ILcf2ySdJCha+Pop9NcKjxqCL4xL4zI50dgB2PbXgC0+AcP011xfH4Of6b4QEJJg8dyZYv7zl4byTsw==",
|
||||
"requires": {
|
||||
"@actions/core": "^3.0.0",
|
||||
"minimatch": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.7.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
|
||||
@@ -5737,9 +5867,9 @@
|
||||
}
|
||||
},
|
||||
"@actions/core": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-3.0.0.tgz",
|
||||
"integrity": "sha512-zYt6cz+ivnTmiT/ksRVriMBOiuoUpDCJJlZ5KPl2/FRdvwU3f7MPh9qftvbkXJThragzUZieit2nyHUyw53Seg==",
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-3.0.1.tgz",
|
||||
"integrity": "sha512-a6d/Nwahm9fliVGRhdhofo40HjHQasUPusmc7vBfyky+7Z+P2A1J68zyFVaNcEclc/Se+eO595oAr5nwEIoIUA==",
|
||||
"requires": {
|
||||
"@actions/exec": "^3.0.0",
|
||||
"@actions/http-client": "^4.0.0"
|
||||
@@ -5754,18 +5884,41 @@
|
||||
}
|
||||
},
|
||||
"@actions/glob": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.6.1.tgz",
|
||||
"integrity": "sha512-K4+2Ac5ILcf2ySdJCha+Pop9NcKjxqCL4xL4zI50dgB2PbXgC0+AcP011xfH4Of6b4QEJJg8dyZYv7zl4byTsw==",
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.7.0.tgz",
|
||||
"integrity": "sha512-+7s3wM+cXapDLmLL1NVWHawqcJOZzXZy2df/VhNn8DnZtS/x83iTCKaUn9F0llur4h3CII0AilvKKH4CMPL8Gw==",
|
||||
"requires": {
|
||||
"@actions/core": "^3.0.0",
|
||||
"minimatch": "^3.0.4"
|
||||
"minimatch": "^10.2.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"balanced-match": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
|
||||
"integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "5.0.9",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
|
||||
"integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
|
||||
"requires": {
|
||||
"balanced-match": "^4.0.2"
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "10.2.6",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
|
||||
"integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
|
||||
"requires": {
|
||||
"brace-expansion": "^5.0.8"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@actions/http-client": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.0.tgz",
|
||||
"integrity": "sha512-QuwPsgVMsD6qaPD57GLZi9sqzAZCtiJT8kVBCDpLtxhL5MydQ4gS+DrejtZZPdIYyB1e95uCK9Luyds7ybHI3g==",
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.1.tgz",
|
||||
"integrity": "sha512-+Nvd1ImaOZBSoPbsUtEhv+1z99H12xzncCkz0a3RuehINE81FZSe2QTj3uvAPTcJX/SCzUQHQ0D1GrPMbrPitg==",
|
||||
"requires": {
|
||||
"tunnel": "^0.0.6",
|
||||
"undici": "^6.23.0"
|
||||
@@ -6064,9 +6217,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-plugin-utils": {
|
||||
"version": "7.28.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
|
||||
"integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
|
||||
"integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/helper-string-parser": {
|
||||
@@ -6170,12 +6323,12 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-syntax-jsx": {
|
||||
"version": "7.28.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz",
|
||||
"integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==",
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz",
|
||||
"integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.28.6"
|
||||
"@babel/helper-plugin-utils": "^7.29.7"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-syntax-logical-assignment-operators": {
|
||||
@@ -6251,12 +6404,12 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-syntax-typescript": {
|
||||
"version": "7.28.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz",
|
||||
"integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==",
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz",
|
||||
"integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.28.6"
|
||||
"@babel/helper-plugin-utils": "^7.29.7"
|
||||
}
|
||||
},
|
||||
"@babel/template": {
|
||||
@@ -6302,92 +6455,92 @@
|
||||
"dev": true
|
||||
},
|
||||
"@biomejs/biome": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.7.tgz",
|
||||
"integrity": "sha512-vXrgcmNGZ4lpdwZSpMf1hWw1aWS6B+SyeSYKTLrNsiUsAdSRN0J4d/7mF3ogJFbIwFFSOL3wT92Zzxia/d5/ng==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.5.7.tgz",
|
||||
"integrity": "sha512-zr8K/DcY5tYsQOQwqMJ0AWElo6QgmgNI7idXgXLhevVszlt8RGVpesEJPqx3ThazLaOwjJ5Y8fz3BtH5fGZNsw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@biomejs/cli-darwin-arm64": "2.4.7",
|
||||
"@biomejs/cli-darwin-x64": "2.4.7",
|
||||
"@biomejs/cli-linux-arm64": "2.4.7",
|
||||
"@biomejs/cli-linux-arm64-musl": "2.4.7",
|
||||
"@biomejs/cli-linux-x64": "2.4.7",
|
||||
"@biomejs/cli-linux-x64-musl": "2.4.7",
|
||||
"@biomejs/cli-win32-arm64": "2.4.7",
|
||||
"@biomejs/cli-win32-x64": "2.4.7"
|
||||
"@biomejs/cli-darwin-arm64": "2.5.7",
|
||||
"@biomejs/cli-darwin-x64": "2.5.7",
|
||||
"@biomejs/cli-linux-arm64": "2.5.7",
|
||||
"@biomejs/cli-linux-arm64-musl": "2.5.7",
|
||||
"@biomejs/cli-linux-x64": "2.5.7",
|
||||
"@biomejs/cli-linux-x64-musl": "2.5.7",
|
||||
"@biomejs/cli-win32-arm64": "2.5.7",
|
||||
"@biomejs/cli-win32-x64": "2.5.7"
|
||||
}
|
||||
},
|
||||
"@biomejs/cli-darwin-arm64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.7.tgz",
|
||||
"integrity": "sha512-Oo0cF5mHzmvDmTXw8XSjhCia8K6YrZnk7aCS54+/HxyMdZMruMO3nfpDsrlar/EQWe41r1qrwKiCa2QDYHDzWA==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.5.7.tgz",
|
||||
"integrity": "sha512-vxo/Ls3/PYdQWyLhYYcgMOCzQypAjcY+iihS8M0wW03l16TCLW4zqZzGo75gm1VdCMj38hTVZ31KBWrZ4G9dJw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@biomejs/cli-darwin-x64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.7.tgz",
|
||||
"integrity": "sha512-I+cOG3sd/7HdFtvDSnF9QQPrWguUH7zrkIMMykM3PtfWU9soTcS2yRb9Myq6MHmzbeCT08D1UmY+BaiMl5CcoQ==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.5.7.tgz",
|
||||
"integrity": "sha512-Cd3Ga61amT/Yl/0x8elP5hhGYaFy4bw6WuysTgf7oo8TA5tJ5A1k+DkVoJ2BHbTVil51gTX9VPzArnrlLJ3Kyg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@biomejs/cli-linux-arm64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.7.tgz",
|
||||
"integrity": "sha512-om6FugwmibzfP/6ALj5WRDVSND4H2G9X0nkI1HZpp2ySf9lW2j0X68oQSaHEnls6666oy4KDsc5RFjT4m0kV0w==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.5.7.tgz",
|
||||
"integrity": "sha512-rR2QE0yF2GYSuYuKIa7pKvODGJqnOH+2eDREAM8wV+mWKSkMQKdAp4zXEZfTaxY8PMoNONnpgSWcBCyLDPDOKg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@biomejs/cli-linux-arm64-musl": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.7.tgz",
|
||||
"integrity": "sha512-I2NvM9KPb09jWml93O2/5WMfNR7Lee5Latag1JThDRMURVhPX74p9UDnyTw3Ae6cE1DgXfw7sqQgX7rkvpc0vw==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.5.7.tgz",
|
||||
"integrity": "sha512-xPI5yB6XlpDbNkS+bm1t42olw5c4l3UrlOmLg7KtLJvjvkNF/1V4tnUgfkylGIeb3u/T+BzMGYqgQhzjAoJzuQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@biomejs/cli-linux-x64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.7.tgz",
|
||||
"integrity": "sha512-bV8/uo2Tj+gumnk4sUdkerWyCPRabaZdv88IpbmDWARQQoA/Q0YaqPz1a+LSEDIL7OfrnPi9Hq1Llz4ZIGyIQQ==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.5.7.tgz",
|
||||
"integrity": "sha512-FQgqJhscrqJUFptGaRSUJWlXAExwWcDwLuK49dvKfkQ1bB5SEEyFssnsxQY83Xm6jR0EbbX3+8+D5bfvYqUG2Q==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@biomejs/cli-linux-x64-musl": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.7.tgz",
|
||||
"integrity": "sha512-00kx4YrBMU8374zd2wHuRV5wseh0rom5HqRND+vDldJPrWwQw+mzd/d8byI9hPx926CG+vWzq6AeiT7Yi5y59g==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.5.7.tgz",
|
||||
"integrity": "sha512-rE5VZi+qtmPgQH+l7jVxYoZ18b/TiHEhulhMpjmCZH1PltSbjRcxNWywC3HZ9tYottG7ORkeTtoscBilKSBm0g==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@biomejs/cli-win32-arm64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.7.tgz",
|
||||
"integrity": "sha512-hOUHBMlFCvDhu3WCq6vaBoG0dp0LkWxSEnEEsxxXvOa9TfT6ZBnbh72A/xBM7CBYB7WgwqboetzFEVDnMxelyw==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.5.7.tgz",
|
||||
"integrity": "sha512-Oq4x0CCwP4jirrcTywXs5kOGZ4v5vuEP+gWrbtjApOA2CL9F3F9GlIdQIci8AKSCa/zURanMRpX/4wQ7Am6hHg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@biomejs/cli-win32-x64": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.7.tgz",
|
||||
"integrity": "sha512-qEpGjSkPC3qX4ycbMUthXvi9CkRq7kZpkqMY1OyhmYlYLnANnooDQ7hDerM8+0NJ+DZKVnsIc07h30XOpt7LtQ==",
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.5.7.tgz",
|
||||
"integrity": "sha512-V+0wu/nrj2S+MhP4EQ0uHNolP0IALEsz45pg0WoKkHfDeh0+ItHwP/p7bX5RPoMOl9NkpHYWdYPhIcy2mACHvQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@emnapi/core": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz",
|
||||
"integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==",
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
|
||||
"integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"@emnapi/wasi-threads": "1.2.0",
|
||||
"@emnapi/wasi-threads": "1.2.1",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@emnapi/runtime": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz",
|
||||
"integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==",
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
|
||||
"integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
@@ -6395,9 +6548,9 @@
|
||||
}
|
||||
},
|
||||
"@emnapi/wasi-threads": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz",
|
||||
"integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz",
|
||||
"integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
@@ -6405,184 +6558,184 @@
|
||||
}
|
||||
},
|
||||
"@esbuild/aix-ppc64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz",
|
||||
"integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
|
||||
"integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/android-arm": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz",
|
||||
"integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz",
|
||||
"integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/android-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/android-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/darwin-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/darwin-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/freebsd-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/freebsd-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/linux-arm": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz",
|
||||
"integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz",
|
||||
"integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/linux-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/linux-ia32": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz",
|
||||
"integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz",
|
||||
"integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/linux-loong64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz",
|
||||
"integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz",
|
||||
"integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/linux-mips64el": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz",
|
||||
"integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz",
|
||||
"integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/linux-ppc64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz",
|
||||
"integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz",
|
||||
"integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/linux-riscv64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz",
|
||||
"integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz",
|
||||
"integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/linux-s390x": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz",
|
||||
"integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz",
|
||||
"integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/linux-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/netbsd-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/netbsd-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/openbsd-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/openbsd-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/openharmony-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/sunos-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/win32-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/win32-ia32": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz",
|
||||
"integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz",
|
||||
"integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@esbuild/win32-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
@@ -6641,103 +6794,104 @@
|
||||
"dev": true
|
||||
},
|
||||
"@jest/console": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz",
|
||||
"integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/console/-/console-30.4.1.tgz",
|
||||
"integrity": "sha512-v3bhyxUh9Hgmo5p6hAOXe14/R3ZxZDOsvHleh4B07z3m/x4/ngPUXEm9XwK4sF4u+f+P2ORb0Ge+MgpaqRMVDA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"slash": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"@jest/core": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz",
|
||||
"integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/core/-/core-30.4.2.tgz",
|
||||
"integrity": "sha512-TZJA6cPJUFxoWhxaLo8t0VX/MZX2wPWr0uIDvLSHIvN4gu9h02vSzqI2kBADG1ExqQlC+cY09xKMSreivvrChQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/console": "30.3.0",
|
||||
"@jest/pattern": "30.0.1",
|
||||
"@jest/reporters": "30.3.0",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/console": "30.4.1",
|
||||
"@jest/pattern": "30.4.0",
|
||||
"@jest/reporters": "30.4.1",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"chalk": "^4.1.2",
|
||||
"ci-info": "^4.2.0",
|
||||
"exit-x": "^0.2.2",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-changed-files": "30.3.0",
|
||||
"jest-config": "30.3.0",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-resolve": "30.3.0",
|
||||
"jest-resolve-dependencies": "30.3.0",
|
||||
"jest-runner": "30.3.0",
|
||||
"jest-runtime": "30.3.0",
|
||||
"jest-snapshot": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-validate": "30.3.0",
|
||||
"jest-watcher": "30.3.0",
|
||||
"pretty-format": "30.3.0",
|
||||
"jest-changed-files": "30.4.1",
|
||||
"jest-config": "30.4.2",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-resolve": "30.4.1",
|
||||
"jest-resolve-dependencies": "30.4.2",
|
||||
"jest-runner": "30.4.2",
|
||||
"jest-runtime": "30.4.2",
|
||||
"jest-snapshot": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-validate": "30.4.1",
|
||||
"jest-watcher": "30.4.1",
|
||||
"pretty-format": "30.4.1",
|
||||
"slash": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"@jest/diff-sequences": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz",
|
||||
"integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz",
|
||||
"integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==",
|
||||
"dev": true
|
||||
},
|
||||
"@jest/environment": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz",
|
||||
"integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.4.1.tgz",
|
||||
"integrity": "sha512-AK9yNRqgKxiabqMoe4oW+3/TSSeV8vkdC7BGaxZdU0AFXfOpofTLqdru2GXKZghP3sdgwE9XXpnVwfZ8JnFV4w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/fake-timers": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/fake-timers": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "30.3.0"
|
||||
"jest-mock": "30.4.1"
|
||||
}
|
||||
},
|
||||
"@jest/expect": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz",
|
||||
"integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.4.1.tgz",
|
||||
"integrity": "sha512-ginrj6TMgh2GshLUGCjO94Ptx9HhdZA/I6A9iUfyeLKFtdAjnKzHDgzgP9HYQgbxM1lbXScQ2eUBz2lGeVDPWA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"expect": "30.3.0",
|
||||
"jest-snapshot": "30.3.0"
|
||||
"expect": "30.4.1",
|
||||
"jest-snapshot": "30.4.1"
|
||||
}
|
||||
},
|
||||
"@jest/expect-utils": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz",
|
||||
"integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.4.1.tgz",
|
||||
"integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/get-type": "30.1.0"
|
||||
}
|
||||
},
|
||||
"@jest/fake-timers": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz",
|
||||
"integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.4.1.tgz",
|
||||
"integrity": "sha512-iW5umdmfPeWzehrVhugFQZqCchSCud5S1l2YT0O9ZhjRR0ExclANDZkiSBwzqtnlOn0J1JXvO+HZ6rkuyOVOgQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@sinonjs/fake-timers": "^15.0.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@sinonjs/fake-timers": "^15.4.0",
|
||||
"@types/node": "*",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-mock": "30.3.0",
|
||||
"jest-util": "30.3.0"
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-mock": "30.4.1",
|
||||
"jest-util": "30.4.1"
|
||||
}
|
||||
},
|
||||
"@jest/get-type": {
|
||||
@@ -6747,38 +6901,38 @@
|
||||
"dev": true
|
||||
},
|
||||
"@jest/globals": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz",
|
||||
"integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.4.1.tgz",
|
||||
"integrity": "sha512-ZbuY4cmXC8DkxYjfvT2DbcHWL2T6vmsMhXCDcmTB2T0y0gaezBI77ufq5ZAIdcRkYZ7NEQEDg1xFeKbxUJ5v5Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/environment": "30.3.0",
|
||||
"@jest/expect": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"jest-mock": "30.3.0"
|
||||
"@jest/environment": "30.4.1",
|
||||
"@jest/expect": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"jest-mock": "30.4.1"
|
||||
}
|
||||
},
|
||||
"@jest/pattern": {
|
||||
"version": "30.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz",
|
||||
"integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz",
|
||||
"integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/node": "*",
|
||||
"jest-regex-util": "30.0.1"
|
||||
"jest-regex-util": "30.4.0"
|
||||
}
|
||||
},
|
||||
"@jest/reporters": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz",
|
||||
"integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.4.1.tgz",
|
||||
"integrity": "sha512-/SnkPCzEQpUaBH81kjdEdDdo2WZl5hxw+BmLDGWjRkm8o7XlhjwsU36cqwe5PGBE5WYpBvDzRSdXx9rbGuJtNA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@bcoe/v8-coverage": "^0.2.3",
|
||||
"@jest/console": "30.3.0",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/console": "30.4.1",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@jridgewell/trace-mapping": "^0.3.25",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
@@ -6791,30 +6945,30 @@
|
||||
"istanbul-lib-report": "^3.0.0",
|
||||
"istanbul-lib-source-maps": "^5.0.0",
|
||||
"istanbul-reports": "^3.1.3",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-worker": "30.3.0",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-worker": "30.4.1",
|
||||
"slash": "^3.0.0",
|
||||
"string-length": "^4.0.2",
|
||||
"v8-to-istanbul": "^9.0.1"
|
||||
}
|
||||
},
|
||||
"@jest/schemas": {
|
||||
"version": "30.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz",
|
||||
"integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz",
|
||||
"integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@sinclair/typebox": "^0.34.0"
|
||||
}
|
||||
},
|
||||
"@jest/snapshot-utils": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz",
|
||||
"integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.4.1.tgz",
|
||||
"integrity": "sha512-ObY4ljvQ95mt6iwKtVLetR/4yXiAgl3H4nJxhztr0MTjrN97TwDYrnCp/kF60Ec9HdhkWTHSu+Hg05aXfngpOA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"natural-compare": "^1.4.0"
|
||||
@@ -6832,59 +6986,59 @@
|
||||
}
|
||||
},
|
||||
"@jest/test-result": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz",
|
||||
"integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.4.1.tgz",
|
||||
"integrity": "sha512-/ZG7pgEiOmmWkN9TplKbOu4id2N5lh7FHwRwlkgBVAzGdRH+OkkQ8wX/kIxg4zmd3ZQvAL1RwL2yWsvNYYECTw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/console": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/console": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/istanbul-lib-coverage": "^2.0.6",
|
||||
"collect-v8-coverage": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"@jest/test-sequencer": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz",
|
||||
"integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.4.1.tgz",
|
||||
"integrity": "sha512-PeYE+4td5rKjoRPxztObrXU+H8hsjZfxKMXOcmrr34JerSyB/ROOxbbicz8B7A5j9R9VayDnVPvBmedqCsFCdw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"slash": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"@jest/transform": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz",
|
||||
"integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.4.1.tgz",
|
||||
"integrity": "sha512-Wz0LyktlTvRefoymh+n64hQ84KNXsRGcwdoZ8CSa0Ea+fgYcHZlnk+hDP7v2MS7il2bQ5uTEIxf4/NNfhMN4KQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/core": "^7.27.4",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@jridgewell/trace-mapping": "^0.3.25",
|
||||
"babel-plugin-istanbul": "^7.0.1",
|
||||
"chalk": "^4.1.2",
|
||||
"convert-source-map": "^2.0.0",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-util": "30.4.1",
|
||||
"pirates": "^4.0.7",
|
||||
"slash": "^3.0.0",
|
||||
"write-file-atomic": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"@jest/types": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz",
|
||||
"integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz",
|
||||
"integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/pattern": "30.0.1",
|
||||
"@jest/schemas": "30.0.5",
|
||||
"@jest/pattern": "30.4.0",
|
||||
"@jest/schemas": "30.4.1",
|
||||
"@types/istanbul-lib-coverage": "^2.0.6",
|
||||
"@types/istanbul-reports": "^3.0.4",
|
||||
"@types/node": "*",
|
||||
@@ -6931,15 +7085,13 @@
|
||||
}
|
||||
},
|
||||
"@napi-rs/wasm-runtime": {
|
||||
"version": "0.2.12",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz",
|
||||
"integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==",
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz",
|
||||
"integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"@emnapi/core": "^1.4.3",
|
||||
"@emnapi/runtime": "^1.4.3",
|
||||
"@tybys/wasm-util": "^0.10.0"
|
||||
"@tybys/wasm-util": "^0.10.3"
|
||||
}
|
||||
},
|
||||
"@pkgjs/parseargs": {
|
||||
@@ -6950,9 +7102,9 @@
|
||||
"optional": true
|
||||
},
|
||||
"@pkgr/core": {
|
||||
"version": "0.2.9",
|
||||
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
|
||||
"integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
|
||||
"version": "0.3.6",
|
||||
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz",
|
||||
"integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==",
|
||||
"dev": true
|
||||
},
|
||||
"@protobuf-ts/runtime": {
|
||||
@@ -6969,14 +7121,14 @@
|
||||
}
|
||||
},
|
||||
"@renovatebot/pep440": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@renovatebot/pep440/-/pep440-4.2.2.tgz",
|
||||
"integrity": "sha512-dSbrkSS9/NfNwhOgQ0rpKA9KNiKSFhgK707Wi+oX8SZLqvu8dvsVuzORbKOYq5eX4nSiwrHApWisecw0cZhjVQ=="
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@renovatebot/pep440/-/pep440-5.0.0.tgz",
|
||||
"integrity": "sha512-91cFM32/pnOAvC7W1W1kPPI9QM2y6OrYCeomz7pop4A+3Ksh2XnZXGznUMlzR7YbOQlg7X/MNlF27s9Yt9hhTA=="
|
||||
},
|
||||
"@sinclair/typebox": {
|
||||
"version": "0.34.38",
|
||||
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.38.tgz",
|
||||
"integrity": "sha512-HpkxMmc2XmZKhvaKIZZThlHmx1L0I/V1hWK1NubtlFnr6ZqdiOpV72TKudZUNQjZNsyDBay72qFEhEvb+bcwcA==",
|
||||
"version": "0.34.49",
|
||||
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz",
|
||||
"integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==",
|
||||
"dev": true
|
||||
},
|
||||
"@sinonjs/commons": {
|
||||
@@ -6989,18 +7141,18 @@
|
||||
}
|
||||
},
|
||||
"@sinonjs/fake-timers": {
|
||||
"version": "15.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz",
|
||||
"integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==",
|
||||
"version": "15.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz",
|
||||
"integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@sinonjs/commons": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"@tybys/wasm-util": {
|
||||
"version": "0.10.1",
|
||||
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
|
||||
"integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
|
||||
"version": "0.10.3",
|
||||
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
|
||||
"integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
@@ -7079,18 +7231,18 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "25.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz",
|
||||
"integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
|
||||
"version": "26.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz",
|
||||
"integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"undici-types": "~7.18.0"
|
||||
"undici-types": "~8.3.0"
|
||||
}
|
||||
},
|
||||
"@types/semver": {
|
||||
"version": "7.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz",
|
||||
"integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==",
|
||||
"version": "7.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.8.0.tgz",
|
||||
"integrity": "sha512-1mAINjtQCXXeLkJ9ehXkwOcBpqtLxiVtKhpUf83DdRNdQKV0iXZpaHYqRr7nj+wvxuJzoAmAwXI+sCNMv1CzLQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/stack-utils": {
|
||||
@@ -7131,145 +7283,168 @@
|
||||
"dev": true
|
||||
},
|
||||
"@unrs/resolver-binding-android-arm-eabi": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz",
|
||||
"integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz",
|
||||
"integrity": "sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-android-arm64": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz",
|
||||
"integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz",
|
||||
"integrity": "sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-darwin-arm64": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz",
|
||||
"integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz",
|
||||
"integrity": "sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-darwin-x64": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz",
|
||||
"integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz",
|
||||
"integrity": "sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-freebsd-x64": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz",
|
||||
"integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz",
|
||||
"integrity": "sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-arm-gnueabihf": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz",
|
||||
"integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz",
|
||||
"integrity": "sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-arm-musleabihf": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz",
|
||||
"integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz",
|
||||
"integrity": "sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-arm64-gnu": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz",
|
||||
"integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-arm64-musl": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz",
|
||||
"integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz",
|
||||
"integrity": "sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-loong64-gnu": {
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-loong64-musl": {
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz",
|
||||
"integrity": "sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-ppc64-gnu": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz",
|
||||
"integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-riscv64-gnu": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz",
|
||||
"integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-riscv64-musl": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz",
|
||||
"integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz",
|
||||
"integrity": "sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-s390x-gnu": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz",
|
||||
"integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-x64-gnu": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz",
|
||||
"integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz",
|
||||
"integrity": "sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-linux-x64-musl": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz",
|
||||
"integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz",
|
||||
"integrity": "sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-openharmony-arm64": {
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz",
|
||||
"integrity": "sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-wasm32-wasi": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz",
|
||||
"integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz",
|
||||
"integrity": "sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"@napi-rs/wasm-runtime": "^0.2.11"
|
||||
"@emnapi/core": "1.10.0",
|
||||
"@emnapi/runtime": "1.10.0",
|
||||
"@napi-rs/wasm-runtime": "^1.1.4"
|
||||
}
|
||||
},
|
||||
"@unrs/resolver-binding-win32-arm64-msvc": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz",
|
||||
"integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz",
|
||||
"integrity": "sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-win32-ia32-msvc": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz",
|
||||
"integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz",
|
||||
"integrity": "sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@unrs/resolver-binding-win32-x64-msvc": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz",
|
||||
"integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz",
|
||||
"integrity": "sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@vercel/ncc": {
|
||||
"version": "0.38.4",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.4.tgz",
|
||||
"integrity": "sha512-8LwjnlP39s08C08J5NstzriPvW1SP8Zfpp1BvC2sI35kPeZnHfxVkCwu4/+Wodgnd60UtT1n8K8zw+Mp7J9JmQ==",
|
||||
"version": "0.44.1",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.44.1.tgz",
|
||||
"integrity": "sha512-cUjIE5P2YY1n+Kt9rFIazMMpGoPn1Fic04rOmTkElMkiDP5oszGfERMpo2shVkFKDL7rVppdM2pqJKC59shQWQ==",
|
||||
"dev": true
|
||||
},
|
||||
"agent-base": {
|
||||
@@ -7326,15 +7501,15 @@
|
||||
"dev": true
|
||||
},
|
||||
"babel-jest": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz",
|
||||
"integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.4.1.tgz",
|
||||
"integrity": "sha512-fATAbM8piYxkiXQp3RBXmZHxZVNJZAVXXfyeyCN2Tida3+qJ8ea9UxhiJ2y4fLO90ZImKt6k9FlcH2+rLkJGhw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@types/babel__core": "^7.20.5",
|
||||
"babel-plugin-istanbul": "^7.0.1",
|
||||
"babel-preset-jest": "30.3.0",
|
||||
"babel-preset-jest": "30.4.0",
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"slash": "^3.0.0"
|
||||
@@ -7354,9 +7529,9 @@
|
||||
}
|
||||
},
|
||||
"babel-plugin-jest-hoist": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz",
|
||||
"integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.4.0.tgz",
|
||||
"integrity": "sha512-9EdtWM/sSfXLOGLwSn+GS6pIXyBnL07/8gyJlwFXjWy4DxMOyItqyUT29d4lQiS380EZwYlX7/At4PgBS+m2aA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/babel__core": "^7.20.5"
|
||||
@@ -7386,12 +7561,12 @@
|
||||
}
|
||||
},
|
||||
"babel-preset-jest": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz",
|
||||
"integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.4.0.tgz",
|
||||
"integrity": "sha512-lBY4jxsNmCnSiu7kquw8ZC9F4+XLMOKypT3RnNHPvU2Kpd4W0xaPuLr5ZkRyOsvLYAY4yaW1ZwTW4xB7NIiZzg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-plugin-jest-hoist": "30.3.0",
|
||||
"babel-plugin-jest-hoist": "30.4.0",
|
||||
"babel-preset-current-node-syntax": "^1.2.0"
|
||||
}
|
||||
},
|
||||
@@ -7657,37 +7832,37 @@
|
||||
}
|
||||
},
|
||||
"esbuild": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz",
|
||||
"integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
|
||||
"integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@esbuild/aix-ppc64": "0.27.4",
|
||||
"@esbuild/android-arm": "0.27.4",
|
||||
"@esbuild/android-arm64": "0.27.4",
|
||||
"@esbuild/android-x64": "0.27.4",
|
||||
"@esbuild/darwin-arm64": "0.27.4",
|
||||
"@esbuild/darwin-x64": "0.27.4",
|
||||
"@esbuild/freebsd-arm64": "0.27.4",
|
||||
"@esbuild/freebsd-x64": "0.27.4",
|
||||
"@esbuild/linux-arm": "0.27.4",
|
||||
"@esbuild/linux-arm64": "0.27.4",
|
||||
"@esbuild/linux-ia32": "0.27.4",
|
||||
"@esbuild/linux-loong64": "0.27.4",
|
||||
"@esbuild/linux-mips64el": "0.27.4",
|
||||
"@esbuild/linux-ppc64": "0.27.4",
|
||||
"@esbuild/linux-riscv64": "0.27.4",
|
||||
"@esbuild/linux-s390x": "0.27.4",
|
||||
"@esbuild/linux-x64": "0.27.4",
|
||||
"@esbuild/netbsd-arm64": "0.27.4",
|
||||
"@esbuild/netbsd-x64": "0.27.4",
|
||||
"@esbuild/openbsd-arm64": "0.27.4",
|
||||
"@esbuild/openbsd-x64": "0.27.4",
|
||||
"@esbuild/openharmony-arm64": "0.27.4",
|
||||
"@esbuild/sunos-x64": "0.27.4",
|
||||
"@esbuild/win32-arm64": "0.27.4",
|
||||
"@esbuild/win32-ia32": "0.27.4",
|
||||
"@esbuild/win32-x64": "0.27.4"
|
||||
"@esbuild/aix-ppc64": "0.28.1",
|
||||
"@esbuild/android-arm": "0.28.1",
|
||||
"@esbuild/android-arm64": "0.28.1",
|
||||
"@esbuild/android-x64": "0.28.1",
|
||||
"@esbuild/darwin-arm64": "0.28.1",
|
||||
"@esbuild/darwin-x64": "0.28.1",
|
||||
"@esbuild/freebsd-arm64": "0.28.1",
|
||||
"@esbuild/freebsd-x64": "0.28.1",
|
||||
"@esbuild/linux-arm": "0.28.1",
|
||||
"@esbuild/linux-arm64": "0.28.1",
|
||||
"@esbuild/linux-ia32": "0.28.1",
|
||||
"@esbuild/linux-loong64": "0.28.1",
|
||||
"@esbuild/linux-mips64el": "0.28.1",
|
||||
"@esbuild/linux-ppc64": "0.28.1",
|
||||
"@esbuild/linux-riscv64": "0.28.1",
|
||||
"@esbuild/linux-s390x": "0.28.1",
|
||||
"@esbuild/linux-x64": "0.28.1",
|
||||
"@esbuild/netbsd-arm64": "0.28.1",
|
||||
"@esbuild/netbsd-x64": "0.28.1",
|
||||
"@esbuild/openbsd-arm64": "0.28.1",
|
||||
"@esbuild/openbsd-x64": "0.28.1",
|
||||
"@esbuild/openharmony-arm64": "0.28.1",
|
||||
"@esbuild/sunos-x64": "0.28.1",
|
||||
"@esbuild/win32-arm64": "0.28.1",
|
||||
"@esbuild/win32-ia32": "0.28.1",
|
||||
"@esbuild/win32-x64": "0.28.1"
|
||||
}
|
||||
},
|
||||
"escalade": {
|
||||
@@ -7745,17 +7920,17 @@
|
||||
"dev": true
|
||||
},
|
||||
"expect": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz",
|
||||
"integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz",
|
||||
"integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/expect-utils": "30.3.0",
|
||||
"@jest/expect-utils": "30.4.1",
|
||||
"@jest/get-type": "30.1.0",
|
||||
"jest-matcher-utils": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-mock": "30.3.0",
|
||||
"jest-util": "30.3.0"
|
||||
"jest-matcher-utils": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-mock": "30.4.1",
|
||||
"jest-util": "30.4.1"
|
||||
}
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
@@ -7863,9 +8038,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
|
||||
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
|
||||
"integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0"
|
||||
@@ -7889,9 +8064,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"handlebars": {
|
||||
"version": "4.7.8",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
|
||||
"integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
|
||||
"version": "4.7.9",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz",
|
||||
"integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.5",
|
||||
@@ -8069,237 +8244,238 @@
|
||||
}
|
||||
},
|
||||
"jest": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz",
|
||||
"integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-30.4.2.tgz",
|
||||
"integrity": "sha512-Yi1jqNC/Oq0N4hBgNH/YvBpP1P57QqundgytzYqy3yqAa7NZPNjSoi4SGbRAXDMdBzNE6xBCi5U7RgfrvMEUVQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/core": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/core": "30.4.2",
|
||||
"@jest/types": "30.4.1",
|
||||
"import-local": "^3.2.0",
|
||||
"jest-cli": "30.3.0"
|
||||
"jest-cli": "30.4.2"
|
||||
}
|
||||
},
|
||||
"jest-changed-files": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz",
|
||||
"integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.4.1.tgz",
|
||||
"integrity": "sha512-IuctmYrxi21iOSOaIXpJWalHyPAsVv0GeBHKDn8C1CA4W5htHn7INL+wdnL4Bo0+olEndvAFkmb++tIQJG+vvg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"execa": "^5.1.1",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-util": "30.4.1",
|
||||
"p-limit": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"jest-circus": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz",
|
||||
"integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.4.2.tgz",
|
||||
"integrity": "sha512-rvHH7VlY6LgbJXJTQ87GW62g1FntOtbhh0zT+v04kC+pgL6aBKyYINXxWukCpj3dcIBMw5/XUbtDS9dU9JTXeQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/environment": "30.3.0",
|
||||
"@jest/expect": "30.3.0",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/environment": "30.4.1",
|
||||
"@jest/expect": "30.4.1",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"co": "^4.6.0",
|
||||
"dedent": "^1.6.0",
|
||||
"is-generator-fn": "^2.1.0",
|
||||
"jest-each": "30.3.0",
|
||||
"jest-matcher-utils": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-runtime": "30.3.0",
|
||||
"jest-snapshot": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-each": "30.4.1",
|
||||
"jest-matcher-utils": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-runtime": "30.4.2",
|
||||
"jest-snapshot": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"p-limit": "^3.1.0",
|
||||
"pretty-format": "30.3.0",
|
||||
"pretty-format": "30.4.1",
|
||||
"pure-rand": "^7.0.0",
|
||||
"slash": "^3.0.0",
|
||||
"stack-utils": "^2.0.6"
|
||||
}
|
||||
},
|
||||
"jest-cli": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz",
|
||||
"integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.4.2.tgz",
|
||||
"integrity": "sha512-jfA2ocvVHMXS2QijrJ0d31ektP+d/W0T5RpcTX2Pq+3sVqHlsXVCM2+FmwpL+bdY8OfHpIg9xMxLF17Zg0U49Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/core": "30.3.0",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/core": "30.4.2",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"chalk": "^4.1.2",
|
||||
"exit-x": "^0.2.2",
|
||||
"import-local": "^3.2.0",
|
||||
"jest-config": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-validate": "30.3.0",
|
||||
"jest-config": "30.4.2",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-validate": "30.4.1",
|
||||
"yargs": "^17.7.2"
|
||||
}
|
||||
},
|
||||
"jest-config": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz",
|
||||
"integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.4.2.tgz",
|
||||
"integrity": "sha512-rNHAShJQqQwFNoL0hbf3BphSBOWnpOUAKvidLS/AjNVLPfoj5mSf4jQMfW3cYOs6hXeZC7nF7mDHaBnbxELOzg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/core": "^7.27.4",
|
||||
"@jest/get-type": "30.1.0",
|
||||
"@jest/pattern": "30.0.1",
|
||||
"@jest/test-sequencer": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"babel-jest": "30.3.0",
|
||||
"@jest/pattern": "30.4.0",
|
||||
"@jest/test-sequencer": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"babel-jest": "30.4.1",
|
||||
"chalk": "^4.1.2",
|
||||
"ci-info": "^4.2.0",
|
||||
"deepmerge": "^4.3.1",
|
||||
"glob": "^10.5.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-circus": "30.3.0",
|
||||
"jest-docblock": "30.2.0",
|
||||
"jest-environment-node": "30.3.0",
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-resolve": "30.3.0",
|
||||
"jest-runner": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-validate": "30.3.0",
|
||||
"jest-circus": "30.4.2",
|
||||
"jest-docblock": "30.4.0",
|
||||
"jest-environment-node": "30.4.1",
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-resolve": "30.4.1",
|
||||
"jest-runner": "30.4.2",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-validate": "30.4.1",
|
||||
"parse-json": "^5.2.0",
|
||||
"pretty-format": "30.3.0",
|
||||
"pretty-format": "30.4.1",
|
||||
"slash": "^3.0.0",
|
||||
"strip-json-comments": "^3.1.1"
|
||||
}
|
||||
},
|
||||
"jest-diff": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz",
|
||||
"integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.4.1.tgz",
|
||||
"integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/diff-sequences": "30.3.0",
|
||||
"@jest/diff-sequences": "30.4.0",
|
||||
"@jest/get-type": "30.1.0",
|
||||
"chalk": "^4.1.2",
|
||||
"pretty-format": "30.3.0"
|
||||
"pretty-format": "30.4.1"
|
||||
}
|
||||
},
|
||||
"jest-docblock": {
|
||||
"version": "30.2.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz",
|
||||
"integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.4.0.tgz",
|
||||
"integrity": "sha512-ZPMabUZCx5MpbZ2eBYSvZ0J8fvo3dR9oM+eeUpb3aKNQFuS2tu3Duw1TNlMoP8k3WQgKGJuhcMFvwcVuq6T7oA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"detect-newline": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"jest-each": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz",
|
||||
"integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.4.1.tgz",
|
||||
"integrity": "sha512-/8MJbH6fuj48TstjrMf+u/pd06Qezz5xOXvZA6442heNOWr8bdeoGZX2d9fCn028CoMgYmroH9//zky5GfyYmA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/get-type": "30.1.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-util": "30.3.0",
|
||||
"pretty-format": "30.3.0"
|
||||
"jest-util": "30.4.1",
|
||||
"pretty-format": "30.4.1"
|
||||
}
|
||||
},
|
||||
"jest-environment-node": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz",
|
||||
"integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.4.1.tgz",
|
||||
"integrity": "sha512-4FZYVOk85hz2AyT6BbarKy9u37g6DbrDyCdFhsnDdXqyrueYQvB+0zO4f/kqLCRD0BsPRXPMNJeQwihKZV8naw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/environment": "30.3.0",
|
||||
"@jest/fake-timers": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/environment": "30.4.1",
|
||||
"@jest/fake-timers": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-validate": "30.3.0"
|
||||
"jest-mock": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-validate": "30.4.1"
|
||||
}
|
||||
},
|
||||
"jest-haste-map": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz",
|
||||
"integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.4.1.tgz",
|
||||
"integrity": "sha512-rFrcONd8jeFsyw+Z9CrScJgglRf2+NFmNam8dKu7n+SoHqNYT47mn0DdEcVUZJpvh7Iz6/si7f7yUH7GJHVgnw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"anymatch": "^3.1.3",
|
||||
"fb-watchman": "^2.0.2",
|
||||
"fsevents": "^2.3.3",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-worker": "30.3.0",
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-worker": "30.4.1",
|
||||
"picomatch": "^4.0.3",
|
||||
"walker": "^1.0.8"
|
||||
},
|
||||
"dependencies": {
|
||||
"picomatch": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
|
||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
|
||||
"integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"jest-leak-detector": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz",
|
||||
"integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.4.1.tgz",
|
||||
"integrity": "sha512-IpmyiioeHxiWDhesHnUFmOxcTzwCwKpgACgWajtAP+nYQXiY7DakTxB6Bx9JFiRMljr0AX1PvnQdaU1KFoz6NQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/get-type": "30.1.0",
|
||||
"pretty-format": "30.3.0"
|
||||
"pretty-format": "30.4.1"
|
||||
}
|
||||
},
|
||||
"jest-matcher-utils": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz",
|
||||
"integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz",
|
||||
"integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/get-type": "30.1.0",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-diff": "30.3.0",
|
||||
"pretty-format": "30.3.0"
|
||||
"jest-diff": "30.4.1",
|
||||
"pretty-format": "30.4.1"
|
||||
}
|
||||
},
|
||||
"jest-message-util": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz",
|
||||
"integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.4.1.tgz",
|
||||
"integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/stack-utils": "^2.0.3",
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-util": "30.4.1",
|
||||
"picomatch": "^4.0.3",
|
||||
"pretty-format": "30.3.0",
|
||||
"pretty-format": "30.4.1",
|
||||
"slash": "^3.0.0",
|
||||
"stack-utils": "^2.0.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"picomatch": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
|
||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
|
||||
"integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"jest-mock": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz",
|
||||
"integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.4.1.tgz",
|
||||
"integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"jest-util": "30.3.0"
|
||||
"jest-util": "30.4.1"
|
||||
}
|
||||
},
|
||||
"jest-pnp-resolver": {
|
||||
@@ -8310,101 +8486,101 @@
|
||||
"requires": {}
|
||||
},
|
||||
"jest-regex-util": {
|
||||
"version": "30.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz",
|
||||
"integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==",
|
||||
"version": "30.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz",
|
||||
"integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==",
|
||||
"dev": true
|
||||
},
|
||||
"jest-resolve": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz",
|
||||
"integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.4.1.tgz",
|
||||
"integrity": "sha512-Zry8Yq/yJcNAZ7dJ5F2heic8AheXvbFZ7XI5V+h28nrYZ7Qoyy4dItq8OodjnYD270mvX+ZudmrNV9cysqhW5Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"jest-pnp-resolver": "^1.2.3",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-validate": "30.3.0",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-validate": "30.4.1",
|
||||
"slash": "^3.0.0",
|
||||
"unrs-resolver": "^1.7.11"
|
||||
}
|
||||
},
|
||||
"jest-resolve-dependencies": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz",
|
||||
"integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.4.2.tgz",
|
||||
"integrity": "sha512-gDiVh1I+GxYzz9oXlyw+1wv6VOYX1WYxMOfjsA3iGKePV2oxmbHhwxfkALxNxYy1ciw6APWwkW2zZONwP97aEQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-snapshot": "30.3.0"
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-snapshot": "30.4.1"
|
||||
}
|
||||
},
|
||||
"jest-runner": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz",
|
||||
"integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.4.2.tgz",
|
||||
"integrity": "sha512-2dw0PslVYXxffXGpLo+Ejad+KcI1Qkjn7f4X4619gf21oCUmL+SPfjqIa/losUem3yEOvfNZe/F1HWUcNpODcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/console": "30.3.0",
|
||||
"@jest/environment": "30.3.0",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/console": "30.4.1",
|
||||
"@jest/environment": "30.4.1",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"emittery": "^0.13.1",
|
||||
"exit-x": "^0.2.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-docblock": "30.2.0",
|
||||
"jest-environment-node": "30.3.0",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-leak-detector": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-resolve": "30.3.0",
|
||||
"jest-runtime": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-watcher": "30.3.0",
|
||||
"jest-worker": "30.3.0",
|
||||
"jest-docblock": "30.4.0",
|
||||
"jest-environment-node": "30.4.1",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"jest-leak-detector": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-resolve": "30.4.1",
|
||||
"jest-runtime": "30.4.2",
|
||||
"jest-util": "30.4.1",
|
||||
"jest-watcher": "30.4.1",
|
||||
"jest-worker": "30.4.1",
|
||||
"p-limit": "^3.1.0",
|
||||
"source-map-support": "0.5.13"
|
||||
}
|
||||
},
|
||||
"jest-runtime": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz",
|
||||
"integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==",
|
||||
"version": "30.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.4.2.tgz",
|
||||
"integrity": "sha512-3/5e8iPz2k/VLqlr8DgTftYyLUv8Su3FkCAO2/Od81UsUTpSxOrS6O5x5KkoQwyUjmpYyDJKeyAvg2T2nvpNkQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/environment": "30.3.0",
|
||||
"@jest/fake-timers": "30.3.0",
|
||||
"@jest/globals": "30.3.0",
|
||||
"@jest/environment": "30.4.1",
|
||||
"@jest/fake-timers": "30.4.1",
|
||||
"@jest/globals": "30.4.1",
|
||||
"@jest/source-map": "30.0.1",
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"cjs-module-lexer": "^2.1.0",
|
||||
"collect-v8-coverage": "^1.0.2",
|
||||
"glob": "^10.5.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-mock": "30.3.0",
|
||||
"jest-regex-util": "30.0.1",
|
||||
"jest-resolve": "30.3.0",
|
||||
"jest-snapshot": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-haste-map": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-mock": "30.4.1",
|
||||
"jest-regex-util": "30.4.0",
|
||||
"jest-resolve": "30.4.1",
|
||||
"jest-snapshot": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"slash": "^3.0.0",
|
||||
"strip-bom": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"jest-snapshot": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz",
|
||||
"integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.4.1.tgz",
|
||||
"integrity": "sha512-tEOkkfOMppUyeiHwjZswOQ3lcnoTnws/q5FnGIaeIh/jmoU0ZlgMYRR8sTlTj+nNGCoJ0RDq6SfxGxCsyMTPmw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/core": "^7.27.4",
|
||||
@@ -8412,39 +8588,39 @@
|
||||
"@babel/plugin-syntax-jsx": "^7.27.1",
|
||||
"@babel/plugin-syntax-typescript": "^7.27.1",
|
||||
"@babel/types": "^7.27.3",
|
||||
"@jest/expect-utils": "30.3.0",
|
||||
"@jest/expect-utils": "30.4.1",
|
||||
"@jest/get-type": "30.1.0",
|
||||
"@jest/snapshot-utils": "30.3.0",
|
||||
"@jest/transform": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/snapshot-utils": "30.4.1",
|
||||
"@jest/transform": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"babel-preset-current-node-syntax": "^1.2.0",
|
||||
"chalk": "^4.1.2",
|
||||
"expect": "30.3.0",
|
||||
"expect": "30.4.1",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-diff": "30.3.0",
|
||||
"jest-matcher-utils": "30.3.0",
|
||||
"jest-message-util": "30.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"pretty-format": "30.3.0",
|
||||
"jest-diff": "30.4.1",
|
||||
"jest-matcher-utils": "30.4.1",
|
||||
"jest-message-util": "30.4.1",
|
||||
"jest-util": "30.4.1",
|
||||
"pretty-format": "30.4.1",
|
||||
"semver": "^7.7.2",
|
||||
"synckit": "^0.11.8"
|
||||
},
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "7.7.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
|
||||
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
|
||||
"version": "7.8.5",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
|
||||
"integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"jest-util": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz",
|
||||
"integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz",
|
||||
"integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"ci-info": "^4.2.0",
|
||||
@@ -8461,17 +8637,17 @@
|
||||
}
|
||||
},
|
||||
"jest-validate": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz",
|
||||
"integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.4.1.tgz",
|
||||
"integrity": "sha512-PDWi4SOwLnwqNDfHZjOcsEFyZ4fc/2W2gVL3DEoyqnB6jCQMLRtfBong8s6omIw3lI0HWOus12xfnFmQtjW3fw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/get-type": "30.1.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/types": "30.4.1",
|
||||
"camelcase": "^6.3.0",
|
||||
"chalk": "^4.1.2",
|
||||
"leven": "^3.1.0",
|
||||
"pretty-format": "30.3.0"
|
||||
"pretty-format": "30.4.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"camelcase": {
|
||||
@@ -8483,30 +8659,30 @@
|
||||
}
|
||||
},
|
||||
"jest-watcher": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz",
|
||||
"integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.4.1.tgz",
|
||||
"integrity": "sha512-/l9UonmvCwjHH7d2h3iAwIloLc1H0S8mJZ/LNK3i86hqwPAz8otUJjP9MfYtz9Tt77Su5FD2xGjZn8d31IZHlw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/test-result": "30.3.0",
|
||||
"@jest/types": "30.3.0",
|
||||
"@jest/test-result": "30.4.1",
|
||||
"@jest/types": "30.4.1",
|
||||
"@types/node": "*",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"chalk": "^4.1.2",
|
||||
"emittery": "^0.13.1",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-util": "30.4.1",
|
||||
"string-length": "^4.0.2"
|
||||
}
|
||||
},
|
||||
"jest-worker": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz",
|
||||
"integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.4.1.tgz",
|
||||
"integrity": "sha512-SHynN/q/QD++iNyvMdy+WMmbCGk8jIsNcRxycXbWubSOhvo6T+j2afcfUSl+3hYsiBebOTo0cT7c2H7CXugu1g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/node": "*",
|
||||
"@ungap/structured-clone": "^1.3.0",
|
||||
"jest-util": "30.3.0",
|
||||
"jest-util": "30.4.1",
|
||||
"merge-stream": "^2.0.0",
|
||||
"supports-color": "^8.1.1"
|
||||
},
|
||||
@@ -8529,9 +8705,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"js-yaml": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
|
||||
"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.2.3.tgz",
|
||||
"integrity": "sha512-n+mUVyUX5bVv7G/G2zyIHOhdxfuU1dY2NOFzTQUWiMUbFss8b57NFlgCCaggU78wSw5KVS9cllzeLyzyR+n5nw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"argparse": "^2.0.1"
|
||||
@@ -8601,9 +8777,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "7.7.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
|
||||
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
|
||||
"version": "7.8.5",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
|
||||
"integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@@ -8845,14 +9021,15 @@
|
||||
}
|
||||
},
|
||||
"pretty-format": {
|
||||
"version": "30.3.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz",
|
||||
"integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==",
|
||||
"version": "30.4.1",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz",
|
||||
"integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/schemas": "30.0.5",
|
||||
"@jest/schemas": "30.4.1",
|
||||
"ansi-styles": "^5.2.0",
|
||||
"react-is": "^18.3.1"
|
||||
"react-is-18": "npm:react-is@^18.3.1",
|
||||
"react-is-19": "npm:react-is@^19.2.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
@@ -8869,12 +9046,18 @@
|
||||
"integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==",
|
||||
"dev": true
|
||||
},
|
||||
"react-is": {
|
||||
"version": "18.3.1",
|
||||
"react-is-18": {
|
||||
"version": "npm:react-is@18.3.1",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
|
||||
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
|
||||
"dev": true
|
||||
},
|
||||
"react-is-19": {
|
||||
"version": "npm:react-is@19.2.7",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.7.tgz",
|
||||
"integrity": "sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==",
|
||||
"dev": true
|
||||
},
|
||||
"require-directory": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||
@@ -8930,9 +9113,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"smol-toml": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz",
|
||||
"integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw=="
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.7.1.tgz",
|
||||
"integrity": "sha512-PPlsspAZ4jbMBu5DMFhfUGDQLu/vrL4SyBROVS37x8ynnVmFIs1VPBz1Co8Xks3TvpIaZXmU85y4DrQ+UyVFoQ=="
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
@@ -9096,12 +9279,12 @@
|
||||
}
|
||||
},
|
||||
"synckit": {
|
||||
"version": "0.11.12",
|
||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz",
|
||||
"integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==",
|
||||
"version": "0.11.13",
|
||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz",
|
||||
"integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@pkgr/core": "^0.2.9"
|
||||
"@pkgr/core": "^0.3.6"
|
||||
}
|
||||
},
|
||||
"test-exclude": {
|
||||
@@ -9138,26 +9321,26 @@
|
||||
"dev": true
|
||||
},
|
||||
"ts-jest": {
|
||||
"version": "29.4.6",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz",
|
||||
"integrity": "sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==",
|
||||
"version": "29.4.11",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.11.tgz",
|
||||
"integrity": "sha512-IrFl7l9AuB/qrNw5quqvAv/hmKMb8dhWOH4jQOGo0Oq8tCeo1O86/iTFG1FaRimgUkF13l4PcepO8ATFT6Ns4g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bs-logger": "^0.2.6",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"handlebars": "^4.7.8",
|
||||
"handlebars": "^4.7.9",
|
||||
"json5": "^2.2.3",
|
||||
"lodash.memoize": "^4.1.2",
|
||||
"make-error": "^1.3.6",
|
||||
"semver": "^7.7.3",
|
||||
"semver": "^7.8.0",
|
||||
"type-fest": "^4.41.0",
|
||||
"yargs-parser": "^21.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "7.7.3",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
|
||||
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
|
||||
"version": "7.8.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz",
|
||||
"integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@@ -9185,9 +9368,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"typescript": {
|
||||
"version": "5.9.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
|
||||
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
|
||||
"integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
|
||||
"dev": true
|
||||
},
|
||||
"uglify-js": {
|
||||
@@ -9198,42 +9381,45 @@
|
||||
"optional": true
|
||||
},
|
||||
"undici": {
|
||||
"version": "7.24.2",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-7.24.2.tgz",
|
||||
"integrity": "sha512-P9J1HWYV/ajFr8uCqk5QixwiRKmB1wOamgS0e+o2Z4A44Ej2+thFVRLG/eA7qprx88XXhnV5Bl8LHXTURpzB3Q=="
|
||||
"version": "8.10.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-8.10.0.tgz",
|
||||
"integrity": "sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ=="
|
||||
},
|
||||
"undici-types": {
|
||||
"version": "7.18.2",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
|
||||
"integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
|
||||
"version": "8.3.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
|
||||
"integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
|
||||
"dev": true
|
||||
},
|
||||
"unrs-resolver": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz",
|
||||
"integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.12.2.tgz",
|
||||
"integrity": "sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@unrs/resolver-binding-android-arm-eabi": "1.11.1",
|
||||
"@unrs/resolver-binding-android-arm64": "1.11.1",
|
||||
"@unrs/resolver-binding-darwin-arm64": "1.11.1",
|
||||
"@unrs/resolver-binding-darwin-x64": "1.11.1",
|
||||
"@unrs/resolver-binding-freebsd-x64": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-arm64-gnu": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-arm64-musl": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-riscv64-musl": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-s390x-gnu": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-x64-gnu": "1.11.1",
|
||||
"@unrs/resolver-binding-linux-x64-musl": "1.11.1",
|
||||
"@unrs/resolver-binding-wasm32-wasi": "1.11.1",
|
||||
"@unrs/resolver-binding-win32-arm64-msvc": "1.11.1",
|
||||
"@unrs/resolver-binding-win32-ia32-msvc": "1.11.1",
|
||||
"@unrs/resolver-binding-win32-x64-msvc": "1.11.1",
|
||||
"napi-postinstall": "^0.3.0"
|
||||
"@unrs/resolver-binding-android-arm-eabi": "1.12.2",
|
||||
"@unrs/resolver-binding-android-arm64": "1.12.2",
|
||||
"@unrs/resolver-binding-darwin-arm64": "1.12.2",
|
||||
"@unrs/resolver-binding-darwin-x64": "1.12.2",
|
||||
"@unrs/resolver-binding-freebsd-x64": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-arm-gnueabihf": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-arm-musleabihf": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-arm64-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-arm64-musl": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-loong64-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-loong64-musl": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-ppc64-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-riscv64-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-riscv64-musl": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-s390x-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-x64-gnu": "1.12.2",
|
||||
"@unrs/resolver-binding-linux-x64-musl": "1.12.2",
|
||||
"@unrs/resolver-binding-openharmony-arm64": "1.12.2",
|
||||
"@unrs/resolver-binding-wasm32-wasi": "1.12.2",
|
||||
"@unrs/resolver-binding-win32-arm64-msvc": "1.12.2",
|
||||
"@unrs/resolver-binding-win32-ia32-msvc": "1.12.2",
|
||||
"@unrs/resolver-binding-win32-x64-msvc": "1.12.2",
|
||||
"napi-postinstall": "^0.3.4"
|
||||
}
|
||||
},
|
||||
"update-browserslist-db": {
|
||||
@@ -9374,9 +9560,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"yargs": {
|
||||
"version": "17.7.2",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
|
||||
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
|
||||
"version": "17.7.3",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz",
|
||||
"integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cliui": "^8.0.1",
|
||||
|
||||
+14
-14
@@ -28,26 +28,26 @@
|
||||
"author": "@eifinger",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/cache": "^6.0.0",
|
||||
"@actions/cache": "^6.2.0",
|
||||
"@actions/core": "^3.0.0",
|
||||
"@actions/exec": "^3.0.0",
|
||||
"@actions/glob": "^0.6.1",
|
||||
"@actions/glob": "^0.7.0",
|
||||
"@actions/io": "^3.0.2",
|
||||
"@actions/tool-cache": "^4.0.0",
|
||||
"@renovatebot/pep440": "^4.2.2",
|
||||
"smol-toml": "^1.6.0",
|
||||
"undici": "^7.24.2"
|
||||
"@renovatebot/pep440": "^5.0.0",
|
||||
"smol-toml": "^1.7.1",
|
||||
"undici": "^8.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "^2.4.7",
|
||||
"@biomejs/biome": "^2.5.7",
|
||||
"@types/js-yaml": "^4.0.9",
|
||||
"@types/node": "^25.5.0",
|
||||
"@types/semver": "^7.7.1",
|
||||
"@vercel/ncc": "^0.38.4",
|
||||
"esbuild": "^0.27.4",
|
||||
"jest": "^30.3.0",
|
||||
"js-yaml": "^4.1.1",
|
||||
"ts-jest": "^29.4.6",
|
||||
"typescript": "^5.9.3"
|
||||
"@types/node": "^26.1.2",
|
||||
"@types/semver": "^7.8.0",
|
||||
"@vercel/ncc": "^0.44.1",
|
||||
"esbuild": "^0.28.1",
|
||||
"jest": "^30.4.2",
|
||||
"js-yaml": "^5.2.3",
|
||||
"ts-jest": "^29.4.11",
|
||||
"typescript": "^6.0.3"
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+12
-9
@@ -2,6 +2,7 @@ import * as cache from "@actions/cache";
|
||||
import * as core from "@actions/core";
|
||||
import { hashFiles } from "../hash/hash-files";
|
||||
import type { SetupInputs } from "../utils/inputs";
|
||||
import * as log from "../utils/logging";
|
||||
import { getArch, getOSNameVersion, getPlatform } from "../utils/platforms";
|
||||
|
||||
export const STATE_CACHE_KEY = "cache-key";
|
||||
@@ -19,7 +20,7 @@ export async function restoreCache(
|
||||
core.setOutput("cache-key", cacheKey);
|
||||
|
||||
if (!inputs.restoreCache) {
|
||||
core.info("restore-cache is false. Skipping restore cache step.");
|
||||
log.info("restore-cache is false. Skipping restore cache step.");
|
||||
core.setOutput("python-cache-hit", false);
|
||||
return;
|
||||
}
|
||||
@@ -55,7 +56,7 @@ async function restoreCacheFromKey(
|
||||
stateKey: string,
|
||||
outputKey: string,
|
||||
): Promise<void> {
|
||||
core.info(
|
||||
log.info(
|
||||
`Trying to restore cache from GitHub Actions cache with key: ${cacheKey}`,
|
||||
);
|
||||
let matchedKey: string | undefined;
|
||||
@@ -63,7 +64,7 @@ async function restoreCacheFromKey(
|
||||
matchedKey = await cache.restoreCache([cachePath], cacheKey);
|
||||
} catch (err) {
|
||||
const message = (err as Error).message;
|
||||
core.warning(message);
|
||||
log.warning(message);
|
||||
core.setOutput(outputKey, false);
|
||||
return;
|
||||
}
|
||||
@@ -77,7 +78,7 @@ async function computeKeys(
|
||||
): Promise<string> {
|
||||
let cacheDependencyPathHash = "-";
|
||||
if (inputs.cacheDependencyGlob !== "") {
|
||||
core.info(
|
||||
log.info(
|
||||
`Searching files using cache dependency glob: ${inputs.cacheDependencyGlob.split("\n").join(",")}`,
|
||||
);
|
||||
cacheDependencyPathHash += await hashFiles(
|
||||
@@ -85,7 +86,7 @@ async function computeKeys(
|
||||
true,
|
||||
);
|
||||
if (cacheDependencyPathHash === "-") {
|
||||
core.warning(
|
||||
log.warning(
|
||||
`No file matched to [${inputs.cacheDependencyGlob.split("\n").join(",")}]. The cache will never get invalidated. Make sure you have checked out the target repository and configured the cache-dependency-glob input correctly.`,
|
||||
);
|
||||
}
|
||||
@@ -93,8 +94,10 @@ async function computeKeys(
|
||||
if (cacheDependencyPathHash === "-") {
|
||||
cacheDependencyPathHash = "-no-dependency-glob";
|
||||
}
|
||||
const suffix = inputs.cacheSuffix ? `-${inputs.cacheSuffix}` : "";
|
||||
const version = pythonVersion ?? "unknown";
|
||||
const suffix = inputs.cacheSuffix
|
||||
? `-${encodeURIComponent(inputs.cacheSuffix)}`
|
||||
: "";
|
||||
const version = encodeURIComponent(pythonVersion ?? "unknown");
|
||||
const platform = await getPlatform();
|
||||
const osNameVersion = getOSNameVersion();
|
||||
const pruned = inputs.pruneCache ? "-pruned" : "";
|
||||
@@ -109,12 +112,12 @@ function handleMatchResult(
|
||||
outputKey: string,
|
||||
): void {
|
||||
if (!matchedKey) {
|
||||
core.info(`No GitHub Actions cache found for key: ${primaryKey}`);
|
||||
log.info(`No GitHub Actions cache found for key: ${primaryKey}`);
|
||||
core.setOutput(outputKey, false);
|
||||
return;
|
||||
}
|
||||
|
||||
core.saveState(stateKey, matchedKey);
|
||||
core.info(`cache restored from GitHub Actions cache with key: ${matchedKey}`);
|
||||
log.info(`cache restored from GitHub Actions cache with key: ${matchedKey}`);
|
||||
core.setOutput(outputKey, true);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,1121 @@
|
||||
// AUTOGENERATED_DO_NOT_EDIT
|
||||
export const KNOWN_CHECKSUMS: { [key: string]: string } = {
|
||||
"aarch64-apple-darwin-0.12.4":
|
||||
"99a913b606194867b43086404412c1afe079547fee72ecfb6af7e7b0dd54b0c6",
|
||||
"aarch64-pc-windows-msvc-0.12.4":
|
||||
"3290abffee78c30e3113f5113e26684fd057287e89124a588dcdcdd6ceec0fea",
|
||||
"aarch64-unknown-linux-gnu-0.12.4":
|
||||
"49d881b3403187e1f1789720881e77e4251ad4259d86c4844862657d2a35d13f",
|
||||
"aarch64-unknown-linux-musl-0.12.4":
|
||||
"04ed16e895b08065720e3d06cde722f0d406b63d116247d5e7776525c41f4972",
|
||||
"arm-unknown-linux-musleabihf-0.12.4":
|
||||
"9657ea47619bae9097e92a942694c3bbead7bf37c5ccffa6a0f8b3f08a947dba",
|
||||
"armv7-unknown-linux-gnueabihf-0.12.4":
|
||||
"fd9d223afc79a4d116d48269ea8cdc00cdeb0637d028843910650abc037e7c4f",
|
||||
"armv7-unknown-linux-musleabihf-0.12.4":
|
||||
"c61f3c109fcb0c9cac2a3c232d50ccd70c422a5d4dae44dab007bdf5c1e64f0d",
|
||||
"i686-pc-windows-msvc-0.12.4":
|
||||
"06a4948b908ce93af14c140158e15b5247ae6c8f15db50f3e4c6335bfd08b3fd",
|
||||
"i686-unknown-linux-gnu-0.12.4":
|
||||
"bcf9e594c0867f9bfe91b7979cdac38a86bb9f7136ceba259e727af912127f23",
|
||||
"i686-unknown-linux-musl-0.12.4":
|
||||
"d4c95044a507046f1ce9efdd00fb6873432a7d582a29d22febad26d92551586a",
|
||||
"powerpc64le-unknown-linux-gnu-0.12.4":
|
||||
"6028a1744a7c07d789f21cf4c1574bb4bfe40f2980ac411af5bcbaeac32b0094",
|
||||
"riscv64gc-unknown-linux-gnu-0.12.4":
|
||||
"dca9b15d76b5547987fc6b08fc1ea14e49773d9434b52825c68397c53896a139",
|
||||
"riscv64gc-unknown-linux-musl-0.12.4":
|
||||
"cc481ddf7f9d09491b83defa9a221e1410f7a4b1ea160687e201815ba1d91a7a",
|
||||
"s390x-unknown-linux-gnu-0.12.4":
|
||||
"9c6eea6ed43d8753e7eb26489a73ac060012e1a2485992955dd82a3b10b47acb",
|
||||
"x86_64-apple-darwin-0.12.4":
|
||||
"e603f1eb634ca97a2a125539b983891f53235e901511ed10c32c08c86e253ecd",
|
||||
"x86_64-pc-windows-msvc-0.12.4":
|
||||
"4f3b7d63cd81fca0da5a655d973d20affca89ce6e5f9a29fd0183cc4204a7639",
|
||||
"x86_64-unknown-linux-gnu-0.12.4":
|
||||
"c8c60f47e6f88d18dbf6f33d7279fb1fbf7ae76631768152cf5578c3d65729b4",
|
||||
"x86_64-unknown-linux-musl-0.12.4":
|
||||
"7aef04898775585d636424e52053e5328f2b1779175d5cb47665ff9d7524e8e7",
|
||||
"aarch64-apple-darwin-0.12.3":
|
||||
"546f7f8a6c70ff13a3a9d2bc958db3427298cebf3e0cb756f9177133b7068843",
|
||||
"aarch64-pc-windows-msvc-0.12.3":
|
||||
"4343217d668727b8a8eb5cad92389a1d2eeead93c89940d1b955ba1bb15462eb",
|
||||
"aarch64-unknown-linux-gnu-0.12.3":
|
||||
"bb66cb52e7b1823aed1183630d8d8e5c958840d584a4c55ec10a4cfc168dcca2",
|
||||
"aarch64-unknown-linux-musl-0.12.3":
|
||||
"fa513fca1eb2913334c944fe9adbdd410274a1cbe8dd05d03699a9eb85311d4e",
|
||||
"arm-unknown-linux-musleabihf-0.12.3":
|
||||
"44c4c43969c0e58945c7954b033a99916355acef558decf6a9a0b090a6e0465b",
|
||||
"armv7-unknown-linux-gnueabihf-0.12.3":
|
||||
"f572e3b8496f2069e102fd02fb346d7b2fbe0cba6edf0013575cfe79322e4ad0",
|
||||
"armv7-unknown-linux-musleabihf-0.12.3":
|
||||
"771c35fc4de5ea1e115ddab3147439498f30572be38fa2ff5c2dabb2258faa90",
|
||||
"i686-pc-windows-msvc-0.12.3":
|
||||
"8b1e428b1f5acfd5ba6bf490a7205b4f9149a27a0d9cbd1487243fd8e3d8a80b",
|
||||
"i686-unknown-linux-gnu-0.12.3":
|
||||
"0205eb65e8b39419616acbdad139718b59ea2a17869dea49bf7a5e3cf5aae1eb",
|
||||
"i686-unknown-linux-musl-0.12.3":
|
||||
"981619b5cf63a1bbab8eaf011aaac9d511db6ec0ac2618d59e36b9ccd95e8f99",
|
||||
"powerpc64le-unknown-linux-gnu-0.12.3":
|
||||
"bff188fcf2d867c5595f8db6061a39e54752ab213eaefc14287f37e85afe9ead",
|
||||
"riscv64gc-unknown-linux-gnu-0.12.3":
|
||||
"84d0d7d1359c432545b5717b5d7ba97465d694e13bd80646e04769b54890037d",
|
||||
"riscv64gc-unknown-linux-musl-0.12.3":
|
||||
"1b3ee81808a381bb0a83deb697c9612a5a48c47b9d98f6043c924600f2bf1321",
|
||||
"s390x-unknown-linux-gnu-0.12.3":
|
||||
"c6d0d036c4250bd28554c78b411b711ff9367a7dd12f241a27f5b7d43f549ae3",
|
||||
"x86_64-apple-darwin-0.12.3":
|
||||
"4c9f52262a14da336e4a42ed24992d12d0c956acde87619e4611d321dffa602b",
|
||||
"x86_64-pc-windows-msvc-0.12.3":
|
||||
"b23350c79e8ad0192b8124af13a0f17e8d4e4549524785e1aef389ae5a06990e",
|
||||
"x86_64-unknown-linux-gnu-0.12.3":
|
||||
"600cf9a742aca00d292673b16b5acffaa7b8c269a364ad0c2e79498dcb1fe101",
|
||||
"x86_64-unknown-linux-musl-0.12.3":
|
||||
"0643b9fb8c9fb27458e709ce6ff939695013c41975ff7b02d3f3b138d8d4bdb3",
|
||||
"aarch64-apple-darwin-0.12.2":
|
||||
"fa909fea3bc06f460db79017030a221fdbc43ec4478f089cb554d8335c090817",
|
||||
"aarch64-pc-windows-msvc-0.12.2":
|
||||
"dccc2bb7724c015f2a82467dee5bf4b2353a3fcdbfdfb30e0f93cdf5db2dd1df",
|
||||
"aarch64-unknown-linux-gnu-0.12.2":
|
||||
"19b7f1f66895261fbaa07f8ea91da0f86337ad4e47efa594e87641c1718ffc52",
|
||||
"aarch64-unknown-linux-musl-0.12.2":
|
||||
"73b87f0d65d7dfcd39753a51ce65592360b02c29f8e1bc2c85cc4190fe914499",
|
||||
"arm-unknown-linux-musleabihf-0.12.2":
|
||||
"4e27dfadda93c82dd85c2de29b7fd6417ea74c430bfbc52833ea9580c8c16d04",
|
||||
"armv7-unknown-linux-gnueabihf-0.12.2":
|
||||
"0536e78e9796394fa135102c7500f24a291aaf9fbf129b70add472b6dcf42a4b",
|
||||
"armv7-unknown-linux-musleabihf-0.12.2":
|
||||
"5e10ffda5760511a16c0d5a9b2c28ebaed864dfa34e73fddcf0f600cf125cfee",
|
||||
"i686-pc-windows-msvc-0.12.2":
|
||||
"e2037092f25370ecbd8827b1d91650a9fbf002548ae647aea39073c6bbe45384",
|
||||
"i686-unknown-linux-gnu-0.12.2":
|
||||
"659b83b91a329a6bf5fbb412ea61262640b9bf15f07b6208334bd7a379c0dbf0",
|
||||
"i686-unknown-linux-musl-0.12.2":
|
||||
"b57cc4b2bd5e1cc20253222add0d377a5398c2bafc93611bd2a4438ac8e21f9c",
|
||||
"powerpc64le-unknown-linux-gnu-0.12.2":
|
||||
"0e135c0fddbd303297a847016ea3cb60fdacebed20bd87200a3537cfb67d4d46",
|
||||
"riscv64gc-unknown-linux-gnu-0.12.2":
|
||||
"cc348cecc84695394721e2fc1e0c4fd5b9a052d4eeeba57b194929c719d5681e",
|
||||
"riscv64gc-unknown-linux-musl-0.12.2":
|
||||
"a0e9a9d99e0f2cc39b645aecdabe27e308074b1d3dc2afdd507433528c97e701",
|
||||
"s390x-unknown-linux-gnu-0.12.2":
|
||||
"78797ad74c948950181b607be0989b1d5926a2096d81def4238192c95ff47aeb",
|
||||
"x86_64-apple-darwin-0.12.2":
|
||||
"a6e6506a9109801222d65d17461abf4ed13bdecc5d2b13af0495418a82972c6b",
|
||||
"x86_64-pc-windows-msvc-0.12.2":
|
||||
"01442d8ce5c7124151a73e697c836d252c6da853c18c73206d3cc4c2378a91d2",
|
||||
"x86_64-unknown-linux-gnu-0.12.2":
|
||||
"d66e96b5f1ca3b99806eee283a8125d33a0bd669e6e6d9bc4ab7ffda63c41bf4",
|
||||
"x86_64-unknown-linux-musl-0.12.2":
|
||||
"2dbe8209c9592f6d1009b8565f4bf29813427907bee2236023c013101ede343f",
|
||||
"aarch64-apple-darwin-0.12.1":
|
||||
"77d2906988e8074fd43f2f329ec452ebbf9b0c257ba1c66451c71de70a6baf42",
|
||||
"aarch64-pc-windows-msvc-0.12.1":
|
||||
"9bc7c18e616230fa2dc6fb24bc3afde18a95c2b5c9433de747e9502c66041568",
|
||||
"aarch64-unknown-linux-gnu-0.12.1":
|
||||
"769d373e146692c639b5fbaae33b331c297a32e03d30448772051902df52bbf4",
|
||||
"aarch64-unknown-linux-musl-0.12.1":
|
||||
"ce218dad9eb48a39dd86160bec6291fac7275f20a9cabcc4bc10dd2c757208f8",
|
||||
"arm-unknown-linux-musleabihf-0.12.1":
|
||||
"fba356be49629c5e0c0270fb3c55def0d83a7abe014ea857b13d14e0cbeabbbc",
|
||||
"armv7-unknown-linux-gnueabihf-0.12.1":
|
||||
"bfca453bdf4ea6ce149f9d5be0589fc2e17a22d434c66c2f374a802dabb13cb5",
|
||||
"armv7-unknown-linux-musleabihf-0.12.1":
|
||||
"0cb3e6ccfedce3cf3f5f95e3a5ddb32977f54025ea74f91993072ebcf91f9df2",
|
||||
"i686-pc-windows-msvc-0.12.1":
|
||||
"9b51c33d307a8ab9e9dfd88d4ae1491761f63de0bffa3cec96bec536491c9b97",
|
||||
"i686-unknown-linux-gnu-0.12.1":
|
||||
"4c6f5d77215cf40ddd388215dfdac46471d074aeba62163f3e7fab6892645f95",
|
||||
"i686-unknown-linux-musl-0.12.1":
|
||||
"be4d42582284456dae2ff4bf622c4169d1e6b8d1cd0e516658d6ba01f2a57dfa",
|
||||
"powerpc64le-unknown-linux-gnu-0.12.1":
|
||||
"9f3ebd5e5ce0f7a212a8d1326995612896cdcaa4ef571194d3b061a2d0d4d92e",
|
||||
"riscv64gc-unknown-linux-gnu-0.12.1":
|
||||
"dda637a8f2f11b73a3e8da35c7909772beb49799aea61bacb04c2e7d2455b939",
|
||||
"riscv64gc-unknown-linux-musl-0.12.1":
|
||||
"31806babab570f6cab8bfdaaaf6890360f1efa4e122372ad73193b70326b8f83",
|
||||
"s390x-unknown-linux-gnu-0.12.1":
|
||||
"58132e9675680eb952b9794206a7ee98b528c1e664e6f80f55fb4972ffb7f269",
|
||||
"x86_64-apple-darwin-0.12.1":
|
||||
"69d9f9a00337f25a50dcb13882052da08b8469bac11091c98c5694c3c6721467",
|
||||
"x86_64-pc-windows-msvc-0.12.1":
|
||||
"8fcb0cb46e1229065e344758980924e569bef5882ef45f46fada8fb24e06b74a",
|
||||
"x86_64-unknown-linux-gnu-0.12.1":
|
||||
"90b2f223fb69d19db49e117da601f64978593417988530aa733d456141b4bcbb",
|
||||
"x86_64-unknown-linux-musl-0.12.1":
|
||||
"47823f814693bab8623308341369190de30b5c621eec5b1ee20352eae8c7982c",
|
||||
"aarch64-apple-darwin-0.12.0":
|
||||
"2b9e582af54f84fa50c115427451a6c13e80f43b52f8282b8af5791077317bbf",
|
||||
"aarch64-pc-windows-msvc-0.12.0":
|
||||
"60c12dc34a8ff0269d7744a3a94506fa8f140618a82194b7bf7834fa789a765b",
|
||||
"aarch64-unknown-linux-gnu-0.12.0":
|
||||
"2c5d6e3092cc5223b10ff403880cc75121bf64e84644e7a0c69f643b0d89ac95",
|
||||
"aarch64-unknown-linux-musl-0.12.0":
|
||||
"936fbbf20188a2b1c66bce3dca3f4009a5c9cdf12bb2bbd084e71926f75d6a15",
|
||||
"arm-unknown-linux-musleabihf-0.12.0":
|
||||
"b5879d87fe1fd7a3c8fb27346339222acc5628000002024e7f4d114f1e67a55d",
|
||||
"armv7-unknown-linux-gnueabihf-0.12.0":
|
||||
"a84cc572bf83d82c9fb6ce6aaed37da98789420a84f6f754b80ba519d8683345",
|
||||
"armv7-unknown-linux-musleabihf-0.12.0":
|
||||
"d4a3383585057824e16fa7f0b24e9f0fecf4b37d29e6d4c7f26b76a5959116e3",
|
||||
"i686-pc-windows-msvc-0.12.0":
|
||||
"4b7f9319eeb79a8e6204952742ac5ef6a56a096dc9438f416bfa60a374d6e94d",
|
||||
"i686-unknown-linux-gnu-0.12.0":
|
||||
"9399d51a33779007692e84e0395a78af7adfd21f2cc10da16ea2c9b6ad7dc260",
|
||||
"i686-unknown-linux-musl-0.12.0":
|
||||
"7a1994b07077bd67ef76dab2107dfad576436951993969a93067f3217f7fa1fb",
|
||||
"powerpc64le-unknown-linux-gnu-0.12.0":
|
||||
"9a4a9b50a27111545b16821449f79fa646bad4b14f0811d6f70ad77f627983a2",
|
||||
"riscv64gc-unknown-linux-gnu-0.12.0":
|
||||
"a55f970e88e7acb73a21a9efe892caff40e1a7b928770a2b844fdd7d74d8070e",
|
||||
"riscv64gc-unknown-linux-musl-0.12.0":
|
||||
"01253909dec1d5cdd836f52ed70a2fc1a7017ec723a724b7315b55f2025728a1",
|
||||
"s390x-unknown-linux-gnu-0.12.0":
|
||||
"3737b6d3fe7100ade46df0aae3d59564e7bbbb2fcb926186209e103e942535ab",
|
||||
"x86_64-apple-darwin-0.12.0":
|
||||
"d41593beaefc54bab7d062af0ef6ca093bfb81d001d58ebbef39e44423f9c496",
|
||||
"x86_64-pc-windows-msvc-0.12.0":
|
||||
"68200e25de594df92387186bbfb9d9df606ec1d87efaa0ae0c7f690970e53db6",
|
||||
"x86_64-unknown-linux-gnu-0.12.0":
|
||||
"eaf842262aa1c418d8ecc5605f02ee1ebfd369124fa48548e85f9481a47831a9",
|
||||
"x86_64-unknown-linux-musl-0.12.0":
|
||||
"3340a9d8cffc4d801bc1a7459ebfaf5790c79400720d9b6963d806f058526684",
|
||||
"aarch64-apple-darwin-0.11.33":
|
||||
"d75e3d2bfc203d17388edaabd3aa37958edbcbfc36219e3ee0d31bb080b4baa2",
|
||||
"aarch64-pc-windows-msvc-0.11.33":
|
||||
"6eb261d3ad61b35e2a6cfd997b296b908ff74d6199717eca81c3c73e1df7fbc7",
|
||||
"aarch64-unknown-linux-gnu-0.11.33":
|
||||
"9ed88a9a42de3102f9704d021ab186fdf8a69a7ad9a1d3f3486ac6b1e55d6141",
|
||||
"aarch64-unknown-linux-musl-0.11.33":
|
||||
"e256e5cf23f8c2e7d4d83f029acd662cbe7275ff24268ce1d6d2ba9016855268",
|
||||
"arm-unknown-linux-musleabihf-0.11.33":
|
||||
"8c973de331a13f83a1b9bc358b6e7bfa5e5e1f015ff93545dc04839c868e20fe",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.33":
|
||||
"5446f812e7f5512198adaf60d2c66672a41d9676e86686819222baef021bce5b",
|
||||
"armv7-unknown-linux-musleabihf-0.11.33":
|
||||
"9e0f6904f62997e34ee8795d615ba2974f31b0461674572d05859ba0b9402290",
|
||||
"i686-pc-windows-msvc-0.11.33":
|
||||
"10b09a49823dd561bb4ececee1eea2c29cb58982f7253865ec27d23fd131daa7",
|
||||
"i686-unknown-linux-gnu-0.11.33":
|
||||
"b5b82a4eedf863f855acba77bb51fc7c1f399b276fdbfdff63edf35bb2a2fdfb",
|
||||
"i686-unknown-linux-musl-0.11.33":
|
||||
"af050631909811e945a9a8b087cc071038bfe25cfa5ff0b7afd17fb468522f43",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.33":
|
||||
"eee721adf229681b98cdd868d4991886bd91527ecbdb6fa778feb79f46d4be75",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.33":
|
||||
"bbb1fc2e25beb8bf0ee4342e70bb0caacb74a7503a02e04cb009aff28a182cfd",
|
||||
"riscv64gc-unknown-linux-musl-0.11.33":
|
||||
"ff4d248fff98c1c6ea12088ae002c07b861278bfc2c41e31ac0ecc1795ddb2f0",
|
||||
"s390x-unknown-linux-gnu-0.11.33":
|
||||
"bbb4740bd2596d2da979ad721258761fa0d4c5bb6ed151356c2146c150edfd21",
|
||||
"x86_64-apple-darwin-0.11.33":
|
||||
"f1b919f740bd6be1d014ff58c4271b0779a32198adfb19ad9c5d1c4d9b2b4301",
|
||||
"x86_64-pc-windows-msvc-0.11.33":
|
||||
"c253ce868ad48d29327b661452ce184c9e333e6d6f5bc8d6fcfbf4dd52b83442",
|
||||
"x86_64-unknown-linux-gnu-0.11.33":
|
||||
"aa9fca823c03289fb6e3460b3dc864f3ea895cafaf9b99247701a67b17d1b018",
|
||||
"x86_64-unknown-linux-musl-0.11.33":
|
||||
"3e95b84d8a8b3390c91584d4fd0c4d326e951da2b8fb15a76719368af2795424",
|
||||
"aarch64-apple-darwin-0.11.32":
|
||||
"ed336d0ba49db8ef89b2b41fffa372ce63bd032f22a56f001c265891aec32829",
|
||||
"aarch64-pc-windows-msvc-0.11.32":
|
||||
"a7427ea0440bb826b6716d1837ff3d173b8e7d496cb09ee8f456b4e023a2fdcd",
|
||||
"aarch64-unknown-linux-gnu-0.11.32":
|
||||
"4d4fa08d95b06642e5800df6a22bd71455f23f988269e18da2847971d8c0bf31",
|
||||
"aarch64-unknown-linux-musl-0.11.32":
|
||||
"d70cdae687feb6aad9a09fe8d686df8c8efaf69a1007fa581379a2025adc10a5",
|
||||
"arm-unknown-linux-musleabihf-0.11.32":
|
||||
"43b1c42483d15e94747699b5f718e829144d2b1b117e1c1658742e73d05527a3",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.32":
|
||||
"593e0f6b92cef908b23e3e3e0da2fd8ae24392afdb70eed05651869fea4a1b02",
|
||||
"armv7-unknown-linux-musleabihf-0.11.32":
|
||||
"cc169fc42b63970cb0cc10a1658c9833e79a5bfde8915ec5f6f5316d9e0cb95f",
|
||||
"i686-pc-windows-msvc-0.11.32":
|
||||
"e54e814a3963af3af607940f142169312d7550d44db8e2daa2bf6c524554ac3c",
|
||||
"i686-unknown-linux-gnu-0.11.32":
|
||||
"d4c53923c44dd060a42dbc6b88e349c86676d779b01603329d8c6b8f916e74cd",
|
||||
"i686-unknown-linux-musl-0.11.32":
|
||||
"7704bf0270e1ef8421608c585e8016411a625314125fce473e01446fdcb1fcf3",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.32":
|
||||
"0afff437b499f5919045fd0095b52dec18d818771f9a6bd0be0ff027b427fb16",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.32":
|
||||
"f10954d2263d407f6ffa6bfdd458d0fc0918f097f851ca3cf4907d4f7ebf2dae",
|
||||
"riscv64gc-unknown-linux-musl-0.11.32":
|
||||
"3c58fc5e82589a77b2409a6c308f1a55361c29130cb3ff239e850d413433f97f",
|
||||
"s390x-unknown-linux-gnu-0.11.32":
|
||||
"9922ba31cd582f4d762ac88a3cfdf339be599063c689c64c36916f04139ed43d",
|
||||
"x86_64-apple-darwin-0.11.32":
|
||||
"77f5ca26c0de20e992a3677a174fe1121ee25c36f9b1434a863f75bf077a05eb",
|
||||
"x86_64-pc-windows-msvc-0.11.32":
|
||||
"acfde570451cfdb8689fa159a138ee805ba4e241c466432750302c86254b0984",
|
||||
"x86_64-unknown-linux-gnu-0.11.32":
|
||||
"aab924fd522efd06f1c5f3b93a243864fc453132c94b2dc49f1371b528a4b967",
|
||||
"x86_64-unknown-linux-musl-0.11.32":
|
||||
"1fd052f196108d87e61fc3d98fe06b4ec758c9a1eb1466a6fd1a436fe45885f2",
|
||||
"aarch64-apple-darwin-0.11.31":
|
||||
"b2b93e82a6786f9c7cb89fd4ca0e859a147b292ae8f6f95784f9742f0efec39e",
|
||||
"aarch64-pc-windows-msvc-0.11.31":
|
||||
"060da44c6474680ce9ed31f866a496cb06979dbea86de8fe24e0f22c48ac992b",
|
||||
"aarch64-unknown-linux-gnu-0.11.31":
|
||||
"d74f23949fd07be4970f293d06ca99d87cd2a78a341c3d7b7fc0df7bc2d8a145",
|
||||
"aarch64-unknown-linux-musl-0.11.31":
|
||||
"49cb5ffce40cc9c85355caa8104f7b61c40a8daac7334f4bc841cad1a7bb359e",
|
||||
"arm-unknown-linux-musleabihf-0.11.31":
|
||||
"0f71f9f2b37d1f82dd225662b3ecb10c3ff114a5828819173015dbc86d2fa0dd",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.31":
|
||||
"de23124095c4df154d3807495b59f1985d8d9460bd70d3de61fef2034756bd61",
|
||||
"armv7-unknown-linux-musleabihf-0.11.31":
|
||||
"9cb5373c1c2e6939077dcc60723a79dc348dd3c9942f2559d19696d16ac34990",
|
||||
"i686-pc-windows-msvc-0.11.31":
|
||||
"4b4d07862b81275ea1a507d5e80774b0f38502493f854cbb585a987c0155d627",
|
||||
"i686-unknown-linux-gnu-0.11.31":
|
||||
"85c71ad3f7c189e77bef0d94bcc3c1cbf8792695efe616dec86a389fbb1ee72b",
|
||||
"i686-unknown-linux-musl-0.11.31":
|
||||
"160a9e19934879492f5b92c8eb132b39ee19858a406c9f3224c05c7b7cd70e59",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.31":
|
||||
"43e21695092a3c58aa3d364c139bbeab838baba662f0e9f37aa78e52305289e3",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.31":
|
||||
"7fa2c496e1ca94c7bcfcc9361f7928c4126d63fc4588dee4c8a2465332b60636",
|
||||
"riscv64gc-unknown-linux-musl-0.11.31":
|
||||
"b300fe07dd1fb98e8608277d7b822ff637e25ee839674645f7ddcbc42199a39b",
|
||||
"s390x-unknown-linux-gnu-0.11.31":
|
||||
"42114face40b846720980dc3f6e2c1b4676d8bf56c8c551586b249be9137cb84",
|
||||
"x86_64-apple-darwin-0.11.31":
|
||||
"33ee6bd62b57fcd77a499deb54e4432dc1e1a2f3d34930ba987ad8b43f9c7bc7",
|
||||
"x86_64-pc-windows-msvc-0.11.31":
|
||||
"410c2fd3126ff621c9450a21cfc200002c7540dc48d130069a8f619cdb0a811b",
|
||||
"x86_64-unknown-linux-gnu-0.11.31":
|
||||
"8cc1cd82d434ec565376f98bd938d4b715b5791a80ff2d3aa78821cf85091b4b",
|
||||
"x86_64-unknown-linux-musl-0.11.31":
|
||||
"89048b7e30a6c459fa7e8f2e91cfdc413dc004dcbddc6c2af5e09df123e3246d",
|
||||
"aarch64-apple-darwin-0.11.30":
|
||||
"9bed3567d496d8dab84ecf7a1247551ac94ef1baaebb7b65df008dd93e9dc357",
|
||||
"aarch64-pc-windows-msvc-0.11.30":
|
||||
"0edc44e7f23668bce7985facd96b2fe04a4d8ea8edfc7e53294afd8993e960fc",
|
||||
"aarch64-unknown-linux-gnu-0.11.30":
|
||||
"8c11d90f5f66d232930cf8ae3a085c39877690d409e10878234802b028b20e2a",
|
||||
"aarch64-unknown-linux-musl-0.11.30":
|
||||
"7562a40e4e08b1bfd566bd6aeca55a16ee5ac45211554543e8cdb3c395b47416",
|
||||
"arm-unknown-linux-musleabihf-0.11.30":
|
||||
"58967610a6f14f2785e3be3b1b47553b5ff92c3d51bc0f1d9d90d83dc224f0db",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.30":
|
||||
"8e2d2ab63a37af47c1b4126c5871ee191b983a10670af91d8ef0bee198292931",
|
||||
"armv7-unknown-linux-musleabihf-0.11.30":
|
||||
"33b515887e04c79d4d5de5967b8278b9dac1853cc8d657bf77052bab16a6629f",
|
||||
"i686-pc-windows-msvc-0.11.30":
|
||||
"8ceaa74889e30d64adf55d7ad7acce6ed101fb036155bf2d7613715c9d9533c1",
|
||||
"i686-unknown-linux-gnu-0.11.30":
|
||||
"e53221602d83b03c63a5e262bfcbf0f5f6e5972e93847498418bdb42005f04e7",
|
||||
"i686-unknown-linux-musl-0.11.30":
|
||||
"f66898852a6a745a8c0ab0a26e046857ee77c9f24e4a3b64cb078753490b3978",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.30":
|
||||
"81a71fa495239c372b3b0c1bb2509167da00cf307323a2d2a39cbc92f0c6d5d1",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.30":
|
||||
"e2d65822d8f668f6d055679dba4937e386764b9561f9d1269d3bc9e7140f7491",
|
||||
"riscv64gc-unknown-linux-musl-0.11.30":
|
||||
"3d75e26ace5e679e5de26106a71ee775af5c7f7ad872cd04f33b4d53c523a707",
|
||||
"s390x-unknown-linux-gnu-0.11.30":
|
||||
"a30f253aca1291dbcdbb7f76c754235f268ff84d106a595f7d1abf337ab22ac1",
|
||||
"x86_64-apple-darwin-0.11.30":
|
||||
"ce285fbbfbe294b1e1bc6c87c8b59d9622b85383b88b2b132a2df5c73e83d7c1",
|
||||
"x86_64-pc-windows-msvc-0.11.30":
|
||||
"be8d78c992312212e5cc05e9f9de3fa996db73b7c86a186dfb9231eb9f91d33e",
|
||||
"x86_64-unknown-linux-gnu-0.11.30":
|
||||
"04bc7d180d6138bf6dc08387acf507a823f397a98fea55da36b0ccc7fbce3b68",
|
||||
"x86_64-unknown-linux-musl-0.11.30":
|
||||
"023fdd3b59fccfb67b365c69fb34182aaaed1d685d367a57571e3c1468a4c70c",
|
||||
"aarch64-apple-darwin-0.11.29":
|
||||
"61c04acc52a33ef0f331e494bdfbedcdb6c26c6970c022ed3699e5860f8930e3",
|
||||
"aarch64-pc-windows-msvc-0.11.29":
|
||||
"55b597ae81bc29531a7c352a1431a8a73cc2755d7a5b9ec454580cbe02e5154f",
|
||||
"aarch64-unknown-linux-gnu-0.11.29":
|
||||
"94500fb064ae3c971a873cba64d94694c50677e0a4dbf78735c80509e7429919",
|
||||
"aarch64-unknown-linux-musl-0.11.29":
|
||||
"593d79a797ece3f1dfaaf3e0a973263422a135d9262c7dbc6cd75d9c11acc0b4",
|
||||
"arm-unknown-linux-musleabihf-0.11.29":
|
||||
"b160d7eb7dc45af378b3c9dd2cd6b07d64c65b509f2da673434e8e5dc996e5b1",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.29":
|
||||
"7b5717ae304fbb1e94104699fb8c08b32d1537fedc90dd8fcf87768d818951ed",
|
||||
"armv7-unknown-linux-musleabihf-0.11.29":
|
||||
"bfd05286a80b39bd4708bbbb4450fe09f07fea86eea60d31ea2de0b5e816ef54",
|
||||
"i686-pc-windows-msvc-0.11.29":
|
||||
"c173af6f6e125d65214b55d6b75fcf1a32d5e1c3a656938740fe0b2379cd4bcc",
|
||||
"i686-unknown-linux-gnu-0.11.29":
|
||||
"c62af324951ae6f31f9453280e077176c96b6e31897d8133c00411a91a20878f",
|
||||
"i686-unknown-linux-musl-0.11.29":
|
||||
"368dd75d030cae0512631ba0d50604e8471275ec2d9f02836edb91e4c82ad36a",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.29":
|
||||
"641b15637de9fedc7e738b0e4716b2233c792ba6dca722ba0484381749e1a9fd",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.29":
|
||||
"5c1229cc0309ebc6872ee847b8fc75564b3b7688edeb09e19427203e2dbc0ea7",
|
||||
"riscv64gc-unknown-linux-musl-0.11.29":
|
||||
"d4708d913ba88fad9fe1d81da3e13aecadde7a3190cc095a7f2af2fa5c8caa8f",
|
||||
"s390x-unknown-linux-gnu-0.11.29":
|
||||
"fa029183f550a3b00b89c06529fabfa11e0c69c097ccd397a8e7eae46f397348",
|
||||
"x86_64-apple-darwin-0.11.29":
|
||||
"c4c4de482da9ccdd076dc4fb5cfe7b740609029385c72f58606be3153602387d",
|
||||
"x86_64-pc-windows-msvc-0.11.29":
|
||||
"a047d55651bc3e0ca24595b25ec4cfcb10f9dca9fb56514e661269b37d4fae68",
|
||||
"x86_64-unknown-linux-gnu-0.11.29":
|
||||
"04f8b82f5d47f0512dcd32c67a4a6f16a0ea27c81537c338fd0ad6b23cebe829",
|
||||
"x86_64-unknown-linux-musl-0.11.29":
|
||||
"46711858adb2a3acaa9cee00f9060688ad1fd5706aecc005b96a6a7f285a00b7",
|
||||
"aarch64-apple-darwin-0.11.28":
|
||||
"33540eb7c883ab857eff79bd5ac2aa31fe27b595abecb4a9c003a2c998447232",
|
||||
"aarch64-pc-windows-msvc-0.11.28":
|
||||
"3248109afad3ec59baad299d324ff53de17e2d9a3b3e21580ffd26744b11e036",
|
||||
"aarch64-unknown-linux-gnu-0.11.28":
|
||||
"03e9fe0a81b0718d0bc84625de3885df6cc3f89a8b6af6121d6b9f6113fb6533",
|
||||
"aarch64-unknown-linux-musl-0.11.28":
|
||||
"da10cdfa7d92212b7acb62021a0fd61bcf8580c58c3632ec915d10c3a1a7906b",
|
||||
"arm-unknown-linux-musleabihf-0.11.28":
|
||||
"955f9697d4781cf4dfc62d9442a49f3e57861f19405a981ffe9fdc0d18e0a31a",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.28":
|
||||
"b7cddaad27cd531096e88e64de863f7e37c6fedde11c97595060e6503544d120",
|
||||
"armv7-unknown-linux-musleabihf-0.11.28":
|
||||
"eb00e0f246d278133df6a55b5d3534a49f051a7dfc276f640b66504c091167f6",
|
||||
"i686-pc-windows-msvc-0.11.28":
|
||||
"01975deb06072edfc1f18435c25737d8d378dc849b918cd580768ab3b7641e85",
|
||||
"i686-unknown-linux-gnu-0.11.28":
|
||||
"f8d01e918dd4d5eabdd4caee78e8adbc3993a70f3b82395fa6b23fcf791925d9",
|
||||
"i686-unknown-linux-musl-0.11.28":
|
||||
"c869415e44e13000d9daae15cec7bcfaf0735915a8d6e66402d459f6bed35710",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.28":
|
||||
"b634b6f26a036d112914c2d6d7ae1944bf8f4a6dfed6e19a22b35e5d91f168fb",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.28":
|
||||
"be7473dc29ee88bd260e30642faa5ba6dccd7d4493012077873b293c377ab546",
|
||||
"riscv64gc-unknown-linux-musl-0.11.28":
|
||||
"4a9e553d8a62c42600d5c2874b7c2f728c03d4310d72ed7351edbee8ed6a71b4",
|
||||
"s390x-unknown-linux-gnu-0.11.28":
|
||||
"f5ed9d2aed566e11ffc3f1f7ab5b4049dfbfcb04c326ce2ed5bbf42069d62b27",
|
||||
"x86_64-apple-darwin-0.11.28":
|
||||
"2ad79983127ffca7d77b77ce6a24278d7e4f7b817a1acf72fea5f8124b4aac5e",
|
||||
"x86_64-pc-windows-msvc-0.11.28":
|
||||
"0a23463216d09c6a72ff80ef5dc5a795f07dc1575cb84d24596c2f124a441b7b",
|
||||
"x86_64-unknown-linux-gnu-0.11.28":
|
||||
"e490a6464492183c5d4534a5527fb4440f7f2bb2f228162ad7e4afe076dc0224",
|
||||
"x86_64-unknown-linux-musl-0.11.28":
|
||||
"f02146b371c35c287d860f003ece7345c86e358a3fd70a9b63700cd141ee7fb4",
|
||||
"aarch64-apple-darwin-0.11.27":
|
||||
"34e63cc0de0aebbc8d424767c588c31b685479f045f9ced9e5ef43ff9e0e8d63",
|
||||
"aarch64-pc-windows-msvc-0.11.27":
|
||||
"7566a80fe96ee84e6938621a1b704f44b0db546672bf43025905784b2507b7fe",
|
||||
"aarch64-unknown-linux-gnu-0.11.27":
|
||||
"321580b9a7069d0cdbd8db9482a5fb62b4f1285110f847746e3b495408e3a08c",
|
||||
"aarch64-unknown-linux-musl-0.11.27":
|
||||
"b0b1909a7e5caf2ec0cbe2649f5171050c26d85efb65d9d4de2cfe754dc14ea3",
|
||||
"arm-unknown-linux-musleabihf-0.11.27":
|
||||
"d2a165d17814b88d0190ae69bca9877261d26cac79aba3d27d343a56a7ac47ba",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.27":
|
||||
"b54d68117ca6f9ba451537acf89ed5c6723bcd08a2d33e21a543659fce31cfd8",
|
||||
"armv7-unknown-linux-musleabihf-0.11.27":
|
||||
"ecdc47f7fbb3eed8081f16ea24d61e9ae562c3a0286eb75a9633ebd75f6ff0ab",
|
||||
"i686-pc-windows-msvc-0.11.27":
|
||||
"479fa122a5a332b1bb09a877d7fa1cc2215a951d2af0af966336a640ae9cc568",
|
||||
"i686-unknown-linux-gnu-0.11.27":
|
||||
"9add1a8c71bbbbe9058c56ab37c7a423baa4dcdcda64194a4e4f588f323f38da",
|
||||
"i686-unknown-linux-musl-0.11.27":
|
||||
"377d0e1a5a34fc66e7e060adefaf4f141882460e84e76e7a8e9943f8d6e933d8",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.27":
|
||||
"f7673c8308b4f7df79b4dd3771dc43d4140d44439f500f82168121bda1eb12f4",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.27":
|
||||
"ad677746993287a092e3d32748b24751098638bc1188d4340f8d47583f0ac1ee",
|
||||
"riscv64gc-unknown-linux-musl-0.11.27":
|
||||
"7fee728248d487de1b76aa31882319fec8ee117d5128cfd1e1fd78ab2f77184b",
|
||||
"s390x-unknown-linux-gnu-0.11.27":
|
||||
"2a984c393b494bfef78f58770e09295fbebe33ec88eede32f6b59df2a8ac2995",
|
||||
"x86_64-apple-darwin-0.11.27":
|
||||
"9f00047455b2a9e81f282297fca39cdd6cd5761a6b0ce75e2d7698744c59e1af",
|
||||
"x86_64-pc-windows-msvc-0.11.27":
|
||||
"b7e32288ce0e289dbe94d2cac7adbb008f74f0e038542a2d9969dd50eb7056ee",
|
||||
"x86_64-unknown-linux-gnu-0.11.27":
|
||||
"0f4088a04ac92e4c52b4b76759d227a1047355e0ce1dd57cd738a6dec5966bd9",
|
||||
"x86_64-unknown-linux-musl-0.11.27":
|
||||
"5d5594af1530c7c31e46a8cc0a35ceb4d28f3890049efe2149ac53c9ad121493",
|
||||
"aarch64-apple-darwin-0.11.26":
|
||||
"8f7fbf1708399b921857bce71e1d60f0d3ccf52a30caebc1c1a2f175dce13ab6",
|
||||
"aarch64-pc-windows-msvc-0.11.26":
|
||||
"98246149741f558e25e45ecf2b0b20f34de0634269f2bf0dcb4012d4b6ba289a",
|
||||
"aarch64-unknown-linux-gnu-0.11.26":
|
||||
"befa1a59c91e96eb601b0fd9a97c03dd666f17baba644b2b4db9c59a767e387e",
|
||||
"aarch64-unknown-linux-musl-0.11.26":
|
||||
"47418cfdb34b1ca42e503da72631ac8c475602e2411ac6c39aa84c2373fe6324",
|
||||
"arm-unknown-linux-musleabihf-0.11.26":
|
||||
"400ebbca4062f7960cbdb2359cd28741dc9a1fab2656abb9ee05fb525e3f1e12",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.26":
|
||||
"e1a6e135f68c237f969f2acb5277ef2691dec582e99d9f6c237c21583bd26f7b",
|
||||
"armv7-unknown-linux-musleabihf-0.11.26":
|
||||
"3b4453d821588f7fafe622a099db4b7f55a668bec79db73411414ffc24b8c45d",
|
||||
"i686-pc-windows-msvc-0.11.26":
|
||||
"6e19e7ef0ccacfeea7edeb0a7be951d31148b49f5170c1770c58db312fe443f8",
|
||||
"i686-unknown-linux-gnu-0.11.26":
|
||||
"65cc2d8719febecd1bc2fd3ea437c72317ac54de96e54de0a73344e150982478",
|
||||
"i686-unknown-linux-musl-0.11.26":
|
||||
"ef5d5c982dfd4d6b5aa107c33b882b978ccccf1487500ae2adbc1d3665ea7e04",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.26":
|
||||
"095f7cfd814495719244897f96f1c35f10369bcd9237276c63cfed824353f505",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.26":
|
||||
"253d728a2660006e4aadee627f5d9f3ca2a874559b5fc716a5023965e58092bf",
|
||||
"riscv64gc-unknown-linux-musl-0.11.26":
|
||||
"4ef67e6bb961583eb4ee7ce61b3c98bcede9e51b771b4b4967719d0fb6aa3cbd",
|
||||
"s390x-unknown-linux-gnu-0.11.26":
|
||||
"34f514ed6ecbf33a3d90346c8bf3074954dd0c76340f5765b88577daa05d307b",
|
||||
"x86_64-apple-darwin-0.11.26":
|
||||
"922b460202707dd5f4ccacbadbe7f6a546cc46e82a99bf50ca99a7977a78eddd",
|
||||
"x86_64-pc-windows-msvc-0.11.26":
|
||||
"4e1278ede866be6c0bf32d2f466cc6de7a9fb399ecf20c9ce2d186e52424be47",
|
||||
"x86_64-unknown-linux-gnu-0.11.26":
|
||||
"6426a73c3837e6e2483ee344cbc00f36394d179afcba6183cb77437e67db4af0",
|
||||
"x86_64-unknown-linux-musl-0.11.26":
|
||||
"62bf1a53501adf4083224b69b33737450ac516935f5a5e483e9dfaf2665084de",
|
||||
"aarch64-apple-darwin-0.11.25":
|
||||
"5fc334bb25d19806262efd1f6e7d380155c7e817d89bf426df4ba7ae873c9471",
|
||||
"aarch64-pc-windows-msvc-0.11.25":
|
||||
"40d65c29c4d97db6a0993df665d3727700bb799b3618992ce9a4dc533c6d1a31",
|
||||
"aarch64-unknown-linux-gnu-0.11.25":
|
||||
"e0e9d73f74e06a7dcd53910d5962146ab48f0af9c92cc8df33a37baa0121014d",
|
||||
"aarch64-unknown-linux-musl-0.11.25":
|
||||
"3d9c9a95f1868ff20ac880712f3a337d710ea4b65f135184b7a35635d1acbf84",
|
||||
"arm-unknown-linux-musleabihf-0.11.25":
|
||||
"50ef6368eebaa9f31d8e8685a91689666c7bae86a1bd9a72b7a505f752084ef9",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.25":
|
||||
"eb60b2931d2461022e1675a7f6c08078b1e47150edb2f7728fe117563a5ebc99",
|
||||
"armv7-unknown-linux-musleabihf-0.11.25":
|
||||
"50f6f10ca38e4628998c17de24c2780f429d9b354db98b1832c130b7394e8ec4",
|
||||
"i686-pc-windows-msvc-0.11.25":
|
||||
"91a87e8a7ea2d5e9451b9bd8b1e9fa490542311ac43e80a9115abbd231c417fb",
|
||||
"i686-unknown-linux-gnu-0.11.25":
|
||||
"1b0f2ceee8dbe718eb1e14d7eccf67534d2f72698f4f85e70cf8a5055412b5d3",
|
||||
"i686-unknown-linux-musl-0.11.25":
|
||||
"e650be31af3fd31f5e2236a47daab0899070a66a732026d140461f1614fbe786",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.25":
|
||||
"fbf67c8beccc718b9de478d7e74d605fe9c2e259c4398f95c9df7680da710af1",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.25":
|
||||
"29e74713e89242c6bf0971b28e904836298a04fb7e0d83262c7bd5aff695ae33",
|
||||
"riscv64gc-unknown-linux-musl-0.11.25":
|
||||
"90c5a720dd9ddf32de8511c79fc83bc69e38795a94b5b49fcb2d010f96b1374d",
|
||||
"s390x-unknown-linux-gnu-0.11.25":
|
||||
"3d508ed6e66898ce80aa668cb7d6ec4ddb4d30440fcfbd409365d3d0e4afa75c",
|
||||
"x86_64-apple-darwin-0.11.25":
|
||||
"65ff85b33212f75d34d7c0f0724aba9a742c74f62559f67dc0d6c543dc2fc52f",
|
||||
"x86_64-pc-windows-msvc-0.11.25":
|
||||
"15bfd1423b7eaa7aae949922d4712ebaac2bb44a81af64ab59bbe007090cb0d0",
|
||||
"x86_64-unknown-linux-gnu-0.11.25":
|
||||
"1db18b5e76fa645a7f3865773139bdec8e2d46adbdbb35e7410b34fa8015ccd2",
|
||||
"x86_64-unknown-linux-musl-0.11.25":
|
||||
"7195cfcc1785d0c559d4682ad9109f26664b8db4d828d42d66078ef454061891",
|
||||
"aarch64-apple-darwin-0.11.24":
|
||||
"7578c6087c5cd76981732b1f5d126248101faebdf81016ba780a65ce03653cdf",
|
||||
"aarch64-pc-windows-msvc-0.11.24":
|
||||
"51bcf8051dcc2075fba9136ece0f229205a6ef813e68e5709c6eeb18802afed5",
|
||||
"aarch64-unknown-linux-gnu-0.11.24":
|
||||
"e22c66d36a0098b17cff80a8647e0b8c58202af899d4e9eb820fc7ad126435a1",
|
||||
"aarch64-unknown-linux-musl-0.11.24":
|
||||
"222fcd9878ed6f5a8565d121d1a10e1f958e3c7b42e4ec5cbc6927b2be20cc1a",
|
||||
"arm-unknown-linux-musleabihf-0.11.24":
|
||||
"92fa5e688c5dac8cf459421ad65f6d21ea1c530dd2225981bcebfd5d538aa4bc",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.24":
|
||||
"b9ec27086af022b2962428beeb5d391903d663f3bd76fed3d8a39def1cc7fe19",
|
||||
"armv7-unknown-linux-musleabihf-0.11.24":
|
||||
"747560329d0765623f261969fffb8acd35403c280d1baec36bed46d335731aca",
|
||||
"i686-pc-windows-msvc-0.11.24":
|
||||
"1df231a0da08d691c32047cce8a4aa0aba82d2a74f02999f2e4847a5e8e7e2df",
|
||||
"i686-unknown-linux-gnu-0.11.24":
|
||||
"e7444c509c01efb293d2e0c78d306ec2624aa9d1d63c7fed095e0a3e29800bb9",
|
||||
"i686-unknown-linux-musl-0.11.24":
|
||||
"ec692d59d86071fd07d2e7cf8cef8473941019238dd00c0481e6db59b79b4665",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.24":
|
||||
"29db3e6f7422f027d14f5718fe3efa4b6b475ada234d7b10b6002ba1367cdc08",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.24":
|
||||
"3e975a156d5972359c6b12ce3235a5cf68f838a0be3605c5800996556b902674",
|
||||
"riscv64gc-unknown-linux-musl-0.11.24":
|
||||
"4d39d5eec286daab074b5b2ed142cd9d9042306a2996f708f5a86dcd19a35eaf",
|
||||
"s390x-unknown-linux-gnu-0.11.24":
|
||||
"a0baa1dc34efcb896c8e82e0844b10e308cf48fb1f5060cef6d12ea5a801c3f7",
|
||||
"x86_64-apple-darwin-0.11.24":
|
||||
"8e026ec796a2760c33c832298b0910bf07fb369d00cc075761c321923ac37522",
|
||||
"x86_64-pc-windows-msvc-0.11.24":
|
||||
"af9573a2e36f7020b18ec5fdde20117aae74bbad3f4acb3dc3fc03319f1aa083",
|
||||
"x86_64-unknown-linux-gnu-0.11.24":
|
||||
"5ce1ad074a78f96c5c8122088bb85a12eb282195bc1453151a48762e4fc31fed",
|
||||
"x86_64-unknown-linux-musl-0.11.24":
|
||||
"2f9eaa976cf8ad8574623dde6916fb87ec047524fe65b99dc11e44e33eae4bfb",
|
||||
"aarch64-apple-darwin-0.11.23":
|
||||
"71ef9de85db820749b3b12b7585624ee279e9c5afcbc6f8236bc3d628c4305b0",
|
||||
"aarch64-pc-windows-msvc-0.11.23":
|
||||
"c24ef88c44c5e6be3daa7357c0cd8419a88de74c5d01f4ff403e06b765249788",
|
||||
"aarch64-unknown-linux-gnu-0.11.23":
|
||||
"1873a77350f6621279ae1a0d2227f2bd8b67131598f14a7eb0ba2215d3da2c98",
|
||||
"aarch64-unknown-linux-musl-0.11.23":
|
||||
"80efb615b78c1e5721e5858135cd3499609b26741220332c843bd58936053bc6",
|
||||
"arm-unknown-linux-musleabihf-0.11.23":
|
||||
"2467703669be1cf02f31f4347a11c9b10a763e794424eb1073b9fc2565ba45fc",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.23":
|
||||
"d10df2ebaa729a51d15395720c3f5e76497ae6414beb82043bb2e53f9a86314a",
|
||||
"armv7-unknown-linux-musleabihf-0.11.23":
|
||||
"417e901f5873a62af344e25e08fb96d75be3a02628e59da4529b73c3693bd31b",
|
||||
"i686-pc-windows-msvc-0.11.23":
|
||||
"6756a552713bd1b9bd1e8d15402db21600c4fbdeae94c70721e0387b6bbad410",
|
||||
"i686-unknown-linux-gnu-0.11.23":
|
||||
"87c661f2ccb116dd306b69423fa51f9d7d921ba9bcb1eb8e000853dfbc4b069d",
|
||||
"i686-unknown-linux-musl-0.11.23":
|
||||
"dac33b2ca44fc162f074bb3b08ef9018e70df930ea82e4c7906e48704b0cfd12",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.23":
|
||||
"1c87278219389da56f49670ac3f9ae72cda4c38c6a1305290961586ce1b98c3b",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.23":
|
||||
"38c3b11a79dd6729ff2f35d1882a40c8919e47f385ed51703bed8e1c1ab9afea",
|
||||
"riscv64gc-unknown-linux-musl-0.11.23":
|
||||
"2bf05826fe1b29adc8031132581400e1ccca0c0051fcbbfe93bddefb80f8dbeb",
|
||||
"s390x-unknown-linux-gnu-0.11.23":
|
||||
"1a13fd6ab96af55456e6f4ca3f173475e0edf9c9f887bf6e0bc545bc2d931fad",
|
||||
"x86_64-apple-darwin-0.11.23":
|
||||
"7a88155033cc469bba5bd5a24212e355eb92e3e2a276320b669ec576296c1e25",
|
||||
"x86_64-pc-windows-msvc-0.11.23":
|
||||
"02ad29f07e674d68726ba3bb1ff25b335d83515756e2b1a194bb56c3cc30e07c",
|
||||
"x86_64-unknown-linux-gnu-0.11.23":
|
||||
"e12c4cda2fe8c305510a78380a88f2c32a27e90cdcd123cefd2873388f0ebb5f",
|
||||
"x86_64-unknown-linux-musl-0.11.23":
|
||||
"6be47081100ff1ce0ac7e85ba2ac12e32f2ffa6f946d78bf7f24ee9ce3a46181",
|
||||
"aarch64-apple-darwin-0.11.22":
|
||||
"97a45e2ff8d5ea262623eed57ec2d9c468a42d74496d5c3c3eef11340235bd7f",
|
||||
"aarch64-pc-windows-msvc-0.11.22":
|
||||
"30fa01e0fc7c78bdaf6f369ebac401f22f0f865d650f0732a26f1df3e2c6971e",
|
||||
"aarch64-unknown-linux-gnu-0.11.22":
|
||||
"54b22e9f5570f3643cdf85a33bbc8e9feb3fc6e836a7c660c05378434ef44fe2",
|
||||
"aarch64-unknown-linux-musl-0.11.22":
|
||||
"bc28063fe57e76a2d632d804cae9c602f8aded1d99f41025d7fefeb66b10befd",
|
||||
"arm-unknown-linux-musleabihf-0.11.22":
|
||||
"950284c836a2f2aff79d64e703b68ea6bc6ee3a5c5f49399a7889cdd5069d78a",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.22":
|
||||
"7ff74f488d401f66a0314f65b6970edb011885e09f154e31a307e6d620daad0d",
|
||||
"armv7-unknown-linux-musleabihf-0.11.22":
|
||||
"10d3f2a47d8c8c99d6aaafb1ec9c98aaf0b2a8ece43af01141693596b8a5cf35",
|
||||
"i686-pc-windows-msvc-0.11.22":
|
||||
"08388dc9258b211236136327c775f74c127a2321c4f66d7dfcd4ae5cc76748fd",
|
||||
"i686-unknown-linux-gnu-0.11.22":
|
||||
"522c0d3e0799914cb821661b947d73cd0ee44f6f8ecdadd60bdf11bbf0efef5a",
|
||||
"i686-unknown-linux-musl-0.11.22":
|
||||
"47e78c168133cb3dd860090de5e832292e9f6d4e3110edd5028f90500a9d791d",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.22":
|
||||
"519602d26c50891254e19eb269c35da44a330e0499107bceb7926b7b061ed455",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.22":
|
||||
"291a5506ff058ba68357298752b83b5b230212b0a15845b568029d00cc1d4e8b",
|
||||
"riscv64gc-unknown-linux-musl-0.11.22":
|
||||
"dd03fa6c9e6ba49195ba78c401bd838496d77d25c17594b7ff0e8e151c13edb9",
|
||||
"s390x-unknown-linux-gnu-0.11.22":
|
||||
"d5149a1bdd21dc8a86ad91d8657a4cd4eb0761a433ef0ce76117720e41ec950e",
|
||||
"x86_64-apple-darwin-0.11.22":
|
||||
"9490033dc405b4afc8fa5f9ecd5cc1793e80c727a8c42c32ad456778720d39f2",
|
||||
"x86_64-pc-windows-msvc-0.11.22":
|
||||
"b56939bac92d29996d351647f7c6f15b31cc69cf952d06d136de3e1e62eb64d1",
|
||||
"x86_64-unknown-linux-gnu-0.11.22":
|
||||
"30075b14624a62021198319f22e08f1651a97d4026a8c84dab6abcbfaba0d81c",
|
||||
"x86_64-unknown-linux-musl-0.11.22":
|
||||
"b80bd6952ee11b920b5ab2a35dbccddc364f579e5f2e028d115848cdaa72963e",
|
||||
"aarch64-apple-darwin-0.11.21":
|
||||
"1f921d491ba5ffeea774eb04d6681ecee379101341cbb1500394993b541bf3f4",
|
||||
"aarch64-pc-windows-msvc-0.11.21":
|
||||
"74e443f8004022dde57a1bd0d10c097830f9ea8feb4ec927db52cd5d805c2f48",
|
||||
"aarch64-unknown-linux-gnu-0.11.21":
|
||||
"88e800834007cc5efd4675f166eb2a51e7e3ad19876d85fa8805a6fb5c922397",
|
||||
"aarch64-unknown-linux-musl-0.11.21":
|
||||
"e71badaed2a2c3a404a0a00974b51c7ed5f5bc7be947916846005b739c68a5a2",
|
||||
"arm-unknown-linux-musleabihf-0.11.21":
|
||||
"7cd6637deebacfa0224e53afb4dd7da4f464ba0ecc128f6f543897c157e39a0f",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.21":
|
||||
"929440f991ccd8097e01be1ec831f673ac7bbf508e94819b4270f2873f69e658",
|
||||
"armv7-unknown-linux-musleabihf-0.11.21":
|
||||
"20f4b653a17adb09cdfa7f911d46a1f254b918a2b49bef1266c735ab4c6fced0",
|
||||
"i686-pc-windows-msvc-0.11.21":
|
||||
"77d7979222c6bd621bdb862c9cb138be41dce1e3cea239b1e87eb82dfac2dbd5",
|
||||
"i686-unknown-linux-gnu-0.11.21":
|
||||
"07125219898b1c8e71bc612d91b190927c6b192a7bce5dd029b1c9070e9b7049",
|
||||
"i686-unknown-linux-musl-0.11.21":
|
||||
"865eff26cef62b7862854e176d57d9e0164daeec595723132a81aa3611238798",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.21":
|
||||
"0e97021d831f9670c8261f9270ecf94b83f1a90ff5312389e37a77676deaec87",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.21":
|
||||
"63013d7afe8fd552b273a7a5ca1f1425c0c82b12d73454d24237876bc26006e9",
|
||||
"riscv64gc-unknown-linux-musl-0.11.21":
|
||||
"b869fe80435715b2b414443af28de96ed5d7f8c6759e12ba141abca221ebc0cd",
|
||||
"s390x-unknown-linux-gnu-0.11.21":
|
||||
"743694a86a05eaf15d292c3d757388c4b2a11b4a7eb67f000077b4d6c467347e",
|
||||
"x86_64-apple-darwin-0.11.21":
|
||||
"f3c8e5708a84b920c18b691214d54d2b0da6b984789caae95d47c95120cb7765",
|
||||
"x86_64-pc-windows-msvc-0.11.21":
|
||||
"ace861f360c6de2babedc1607d0f454b6b09a820dbc8182dc15af927e4df9589",
|
||||
"x86_64-unknown-linux-gnu-0.11.21":
|
||||
"8c88519b0ef0af9801fcdee419bbb12116bd9e6b18e162ae093c932d8b264050",
|
||||
"x86_64-unknown-linux-musl-0.11.21":
|
||||
"9dadff5b9e7b1d2d011e41852a1cbca713d9d5d88194f2eb6bd240fa4fb0a719",
|
||||
"aarch64-apple-darwin-0.11.20":
|
||||
"0a2b6a757d5693671a7ce0002554ae869604e1e69acb10313ac14d08374be01a",
|
||||
"aarch64-pc-windows-msvc-0.11.20":
|
||||
"5248e1a5f980a77f153c4c452511ec6376abb8772b0979c450775f3a268fc61e",
|
||||
"aarch64-unknown-linux-gnu-0.11.20":
|
||||
"c8b5b7f9c804b640da0bb66cddddf0a00ce971f64d8076622d70bd141bc80857",
|
||||
"aarch64-unknown-linux-musl-0.11.20":
|
||||
"79931fc8e82dddff6eb9cab32aa8492e35bc22767322dd68cad36012411ae6d5",
|
||||
"arm-unknown-linux-musleabihf-0.11.20":
|
||||
"4113bf774c0626d82374fcb4de1dbe117f38e68cfd4cf7360e44259ca62a6d48",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.20":
|
||||
"b8004b8be37d13ae8c05e8d55028d9ea3ea387fa61a96eeda7812e1a413fd9f8",
|
||||
"armv7-unknown-linux-musleabihf-0.11.20":
|
||||
"1a6ab0ebac84282838ec96dadb245b1d4404ea8a40e375822cc5a2f1f3997d72",
|
||||
"i686-pc-windows-msvc-0.11.20":
|
||||
"00c3f694414bf3821922dc9766cec373bcceb16ae3d98ff1fd0774b97bbc55fb",
|
||||
"i686-unknown-linux-gnu-0.11.20":
|
||||
"08d3e199788ca3ce331da13cc4df15449bd44844a1262597bacea15bb1e42a0d",
|
||||
"i686-unknown-linux-musl-0.11.20":
|
||||
"0556b545dcba5402c6120575e66e046f3165df4be6baed6992ba7ebc000054e6",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.20":
|
||||
"555c15dfb8e95e9edb5d4c4f442f9a77fe7f007804da164450cac1eddb41bcde",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.20":
|
||||
"f78a42002f4c7702688493f7513a081939ca3d52b41dcc7b9224bb660f0c4c28",
|
||||
"riscv64gc-unknown-linux-musl-0.11.20":
|
||||
"7433aed57cf15cf0657d0ce7c655f95eb00e54e49a0dc408d0170467260843d9",
|
||||
"s390x-unknown-linux-gnu-0.11.20":
|
||||
"208af0d9d0099f86ed093b68b05703451b884f6db351f9555fda905d3538e53d",
|
||||
"x86_64-apple-darwin-0.11.20":
|
||||
"bef01a86faab997f6022b45cfa29bfc5b090f2f72cd4a91d2ecefe641efdabe7",
|
||||
"x86_64-pc-windows-msvc-0.11.20":
|
||||
"4c281f1b6b9ccb14d9567ebde9a218a7cabfb35e5ffe8c1d4ef5e2821a655474",
|
||||
"x86_64-unknown-linux-gnu-0.11.20":
|
||||
"5de211d9278af365497d387e25316907b3b4a9f25b4476dd6dbf238d6f85cff3",
|
||||
"x86_64-unknown-linux-musl-0.11.20":
|
||||
"a7545a1360d29baa696753af2f41849047b332bcb90e8ea75ad0568e7f865e35",
|
||||
"aarch64-apple-darwin-0.11.19":
|
||||
"d8f59c38e8c4168ee468d423cd63184be12fa6995a4283d41ee1a14d003c9453",
|
||||
"aarch64-pc-windows-msvc-0.11.19":
|
||||
"5592a990a9d9901fd0d23992d872f2ec3ca91b7bbd3d5f0bb5e6f42b851493d8",
|
||||
"aarch64-unknown-linux-gnu-0.11.19":
|
||||
"83b13ab184a45b7d9a3b0e4b10eaebd50ad41e66cb16dcce8e60aa7be13ae399",
|
||||
"aarch64-unknown-linux-musl-0.11.19":
|
||||
"767629b64cdf078c32e42819db28d5ca868b8dc7e3a879967fadc3e4f7f66be3",
|
||||
"arm-unknown-linux-musleabihf-0.11.19":
|
||||
"638bb5aac6419e062149b4600c0030e2203dfbb8bf6b0db740755bb19f458abf",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.19":
|
||||
"56c307d18acadb1bee2b76bde39cedcf0d29f93102c52f39f8c0c8a42dffe96e",
|
||||
"armv7-unknown-linux-musleabihf-0.11.19":
|
||||
"d807c33e89c27430a68b7be52a8a0d39e08c91dba0fa295172c6ff2ce2d07a27",
|
||||
"i686-pc-windows-msvc-0.11.19":
|
||||
"e701a69f0ab192fde8ea3f4cfdedfa6cade0c92cea2e350613b6528e966b50c7",
|
||||
"i686-unknown-linux-gnu-0.11.19":
|
||||
"d0ef2e69c44a2763161d5b5f40b722fe81e0d16bed217cbc526fb5a3640802b3",
|
||||
"i686-unknown-linux-musl-0.11.19":
|
||||
"f58e41864cb91fbd2306a7b46718fdd0c1029169fe03347719771a1c68a527e6",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.19":
|
||||
"b6dcd94b5c456d11787d1e6d01b5f9a34b456e22e2dde9bbae3531dc7676c0d8",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.19":
|
||||
"4b9ca6bd2ed1e4c2658e5f85cf8a208c192490d9d24dbf2c36d61ea10a389778",
|
||||
"riscv64gc-unknown-linux-musl-0.11.19":
|
||||
"184232b4e0de4d6a674d57b1d6d8c39a3c5a5dbc27f95ed972c46974d21b0115",
|
||||
"s390x-unknown-linux-gnu-0.11.19":
|
||||
"c4535a5f9f27a94df384ea8140b78c3e7c083d4130cd341fd826b5ab343979fb",
|
||||
"x86_64-apple-darwin-0.11.19":
|
||||
"1585f415cade9f061e7f00fe5b00030a79ccfac60c650242ce639ba946138d40",
|
||||
"x86_64-pc-windows-msvc-0.11.19":
|
||||
"1665fc8e37b5d70a134820d6d7891747471a2ac8bc940ee7af0b69fd03b28d61",
|
||||
"x86_64-unknown-linux-gnu-0.11.19":
|
||||
"7035608168e106375b36d0c818d537a889c51a8625fe7f8f7cad5e62b947c368",
|
||||
"x86_64-unknown-linux-musl-0.11.19":
|
||||
"c4c0d0a383413261af5f0f0743e1292f4aafbe907987ed83bd0ac66f0a3d7e20",
|
||||
"aarch64-apple-darwin-0.11.18":
|
||||
"1a7adf8dadae3b55853115d13a8bf564d219597ad13824b93b213706933863e5",
|
||||
"aarch64-pc-windows-msvc-0.11.18":
|
||||
"0689e1a40d36b387522d2b1b865cd98a15ddd4a7507e256ad93be6f6a335fec1",
|
||||
"aarch64-unknown-linux-gnu-0.11.18":
|
||||
"0f03c6648df1c159557f4222c0f37250f84733fb88d6fc3c16770e17c177a8c9",
|
||||
"aarch64-unknown-linux-musl-0.11.18":
|
||||
"6d895725333680bf7633ad635baff8e49dc45d3b52e00b2b3adf6ced41f2ebe2",
|
||||
"arm-unknown-linux-musleabihf-0.11.18":
|
||||
"c4fe354b28c489fa6649531808076c43eb3a34122df49b0a3005bb75dbf101c3",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.18":
|
||||
"a70a8b1124dc1fabcce9f2bbe6591c72a05d49df74125d1c327b5745f2becbb6",
|
||||
"armv7-unknown-linux-musleabihf-0.11.18":
|
||||
"f8b6f4df3ff9d142a25892be575ade438672a8353ad71997f7db88e9b9a1062d",
|
||||
"i686-pc-windows-msvc-0.11.18":
|
||||
"7505112a7bf72f50391c50f2aa07950b95b3c43c7d9fd4da5626876407d15dda",
|
||||
"i686-unknown-linux-gnu-0.11.18":
|
||||
"5f3df0d62af1d174a06b82a6faf1a5e9a1f729b87d11c7d9cd87d4241e04f23d",
|
||||
"i686-unknown-linux-musl-0.11.18":
|
||||
"4237cfcd03fb8767a7ec713ab3db14381d83bbd0bf5ccc88cd6f28ac8c2c616f",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.18":
|
||||
"fc8f46a198e540ca2d89fd9480da0648d673ff3e25b4048c82ca5c292a478052",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.18":
|
||||
"cdb0555db7828bbd1dc24e55171b8ac3dbbc24fe17b6a7387783cd4d543a1538",
|
||||
"riscv64gc-unknown-linux-musl-0.11.18":
|
||||
"3d5b533080bb593c82b281b8d289e29d51b97c0994655099845752e948181fe2",
|
||||
"s390x-unknown-linux-gnu-0.11.18":
|
||||
"7a91aa963680f2fe14ebf89291cf8eafcff634eccdeb6d301e0252b282171818",
|
||||
"x86_64-apple-darwin-0.11.18":
|
||||
"00a61e3db99b53c927a7e6c4ccdccb898aa3253d07928822211e9dc570a25661",
|
||||
"x86_64-pc-windows-msvc-0.11.18":
|
||||
"bf8e0021336b7c77bd80a078b612125f385b08f541437edaea8c8ca9e574db0d",
|
||||
"x86_64-unknown-linux-gnu-0.11.18":
|
||||
"588f3e360f69ce02b6982aa99f2240e803933a6b7e176ac01617830adf955add",
|
||||
"x86_64-unknown-linux-musl-0.11.18":
|
||||
"a095a969fc8357f42e35652e0554525a47a29010ddb814bd82650c2ffa7d6d62",
|
||||
"aarch64-apple-darwin-0.11.17":
|
||||
"2a162f6b90ff3691a2f9cae1622e066a3ce592e110f66670cdcc841324b28226",
|
||||
"aarch64-pc-windows-msvc-0.11.17":
|
||||
"f4463aa9671c6d153d32f2a9b272389675a711a9bca806c4ab4a3c7559b045c2",
|
||||
"aarch64-unknown-linux-gnu-0.11.17":
|
||||
"de008880a903ac2c5654647dc19a75c0d6652313c977a2bc5ce05e1e3a93429e",
|
||||
"aarch64-unknown-linux-musl-0.11.17":
|
||||
"9e5eaf16ffad968fc689f18c2733ace914ed417d4e5572e92d807fd51a90228c",
|
||||
"arm-unknown-linux-musleabihf-0.11.17":
|
||||
"201c7d727423095aa4ba39cc79b16cac2465720d4348270a3977824009526179",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.17":
|
||||
"c941377b20fdd4b101376a9c8ce37c209d36655697815a32658a7cbcb3212409",
|
||||
"armv7-unknown-linux-musleabihf-0.11.17":
|
||||
"12606cc40d15c5ab5fd06e434c8ee1b0ef7e3ca3cd4d5b2b135a16dd1a45fed2",
|
||||
"i686-pc-windows-msvc-0.11.17":
|
||||
"be48cd9aa35c8615eff3dba6a24e214edf00885150eacde032a258399131c59d",
|
||||
"i686-unknown-linux-gnu-0.11.17":
|
||||
"89f859f3bfaf3a74733aef671e6a4ade36173623d4539d3559e11caa2c722718",
|
||||
"i686-unknown-linux-musl-0.11.17":
|
||||
"8d2ecb44951b80861570f4a7f732c9f16f3b342450eeb0bd2eef876b10395400",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.17":
|
||||
"714c7b292c805231edbfc77ca14b29e6e469342236ef1cfb58fe7d6f8fed48a4",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.17":
|
||||
"f8bece740520b35f69c82653da77912b38a29a5634a6e0ce7d83122a485c6a6f",
|
||||
"riscv64gc-unknown-linux-musl-0.11.17":
|
||||
"ae07b4e9c2bea3dcba2e3267e9e4229e45de63c15e74eee7fac7ccf9df6e04cd",
|
||||
"s390x-unknown-linux-gnu-0.11.17":
|
||||
"10ec2070644dda19ab9c8dcc3d6f3bbf4b09ad6665b8a8be067d7fdb5a58b56c",
|
||||
"x86_64-apple-darwin-0.11.17":
|
||||
"6c66e41eaf4d15abeda58d3f268161b6e3f742d98390341b174a7cfc1b48841d",
|
||||
"x86_64-pc-windows-msvc-0.11.17":
|
||||
"35fc29e03e62f3cda769bc12773f3cb70ce305d0d36c0d8bd0c117dd0b3fcd14",
|
||||
"x86_64-unknown-linux-gnu-0.11.17":
|
||||
"0017ccecaeb4d431d7f93b583ebff0c5c38e00eb734fcf13d05f72ca419125fe",
|
||||
"x86_64-unknown-linux-musl-0.11.17":
|
||||
"4231a429d4e0f7c1937d8916658c08a7706cd7872afebeb87203a18c2e0dc28e",
|
||||
"aarch64-apple-darwin-0.11.16":
|
||||
"2b25be1af546be330b340b0a76b99f989daa6d92678fdffb87438e661e9d88fb",
|
||||
"aarch64-pc-windows-msvc-0.11.16":
|
||||
"e4f8e70eb21f0f4efd2eeb159ab289f9a16057d59881a4475758be4ce39bc8c5",
|
||||
"aarch64-unknown-linux-gnu-0.11.16":
|
||||
"8c9d0f0ee98166ae6ab198747519ba6f25db29d185bd2ae5960ecebc91a5c22a",
|
||||
"aarch64-unknown-linux-musl-0.11.16":
|
||||
"ac022d96411143b9a2dd75ea711fa8dd4cd14538bf248f2e5df3c10a80f7f6a4",
|
||||
"arm-unknown-linux-musleabihf-0.11.16":
|
||||
"cdd60c84597690139e3696461d1278bf4dcd598cd44e3896a98aa75aa59965bf",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.16":
|
||||
"71cf33cb511c9fe28ae261c0b4789e1fd9bb84d1bc68828db647b77305a15185",
|
||||
"armv7-unknown-linux-musleabihf-0.11.16":
|
||||
"f24fca34326c5b8f7ddc0001a40e5454bc8091ca67f9ce931ffdaef4ea4815e8",
|
||||
"i686-pc-windows-msvc-0.11.16":
|
||||
"7417090298bf202395b9b3d6eefb9230332d8d6c94a5616e531148a0b041c8e2",
|
||||
"i686-unknown-linux-gnu-0.11.16":
|
||||
"0d1e427cd3fcc042e85dfc75f6d95e076dff9b930241686969d6706afda21375",
|
||||
"i686-unknown-linux-musl-0.11.16":
|
||||
"d5e611deffd3f5fd637b2dc89dbe252342ce4a38c8970e63add8029afe2b5629",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.16":
|
||||
"8a3b09ce14d14a75dbbf051cdb78a314fb579e78fb3a02e1ee833c4cb5f6e81e",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.16":
|
||||
"0314895f159ce97bcedac00a4b97fa7e53c16fee911a6a2d9f0b69ee6461b7d5",
|
||||
"riscv64gc-unknown-linux-musl-0.11.16":
|
||||
"8a1aef4261011143f56c964eeaed5e06fa0cb95ff3005386381c610c91784feb",
|
||||
"s390x-unknown-linux-gnu-0.11.16":
|
||||
"d161e914ad552aed83478fe9766061844297dadfa77a43e56285a147bde0021e",
|
||||
"x86_64-apple-darwin-0.11.16":
|
||||
"6b91ae3de155f51bd1f5b74814821c79f016a176561f252cd9ddfb976939af2e",
|
||||
"x86_64-pc-windows-msvc-0.11.16":
|
||||
"dd9d6d6554bfab265bfa98aa8e8a406c5c3a7b97582f93de1f4d48d9154a0395",
|
||||
"x86_64-unknown-linux-gnu-0.11.16":
|
||||
"74947fe2c03315cf07e82ab3acc703eddef01aba4d5232a98e4c6825ec116131",
|
||||
"x86_64-unknown-linux-musl-0.11.16":
|
||||
"1bc4be1be0a000f893b0d1db97906cf392b63fa22fda9a0ecf33d0d4bbb4bc9a",
|
||||
"aarch64-apple-darwin-0.11.15":
|
||||
"7e5b336108f8576eda1939920ca0a805b4a9a3c3d3eb2f6140e38b7092fbe4f3",
|
||||
"aarch64-pc-windows-msvc-0.11.15":
|
||||
"9eac2d68f3a66326c3e1fc97ef28bd54f1d13136ec092c2f0a8173ae12aaaf1e",
|
||||
"aarch64-unknown-linux-gnu-0.11.15":
|
||||
"21a7dd1a03ea17ac0366887455dab15d215b31dba0870dcd65d3714e22f46c81",
|
||||
"aarch64-unknown-linux-musl-0.11.15":
|
||||
"6505075cec3f551fad4fe9026922967ff9c895c9f513c97682b24e7a1c9becd3",
|
||||
"arm-unknown-linux-musleabihf-0.11.15":
|
||||
"f9206848d617b7beec37c346624ad961d8d4110606990653ebbfc4c62b1f1741",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.15":
|
||||
"eb6a12e3e80e1474c1018edc9541bbe71cdf2248fa17b583dcbcc7bb391ad0c0",
|
||||
"armv7-unknown-linux-musleabihf-0.11.15":
|
||||
"a40ee3c41443341846137afc5c7f29be766a9a677bd70c7ff91cbb4273e5383c",
|
||||
"i686-pc-windows-msvc-0.11.15":
|
||||
"6a9431f0044a1ff59fd6920f6f982b691acf336b6e26ac8cd40a02b5ab839cd1",
|
||||
"i686-unknown-linux-gnu-0.11.15":
|
||||
"557e329e76072b513e47bcd8b50ca4bad07ec87cb325cbfc05e6069847af06c4",
|
||||
"i686-unknown-linux-musl-0.11.15":
|
||||
"69490ca5580958cdee3353b54357925913ec0540dc8e09819294b9e5b6d48556",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.15":
|
||||
"6be3637ef86cdee3f5fcfbc66681ecbf6d57c6a123398a1bdd09786d65a06016",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.15":
|
||||
"a43e22243e3f3b1fb136a0998b730367fe2589ea98ce6cd4f0d7d20b9f77fb5b",
|
||||
"riscv64gc-unknown-linux-musl-0.11.15":
|
||||
"2256c9b625d67a55986adda62b09782b5547e28a79fba472e7e93ac3ec0af258",
|
||||
"s390x-unknown-linux-gnu-0.11.15":
|
||||
"df2b69ed893ce00e242d8cfe5b9fdc7b7a42d578df487d09aa624563a9801578",
|
||||
"x86_64-apple-darwin-0.11.15":
|
||||
"42bca7cc879d117ed7139a0e26de8cab0b6f033ad439a32144f324d1f8580d8c",
|
||||
"x86_64-pc-windows-msvc-0.11.15":
|
||||
"04b98d414a9000e25e5e0e7c9f53749e66b790cdaffc582829e6f58c544ee11c",
|
||||
"x86_64-unknown-linux-gnu-0.11.15":
|
||||
"b03e572f010bea94a4a52d42671ba72981e12894f71576181a1d26ff68546da7",
|
||||
"x86_64-unknown-linux-musl-0.11.15":
|
||||
"200ccf2f351849c5d6698714e7e7eb9ead1e8c097dbdbb43730e1a4e059ceb87",
|
||||
"aarch64-apple-darwin-0.11.14":
|
||||
"4333af5c0730d94323a7819bbdf87ce92dd07fc857d67fff0059e0fca31b5c02",
|
||||
"aarch64-pc-windows-msvc-0.11.14":
|
||||
"d66c76ba912ba66fed011e0189dfbc4527dd9e620a2b5d5d5ecd2ad8936601b8",
|
||||
"aarch64-unknown-linux-gnu-0.11.14":
|
||||
"c4958f729e216f1610632574ed927b8cf0af1bd02cb88cb30d948571727aee43",
|
||||
"aarch64-unknown-linux-musl-0.11.14":
|
||||
"d7d3966e46915c5f6932692aaf152a2473eecb1d2517ca4f8e88a07484b380b6",
|
||||
"arm-unknown-linux-musleabihf-0.11.14":
|
||||
"31b07fa8bc5bbc8f22064fc1d4238b53c663bdb4812cbfead0b43719571aec03",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.14":
|
||||
"2aca3925d7ad91d2e02a0f9cf75974ebd077ec5cb939a5eb66aba096d5666819",
|
||||
"armv7-unknown-linux-musleabihf-0.11.14":
|
||||
"988d79544bbf55ebeaf6521d3cbf46957bcfbab998d22092ea860580639e2f30",
|
||||
"i686-pc-windows-msvc-0.11.14":
|
||||
"579408a1134ec3c45dd7b94187978b98b15df4e0c49ebf05c52565e3858d9f2a",
|
||||
"i686-unknown-linux-gnu-0.11.14":
|
||||
"8c93880c54dc7a632f602b7627d4338d80011ecf32e340fd2f67129df5325dc7",
|
||||
"i686-unknown-linux-musl-0.11.14":
|
||||
"c84acf1036767797a7be97a3315122b9565a78bf90b5733741b1abeefa58387f",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.14":
|
||||
"d2da5ba5911b86dfec96f0737b7d1053ed78c0c65e51585db03fb4969b2a3825",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.14":
|
||||
"55731359293842826cd82d5fbd826a6bce542c3fec458214604e308b352560ed",
|
||||
"riscv64gc-unknown-linux-musl-0.11.14":
|
||||
"86b053903d29a2d04441e4cbd05a8f690b8ec56f8959d27f15df13efffb5879b",
|
||||
"s390x-unknown-linux-gnu-0.11.14":
|
||||
"cc7b233541a76dd484516a39c06d9d14100d1048708483e6f49ee20b6cc5761b",
|
||||
"x86_64-apple-darwin-0.11.14":
|
||||
"9836c1440b0bd6aa5f81793648a339bd01d593b7b8f575de3b855dae4ab64654",
|
||||
"x86_64-pc-windows-msvc-0.11.14":
|
||||
"52ba5d19409aaa688a8a1a6ec8dfb6a4817230d20186e75f4006105c3e39a846",
|
||||
"x86_64-unknown-linux-gnu-0.11.14":
|
||||
"f3b623eb0e6141a7053d571d59a0bdc341e0f238ea8f5f0b4815ddbec9a2a296",
|
||||
"x86_64-unknown-linux-musl-0.11.14":
|
||||
"077d36f45a0cc6d440b653b2d5c53e7731121e99e54b0221267eec5d1cae76ce",
|
||||
"aarch64-apple-darwin-0.11.13":
|
||||
"196a58aa24da89144187670df7c407358028984537fbc2f8f2d8f7a2604980df",
|
||||
"aarch64-pc-windows-msvc-0.11.13":
|
||||
"07c3c997020430a9f287fc05ff4c63fd5744eec49df5392a34731ed1a0971f2e",
|
||||
"aarch64-unknown-linux-gnu-0.11.13":
|
||||
"12366407dc1fdba5179b10bd69c11ebfc2eff25791366089c0b2f5701056efc5",
|
||||
"aarch64-unknown-linux-musl-0.11.13":
|
||||
"bea8a97b1b3ed41491e075c1f474e7f0249582aa3f62849c4e874b5f34ddc95e",
|
||||
"arm-unknown-linux-musleabihf-0.11.13":
|
||||
"ee282adf170eb845821309ca6038fdd87a93dd25326f96efe6ea58a1b66a9064",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.13":
|
||||
"4761e38e3d5ca62e87ef13bc35ba169e6ebd126472482095405367b31be88945",
|
||||
"armv7-unknown-linux-musleabihf-0.11.13":
|
||||
"d54342a96dda65339b4f7b9e6bb7a27b81aeeffca14e5dfa7911d00fe4a3ead9",
|
||||
"i686-pc-windows-msvc-0.11.13":
|
||||
"a9b2d96a118a401c7dc5b717752a074b6324ddc9b36dcb2b60466a4e2912a3ba",
|
||||
"i686-unknown-linux-gnu-0.11.13":
|
||||
"630774d3fd255a219a6eef58f004201737c60f4b282777fb99e599cd90567fe4",
|
||||
"i686-unknown-linux-musl-0.11.13":
|
||||
"52cb28c81ca43ea5184f944c31555981cb29c03c2497fa848541af5ee4d8448f",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.13":
|
||||
"7f302104ea18a01381fe58434b593f887c4f10bc523ad50781de408fbec54354",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.13":
|
||||
"3264ce97b34d5c8d37c1e67821a74960ca89237e001253309a3cda25fb416040",
|
||||
"riscv64gc-unknown-linux-musl-0.11.13":
|
||||
"44f23b8e59fd8628fb68383e4cbdf78c3cff02ed86d3dcea5605ebd7757ca363",
|
||||
"s390x-unknown-linux-gnu-0.11.13":
|
||||
"e0e5e0a652650900d97f6a660bae526601033d9d071ca5dd9ca735442161ebed",
|
||||
"x86_64-apple-darwin-0.11.13":
|
||||
"99aad3f4956f5b92efd83eca6d87bf03e10688899487ad541f904c9c25c61dc1",
|
||||
"x86_64-pc-windows-msvc-0.11.13":
|
||||
"0953ac2ef4fbe47ad469bfa80b658a577a02c4d73a2fb9c4c7c70dda432efded",
|
||||
"x86_64-unknown-linux-gnu-0.11.13":
|
||||
"f830ea3d38ae1492acf53cb7f2cd0f81d6ae22b42d2d7310a6c7d42c451e1a43",
|
||||
"x86_64-unknown-linux-musl-0.11.13":
|
||||
"5635afc285df86ce6f05f3f22335f9548b0026e58531904482c9670a1c1c65d9",
|
||||
"aarch64-apple-darwin-0.11.12":
|
||||
"bb7c6ef869ec00cd1452f4884acf23d00b153c356ba9197ae99a1bc1ceadb7f3",
|
||||
"aarch64-pc-windows-msvc-0.11.12":
|
||||
"393de1abc2f663cb9dd24405c7a7b31119e2a734609a233d9b89415821f39bf9",
|
||||
"aarch64-unknown-linux-gnu-0.11.12":
|
||||
"d6e3e5183e71bbd40400da3d2913743cefb98835d8312a5e7908c33865597515",
|
||||
"aarch64-unknown-linux-musl-0.11.12":
|
||||
"b70e87f15f12d750d218042c4ed36e41de0757eab249d332ee2e242e4174b5d5",
|
||||
"arm-unknown-linux-musleabihf-0.11.12":
|
||||
"c1991e652c345395eff3e43aaa0f2ce5d7f0c7ed0dd5a72dcb0a3c109289ac11",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.12":
|
||||
"432e6a96ecc976861dc884d96ac3aa3cc305abc3bb49d3204544477d4a290c64",
|
||||
"armv7-unknown-linux-musleabihf-0.11.12":
|
||||
"a8855302bad162af78c8fa53f402128a3496b7806dc7201252e7f123eefed8b9",
|
||||
"i686-pc-windows-msvc-0.11.12":
|
||||
"98efe2a4cb9529724639aac488c43b28753e738b0f4c679d3e2dea150e5a9b20",
|
||||
"i686-unknown-linux-gnu-0.11.12":
|
||||
"22dbbbcd9088ad3ddefce9be142ce2b127b3950718222413e3890f7fbf4a567d",
|
||||
"i686-unknown-linux-musl-0.11.12":
|
||||
"fc5ff3fef5facf01a664f0942f372988804bda1bb8c7f9e9642d9d29398cf129",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.12":
|
||||
"36619f91357b240648caed6557fe893922c7986319c070f4feb225e8f3180b49",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.12":
|
||||
"9bdcac006731a2094ad002d93c4fe84a259484e4d35566e29fcb76962961cef9",
|
||||
"riscv64gc-unknown-linux-musl-0.11.12":
|
||||
"80012ba0aa3b21561c96edda003add87d9111daf3425e5cc3243957ca76ba396",
|
||||
"s390x-unknown-linux-gnu-0.11.12":
|
||||
"c9ae09f73066fb9c48beaec2ab4ad2407ce94354c5224e2982196577d6bf4581",
|
||||
"x86_64-apple-darwin-0.11.12":
|
||||
"32fb217e6181384bf6534b31adcc66cd552eff98643c4bb35832be8552486912",
|
||||
"x86_64-pc-windows-msvc-0.11.12":
|
||||
"e46956a6b088a0382101c797eef945c1b03826e629e968d434cf838d42d85b6b",
|
||||
"x86_64-unknown-linux-gnu-0.11.12":
|
||||
"9acdecddacba550ee616c02bb4616d894352022550c5977524556fd5077ce1d4",
|
||||
"x86_64-unknown-linux-musl-0.11.12":
|
||||
"591a7557f5ba7e51565f338dd4c50cebc12820ec2ebb8403a4304685f8d53ab9",
|
||||
"aarch64-apple-darwin-0.11.11":
|
||||
"3a185bf8f46a7b7c8b910d111825907b1638d0ae503cb3c333ae205772354046",
|
||||
"aarch64-pc-windows-msvc-0.11.11":
|
||||
"3d8f05de7ed9de885299565f78832a13e443be51de86260f25edb7cfd0fa05f6",
|
||||
"aarch64-unknown-linux-gnu-0.11.11":
|
||||
"155fe4d3b3cb4bfce118ab4b1380f71515ae874d13d9858171b4f9c26e16684d",
|
||||
"aarch64-unknown-linux-musl-0.11.11":
|
||||
"0fc9a49b3900f77ffaccf3ff69a70ddbc1d479e70ac5d8fd6416a7577b03c5a1",
|
||||
"arm-unknown-linux-musleabihf-0.11.11":
|
||||
"ef98cbcd50a62d063958740194497a44fc1dc07867b6fe001db1ab2e621f1f2e",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.11":
|
||||
"c102609d34c06bdec87896d738a0e91df21f71faf21ae4379c7a1d7c961879e1",
|
||||
"armv7-unknown-linux-musleabihf-0.11.11":
|
||||
"6660651927263c587769697572f4843ac6ea91b2b2d24be1b9c8465e87d05b46",
|
||||
"i686-pc-windows-msvc-0.11.11":
|
||||
"c230fccbe5737e1a54a2f77ff3116c88fbee21c9b437323907618931b767410e",
|
||||
"i686-unknown-linux-gnu-0.11.11":
|
||||
"4be5e9901e87f90a9eb5ee11a08a8df2f637df76f3a2dcb11778991b7db9d9a2",
|
||||
"i686-unknown-linux-musl-0.11.11":
|
||||
"d2ded13fbaf59f5f1d3363c47a7cafb73cb7454db1e16cea13365bc28c75522d",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.11":
|
||||
"5348415c8606e5efac5cb293d83d2ae71e43a2dcabf677c6a4cac965c1982c74",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.11":
|
||||
"0eadf068918b960e7bf62eda83613c08d99f0d002b8d475d3383993191554d04",
|
||||
"riscv64gc-unknown-linux-musl-0.11.11":
|
||||
"0ee27ce77e32496bc46e01f1cbb730d13647cbca41934a5871bf2fe5fdc5ba39",
|
||||
"s390x-unknown-linux-gnu-0.11.11":
|
||||
"f19c950a93b1f5af4108267743f3de61346250b35c60cc552fb4187b534af770",
|
||||
"x86_64-apple-darwin-0.11.11":
|
||||
"57a1a8085b4088fbcbd5080c0c30723ba6d0692c89cd071c08a4209e8da602d1",
|
||||
"x86_64-pc-windows-msvc-0.11.11":
|
||||
"2f75a0db2c3530b6b3c24434dc38137f61ff1f4e5f2d7b4ddc5bcd142cf58b65",
|
||||
"x86_64-unknown-linux-gnu-0.11.11":
|
||||
"a767848254391855c96df271e9ca8b7f72dd172d310460447853d25d907b9ae0",
|
||||
"x86_64-unknown-linux-musl-0.11.11":
|
||||
"80521f18ba83109acd17e0730bd8ff898c3426aa62252c627d63418b353e788a",
|
||||
"aarch64-apple-darwin-0.11.10":
|
||||
"e93d6af7dfff7071edd16342ba9eeccfc28d8a7deaa5707efeecf63a63a74453",
|
||||
"aarch64-pc-windows-msvc-0.11.10":
|
||||
"3d5878cfc55106083ada1e41cccdde477413701eb9d34767e8ad973bb0863de6",
|
||||
"aarch64-unknown-linux-gnu-0.11.10":
|
||||
"91d5f4583539640765662ef86edcf3bf4db07439b622c7bed50c961240162046",
|
||||
"aarch64-unknown-linux-musl-0.11.10":
|
||||
"14c21bef6b54d268c6583d851095a543e6cb03a8e4bdca9a44ab91532b14cbc2",
|
||||
"arm-unknown-linux-musleabihf-0.11.10":
|
||||
"bea66b5dcfb3460a9a2c399033b071ec4a825ff3bf27c3fedc666dcbdc2354dd",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.10":
|
||||
"ba259f6c14b5653f1b36400fb8c7862e499a4537201edda76991f2b044014fdb",
|
||||
"armv7-unknown-linux-musleabihf-0.11.10":
|
||||
"9d6e2ea60fae542e2bd9b36f44672e99fd941f7da0898533bc274329b001a055",
|
||||
"i686-pc-windows-msvc-0.11.10":
|
||||
"d56ad43d355d6c40fee4009d0fb7e6710416ce9b25bebf12a4127e51b3595b3c",
|
||||
"i686-unknown-linux-gnu-0.11.10":
|
||||
"ade0a830fd0b4b67c373c8ed1e46e5af2e312032ebbe15438beddeb5b1e4d8f3",
|
||||
"i686-unknown-linux-musl-0.11.10":
|
||||
"fb2ba8c938247f82908acf6ad41a19935b36d0fe7bbe6945ac1ba1f6044756fc",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.10":
|
||||
"dfe5b338e2ebc1e5a2850a17bce35edb8e47550c221d9245c007eaf3003cb6ed",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.10":
|
||||
"0c8776a0814bf7e32e025d13c733c3a800171a16fba77d1c21e6f10be6a28d8b",
|
||||
"riscv64gc-unknown-linux-musl-0.11.10":
|
||||
"8ae35c10dfcae262dee07c93a3d8d10c2ce597d4a152ba1a2f1385395a286ec3",
|
||||
"s390x-unknown-linux-gnu-0.11.10":
|
||||
"66dfdc5a216a9fbd7c2541a66f753544dddbcbb2f7a597c9bbc91d10af534c7d",
|
||||
"x86_64-apple-darwin-0.11.10":
|
||||
"8fd091211089973f528e147166e3af683ab4ecebd4312a55d0d17d87adbde67a",
|
||||
"x86_64-pc-windows-msvc-0.11.10":
|
||||
"7a0c424c7bc55a74751f13592235953ebbe182fa00355f7ae3fb7ab734a51638",
|
||||
"x86_64-unknown-linux-gnu-0.11.10":
|
||||
"077e1a0777bcf516e02f4ef245e269c8d1baa780438e4c50e09c5c997f85538a",
|
||||
"x86_64-unknown-linux-musl-0.11.10":
|
||||
"e3e78e7698d72c133c5ce851a6d60ee83afdc4c0edced382af9fd1f8e11d0105",
|
||||
"aarch64-apple-darwin-0.11.9":
|
||||
"7d02e5f206dcfb555284f8f6b8547890f0b8eb8987f44e9a0a2378cd23338733",
|
||||
"aarch64-pc-windows-msvc-0.11.9":
|
||||
"93de7822f6214c704ec15db1b4d33eabd3709a0303ec068723d9f5f5aa99e9e7",
|
||||
"aarch64-unknown-linux-gnu-0.11.9":
|
||||
"6d22be8d0d675668f657cee802a1344ea7941403f59eb2a6645ef316f69b4309",
|
||||
"aarch64-unknown-linux-musl-0.11.9":
|
||||
"31abb258d8ec2196993b82e746365717a86e3d3d55502b4c60f384540bf16306",
|
||||
"arm-unknown-linux-musleabihf-0.11.9":
|
||||
"60fd2f75fa0a927ce0373a9289e9490351be3142b00fb0e8da082ed652c7f23c",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.9":
|
||||
"074f216882a79506f56f65413932dba9032ca6100285a562c48965688857970e",
|
||||
"armv7-unknown-linux-musleabihf-0.11.9":
|
||||
"0ebca62577232bab2c152fdd0fa81f78a28f8fd1f4f09689347759332aae996d",
|
||||
"i686-pc-windows-msvc-0.11.9":
|
||||
"9dbb9bf746f00dd379e7e1bd544a5e1b48a5f36408f75a7f8c6c89a7a5e5506a",
|
||||
"i686-unknown-linux-gnu-0.11.9":
|
||||
"84418c97aeadbbdb0b80090c43e29149c3d5c4a70c76ecffb738cd4a05d515d2",
|
||||
"i686-unknown-linux-musl-0.11.9":
|
||||
"f724d184888a52714229584536a3219f0c2fa416944fd476b52c7f597d9b3625",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.9":
|
||||
"cbcdb1b6ee99ca69a572b75544dab484cd34e29109962f5945bb95ccd85d0d52",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.9":
|
||||
"a825d1e6b62ca69971c50e6e356ebe478f7616a7873d9f7d7e17fb3efacabef2",
|
||||
"riscv64gc-unknown-linux-musl-0.11.9":
|
||||
"486b67c16381bb75d74daa86c091b36273cde617e0a2678e0b685b89047a6e6f",
|
||||
"s390x-unknown-linux-gnu-0.11.9":
|
||||
"caa3a59d49003d52c841625885bd60c87a957ed6173070af59c2ef7b4845b727",
|
||||
"x86_64-apple-darwin-0.11.9":
|
||||
"a974a0226ac5d3706ebaf660d3587b0dfb93ef9cf1fd146f97d40cd4ad69db98",
|
||||
"x86_64-pc-windows-msvc-0.11.9":
|
||||
"facbf9637c373761a96fa63c537d6c46581d357a65af01eacfd8c6319e6fb14e",
|
||||
"x86_64-unknown-linux-gnu-0.11.9":
|
||||
"5c43f82077ff0cd5aec588286cbabd89913e4d045bd4e8aa60b20b3ecffc36e3",
|
||||
"x86_64-unknown-linux-musl-0.11.9":
|
||||
"ac3e5051edbf30613b0f90d1c18d4807fea6b246f37490799fee0c1284a658b2",
|
||||
"aarch64-apple-darwin-0.11.8":
|
||||
"c729adb365114e844dd7f9316313a7ed6443b89bb5681d409eebac78b0bd06c8",
|
||||
"aarch64-pc-windows-msvc-0.11.8":
|
||||
"bb48716e74e4998993f15bc57a55e4d0d73ccbd27a66d7cbed37605f7c67d747",
|
||||
"aarch64-unknown-linux-gnu-0.11.8":
|
||||
"eee8dd658d20e5ac85fec9c2326b6cbc9d83a1eef09ef07433e58698ac849591",
|
||||
"aarch64-unknown-linux-musl-0.11.8":
|
||||
"29418befb64f926a2dba3473e8e69acd00b36fb845d85344ef11321a993ad8f5",
|
||||
"arm-unknown-linux-musleabihf-0.11.8":
|
||||
"858f50a1164e9d2e3d1641a5f9d81a8b098025bd4f40011882df4f6b7d6ee393",
|
||||
"armv7-unknown-linux-gnueabihf-0.11.8":
|
||||
"b0674ede45b797362f34af0a75d6391e844992ae92a9c181a353e3892af4c325",
|
||||
"armv7-unknown-linux-musleabihf-0.11.8":
|
||||
"eda6e549a1d3bea67de6550e84b05d75e5538350bf50ba229840ec92063f153e",
|
||||
"i686-pc-windows-msvc-0.11.8":
|
||||
"59520c34c3c29a901bb490d4bec55a8e1d46c75d2fbad238871e18de733b4201",
|
||||
"i686-unknown-linux-gnu-0.11.8":
|
||||
"4a82441b70adc3886a4f9c29a1070f104ed73c7e68d14cfa6d6343a8ce0c4ccc",
|
||||
"i686-unknown-linux-musl-0.11.8":
|
||||
"56b8e8874ba09194c580583697c09cbe6c31626e5bb4cfb1f8bfbf4998a8d6c6",
|
||||
"powerpc64le-unknown-linux-gnu-0.11.8":
|
||||
"7b66bcc99237d19fb25d8b1bcbc1f973f735027d49e7cb9ffa22cd539fefccbc",
|
||||
"riscv64gc-unknown-linux-gnu-0.11.8":
|
||||
"dd43289c567fda3ca59ec714ffca09125f1149289448667f36a4bb7c29c859be",
|
||||
"riscv64gc-unknown-linux-musl-0.11.8":
|
||||
"c06b5bbbfecb258f869b18168abb46ef974a76c786fa9350923b1cf38d1661a0",
|
||||
"s390x-unknown-linux-gnu-0.11.8":
|
||||
"068eb3f47d0760d50cd2e0fc59cc2c09eb12a4ec8bb12c269f3aef706bf4dc1a",
|
||||
"x86_64-apple-darwin-0.11.8":
|
||||
"c59d73bf34b58bc8e33a11629f7a255c11789fd00f03cd3e68ab2d1603645de9",
|
||||
"x86_64-pc-windows-msvc-0.11.8":
|
||||
"c84629a56e0706b69a47ea35862208af827cb6fbfa1d0ca763c52c67594637e8",
|
||||
"x86_64-unknown-linux-gnu-0.11.8":
|
||||
"56dd1b66701ecb62fe896abb919444e4b83c5e8645cca953e6ddd496ff8a0feb",
|
||||
"x86_64-unknown-linux-musl-0.11.8":
|
||||
"de82507d12e31cfc86c1c776238f7c248e48e40d996dedc812d64fdd31c6ed12",
|
||||
"aarch64-apple-darwin-0.11.7":
|
||||
"66e37d91f839e12481d7b932a1eccbfe732560f42c1cfb89faddfa2454534ba8",
|
||||
"aarch64-pc-windows-msvc-0.11.7":
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
import * as semver from "semver";
|
||||
import { KNOWN_CHECKSUMS } from "./known-checksums";
|
||||
|
||||
const VERSION_IN_CHECKSUM_KEY_PATTERN =
|
||||
/-(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)$/;
|
||||
|
||||
export function getLatestKnownVersion(): string {
|
||||
const versions = new Set<string>();
|
||||
|
||||
for (const key of Object.keys(KNOWN_CHECKSUMS)) {
|
||||
const version = key.match(VERSION_IN_CHECKSUM_KEY_PATTERN)?.[1];
|
||||
if (version !== undefined) {
|
||||
versions.add(version);
|
||||
}
|
||||
}
|
||||
|
||||
const latestVersion = [...versions].sort(semver.rcompare)[0];
|
||||
if (!latestVersion) {
|
||||
throw new Error("Could not determine latest known version from checksums.");
|
||||
}
|
||||
|
||||
return latestVersion;
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
TOOL_CACHE_NAME,
|
||||
VERSIONS_MANIFEST_URL,
|
||||
} from "../utils/constants";
|
||||
import * as log from "../utils/logging";
|
||||
import type { Architecture, Platform } from "../utils/platforms";
|
||||
import { validateChecksum } from "./checksum/checksum";
|
||||
import { getArtifact } from "./manifest";
|
||||
@@ -36,6 +37,7 @@ export async function downloadVersion(
|
||||
checksum: string | undefined,
|
||||
githubToken: string,
|
||||
manifestUrl?: string,
|
||||
downloadFromAstralMirror = true,
|
||||
): Promise<{ version: string; cachedToolDir: string }> {
|
||||
const artifact = await getArtifact(version, arch, platform, manifestUrl);
|
||||
|
||||
@@ -52,10 +54,10 @@ export async function downloadVersion(
|
||||
? checksum
|
||||
: resolveChecksum(checksum, artifact.checksum);
|
||||
|
||||
const mirrorUrl = rewriteToMirror(artifact.downloadUrl);
|
||||
const mirrorUrl = downloadFromAstralMirror
|
||||
? rewriteToMirror(artifact.downloadUrl)
|
||||
: undefined;
|
||||
const downloadUrl = mirrorUrl ?? artifact.downloadUrl;
|
||||
// Don't send the GitHub token to the Astral mirror.
|
||||
const downloadToken = mirrorUrl !== undefined ? undefined : githubToken;
|
||||
|
||||
try {
|
||||
return await downloadArtifact(
|
||||
@@ -65,14 +67,14 @@ export async function downloadVersion(
|
||||
arch,
|
||||
version,
|
||||
resolvedChecksum,
|
||||
downloadToken,
|
||||
githubTokenForUrl(downloadUrl, githubToken),
|
||||
);
|
||||
} catch (err) {
|
||||
if (mirrorUrl === undefined) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
core.warning(
|
||||
log.warning(
|
||||
`Failed to download from mirror, falling back to GitHub Releases: ${(err as Error).message}`,
|
||||
);
|
||||
|
||||
@@ -83,7 +85,7 @@ export async function downloadVersion(
|
||||
arch,
|
||||
version,
|
||||
resolvedChecksum,
|
||||
githubToken,
|
||||
githubTokenForUrl(artifact.downloadUrl, githubToken),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -100,6 +102,19 @@ export function rewriteToMirror(url: string): string | undefined {
|
||||
return ASTRAL_MIRROR_PREFIX + url.slice(GITHUB_RELEASES_PREFIX.length);
|
||||
}
|
||||
|
||||
function githubTokenForUrl(
|
||||
downloadUrl: string,
|
||||
githubToken: string,
|
||||
): string | undefined {
|
||||
try {
|
||||
return new URL(downloadUrl).origin === "https://github.com"
|
||||
? githubToken
|
||||
: undefined;
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
async function downloadArtifact(
|
||||
downloadUrl: string,
|
||||
artifactName: string,
|
||||
@@ -109,7 +124,7 @@ async function downloadArtifact(
|
||||
checksum: string | undefined,
|
||||
githubToken: string | undefined,
|
||||
): Promise<{ version: string; cachedToolDir: string }> {
|
||||
core.info(`Downloading uv from "${downloadUrl}" ...`);
|
||||
log.info(`Downloading uv from "${downloadUrl}" ...`);
|
||||
const downloadPath = await tc.downloadTool(
|
||||
downloadUrl,
|
||||
undefined,
|
||||
@@ -125,7 +140,7 @@ async function downloadArtifact(
|
||||
// so this may fail if another tar, like gnu tar, ends up being used.
|
||||
uvDir = await tc.extractTar(downloadPath, undefined, "x");
|
||||
} catch (err) {
|
||||
core.info(
|
||||
log.info(
|
||||
`Extracting with tar failed, falling back to zip extraction: ${(err as Error).message}`,
|
||||
);
|
||||
const extension = getExtension(platform);
|
||||
|
||||
+168
-40
@@ -1,6 +1,9 @@
|
||||
import { createInterface } from "node:readline";
|
||||
import { Readable } from "node:stream";
|
||||
import * as core from "@actions/core";
|
||||
import { VERSIONS_MANIFEST_URL } from "../utils/constants";
|
||||
import { fetch } from "../utils/fetch";
|
||||
import * as log from "../utils/logging";
|
||||
import { selectDefaultVariant } from "./variant-selection";
|
||||
|
||||
export interface ManifestArtifact {
|
||||
@@ -22,28 +25,27 @@ export interface ArtifactResult {
|
||||
downloadUrl: string;
|
||||
}
|
||||
|
||||
const cachedManifestData = new Map<string, ManifestVersion[]>();
|
||||
interface CachedManifest {
|
||||
complete: boolean;
|
||||
versions: ManifestVersion[];
|
||||
}
|
||||
|
||||
const cachedManifestData = new Map<string, CachedManifest>();
|
||||
export const MANIFEST_FETCH_ATTEMPTS = 3;
|
||||
|
||||
export async function fetchManifest(
|
||||
manifestUrl: string = VERSIONS_MANIFEST_URL,
|
||||
): Promise<ManifestVersion[]> {
|
||||
const cachedVersions = cachedManifestData.get(manifestUrl);
|
||||
if (cachedVersions !== undefined) {
|
||||
const cachedManifest = cachedManifestData.get(manifestUrl);
|
||||
if (cachedManifest?.complete === true) {
|
||||
core.debug(`Using cached manifest data from ${manifestUrl}`);
|
||||
return cachedVersions;
|
||||
}
|
||||
|
||||
core.info(`Fetching manifest data from ${manifestUrl} ...`);
|
||||
const response = await fetch(manifestUrl, {});
|
||||
if (!response.ok) {
|
||||
throw new Error(
|
||||
`Failed to fetch manifest data: ${response.status} ${response.statusText}`,
|
||||
);
|
||||
return cachedManifest.versions;
|
||||
}
|
||||
|
||||
const response = await fetchManifestResponse(manifestUrl);
|
||||
const body = await response.text();
|
||||
const versions = parseManifest(body, manifestUrl);
|
||||
cachedManifestData.set(manifestUrl, versions);
|
||||
cachedManifestData.set(manifestUrl, { complete: true, versions });
|
||||
return versions;
|
||||
}
|
||||
|
||||
@@ -56,11 +58,7 @@ export function parseManifest(
|
||||
throw new Error(`Manifest at ${sourceDescription} is empty.`);
|
||||
}
|
||||
|
||||
if (trimmed.startsWith("[")) {
|
||||
throw new Error(
|
||||
`Legacy JSON array manifests are no longer supported in ${sourceDescription}. Use the astral-sh/versions manifest format instead.`,
|
||||
);
|
||||
}
|
||||
rejectLegacyManifest(trimmed, sourceDescription);
|
||||
|
||||
const versions: ManifestVersion[] = [];
|
||||
|
||||
@@ -70,22 +68,7 @@ export function parseManifest(
|
||||
continue;
|
||||
}
|
||||
|
||||
let parsed: unknown;
|
||||
try {
|
||||
parsed = JSON.parse(record);
|
||||
} catch (error) {
|
||||
throw new Error(
|
||||
`Failed to parse manifest data from ${sourceDescription} at line ${index + 1}: ${(error as Error).message}`,
|
||||
);
|
||||
}
|
||||
|
||||
if (!isManifestVersion(parsed)) {
|
||||
throw new Error(
|
||||
`Invalid manifest record in ${sourceDescription} at line ${index + 1}.`,
|
||||
);
|
||||
}
|
||||
|
||||
versions.push(parsed);
|
||||
versions.push(parseManifestRecord(record, sourceDescription, index + 1));
|
||||
}
|
||||
|
||||
if (versions.length === 0) {
|
||||
@@ -98,7 +81,10 @@ export function parseManifest(
|
||||
export async function getLatestVersion(
|
||||
manifestUrl: string = VERSIONS_MANIFEST_URL,
|
||||
): Promise<string> {
|
||||
const latestVersion = (await fetchManifest(manifestUrl))[0]?.version;
|
||||
const latestVersion =
|
||||
manifestUrl === VERSIONS_MANIFEST_URL
|
||||
? (await findManifestVersion(() => true))?.version
|
||||
: (await fetchManifest(manifestUrl))[0]?.version;
|
||||
|
||||
if (latestVersion === undefined) {
|
||||
throw new Error("No versions found in manifest data");
|
||||
@@ -108,10 +94,20 @@ export async function getLatestVersion(
|
||||
return latestVersion;
|
||||
}
|
||||
|
||||
// The default manifest is guaranteed to be ordered newest-first:
|
||||
// https://github.com/astral-sh/versions#format
|
||||
export async function getFirstMatchingVersion(
|
||||
predicate: (version: string) => boolean,
|
||||
): Promise<string | undefined> {
|
||||
return (
|
||||
await findManifestVersion((versionData) => predicate(versionData.version))
|
||||
)?.version;
|
||||
}
|
||||
|
||||
export async function getAllVersions(
|
||||
manifestUrl: string = VERSIONS_MANIFEST_URL,
|
||||
): Promise<string[]> {
|
||||
core.info(
|
||||
log.info(
|
||||
`Getting available versions from ${manifestSource(manifestUrl)} ...`,
|
||||
);
|
||||
const versions = await fetchManifest(manifestUrl);
|
||||
@@ -124,10 +120,12 @@ export async function getArtifact(
|
||||
platform: string,
|
||||
manifestUrl: string = VERSIONS_MANIFEST_URL,
|
||||
): Promise<ArtifactResult | undefined> {
|
||||
const versions = await fetchManifest(manifestUrl);
|
||||
const versionData = versions.find(
|
||||
(candidate) => candidate.version === version,
|
||||
);
|
||||
const versionData =
|
||||
manifestUrl === VERSIONS_MANIFEST_URL
|
||||
? await findManifestVersion((candidate) => candidate.version === version)
|
||||
: (await fetchManifest(manifestUrl)).find(
|
||||
(candidate) => candidate.version === version,
|
||||
);
|
||||
if (!versionData) {
|
||||
core.debug(`Version ${version} not found in manifest ${manifestUrl}`);
|
||||
return undefined;
|
||||
@@ -168,6 +166,105 @@ export function clearManifestCache(manifestUrl?: string): void {
|
||||
cachedManifestData.delete(manifestUrl);
|
||||
}
|
||||
|
||||
async function fetchManifestResponse(manifestUrl: string) {
|
||||
let response: Awaited<ReturnType<typeof fetch>> | undefined;
|
||||
for (let attempt = 1; attempt <= MANIFEST_FETCH_ATTEMPTS; attempt++) {
|
||||
log.info(`Fetching manifest data from ${manifestUrl} ...`);
|
||||
try {
|
||||
response = await fetch(manifestUrl, {});
|
||||
break;
|
||||
} catch (error) {
|
||||
if (attempt >= MANIFEST_FETCH_ATTEMPTS) {
|
||||
throw error;
|
||||
}
|
||||
const delayMs = 1_000 * 2 ** (attempt - 1);
|
||||
log.info(`Manifest fetch failed; retrying in ${delayMs}ms ...`);
|
||||
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
||||
}
|
||||
}
|
||||
|
||||
if (response === undefined) {
|
||||
throw new Error("Manifest fetch attempts exhausted.");
|
||||
}
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(
|
||||
`Failed to fetch manifest data: ${response.status} ${response.statusText}`,
|
||||
);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
async function findManifestVersion(
|
||||
predicate: (versionData: ManifestVersion) => boolean,
|
||||
): Promise<ManifestVersion | undefined> {
|
||||
const cachedManifest = cachedManifestData.get(VERSIONS_MANIFEST_URL);
|
||||
const cachedVersion = cachedManifest?.versions.find(predicate);
|
||||
if (cachedVersion !== undefined || cachedManifest?.complete === true) {
|
||||
return cachedVersion;
|
||||
}
|
||||
|
||||
const response = await fetchManifestResponse(VERSIONS_MANIFEST_URL);
|
||||
if (response.body === null) {
|
||||
const versions = parseManifest(
|
||||
await response.text(),
|
||||
VERSIONS_MANIFEST_URL,
|
||||
);
|
||||
cachedManifestData.set(VERSIONS_MANIFEST_URL, {
|
||||
complete: true,
|
||||
versions,
|
||||
});
|
||||
return versions.find(predicate);
|
||||
}
|
||||
|
||||
const input = Readable.fromWeb(response.body);
|
||||
const lines = createInterface({ crlfDelay: Number.POSITIVE_INFINITY, input });
|
||||
const versions: ManifestVersion[] = [];
|
||||
let complete = false;
|
||||
let lineNumber = 0;
|
||||
let matchedVersion: ManifestVersion | undefined;
|
||||
|
||||
try {
|
||||
for await (const line of lines) {
|
||||
lineNumber += 1;
|
||||
const record = line.trim();
|
||||
if (record === "") {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (versions.length === 0) {
|
||||
rejectLegacyManifest(record, VERSIONS_MANIFEST_URL);
|
||||
}
|
||||
|
||||
const versionData = parseManifestRecord(
|
||||
record,
|
||||
VERSIONS_MANIFEST_URL,
|
||||
lineNumber,
|
||||
);
|
||||
versions.push(versionData);
|
||||
if (predicate(versionData)) {
|
||||
matchedVersion = versionData;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
complete = matchedVersion === undefined;
|
||||
} finally {
|
||||
lines.close();
|
||||
if (!complete) {
|
||||
input.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
if (versions.length === 0) {
|
||||
throw new Error(`Manifest at ${VERSIONS_MANIFEST_URL} is empty.`);
|
||||
}
|
||||
|
||||
cachedManifestData.set(VERSIONS_MANIFEST_URL, { complete, versions });
|
||||
return matchedVersion;
|
||||
}
|
||||
|
||||
function manifestSource(manifestUrl: string): string {
|
||||
if (manifestUrl === VERSIONS_MANIFEST_URL) {
|
||||
return VERSIONS_MANIFEST_URL;
|
||||
@@ -176,6 +273,37 @@ function manifestSource(manifestUrl: string): string {
|
||||
return `manifest-file ${manifestUrl}`;
|
||||
}
|
||||
|
||||
function parseManifestRecord(
|
||||
record: string,
|
||||
sourceDescription: string,
|
||||
lineNumber: number,
|
||||
): ManifestVersion {
|
||||
let parsed: unknown;
|
||||
try {
|
||||
parsed = JSON.parse(record);
|
||||
} catch (error) {
|
||||
throw new Error(
|
||||
`Failed to parse manifest data from ${sourceDescription} at line ${lineNumber}: ${(error as Error).message}`,
|
||||
);
|
||||
}
|
||||
|
||||
if (!isManifestVersion(parsed)) {
|
||||
throw new Error(
|
||||
`Invalid manifest record in ${sourceDescription} at line ${lineNumber}.`,
|
||||
);
|
||||
}
|
||||
|
||||
return parsed;
|
||||
}
|
||||
|
||||
function rejectLegacyManifest(data: string, sourceDescription: string): void {
|
||||
if (data.startsWith("[")) {
|
||||
throw new Error(
|
||||
`Legacy JSON array manifests are no longer supported in ${sourceDescription}. Use the astral-sh/versions manifest format instead.`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function isManifestVersion(value: unknown): value is ManifestVersion {
|
||||
if (!isRecord(value)) {
|
||||
return false;
|
||||
|
||||
@@ -2,8 +2,8 @@ import * as crypto from "node:crypto";
|
||||
import * as fs from "node:fs";
|
||||
import * as stream from "node:stream";
|
||||
import * as util from "node:util";
|
||||
import * as core from "@actions/core";
|
||||
import { create } from "@actions/glob";
|
||||
import * as log from "../utils/logging";
|
||||
|
||||
/**
|
||||
* Hashes files matching the given glob pattern.
|
||||
@@ -19,7 +19,7 @@ export async function hashFiles(
|
||||
): Promise<string> {
|
||||
const globber = await create(pattern);
|
||||
let hasMatch = false;
|
||||
const writeDelegate = verbose ? core.info : core.debug;
|
||||
const writeDelegate = verbose ? log.info : log.debug;
|
||||
const result = crypto.createHash("sha256");
|
||||
let count = 0;
|
||||
for await (const file of globber.globGenerator()) {
|
||||
|
||||
+33
-14
@@ -10,6 +10,27 @@ import {
|
||||
} from "./cache/restore-cache";
|
||||
import { STATE_UV_PATH, STATE_UV_VERSION } from "./utils/constants";
|
||||
import { loadInputs, type SetupInputs } from "./utils/inputs";
|
||||
import * as log from "./utils/logging";
|
||||
|
||||
function formatUnexpectedFailure(error: unknown): string {
|
||||
if (error instanceof Error) {
|
||||
return error.stack ?? error.message;
|
||||
}
|
||||
return String(error);
|
||||
}
|
||||
|
||||
function failUnexpectedly(event: string, error: unknown): never {
|
||||
core.setFailed(`${event}: ${formatUnexpectedFailure(error)}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
process.on("uncaughtException", (error) => {
|
||||
failUnexpectedly("Uncaught exception", error);
|
||||
});
|
||||
|
||||
process.on("unhandledRejection", (reason) => {
|
||||
failUnexpectedly("Unhandled promise rejection", reason);
|
||||
});
|
||||
|
||||
export async function run(): Promise<void> {
|
||||
try {
|
||||
@@ -18,10 +39,10 @@ export async function run(): Promise<void> {
|
||||
if (inputs.saveCache) {
|
||||
await saveCache(inputs);
|
||||
} else {
|
||||
core.info("save-cache is false. Skipping save cache step.");
|
||||
log.info("save-cache is false. Skipping save cache step.");
|
||||
}
|
||||
// https://github.com/nodejs/node/issues/56645#issuecomment-3077594952
|
||||
await new Promise((resolve) => setTimeout(resolve, 50));
|
||||
// https://github.com/nodejs/node/issues/56645#issuecomment-3924958861
|
||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||
|
||||
// node will stay alive if any promises are not resolved,
|
||||
// which is a possibility if HTTP requests are dangling
|
||||
@@ -41,11 +62,11 @@ async function saveCache(inputs: SetupInputs): Promise<void> {
|
||||
const matchedKey = core.getState(STATE_CACHE_MATCHED_KEY);
|
||||
|
||||
if (!cacheKey) {
|
||||
core.warning("Error retrieving cache key from state.");
|
||||
log.warning("Error retrieving cache key from state.");
|
||||
return;
|
||||
}
|
||||
if (matchedKey === cacheKey) {
|
||||
core.info(`Cache hit occurred on key ${cacheKey}, not saving cache.`);
|
||||
log.info(`Cache hit occurred on key ${cacheKey}, not saving cache.`);
|
||||
} else {
|
||||
if (inputs.pruneCache) {
|
||||
await pruneCache();
|
||||
@@ -54,7 +75,7 @@ async function saveCache(inputs: SetupInputs): Promise<void> {
|
||||
const actualCachePath = getUvCachePath(inputs);
|
||||
if (!fs.existsSync(actualCachePath)) {
|
||||
if (inputs.ignoreNothingToCache) {
|
||||
core.info(
|
||||
log.info(
|
||||
"No cacheable uv cache paths were found. Ignoring because ignore-nothing-to-cache is enabled.",
|
||||
);
|
||||
} else {
|
||||
@@ -74,7 +95,7 @@ async function saveCache(inputs: SetupInputs): Promise<void> {
|
||||
|
||||
if (inputs.cachePython) {
|
||||
if (!fs.existsSync(inputs.pythonDir)) {
|
||||
core.warning(
|
||||
log.warning(
|
||||
`Python cache path ${inputs.pythonDir} does not exist on disk. Skipping Python cache save because no managed Python installation was found. If you want uv to install managed Python instead of using a system interpreter, set UV_PYTHON_PREFERENCE=only-managed.`,
|
||||
);
|
||||
return;
|
||||
@@ -101,7 +122,7 @@ async function pruneCache(): Promise<void> {
|
||||
execArgs.push("--force");
|
||||
}
|
||||
|
||||
core.info("Pruning cache...");
|
||||
log.info("Pruning cache...");
|
||||
const uvPath = core.getState(STATE_UV_PATH);
|
||||
await exec.exec(uvPath, execArgs, options);
|
||||
}
|
||||
@@ -116,7 +137,7 @@ function getUvCachePath(inputs: SetupInputs): string {
|
||||
process.env.UV_CACHE_DIR &&
|
||||
process.env.UV_CACHE_DIR !== inputs.cacheLocalPath.path
|
||||
) {
|
||||
core.warning(
|
||||
log.warning(
|
||||
`The environment variable UV_CACHE_DIR has been changed to "${process.env.UV_CACHE_DIR}", by an action or step running after astral-sh/setup-uv. This can lead to unexpected behavior. If you expected this to happen set the cache-local-path input to "${process.env.UV_CACHE_DIR}" instead of "${inputs.cacheLocalPath.path}".`,
|
||||
);
|
||||
return process.env.UV_CACHE_DIR;
|
||||
@@ -133,15 +154,13 @@ async function saveCacheToKey(
|
||||
const matchedKey = core.getState(stateKey);
|
||||
|
||||
if (matchedKey === cacheKey) {
|
||||
core.info(
|
||||
`${cacheName} hit occurred on key ${cacheKey}, not saving cache.`,
|
||||
);
|
||||
log.info(`${cacheName} hit occurred on key ${cacheKey}, not saving cache.`);
|
||||
return;
|
||||
}
|
||||
|
||||
core.info(`Including ${cacheName} path: ${cachePath}`);
|
||||
log.info(`Including ${cacheName} path: ${cachePath}`);
|
||||
await cache.saveCache([cachePath], cacheKey);
|
||||
core.info(`${cacheName} saved with key: ${cacheKey}`);
|
||||
log.info(`${cacheName} saved with key: ${cacheKey}`);
|
||||
}
|
||||
|
||||
run();
|
||||
|
||||
+45
-23
@@ -9,6 +9,7 @@ import {
|
||||
} from "./download/download-version";
|
||||
import { STATE_UV_PATH, STATE_UV_VERSION } from "./utils/constants";
|
||||
import { CacheLocalSource, loadInputs, type SetupInputs } from "./utils/inputs";
|
||||
import * as log from "./utils/logging";
|
||||
import {
|
||||
type Architecture,
|
||||
getArch,
|
||||
@@ -19,6 +20,26 @@ import { resolveUvVersion } from "./version/resolve";
|
||||
|
||||
const sourceDir = __dirname;
|
||||
|
||||
function formatUnexpectedFailure(error: unknown): string {
|
||||
if (error instanceof Error) {
|
||||
return error.stack ?? error.message;
|
||||
}
|
||||
return String(error);
|
||||
}
|
||||
|
||||
function failUnexpectedly(event: string, error: unknown): never {
|
||||
core.setFailed(`${event}: ${formatUnexpectedFailure(error)}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
process.on("uncaughtException", (error) => {
|
||||
failUnexpectedly("Uncaught exception", error);
|
||||
});
|
||||
|
||||
process.on("unhandledRejection", (reason) => {
|
||||
failUnexpectedly("Unhandled promise rejection", reason);
|
||||
});
|
||||
|
||||
async function getPythonVersion(inputs: SetupInputs): Promise<string> {
|
||||
if (inputs.pythonVersion !== "") {
|
||||
return inputs.pythonVersion;
|
||||
@@ -76,7 +97,7 @@ async function run(): Promise<void> {
|
||||
|
||||
core.setOutput("uv-version", setupResult.version);
|
||||
core.saveState(STATE_UV_VERSION, setupResult.version);
|
||||
core.info(`Successfully installed uv version ${setupResult.version}`);
|
||||
log.info(`Successfully installed uv version ${setupResult.version}`);
|
||||
|
||||
const detectedPythonVersion = await getPythonVersion(inputs);
|
||||
core.setOutput("python-version", detectedPythonVersion);
|
||||
@@ -84,8 +105,8 @@ async function run(): Promise<void> {
|
||||
if (inputs.enableCache) {
|
||||
await restoreCache(inputs, detectedPythonVersion);
|
||||
}
|
||||
// https://github.com/nodejs/node/issues/56645#issuecomment-3077594952
|
||||
await new Promise((resolve) => setTimeout(resolve, 50));
|
||||
// https://github.com/nodejs/node/issues/56645#issuecomment-3924958861
|
||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||
process.exit(0);
|
||||
} catch (err) {
|
||||
core.setFailed((err as Error).message);
|
||||
@@ -95,11 +116,11 @@ async function run(): Promise<void> {
|
||||
function detectEmptyWorkdir(inputs: SetupInputs): void {
|
||||
if (fs.readdirSync(inputs.workingDirectory).length === 0) {
|
||||
if (inputs.ignoreEmptyWorkdir) {
|
||||
core.info(
|
||||
log.info(
|
||||
"Empty workdir detected. Ignoring because ignore-empty-workdir is enabled",
|
||||
);
|
||||
} else {
|
||||
core.warning(
|
||||
log.warning(
|
||||
"Empty workdir detected. This may cause unexpected behavior. You can enable ignore-empty-workdir to mute this warning.",
|
||||
);
|
||||
}
|
||||
@@ -120,7 +141,7 @@ async function setupUv(
|
||||
});
|
||||
const toolCacheResult = tryGetFromToolCache(arch, resolvedVersion);
|
||||
if (toolCacheResult.installedPath) {
|
||||
core.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
|
||||
log.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
|
||||
return {
|
||||
uvDir: toolCacheResult.installedPath,
|
||||
version: toolCacheResult.version,
|
||||
@@ -134,6 +155,7 @@ async function setupUv(
|
||||
inputs.checksum,
|
||||
inputs.githubToken,
|
||||
inputs.manifestFile,
|
||||
inputs.downloadFromAstralMirror,
|
||||
);
|
||||
|
||||
return {
|
||||
@@ -147,39 +169,39 @@ function addUvToPathAndOutput(cachedPath: string): void {
|
||||
core.saveState(STATE_UV_PATH, `${cachedPath}${path.sep}uv`);
|
||||
core.setOutput("uvx-path", `${cachedPath}${path.sep}uvx`);
|
||||
if (process.env.UV_NO_MODIFY_PATH !== undefined) {
|
||||
core.info("UV_NO_MODIFY_PATH is set, not modifying PATH");
|
||||
log.info("UV_NO_MODIFY_PATH is set, not modifying PATH");
|
||||
} else {
|
||||
core.addPath(cachedPath);
|
||||
core.info(`Added ${cachedPath} to the path`);
|
||||
log.info(`Added ${cachedPath} to the path`);
|
||||
}
|
||||
}
|
||||
|
||||
function addToolBinToPath(inputs: SetupInputs): void {
|
||||
if (inputs.toolBinDir !== undefined) {
|
||||
core.exportVariable("UV_TOOL_BIN_DIR", inputs.toolBinDir);
|
||||
core.info(`Set UV_TOOL_BIN_DIR to ${inputs.toolBinDir}`);
|
||||
log.info(`Set UV_TOOL_BIN_DIR to ${inputs.toolBinDir}`);
|
||||
if (process.env.UV_NO_MODIFY_PATH !== undefined) {
|
||||
core.info(
|
||||
log.info(
|
||||
`UV_NO_MODIFY_PATH is set, not adding ${inputs.toolBinDir} to path`,
|
||||
);
|
||||
} else {
|
||||
core.addPath(inputs.toolBinDir);
|
||||
core.info(`Added ${inputs.toolBinDir} to the path`);
|
||||
log.info(`Added ${inputs.toolBinDir} to the path`);
|
||||
}
|
||||
} else {
|
||||
if (process.env.UV_NO_MODIFY_PATH !== undefined) {
|
||||
core.info("UV_NO_MODIFY_PATH is set, not adding user local bin to path");
|
||||
log.info("UV_NO_MODIFY_PATH is set, not adding user local bin to path");
|
||||
return;
|
||||
}
|
||||
if (process.env.XDG_BIN_HOME !== undefined) {
|
||||
core.addPath(process.env.XDG_BIN_HOME);
|
||||
core.info(`Added ${process.env.XDG_BIN_HOME} to the path`);
|
||||
log.info(`Added ${process.env.XDG_BIN_HOME} to the path`);
|
||||
} else if (process.env.XDG_DATA_HOME !== undefined) {
|
||||
core.addPath(`${process.env.XDG_DATA_HOME}/../bin`);
|
||||
core.info(`Added ${process.env.XDG_DATA_HOME}/../bin to the path`);
|
||||
log.info(`Added ${process.env.XDG_DATA_HOME}/../bin to the path`);
|
||||
} else {
|
||||
core.addPath(`${process.env.HOME}/.local/bin`);
|
||||
core.info(`Added ${process.env.HOME}/.local/bin to the path`);
|
||||
log.info(`Added ${process.env.HOME}/.local/bin to the path`);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -187,25 +209,25 @@ function addToolBinToPath(inputs: SetupInputs): void {
|
||||
function setToolDir(inputs: SetupInputs): void {
|
||||
if (inputs.toolDir !== undefined) {
|
||||
core.exportVariable("UV_TOOL_DIR", inputs.toolDir);
|
||||
core.info(`Set UV_TOOL_DIR to ${inputs.toolDir}`);
|
||||
log.info(`Set UV_TOOL_DIR to ${inputs.toolDir}`);
|
||||
}
|
||||
}
|
||||
|
||||
function addPythonDirToPath(inputs: SetupInputs): void {
|
||||
core.exportVariable("UV_PYTHON_INSTALL_DIR", inputs.pythonDir);
|
||||
core.info(`Set UV_PYTHON_INSTALL_DIR to ${inputs.pythonDir}`);
|
||||
log.info(`Set UV_PYTHON_INSTALL_DIR to ${inputs.pythonDir}`);
|
||||
if (process.env.UV_NO_MODIFY_PATH !== undefined) {
|
||||
core.info("UV_NO_MODIFY_PATH is set, not adding python dir to path");
|
||||
log.info("UV_NO_MODIFY_PATH is set, not adding python dir to path");
|
||||
} else {
|
||||
core.addPath(inputs.pythonDir);
|
||||
core.info(`Added ${inputs.pythonDir} to the path`);
|
||||
log.info(`Added ${inputs.pythonDir} to the path`);
|
||||
}
|
||||
}
|
||||
|
||||
function setupPython(inputs: SetupInputs): void {
|
||||
if (inputs.pythonVersion !== "") {
|
||||
core.exportVariable("UV_PYTHON", inputs.pythonVersion);
|
||||
core.info(`Set UV_PYTHON to ${inputs.pythonVersion}`);
|
||||
log.info(`Set UV_PYTHON to ${inputs.pythonVersion}`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,7 +239,7 @@ async function activateEnvironment(inputs: SetupInputs): Promise<void> {
|
||||
);
|
||||
}
|
||||
|
||||
core.info(`Creating and activating python venv at ${inputs.venvPath}...`);
|
||||
log.info(`Creating and activating python venv at ${inputs.venvPath}...`);
|
||||
const venvArgs = [
|
||||
"venv",
|
||||
inputs.venvPath,
|
||||
@@ -243,13 +265,13 @@ async function activateEnvironment(inputs: SetupInputs): Promise<void> {
|
||||
function setCacheDir(inputs: SetupInputs): void {
|
||||
if (inputs.cacheLocalPath !== undefined) {
|
||||
if (inputs.cacheLocalPath.source === CacheLocalSource.Config) {
|
||||
core.info(
|
||||
log.info(
|
||||
"Using cache-dir from uv config file, not modifying UV_CACHE_DIR",
|
||||
);
|
||||
return;
|
||||
}
|
||||
core.exportVariable("UV_CACHE_DIR", inputs.cacheLocalPath.path);
|
||||
core.info(`Set UV_CACHE_DIR to ${inputs.cacheLocalPath.path}`);
|
||||
log.info(`Set UV_CACHE_DIR to ${inputs.cacheLocalPath.path}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as core from "@actions/core";
|
||||
import * as semver from "semver";
|
||||
import { KNOWN_CHECKSUMS } from "./download/checksum/known-checksums";
|
||||
import { getLatestKnownVersion } from "./download/checksum/known-version";
|
||||
import {
|
||||
type ChecksumEntry,
|
||||
updateChecksums,
|
||||
@@ -10,9 +10,7 @@ import {
|
||||
getLatestVersion,
|
||||
type ManifestVersion,
|
||||
} from "./download/manifest";
|
||||
|
||||
const VERSION_IN_CHECKSUM_KEY_PATTERN =
|
||||
/-(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)$/;
|
||||
import * as log from "./utils/logging";
|
||||
|
||||
async function run(): Promise<void> {
|
||||
const checksumFilePath = process.argv.slice(2)[0];
|
||||
@@ -23,10 +21,10 @@ async function run(): Promise<void> {
|
||||
}
|
||||
|
||||
const latestVersion = await getLatestVersion();
|
||||
const latestKnownVersion = getLatestKnownVersionFromChecksums();
|
||||
const latestKnownVersion = getLatestKnownVersion();
|
||||
|
||||
if (semver.lte(latestVersion, latestKnownVersion)) {
|
||||
core.info(
|
||||
log.info(
|
||||
`Latest release (${latestVersion}) is not newer than the latest known version (${latestKnownVersion}). Skipping update.`,
|
||||
);
|
||||
return;
|
||||
@@ -39,28 +37,6 @@ async function run(): Promise<void> {
|
||||
core.setOutput("latest-version", latestVersion);
|
||||
}
|
||||
|
||||
function getLatestKnownVersionFromChecksums(): string {
|
||||
const versions = new Set<string>();
|
||||
|
||||
for (const key of Object.keys(KNOWN_CHECKSUMS)) {
|
||||
const version = extractVersionFromChecksumKey(key);
|
||||
if (version !== undefined) {
|
||||
versions.add(version);
|
||||
}
|
||||
}
|
||||
|
||||
const latestVersion = [...versions].sort(semver.rcompare)[0];
|
||||
if (!latestVersion) {
|
||||
throw new Error("Could not determine latest known version from checksums.");
|
||||
}
|
||||
|
||||
return latestVersion;
|
||||
}
|
||||
|
||||
function extractVersionFromChecksumKey(key: string): string | undefined {
|
||||
return key.match(VERSION_IN_CHECKSUM_KEY_PATTERN)?.[1];
|
||||
}
|
||||
|
||||
function extractChecksumsFromManifest(
|
||||
versions: ManifestVersion[],
|
||||
): ChecksumEntry[] {
|
||||
|
||||
+11
-2
@@ -14,8 +14,17 @@ export function getProxyAgent() {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
export const fetch = async (url: string, opts: RequestInit) =>
|
||||
await undiciFetch(url, {
|
||||
export const fetch = async (url: string, opts: RequestInit) => {
|
||||
// Merge timeout signal with any existing signal from opts
|
||||
const timeoutSignal = AbortSignal.timeout(5_000);
|
||||
const existingSignal = opts.signal;
|
||||
const mergedSignal = existingSignal
|
||||
? AbortSignal.any([timeoutSignal, existingSignal])
|
||||
: timeoutSignal;
|
||||
|
||||
return await undiciFetch(url, {
|
||||
dispatcher: getProxyAgent(),
|
||||
...opts,
|
||||
signal: mergedSignal,
|
||||
});
|
||||
};
|
||||
|
||||
+59
-7
@@ -1,6 +1,9 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import * as core from "@actions/core";
|
||||
import { getPythonVersionFromToolVersions } from "../version/tool-versions-file";
|
||||
import { getConfigValueFromTomlFile } from "./config-file";
|
||||
import * as log from "./logging";
|
||||
|
||||
export enum CacheLocalSource {
|
||||
Input,
|
||||
@@ -40,7 +43,9 @@ export interface SetupInputs {
|
||||
pythonDir: string;
|
||||
githubToken: string;
|
||||
manifestFile?: string;
|
||||
downloadFromAstralMirror: boolean;
|
||||
addProblemMatchers: boolean;
|
||||
quiet: boolean;
|
||||
resolutionStrategy: ResolutionStrategy;
|
||||
}
|
||||
|
||||
@@ -48,7 +53,7 @@ export function loadInputs(): SetupInputs {
|
||||
const workingDirectory = core.getInput("working-directory");
|
||||
const version = core.getInput("version");
|
||||
const versionFile = getVersionFile(workingDirectory);
|
||||
const pythonVersion = core.getInput("python-version");
|
||||
const pythonVersion = getPythonVersion(versionFile);
|
||||
const activateEnvironment = core.getBooleanInput("activate-environment");
|
||||
const noProject = core.getBooleanInput("no-project");
|
||||
const venvPath = getVenvPath(workingDirectory, activateEnvironment);
|
||||
@@ -73,7 +78,10 @@ export function loadInputs(): SetupInputs {
|
||||
const pythonDir = getUvPythonDir();
|
||||
const githubToken = core.getInput("github-token");
|
||||
const manifestFile = getManifestFile();
|
||||
const downloadFromAstralMirror =
|
||||
core.getInput("download-from-astral-mirror") === "true";
|
||||
const addProblemMatchers = core.getInput("add-problem-matchers") === "true";
|
||||
const quiet = core.getInput("quiet") === "true";
|
||||
const resolutionStrategy = getResolutionStrategy();
|
||||
|
||||
return {
|
||||
@@ -84,6 +92,7 @@ export function loadInputs(): SetupInputs {
|
||||
cachePython,
|
||||
cacheSuffix,
|
||||
checksum,
|
||||
downloadFromAstralMirror,
|
||||
enableCache,
|
||||
githubToken,
|
||||
ignoreEmptyWorkdir,
|
||||
@@ -93,6 +102,7 @@ export function loadInputs(): SetupInputs {
|
||||
pruneCache,
|
||||
pythonDir,
|
||||
pythonVersion,
|
||||
quiet,
|
||||
resolutionStrategy,
|
||||
restoreCache,
|
||||
saveCache,
|
||||
@@ -114,6 +124,28 @@ function getVersionFile(workingDirectory: string): string {
|
||||
return versionFileInput;
|
||||
}
|
||||
|
||||
function getPythonVersion(versionFile: string): string {
|
||||
const pythonVersionInput = core.getInput("python-version");
|
||||
if (pythonVersionInput !== "") {
|
||||
return pythonVersionInput;
|
||||
}
|
||||
if (process.env.UV_PYTHON !== undefined && process.env.UV_PYTHON !== "") {
|
||||
return "";
|
||||
}
|
||||
if (versionFile === "" || !fs.existsSync(versionFile)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
try {
|
||||
return getPythonVersionFromToolVersions(versionFile) ?? "";
|
||||
} catch (err) {
|
||||
log.warning(
|
||||
`Error while parsing Python version from ${versionFile}: ${(err as Error).message}`,
|
||||
);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
function getVenvPath(
|
||||
workingDirectory: string,
|
||||
activateEnvironment: boolean,
|
||||
@@ -121,7 +153,7 @@ function getVenvPath(
|
||||
const venvPathInput = core.getInput("venv-path");
|
||||
if (venvPathInput !== "") {
|
||||
if (!activateEnvironment) {
|
||||
core.warning("venv-path is only used when activate-environment is true");
|
||||
log.warning("venv-path is only used when activate-environment is true");
|
||||
}
|
||||
const tildeExpanded = expandTilde(venvPathInput);
|
||||
return normalizePath(resolveRelativePath(workingDirectory, tildeExpanded));
|
||||
@@ -132,7 +164,27 @@ function getVenvPath(
|
||||
function getEnableCache(): boolean {
|
||||
const enableCacheInput = core.getInput("enable-cache");
|
||||
if (enableCacheInput === "auto") {
|
||||
return process.env.RUNNER_ENVIRONMENT === "github-hosted";
|
||||
if (process.env.RUNNER_ENVIRONMENT !== "github-hosted") {
|
||||
return false;
|
||||
}
|
||||
|
||||
const eventName = process.env.GITHUB_EVENT_NAME;
|
||||
const isTagPush =
|
||||
eventName === "push" && process.env.GITHUB_REF?.startsWith("refs/tags/");
|
||||
if (isTagPush) {
|
||||
log.info("Caching is disabled for tag pushes");
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
eventName === "pull_request_target" ||
|
||||
eventName === "workflow_run" ||
|
||||
eventName === "release"
|
||||
) {
|
||||
log.info(`Caching is disabled for the ${eventName} event`);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
return enableCacheInput === "true";
|
||||
}
|
||||
@@ -192,7 +244,7 @@ function getCacheLocalPath(
|
||||
return { path: cacheDirFromConfig, source: CacheLocalSource.Config };
|
||||
}
|
||||
if (process.env.UV_CACHE_DIR !== undefined) {
|
||||
core.info(`UV_CACHE_DIR is already set to ${process.env.UV_CACHE_DIR}`);
|
||||
log.info(`UV_CACHE_DIR is already set to ${process.env.UV_CACHE_DIR}`);
|
||||
return { path: process.env.UV_CACHE_DIR, source: CacheLocalSource.Env };
|
||||
}
|
||||
if (enableCache) {
|
||||
@@ -229,12 +281,12 @@ function getCacheDirFromConfig(
|
||||
try {
|
||||
const cacheDir = getConfigValueFromTomlFile(resolvedPath, "cache-dir");
|
||||
if (cacheDir !== undefined) {
|
||||
core.info(`Found cache-dir in ${resolvedPath}: ${cacheDir}`);
|
||||
log.info(`Found cache-dir in ${resolvedPath}: ${cacheDir}`);
|
||||
return cacheDir;
|
||||
}
|
||||
} catch (err) {
|
||||
const message = (err as Error).message;
|
||||
core.warning(`Error while parsing ${filePath}: ${message}`);
|
||||
log.warning(`Error while parsing ${filePath}: ${message}`);
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
@@ -243,7 +295,7 @@ function getCacheDirFromConfig(
|
||||
|
||||
export function getUvPythonDir(): string {
|
||||
if (process.env.UV_PYTHON_INSTALL_DIR !== undefined) {
|
||||
core.info(
|
||||
log.info(
|
||||
`UV_PYTHON_INSTALL_DIR is already set to ${process.env.UV_PYTHON_INSTALL_DIR}`,
|
||||
);
|
||||
return process.env.UV_PYTHON_INSTALL_DIR;
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import * as core from "@actions/core";
|
||||
|
||||
let quiet: boolean | undefined;
|
||||
|
||||
function isQuiet(): boolean {
|
||||
if (quiet === undefined) {
|
||||
quiet =
|
||||
typeof core.getInput === "function" && core.getInput("quiet") === "true";
|
||||
}
|
||||
return quiet;
|
||||
}
|
||||
|
||||
export function info(msg: string): void {
|
||||
if (!isQuiet()) {
|
||||
core.info(msg);
|
||||
}
|
||||
}
|
||||
|
||||
export const warning = core.warning;
|
||||
export const error = core.error;
|
||||
export const debug = core.debug;
|
||||
+17
-1
@@ -102,6 +102,7 @@ export function getOSNameVersion(): string {
|
||||
|
||||
function getLinuxOSNameVersion(): string {
|
||||
const files = ["/etc/os-release", "/usr/lib/os-release"];
|
||||
let idWithoutVersion: string | undefined;
|
||||
|
||||
for (const file of files) {
|
||||
try {
|
||||
@@ -109,8 +110,9 @@ function getLinuxOSNameVersion(): string {
|
||||
const id = parseOsReleaseValue(content, "ID");
|
||||
const versionId = parseOsReleaseValue(content, "VERSION_ID");
|
||||
// Fallback for rolling releases (debian:unstable/testing, arch, etc.)
|
||||
// that don't have VERSION_ID but have VERSION_CODENAME
|
||||
// that don't have VERSION_ID but have VERSION_CODENAME or BUILD_ID
|
||||
const versionCodename = parseOsReleaseValue(content, "VERSION_CODENAME");
|
||||
const buildId = parseOsReleaseValue(content, "BUILD_ID");
|
||||
|
||||
if (id && versionId) {
|
||||
return `${id}-${versionId}`;
|
||||
@@ -118,11 +120,25 @@ function getLinuxOSNameVersion(): string {
|
||||
if (id && versionCodename) {
|
||||
return `${id}-${versionCodename}`;
|
||||
}
|
||||
if (id && buildId) {
|
||||
return `${id}-${buildId}`;
|
||||
}
|
||||
// Remember the ID but keep looking: the next file might still
|
||||
// provide a version field
|
||||
if (id && idWithoutVersion === undefined) {
|
||||
idWithoutVersion = id;
|
||||
}
|
||||
} catch {
|
||||
// Try next file
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback for rolling releases (e.g. void) that have no version
|
||||
// field at all
|
||||
if (idWithoutVersion) {
|
||||
return idWithoutVersion;
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
"Failed to determine Linux distribution. " +
|
||||
"Could not read /etc/os-release or /usr/lib/os-release",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import fs from "node:fs";
|
||||
import * as core from "@actions/core";
|
||||
import { getConfigValueFromTomlContent } from "../utils/config-file";
|
||||
import * as log from "../utils/logging";
|
||||
import {
|
||||
getUvVersionFromParsedPyproject,
|
||||
getUvVersionFromRequirementsText,
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
import { normalizeVersionSpecifier } from "./specifier";
|
||||
import { getUvVersionFromToolVersions } from "./tool-versions-file";
|
||||
import type { ParsedVersionFile, VersionFileFormat } from "./types";
|
||||
import { getUvVersionFromUvLock } from "./uv-lock-file";
|
||||
|
||||
interface VersionFileParser {
|
||||
format: VersionFileFormat;
|
||||
@@ -49,6 +50,11 @@ const VERSION_FILE_PARSERS: VersionFileParser[] = [
|
||||
},
|
||||
supports: (filePath) => filePath.endsWith("pyproject.toml"),
|
||||
},
|
||||
{
|
||||
format: "uv.lock",
|
||||
parse: (filePath) => getUvVersionFromUvLock(filePath),
|
||||
supports: (filePath) => filePath.endsWith("uv.lock"),
|
||||
},
|
||||
{
|
||||
format: "requirements",
|
||||
parse: (filePath) => {
|
||||
@@ -62,10 +68,10 @@ const VERSION_FILE_PARSERS: VersionFileParser[] = [
|
||||
export function getParsedVersionFile(
|
||||
filePath: string,
|
||||
): ParsedVersionFile | undefined {
|
||||
core.info(`Trying to find version for uv in: ${filePath}`);
|
||||
log.info(`Trying to find version for uv in: ${filePath}`);
|
||||
|
||||
if (!fs.existsSync(filePath)) {
|
||||
core.info(`Could not find file: ${filePath}`);
|
||||
log.info(`Could not find file: ${filePath}`);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
@@ -81,15 +87,13 @@ export function getParsedVersionFile(
|
||||
}
|
||||
|
||||
const normalizedSpecifier = normalizeVersionSpecifier(specifier);
|
||||
core.info(`Found version for uv in ${filePath}: ${normalizedSpecifier}`);
|
||||
log.info(`Found version for uv in ${filePath}: ${normalizedSpecifier}`);
|
||||
return {
|
||||
format: parser.format,
|
||||
specifier: normalizedSpecifier,
|
||||
};
|
||||
} catch (error) {
|
||||
core.warning(
|
||||
`Error while parsing ${filePath}: ${(error as Error).message}`,
|
||||
);
|
||||
log.warning(`Error while parsing ${filePath}: ${(error as Error).message}`);
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,11 @@ function getUvVersionFromAllDependencies(
|
||||
allDependencies: string[],
|
||||
): string | undefined {
|
||||
return allDependencies
|
||||
.find((dep: string) => dep.match(/^uv[=<>~!]/))
|
||||
?.match(/^uv([=<>~!]+\S*)/)?.[1]
|
||||
.trim();
|
||||
.map(getUvVersionFromDependency)
|
||||
.find((version): version is string => version !== undefined);
|
||||
}
|
||||
|
||||
function getUvVersionFromDependency(dependency: string): string | undefined {
|
||||
const dependencyWithoutMarker = dependency.split(";", 1)[0]?.trim();
|
||||
return dependencyWithoutMarker?.match(/^uv([=<>~!]+\S*)/)?.[1].trim();
|
||||
}
|
||||
|
||||
+62
-9
@@ -2,8 +2,15 @@ import * as core from "@actions/core";
|
||||
import * as tc from "@actions/tool-cache";
|
||||
import * as pep440 from "@renovatebot/pep440";
|
||||
import * as semver from "semver";
|
||||
import { getAllVersions, getLatestVersion } from "../download/manifest";
|
||||
import { getLatestKnownVersion } from "../download/checksum/known-version";
|
||||
import {
|
||||
getAllVersions,
|
||||
getFirstMatchingVersion,
|
||||
getLatestVersion,
|
||||
} from "../download/manifest";
|
||||
import { VERSIONS_MANIFEST_URL } from "../utils/constants";
|
||||
import type { ResolutionStrategy } from "../utils/inputs";
|
||||
import * as log from "../utils/logging";
|
||||
import {
|
||||
type ParsedVersionSpecifier,
|
||||
parseVersionSpecifier,
|
||||
@@ -56,7 +63,7 @@ class LatestVersionResolver implements ConcreteVersionResolver {
|
||||
context.parsedSpecifier.kind === "range" &&
|
||||
context.parsedSpecifier.isSimpleMinimumVersionSpecifier
|
||||
) {
|
||||
core.info("Found minimum version specifier, using latest version");
|
||||
log.info("Found minimum version specifier, using latest version");
|
||||
}
|
||||
|
||||
const latestVersion = await getLatestVersion(context.manifestUrl);
|
||||
@@ -81,13 +88,26 @@ class RangeVersionResolver implements ConcreteVersionResolver {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const availableVersions = await getAllVersions(context.manifestUrl);
|
||||
core.debug(`Available versions: ${availableVersions}`);
|
||||
|
||||
const resolvedVersion =
|
||||
context.resolutionStrategy === "lowest"
|
||||
? minSatisfying(availableVersions, context.parsedSpecifier.normalized)
|
||||
: maxSatisfying(availableVersions, context.parsedSpecifier.normalized);
|
||||
let resolvedVersion: string | undefined;
|
||||
if (
|
||||
context.resolutionStrategy === "highest" &&
|
||||
(context.manifestUrl === undefined ||
|
||||
context.manifestUrl === VERSIONS_MANIFEST_URL)
|
||||
) {
|
||||
resolvedVersion = await findHighestSatisfyingVersion(
|
||||
context.parsedSpecifier.normalized,
|
||||
);
|
||||
} else {
|
||||
const availableVersions = await getAllVersions(context.manifestUrl);
|
||||
core.debug(`Available versions: ${availableVersions}`);
|
||||
resolvedVersion =
|
||||
context.resolutionStrategy === "lowest"
|
||||
? minSatisfying(availableVersions, context.parsedSpecifier.normalized)
|
||||
: maxSatisfying(
|
||||
availableVersions,
|
||||
context.parsedSpecifier.normalized,
|
||||
);
|
||||
}
|
||||
|
||||
if (resolvedVersion === undefined) {
|
||||
throw new Error(`No version found for ${context.parsedSpecifier.raw}`);
|
||||
@@ -124,6 +144,10 @@ export async function resolveVersion(
|
||||
): Promise<string> {
|
||||
core.debug(`Resolving version: ${versionInput}`);
|
||||
|
||||
if (versionInput.trim() === "latest-known") {
|
||||
return getLatestKnownVersion();
|
||||
}
|
||||
|
||||
const context: ConcreteVersionResolutionContext = {
|
||||
manifestUrl,
|
||||
parsedSpecifier: parseVersionSpecifier(versionInput),
|
||||
@@ -140,6 +164,35 @@ export async function resolveVersion(
|
||||
throw new Error(`No version found for ${versionInput}`);
|
||||
}
|
||||
|
||||
async function findHighestSatisfyingVersion(
|
||||
versionSpecifier: string,
|
||||
): Promise<string | undefined> {
|
||||
// This fast path assumes uv releases are semver-monotonic: newer manifest
|
||||
// entries always have higher versions, with no lower-version backports.
|
||||
const semverRange = semver.validRange(versionSpecifier);
|
||||
if (semverRange !== null) {
|
||||
const semverMatch = await getFirstMatchingVersion((version) =>
|
||||
semver.satisfies(version, semverRange),
|
||||
);
|
||||
if (semverMatch !== undefined) {
|
||||
core.debug(
|
||||
`Found a version that satisfies the semver range: ${semverMatch}`,
|
||||
);
|
||||
return semverMatch;
|
||||
}
|
||||
}
|
||||
|
||||
const pep440Match = await getFirstMatchingVersion((version) =>
|
||||
pep440.satisfies(version, versionSpecifier),
|
||||
);
|
||||
if (pep440Match !== undefined) {
|
||||
core.debug(
|
||||
`Found a version that satisfies the pep440 specifier: ${pep440Match}`,
|
||||
);
|
||||
}
|
||||
return pep440Match;
|
||||
}
|
||||
|
||||
function maxSatisfying(
|
||||
versions: string[],
|
||||
version: string,
|
||||
|
||||
@@ -4,28 +4,83 @@ import * as core from "@actions/core";
|
||||
export function getUvVersionFromToolVersions(
|
||||
filePath: string,
|
||||
): string | undefined {
|
||||
const versions = getToolVersions(filePath, "uv");
|
||||
if (versions === undefined || versions.length !== 1) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const version = stripVersionPrefix(versions[0]);
|
||||
if (isPath(version)) {
|
||||
core.warning(
|
||||
`The uv version ${versions[0]} in .tool-versions is not supported. Paths are not allowed.`,
|
||||
);
|
||||
return undefined;
|
||||
}
|
||||
if (version.startsWith("ref")) {
|
||||
core.warning(
|
||||
"The ref syntax of .tool-versions is not supported. Please use a released version instead.",
|
||||
);
|
||||
return undefined;
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
export function getPythonVersionFromToolVersions(
|
||||
filePath: string,
|
||||
): string | undefined {
|
||||
const versions = getToolVersions(filePath, "python");
|
||||
if (versions === undefined || versions.length === 0) {
|
||||
return undefined;
|
||||
}
|
||||
if (versions.length > 1) {
|
||||
core.warning(
|
||||
"Multiple Python versions in .tool-versions are not supported. The Python entry will be ignored.",
|
||||
);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const version = stripVersionPrefix(versions[0]);
|
||||
if (
|
||||
version === "system" ||
|
||||
version.startsWith("ref:") ||
|
||||
version.startsWith("path:") ||
|
||||
isPath(version)
|
||||
) {
|
||||
core.warning(
|
||||
`The Python version ${versions[0]} in .tool-versions is not supported. The Python entry will be ignored.`,
|
||||
);
|
||||
return undefined;
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
function getToolVersions(
|
||||
filePath: string,
|
||||
toolName: string,
|
||||
): string[] | undefined {
|
||||
if (!filePath.endsWith(".tool-versions")) {
|
||||
return undefined;
|
||||
}
|
||||
const fileContents = fs.readFileSync(filePath, "utf8");
|
||||
const lines = fileContents.split("\n");
|
||||
|
||||
for (const line of lines) {
|
||||
// Skip commented lines
|
||||
if (line.trim().startsWith("#")) {
|
||||
for (const line of fileContents.split("\n")) {
|
||||
const content = line.split("#", 1)[0].trim();
|
||||
if (content === "") {
|
||||
continue;
|
||||
}
|
||||
const match = line.match(/^\s*uv\s*v?\s*(?<version>[^\s]+)\s*$/);
|
||||
if (match) {
|
||||
const matchedVersion = match.groups?.version.trim();
|
||||
if (matchedVersion?.startsWith("ref")) {
|
||||
core.warning(
|
||||
"The ref syntax of .tool-versions is not supported. Please use a released version instead.",
|
||||
);
|
||||
return undefined;
|
||||
}
|
||||
return matchedVersion;
|
||||
|
||||
const [tool, ...versions] = content.split(/\s+/);
|
||||
if (tool === toolName) {
|
||||
return versions;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function stripVersionPrefix(version: string): string {
|
||||
return version.startsWith("v") ? version.slice(1) : version;
|
||||
}
|
||||
|
||||
function isPath(version: string): boolean {
|
||||
return version.includes("/") || version.includes("\\");
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ export type VersionFileFormat =
|
||||
| ".tool-versions"
|
||||
| "pyproject.toml"
|
||||
| "requirements"
|
||||
| "uv.lock"
|
||||
| "uv.toml";
|
||||
|
||||
export interface ParsedVersionFile {
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
import fs from "node:fs";
|
||||
import * as toml from "smol-toml";
|
||||
|
||||
interface UvLockPackage {
|
||||
name?: string;
|
||||
version?: string;
|
||||
}
|
||||
|
||||
interface UvLock {
|
||||
package?: UvLockPackage[];
|
||||
}
|
||||
|
||||
export function getUvVersionFromUvLock(filePath: string): string | undefined {
|
||||
const fileContent = fs.readFileSync(filePath, "utf-8");
|
||||
return getUvVersionFromUvLockContent(fileContent);
|
||||
}
|
||||
|
||||
export function getUvVersionFromUvLockContent(
|
||||
fileContent: string,
|
||||
): string | undefined {
|
||||
const parsed = toml.parse(fileContent) as UvLock;
|
||||
const uvPackage = parsed.package?.find((pkg) => pkg.name === "uv");
|
||||
return uvPackage?.version;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as path from "node:path";
|
||||
import * as core from "@actions/core";
|
||||
import * as log from "../utils/logging";
|
||||
import { getParsedVersionFile } from "./file-parser";
|
||||
import { normalizeVersionSpecifier } from "./specifier";
|
||||
import type {
|
||||
@@ -111,7 +111,7 @@ export class WorkspaceVersionResolver implements VersionRequestResolver {
|
||||
};
|
||||
}
|
||||
|
||||
core.info(
|
||||
log.info(
|
||||
"Could not determine uv version from uv.toml or pyproject.toml. Falling back to latest.",
|
||||
);
|
||||
return undefined;
|
||||
|
||||
Reference in New Issue
Block a user