Compare commits

..

42 Commits

Author SHA1 Message Date
Kevin Stillhammer
cd4ccfa557 Add FAQ on changed cache and cache upload behavior 2025-07-05 11:51:29 +02:00
Kevin Stillhammer
8021b967f0 Do not warn when version not in manifest-file
This will spam the GitHub summary with warnings as soon as a new version is released and no new setup-uv version containing this version in the distributed manifest-file is released
2025-06-25 09:21:00 +02:00
github-actions[bot]
c6a5ebaafe chore: update known versions for 0.7.14 (#459)
chore: update known versions for 0.7.14

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-24 09:53:39 +00:00
Kevin Stillhammer
790df8f465 Revert "Set expected cache dir drive to C: on windows (#451)" (#460)
This reverts commit 60ecb381b4.
2025-06-24 11:16:40 +02:00
Kevin Stillhammer
445689ea25 Use latest version from manifest-file (#458)
If a manifest-file is supplied the default value of the version input
(latest) will get the latest version available in the manifest. That
might not be the actual latest version available in the official uv
repo.
2025-06-19 21:23:43 +02:00
Kevin Stillhammer
a02a550bdd Look for version-manifest.json relative to action path (#456)
Fixes: #455
2025-06-18 23:09:13 +02:00
Kevin Stillhammer
60cc2b4585 Add input manifest-file (#454)
Adds capability to maintain custom uv builds or to override the default
sources
2025-06-18 20:33:20 +00:00
github-actions[bot]
7bbb36f434 chore: update known versions for 0.7.13 and 0.7.12 (#444)
chore: update known versions for 0.7.13

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-17 07:48:33 +00:00
Kevin Stillhammer
60ecb381b4 Set expected cache dir drive to C: on windows (#451)
Seems like the temp folder got moved to the C: drive
2025-06-17 09:40:23 +02:00
github-actions[bot]
252c995424 chore: update known versions for 0.7.11 (#442)
chore: update known versions for 0.7.11

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-05 06:15:21 +00:00
github-actions[bot]
477a814f2d chore: update known versions for 0.7.10 (#440)
chore: update known versions for 0.7.10

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-04 06:19:09 +00:00
Zanie Blue
9b19f8f4b1 Add warning about shadowed uv binaries to activate-environment (#439)
Closes https://github.com/astral-sh/uv/issues/13785
2025-06-03 19:44:51 +02:00
github-actions[bot]
d44461ea9f chore: update known versions for 0.7.9 (#437)
chore: update known versions for 0.7.9

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-31 20:07:33 +00:00
Kevin Stillhammer
c19c1b1ffd Check that all jobs are in all-tests-passed.needs (#432) 2025-05-27 18:25:00 +02:00
github-actions[bot]
f3121ef80e chore: update known versions for 0.7.8 (#428)
chore: update known versions for 0.7.8

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-24 06:07:37 +00:00
Kevin Stillhammer
f0ec1fc3b3 Bump dependencies (#424) 2025-05-23 09:57:11 +02:00
Kevin Stillhammer
e3d2ea5ff3 Purge cache in cache key (#423)
Fixes: #416
2025-05-23 09:43:52 +02:00
github-actions[bot]
b3d7ca7ac0 chore: update known versions for 0.7.7 (#422)
chore: update known versions for 0.7.7

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-23 07:26:41 +00:00
Zoupers Zou
0e0f4bfefa feat: support custom github url (#414)
Fix #344
2025-05-20 19:36:07 +02:00
github-actions[bot]
71bb8825e4 chore: update known versions for 0.7.6 (#415)
chore: update known versions for 0.7.6

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-20 07:10:46 +00:00
github-actions[bot]
1417e89049 chore: update known versions for 0.7.5 (#412)
chore: update known versions for 0.7.5

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-18 10:05:47 +02:00
github-actions[bot]
1761eea391 chore: update known versions for 0.7.4 (#410)
chore: update known versions for 0.7.4

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-16 05:15:44 +00:00
github-actions[bot]
9864bc9c96 chore: update known versions for 0.7.3 (#405)
chore: update known versions for 0.7.3

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-08 08:18:23 +00:00
Kevin Stillhammer
0e9cccb4b0 Fix path to known-checksums.ts (#404) 2025-05-08 09:37:11 +02:00
dependabot[bot]
b6f9e9c734 Bump typescript from 5.8.2 to 5.8.3 (#393)
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.8.2
to 5.8.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/microsoft/TypeScript/releases">typescript's
releases</a>.</em></p>
<blockquote>
<h2>TypeScript 5.8.3</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/">release
announcement</a>.</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.8.0%22+is%3Aclosed+">fixed
issues query for Typescript 5.8.0 (Beta)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.8.1%22+is%3Aclosed+">fixed
issues query for Typescript 5.8.1 (RC)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.8.2%22+is%3Aclosed+">fixed
issues query for Typescript 5.8.2 (Stable)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.8.3%22+is%3Aclosed+">fixed
issues query for Typescript 5.8.3 (Stable)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/typescript">npm</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="83dc0bb2ed"><code>83dc0bb</code></a>
Convert release publishing inputs into parameters (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61523">#61523</a>)</li>
<li><a
href="ba663f6ac2"><code>ba663f6</code></a>
Exclude completions of binding pattern variable initializers (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/52723">#52723</a>)</li>
<li><a
href="7205eda454"><code>7205eda</code></a>
Bump github/codeql-action from 3.28.12 to 3.28.13 in the github-actions
group...</li>
<li><a
href="89c572ca0c"><code>89c572c</code></a>
Fixed a symbol display crash on expando members write locations (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/55478">#55478</a>)</li>
<li><a
href="7b26d2eba5"><code>7b26d2e</code></a>
Fix incorrect name in new release pipeline (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61514">#61514</a>)</li>
<li><a
href="c7a559eeae"><code>c7a559e</code></a>
Add new release publisher yaml (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61491">#61491</a>)</li>
<li><a
href="29e6d6689d"><code>29e6d66</code></a>
Fix <code>lib.includes('dom')</code> check in
<code>containerSeemsToBeEmptyDomElement</code> (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61481">#61481</a>)</li>
<li><a
href="19b777260b"><code>19b7772</code></a>
Bump the github-actions group with 4 updates (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61474">#61474</a>)</li>
<li><a
href="4dc677b292"><code>4dc677b</code></a>
Fix errors on type assertions in erasableSyntaxOnly (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61452">#61452</a>)</li>
<li><a
href="ee3dd7264b"><code>ee3dd72</code></a>
fix(60908): Unexpected &quot;'Type' is declared but its value is never
read.&quot; erro...</li>
<li>Additional commits viewable in <a
href="https://github.com/microsoft/TypeScript/compare/v5.8.2...v5.8.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typescript&package-manager=npm_and_yarn&previous-version=5.8.2&new-version=5.8.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-05 07:44:49 +02:00
Kevin Stillhammer
b87cce2fc5 Fix update-known-versions workflow argument (#401)
Use version-manifest.json instead of .ts
2025-05-04 07:10:02 +00:00
Kevin Stillhammer
9641fcd493 Fix update-known-versions workflow (#400)
Add missing argument versionsManifestFilePath
2025-05-04 09:01:52 +02:00
Kevin Stillhammer
a4f1f549e9 Create version-manifest.json on uv release (#399) 2025-05-03 19:51:16 +02:00
Nick Sweeting
023b8ec2bc Add section to README explaining if packages are installed by setup-uv (#398)
Fixes #397
2025-05-03 17:41:06 +00:00
Kevin Stillhammer
ced7c1dde4 Run infrastructure workflows on arm runners (#396)
Use more efficient runners to save resources. Every bit counts.
2025-05-01 20:22:40 +02:00
github-actions[bot]
41bd088443 chore: update known checksums for 0.7.2 (#395)
chore: update known checksums for 0.7.2

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-01 07:04:31 +00:00
github-actions[bot]
75567654b6 chore: update known checksums for 0.7.0 (#390)
chore: update known checksums for 0.7.0

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-04-30 08:25:31 +02:00
Kevin Stillhammer
6b9c6063ab Bump dependencies (#389) 2025-04-29 22:50:17 +02:00
Kevin Stillhammer
ef6bcdff59 Fix default cache dependency glob (#388)
The new default in v6 used illegal patterns and therefore didn't match
requirements files

Fixes: #385
2025-04-29 22:42:06 +02:00
github-actions[bot]
9a311713f4 chore: update known checksums for 0.6.17 (#384)
chore: update known checksums for 0.6.17

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-04-25 19:04:33 +00:00
Kevin Stillhammer
c7f87aa956 bump to v6 in README (#382) 2025-04-24 15:29:56 +02:00
Kevin Stillhammer
aadfaf08d6 Change default cache-dependency-glob (#352)
To support more users by default we should support popular dependency
file formats. A quick GitHub search shows ~40k uses of `constraint.txt`
and ~16k uses of `requirements.in`.

Closes: #261
2025-04-24 15:18:27 +02:00
Kevin Stillhammer
a0f9da6273 No default UV_CACHE_DIR on selfhosted runners (#380)
Closes: #371
2025-04-24 15:17:56 +02:00
Kevin Stillhammer
ec4c691628 new inputs activate-environment and working-directory (#381)
venv activation was implicit when python-version was supplied. This now
only happens when activate-environment is true. working-directory
controls where we work and thus also where the .venv will be created

Closes: #351
Closes: #271
Closes: #251
Closes: #211
2025-04-24 15:17:35 +02:00
github-actions[bot]
aa1290542e chore: update known checksums for 0.6.16 (#378)
chore: update known checksums for 0.6.16

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-04-22 07:39:59 +00:00
github-actions[bot]
fcaddda076 chore: update known checksums for 0.6.15 (#377)
chore: update known checksums for 0.6.15

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-04-22 06:20:07 +00:00
Kevin Stillhammer
fb3a0a97fa log info on venv activation (#375)
Make sure we get more info by default instead of just exiting with 1
Contributes to: #374
2025-04-17 21:02:21 +02:00
27 changed files with 25790 additions and 1207 deletions

View File

@@ -19,7 +19,7 @@ categories:
labels: labels:
- "maintenance" - "maintenance"
- "ci" - "ci"
- "update-known-checksums" - "update-known-versions"
- title: "📚 Documentation" - title: "📚 Documentation"
labels: labels:
- "documentation" - "documentation"

View File

@@ -0,0 +1,35 @@
import * as fs from "node:fs";
import * as yaml from "js-yaml";
interface WorkflowJob {
needs?: string[];
[key: string]: unknown;
}
interface Workflow {
jobs: Record<string, WorkflowJob>;
[key: string]: unknown;
}
const workflow = yaml.load(
fs.readFileSync("../workflows/test.yml", "utf8"),
) as Workflow;
const jobs = Object.keys(workflow.jobs);
const allTestsPassed = workflow.jobs["all-tests-passed"];
const needs: string[] = allTestsPassed.needs || [];
const expectedNeeds = jobs.filter((j) => j !== "all-tests-passed");
const missing = expectedNeeds.filter((j) => !needs.includes(j));
if (missing.length > 0) {
console.error(
`Missing jobs in all-tests-passed needs: ${missing.join(", ")}`,
);
console.info(
"Please add the missing jobs to the needs section of all-tests-passed in test.yml.",
);
process.exit(1);
}
console.log(
"All jobs in test.yml are in the needs section of all-tests-passed.",
);

View File

@@ -11,7 +11,7 @@ on:
jobs: jobs:
update_release_draft: update_release_draft:
name: ✏️ Draft release name: ✏️ Draft release
runs-on: ubuntu-latest runs-on: ubuntu-24.04-arm
permissions: permissions:
contents: write contents: write
pull-requests: read pull-requests: read

View File

@@ -29,6 +29,11 @@ jobs:
npm install npm install
- run: | - run: |
npm run all npm run all
- name: Check all jobs are in all-tests-passed.needs
run: |
tsc check-all-tests-passed-needs.ts
node check-all-tests-passed-needs.js
working-directory: .github/scripts
- name: Make sure no changes from linters are detected - name: Make sure no changes from linters are detected
run: | run: |
git diff --exit-code || (echo "::error::Please run 'npm run all' to fix the issues" && exit 1) git diff --exit-code || (echo "::error::Please run 'npm run all' to fix the issues" && exit 1)
@@ -115,7 +120,7 @@ jobs:
id: setup-uv id: setup-uv
uses: ./ uses: ./
with: with:
pyproject-file: "__tests__/fixtures/pyproject-toml-project/pyproject.toml" working-directory: "__tests__/fixtures/pyproject-toml-project"
- name: Correct version gets installed - name: Correct version gets installed
run: | run: |
if [ "$(uv --version)" != "uv 0.5.14" ]; then if [ "$(uv --version)" != "uv 0.5.14" ]; then
@@ -131,9 +136,8 @@ jobs:
id: setup-uv id: setup-uv
uses: ./ uses: ./
with: with:
pyproject-file: "__tests__/fixtures/malformed-pyproject-toml-project/pyproject.toml" working-directory: "__tests__/fixtures/malformed-pyproject-toml-project"
- run: uv sync - run: uv --help
working-directory: __tests__/fixtures/uv-project
test-uv-file-version: test-uv-file-version:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -143,8 +147,7 @@ jobs:
id: setup-uv id: setup-uv
uses: ./ uses: ./
with: with:
pyproject-file: "__tests__/fixtures/uv-toml-project/pyproject.toml" working-directory: "__tests__/fixtures/uv-toml-project"
uv-file: "__tests__/fixtures/uv-toml-project/uv.toml"
- name: Correct version gets installed - name: Correct version gets installed
run: | run: |
if [ "$(uv --version)" != "uv 0.5.15" ]; then if [ "$(uv --version)" != "uv 0.5.15" ]; then
@@ -229,7 +232,7 @@ jobs:
fi fi
test-python-version: test-python-version:
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [ubuntu-latest, macos-latest, windows-latest] os: [ubuntu-latest, macos-latest, windows-latest]
@@ -246,8 +249,23 @@ jobs:
exit 1 exit 1
fi fi
shell: bash shell: bash
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-activate-environment:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
steps:
- uses: actions/checkout@v4
- name: Install latest version
uses: ./
with:
python-version: 3.13.1t
activate-environment: true
- name: Verify packages can be installed - name: Verify packages can be installed
run: uv pip install --python=3.13.1t pip run: uv pip install pip
shell: bash shell: bash
- name: Verify python version is correct - name: Verify python version is correct
run: | run: |
@@ -397,6 +415,30 @@ jobs:
env: env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
test-cache-local:
strategy:
matrix:
inputs:
- os: ubuntu-latest
expected-cache-dir: "/home/runner/work/_temp/setup-uv-cache"
- os: windows-latest
expected-cache-dir: "D:\\a\\_temp\\setup-uv-cache"
- os: selfhosted-ubuntu-arm64
expected-cache-dir: "/home/ubuntu/.cache/uv"
runs-on: ${{ matrix.inputs.os }}
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-cache-local
- run: |
if [ "$UV_CACHE_DIR" != "${{ matrix.inputs.expected-cache-dir }}" ]; then
echo "UV_CACHE_DIR is not set to the expected value: $UV_CACHE_DIR"
exit 1
fi
shell: bash
test-setup-cache-local: test-setup-cache-local:
runs-on: selfhosted-ubuntu-arm64 runs-on: selfhosted-ubuntu-arm64
steps: steps:
@@ -491,6 +533,23 @@ jobs:
- run: uv sync - run: uv sync
working-directory: __tests__/fixtures/old-python-constraint-project working-directory: __tests__/fixtures/old-python-constraint-project
test-custom-manifest-file:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install from custom manifest file
uses: ./
with:
manifest-file: "https://raw.githubusercontent.com/astral-sh/setup-uv/${{ github.ref }}/__tests__/download/custom-manifest.json"
- run: uv sync
working-directory: __tests__/fixtures/uv-project
- name: Correct version gets installed
run: |
if [ "$(uv --version)" != "uv 0.7.12-alpha.1" ]; then
echo "Wrong uv version: $(uv --version)"
exit 1
fi
all-tests-passed: all-tests-passed:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: needs:
@@ -508,15 +567,22 @@ jobs:
- test-tool-install - test-tool-install
- test-tilde-expansion-tool-dirs - test-tilde-expansion-tool-dirs
- test-python-version - test-python-version
- test-activate-environment
- test-musl - test-musl
- test-cache-local
- test-setup-cache
- test-restore-cache - test-restore-cache
- test-setup-cache-requirements-txt
- test-restore-cache-requirements-txt - test-restore-cache-requirements-txt
- test-setup-cache-dependency-glob
- test-restore-cache-dependency-glob - test-restore-cache-dependency-glob
- test-setup-cache-local
- test-restore-cache-local - test-restore-cache-local
- test-tilde-expansion-cache-local-path - test-tilde-expansion-cache-local-path
- test-tilde-expansion-cache-dependency-glob - test-tilde-expansion-cache-dependency-glob
- cleanup-tilde-expansion-tests - cleanup-tilde-expansion-tests
- test-no-python-version - test-no-python-version
- test-custom-manifest-file
if: always() if: always()
steps: steps:
- name: All tests passed - name: All tests passed

View File

@@ -1,37 +0,0 @@
name: "Update known checksums"
on:
workflow_dispatch:
schedule:
- cron: "0 4 * * *" # Run every day at 4am UTC
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- name: Update known checksums
id: update-known-checksums
run:
node dist/update-known-checksums/index.js
src/download/checksum/known-checksums.ts ${{ secrets.GITHUB_TOKEN }}
- run: npm install && npm run all
- name: Create Pull Request
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
commit-message: "chore: update known checksums"
title:
"chore: update known checksums for ${{
steps.update-known-checksums.outputs.latest-version }}"
body:
"chore: update known checksums for ${{
steps.update-known-checksums.outputs.latest-version }}"
base: main
labels: "automated-pr,update-known-checksums"
branch: update-known-checksums-pr
delete-branch: true

View File

@@ -0,0 +1,39 @@
name: "Update known versions"
on:
workflow_dispatch:
schedule:
- cron: "0 4 * * *" # Run every day at 4am UTC
jobs:
build:
runs-on: ubuntu-24.04-arm
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- name: Update known versions
id: update-known-versions
run:
node dist/update-known-versions/index.js
src/download/checksum/known-checksums.ts
version-manifest.json
${{ secrets.GITHUB_TOKEN }}
- run: npm install && npm run all
- name: Create Pull Request
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
commit-message: "chore: update known versions"
title:
"chore: update known versions for ${{
steps.update-known-versions.outputs.latest-version }}"
body:
"chore: update known versions for ${{
steps.update-known-versions.outputs.latest-version }}"
base: main
labels: "automated-pr,update-known-versions"
branch: update-known-versions-pr
delete-branch: true

View File

@@ -11,7 +11,7 @@ on:
jobs: jobs:
update_major_minor_tags: update_major_minor_tags:
name: Make sure major and minor tags are up to date on a patch release name: Make sure major and minor tags are up to date on a patch release
runs-on: ubuntu-latest runs-on: ubuntu-24.04-arm
permissions: permissions:
contents: write contents: write
steps: steps:

185
README.md
View File

@@ -15,8 +15,9 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
- [Install the latest version](#install-the-latest-version) - [Install the latest version](#install-the-latest-version)
- [Install a specific version](#install-a-specific-version) - [Install a specific version](#install-a-specific-version)
- [Install a version by supplying a semver range or pep440 specifier](#install-a-version-by-supplying-a-semver-range-or-pep440-specifier) - [Install a version by supplying a semver range or pep440 specifier](#install-a-version-by-supplying-a-semver-range-or-pep440-specifier)
- [Install a required-version](#install-a-required-version)
- [Python version](#python-version) - [Python version](#python-version)
- [Activate environment](#activate-environment)
- [Working directory](#working-directory)
- [Validate checksum](#validate-checksum) - [Validate checksum](#validate-checksum)
- [Enable Caching](#enable-caching) - [Enable Caching](#enable-caching)
- [Cache dependency glob](#cache-dependency-glob) - [Cache dependency glob](#cache-dependency-glob)
@@ -27,6 +28,7 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
- [UV_TOOL_DIR](#uv_tool_dir) - [UV_TOOL_DIR](#uv_tool_dir)
- [UV_TOOL_BIN_DIR](#uv_tool_bin_dir) - [UV_TOOL_BIN_DIR](#uv_tool_bin_dir)
- [Tilde Expansion](#tilde-expansion) - [Tilde Expansion](#tilde-expansion)
- [Manifest file](#manifest-file)
- [How it works](#how-it-works) - [How it works](#how-it-works)
- [FAQ](#faq) - [FAQ](#faq)
@@ -36,7 +38,7 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
```yaml ```yaml
- name: Install the latest version of uv - name: Install the latest version of uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
``` ```
If you do not specify a version, this action will look for a [required-version](https://docs.astral.sh/uv/reference/settings/#required-version) If you do not specify a version, this action will look for a [required-version](https://docs.astral.sh/uv/reference/settings/#required-version)
@@ -49,7 +51,7 @@ For an example workflow, see
```yaml ```yaml
- name: Install the latest version of uv - name: Install the latest version of uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
version: "latest" version: "latest"
``` ```
@@ -58,7 +60,7 @@ For an example workflow, see
```yaml ```yaml
- name: Install a specific version of uv - name: Install a specific version of uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
version: "0.4.4" version: "0.4.4"
``` ```
@@ -71,57 +73,34 @@ to install the latest version that satisfies the range.
```yaml ```yaml
- name: Install a semver range of uv - name: Install a semver range of uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
version: ">=0.4.0" version: ">=0.4.0"
``` ```
```yaml ```yaml
- name: Pinning a minor version of uv - name: Pinning a minor version of uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
version: "0.4.x" version: "0.4.x"
``` ```
```yaml ```yaml
- name: Install a pep440-specifier-satisfying version of uv - name: Install a pep440-specifier-satisfying version of uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
version: ">=0.4.25,<0.5" version: ">=0.4.25,<0.5"
``` ```
### Install a required-version
You can specify a [required-version](https://docs.astral.sh/uv/reference/settings/#required-version)
in either a `uv.toml` or `pyproject.toml` file:
```yaml
- name: Install required-version defined in uv.toml
uses: astral-sh/setup-uv@v5
with:
uv-file: "path/to/uv.toml"
```
```yaml
- name: Install required-version defined in pyproject.toml
uses: astral-sh/setup-uv@v5
with:
pyproject-file: "path/to/pyproject.toml"
```
### Python version ### Python version
You can use the input `python-version` to You can use the input `python-version` to set the environment variable `UV_PYTHON` for the rest of your workflow
- set the environment variable `UV_PYTHON` for the rest of your workflow
- create a new virtual environment with the specified python version
- activate the virtual environment 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` and `.python-version`
```yaml ```yaml
- name: Install the latest version of uv and set the python version to 3.13t - name: Install the latest version of uv and set the python version to 3.13t
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
python-version: 3.13t python-version: 3.13t
- run: uv pip install --python=3.13t pip - run: uv pip install --python=3.13t pip
@@ -139,13 +118,51 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install the latest version of uv and set the python version - name: Install the latest version of uv and set the python version
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
- name: Test with python ${{ matrix.python-version }} - name: Test with python ${{ matrix.python-version }}
run: uv run --frozen pytest run: uv run --frozen pytest
``` ```
### Activate environment
You can set `activate-environment` to `true` to automatically activate a venv.
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@v6
with:
activate-environment: true
- run: uv pip install pip
```
> [!WARNING]
>
> Activating the environment adds your dependencies to the `PATH`, which could break some workflows.
> For example, if you have a dependency which requires uv, e.g., `hatch`, activating the
> environment will shadow the `uv` binary installed by this action and may result in a different uv
> version being used.
>
> We do not recommend using this setting for most use-cases. Instead, use `uv run` to execute
> commands in the environment.
### Working directory
You can set the working directory with the `working-directory` input.
This controls where we look for `pyproject.toml`, `uv.toml` and `.python-version` files
which are used to determine the version of uv and python to install.
It also controls where [the venv gets created](#activate-environment).
```yaml
- name: Install uv based on the config files in the working-directory
uses: astral-sh/setup-uv@v6
with:
working-directory: my/subproject/dir
```
### Validate checksum ### Validate checksum
You can specify a checksum to validate the downloaded executable. Checksums up to the default version You can specify a checksum to validate the downloaded executable. Checksums up to the default version
@@ -154,7 +171,7 @@ are automatically verified by this action. The sha256 hashes can be found on the
```yaml ```yaml
- name: Install a specific version and validate the checksum - name: Install a specific version and validate the checksum
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
version: "0.3.1" version: "0.3.1"
checksum: "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8" checksum: "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8"
@@ -176,7 +193,7 @@ You can optionally define a custom cache key suffix.
```yaml ```yaml
- name: Enable caching and define a custom cache key suffix - name: Enable caching and define a custom cache key suffix
id: setup-uv id: setup-uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
enable-cache: true enable-cache: true
cache-suffix: "optional-suffix" cache-suffix: "optional-suffix"
@@ -204,13 +221,17 @@ changes. If you use relative paths, they are relative to the repository root.
> The default is > The default is
> ```yaml > ```yaml
> cache-dependency-glob: | > cache-dependency-glob: |
> **/requirements*.txt > **/*requirements*.txt
> **/*requirements*.in
> **/*constraints*.txt
> **/*constraints*.in
> **/pyproject.toml
> **/uv.lock > **/uv.lock
> ``` > ```
```yaml ```yaml
- name: Define a cache dependency glob - name: Define a cache dependency glob
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
enable-cache: true enable-cache: true
cache-dependency-glob: "**/pyproject.toml" cache-dependency-glob: "**/pyproject.toml"
@@ -218,7 +239,7 @@ changes. If you use relative paths, they are relative to the repository root.
```yaml ```yaml
- name: Define a list of cache dependency globs - name: Define a list of cache dependency globs
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
enable-cache: true enable-cache: true
cache-dependency-glob: | cache-dependency-glob: |
@@ -228,7 +249,7 @@ changes. If you use relative paths, they are relative to the repository root.
```yaml ```yaml
- name: Define an absolute cache dependency glob - name: Define an absolute cache dependency glob
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
enable-cache: true enable-cache: true
cache-dependency-glob: "/tmp/my-folder/requirements*.txt" cache-dependency-glob: "/tmp/my-folder/requirements*.txt"
@@ -236,7 +257,7 @@ changes. If you use relative paths, they are relative to the repository root.
```yaml ```yaml
- name: Never invalidate the cache - name: Never invalidate the cache
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
enable-cache: true enable-cache: true
cache-dependency-glob: "" cache-dependency-glob: ""
@@ -251,7 +272,7 @@ It defaults to `setup-uv-cache` in the `TMP` dir, `D:\a\_temp\uv-tool-dir` on Wi
```yaml ```yaml
- name: Define a custom uv cache path - name: Define a custom uv cache path
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
cache-local-path: "/path/to/cache" cache-local-path: "/path/to/cache"
``` ```
@@ -270,7 +291,7 @@ input.
```yaml ```yaml
- name: Don't prune the cache before saving it - name: Don't prune the cache before saving it
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
enable-cache: true enable-cache: true
prune-cache: false prune-cache: false
@@ -283,7 +304,7 @@ If you want to ignore this, set the `ignore-nothing-to-cache` input to `true`.
```yaml ```yaml
- name: Ignore nothing to cache - name: Ignore nothing to cache
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
enable-cache: true enable-cache: true
ignore-nothing-to-cache: true ignore-nothing-to-cache: true
@@ -298,7 +319,7 @@ If you want to ignore this, set the `ignore-empty-workdir` input to `true`.
```yaml ```yaml
- name: Ignore empty workdir - name: Ignore empty workdir
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
ignore-empty-workdir: true ignore-empty-workdir: true
``` ```
@@ -315,7 +336,7 @@ are not sufficient, you can provide a custom GitHub token with the necessary per
```yaml ```yaml
- name: Install the latest version of uv with a custom GitHub token - name: Install the latest version of uv with a custom GitHub token
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
github-token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} github-token: ${{ secrets.CUSTOM_GITHUB_TOKEN }}
``` ```
@@ -333,7 +354,7 @@ input:
```yaml ```yaml
- name: Install the latest version of uv with a custom tool dir - name: Install the latest version of uv with a custom tool dir
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
tool-dir: "/path/to/tool/dir" tool-dir: "/path/to/tool/dir"
``` ```
@@ -352,7 +373,7 @@ If you want to change this behaviour (especially on self-hosted runners) you can
```yaml ```yaml
- name: Install the latest version of uv with a custom tool bin dir - name: Install the latest version of uv with a custom tool bin dir
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
tool-bin-dir: "/path/to/tool-bin/dir" tool-bin-dir: "/path/to/tool-bin/dir"
``` ```
@@ -368,7 +389,7 @@ This action supports expanding the `~` character to the user's home directory fo
```yaml ```yaml
- name: Expand the tilde character - name: Expand the tilde character
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
cache-local-path: "~/path/to/cache" cache-local-path: "~/path/to/cache"
tool-dir: "~/path/to/tool/dir" tool-dir: "~/path/to/tool/dir"
@@ -376,6 +397,44 @@ This action supports expanding the `~` character to the user's home directory fo
cache-dependency-glob: "~/my-cache-buster" cache-dependency-glob: "~/my-cache-buster"
``` ```
### Manifest file
The `manifest-file` input allows you to specify a JSON manifest that lists available uv versions,
architectures, and their download URLs. By default, this action uses the manifest file contained
in this repository, which is automatically updated with each release of uv.
The manifest file contains an array of objects, each describing a version,
architecture, platform, and the corresponding download URL. For example:
```json
[
{
"version": "0.7.13",
"artifactName": "uv-aarch64-apple-darwin.tar.gz",
"arch": "aarch64",
"platform": "apple-darwin",
"downloadUrl": "https://github.com/astral-sh/uv/releases/download/0.7.13/uv-aarch64-apple-darwin.tar.gz"
},
...
]
```
You can supply a custom manifest file URL to define additional versions,
architectures, or different download URLs.
This is useful if you maintain your own uv builds or want to override the default sources.
```yaml
- name: Use a custom manifest file
uses: astral-sh/setup-uv@v6
with:
manifest-file: "https://example.com/my-custom-manifest.json"
```
> [!NOTE]
> When you use a custom manifest file and do not set the `version` input, its default value is `latest`.
> This means the action will install the latest version available in the custom manifest file.
> This is different from the default behavior of installing the latest version from the official uv releases.
## How it works ## How it works
This action downloads uv from the uv repo's official This action downloads uv from the uv repo's official
@@ -383,7 +442,7 @@ This action downloads uv from the uv repo's official
[GitHub Actions Toolkit](https://github.com/actions/toolkit) to cache it as a tool to speed up [GitHub Actions Toolkit](https://github.com/actions/toolkit) to cache it as a tool to speed up
consecutive runs on self-hosted runners. consecutive runs on self-hosted runners.
The installed version of uv is then added to the runner PATH, enabling subsequent steps to invoke it The installed version of uv is then added to the runner PATH, enabling later steps to invoke it
by name (`uv`). by name (`uv`).
## FAQ ## FAQ
@@ -401,7 +460,7 @@ For example:
- name: Checkout the repository - name: Checkout the repository
uses: actions/checkout@main uses: actions/checkout@main
- name: Install the latest version of uv - name: Install the latest version of uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
enable-cache: true enable-cache: true
- name: Test - name: Test
@@ -413,7 +472,7 @@ To install a specific version of Python, use
```yaml ```yaml
- name: Install the latest version of uv - name: Install the latest version of uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
with: with:
enable-cache: true enable-cache: true
- name: Install Python 3.12 - name: Install Python 3.12
@@ -432,7 +491,7 @@ output:
uses: actions/checkout@main uses: actions/checkout@main
- name: Install the default version of uv - name: Install the default version of uv
id: setup-uv id: setup-uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v6
- name: Print the installed version - name: Print the installed version
run: echo "Installed uv version is ${{ steps.setup-uv.outputs.uv-version }}" run: echo "Installed uv version is ${{ steps.setup-uv.outputs.uv-version }}"
``` ```
@@ -478,6 +537,28 @@ Some workflows need uv but do not need to access the repository content.
But **if** you need to access the repository content, you have run `actions/checkout` before running `setup-uv`. But **if** you need to access the repository content, you have run `actions/checkout` before running `setup-uv`.
Running `actions/checkout` after `setup-uv` **is not supported**. Running `actions/checkout` after `setup-uv` **is not supported**.
### Does `setup-uv` also install my project or its dependencies automatically?
No, `setup-uv` alone wont install any libraries from your `pyproject.toml` or `requirements.txt`, it only sets up `uv`.
You should run `uv sync` or `uv pip install .` separately, or use `uv run ...` to ensure necessary dependencies are installed.
### Why is a changed cache not detected and not the full cache uploaded?
When `setup-uv` starts it has to know whether it is better to download an existing cache
or start fresh and download every dependency again.
It does this by using a combination of hashes calculated on the contents of e.g. `uv.lock`.
By calculating these hashes and combining them in a key `setup-uv` can check
if an uploaded cache exists for this key.
If yes (e.g. contents of `uv.lock` did not change since last run) the dependencies in the cache
are up to date and the cache will be downloaded and used.
Details on determining which files will lead to different caches can be read under
[cache-dependency-glob](#cache-dependency-glob)
Some dependencies will never be uploaded to the cache and will be downloaded again on each run
as described in [disable-cache-pruning](#disable-cache-pruning)
## Acknowledgements ## Acknowledgements
`setup-uv` was initially written and published by [Kevin Stillhammer](https://github.com/eifinger) `setup-uv` was initially written and published by [Kevin Stillhammer](https://github.com/eifinger)

View File

@@ -0,0 +1,9 @@
[
{
"version": "0.7.12-alpha.1",
"artifactName": "uv-x86_64-unknown-linux-gnu.tar.gz",
"arch": "x86_64",
"platform": "unknown-linux-gnu",
"downloadUrl": "https://release.pyx.dev/0.7.12-alpha.1/uv-x86_64-unknown-linux-gnu.tar.gz"
}
]

View File

@@ -6,18 +6,22 @@ inputs:
version: 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` Defaults to the version in pyproject.toml or 'latest'."
default: "" default: ""
pyproject-file:
description: "Path to a pyproject.toml"
default: ""
uv-file:
description: "Path to a uv.toml"
default: ""
python-version: python-version:
description: "The version of Python to set UV_PYTHON to" description: "The version of Python to set UV_PYTHON to"
required: false required: false
activate-environment:
description: "Use uv venv to activate a venv ready to be used by later steps. "
default: "false"
working-directory:
description: "The directory to execute all commands in and look for files such as pyproject.toml"
default: ${{ github.workspace }}
checksum: checksum:
description: "The checksum of the uv version to install" description: "The checksum of the uv version to install"
required: false required: false
server-url:
description: "(Deprecated) The server url to use when downloading uv"
required: false
default: "https://github.com"
github-token: github-token:
description: description:
"Used to increase the rate limit when retrieving versions and downloading uv." "Used to increase the rate limit when retrieving versions and downloading uv."
@@ -31,8 +35,12 @@ inputs:
"Glob pattern to match files relative to the repository root to control "Glob pattern to match files relative to the repository root to control
the cache." the cache."
default: | default: |
**/*requirements*.txt
**/*requirements*.in
**/*constraints*.txt
**/*constraints*.in
**/pyproject.toml
**/uv.lock **/uv.lock
**/requirements*.txt
cache-suffix: cache-suffix:
description: "Suffix for the cache key" description: "Suffix for the cache key"
required: false required: false
@@ -54,6 +62,9 @@ inputs:
tool-bin-dir: tool-bin-dir:
description: "Custom path to set UV_TOOL_BIN_DIR to." description: "Custom path to set UV_TOOL_BIN_DIR to."
required: false required: false
manifest-file:
description: "URL to the manifest file containing available versions and download URLs."
required: false
outputs: outputs:
uv-version: uv-version:
description: "The installed uv version. Useful when using latest." description: "The installed uv version. Useful when using latest."

88
dist/save-cache/index.js generated vendored
View File

@@ -13417,7 +13417,7 @@ module.exports = {
const { parseSetCookie } = __nccwpck_require__(7803) const { parseSetCookie } = __nccwpck_require__(7803)
const { stringify, getHeadersList } = __nccwpck_require__(6338) const { stringify } = __nccwpck_require__(6338)
const { webidl } = __nccwpck_require__(8134) const { webidl } = __nccwpck_require__(8134)
const { Headers } = __nccwpck_require__(9061) const { Headers } = __nccwpck_require__(9061)
@@ -13493,14 +13493,13 @@ function getSetCookies (headers) {
webidl.brandCheck(headers, Headers, { strict: false }) webidl.brandCheck(headers, Headers, { strict: false })
const cookies = getHeadersList(headers).cookies const cookies = headers.getSetCookie()
if (!cookies) { if (!cookies) {
return [] return []
} }
// In older versions of undici, cookies is a list of name:value. return cookies.map((pair) => parseSetCookie(pair))
return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))
} }
/** /**
@@ -13928,14 +13927,15 @@ module.exports = {
/***/ }), /***/ }),
/***/ 6338: /***/ 6338:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { /***/ ((module) => {
"use strict"; "use strict";
const assert = __nccwpck_require__(2613) /**
const { kHeadersList } = __nccwpck_require__(9411) * @param {string} value
* @returns {boolean}
*/
function isCTLExcludingHtab (value) { function isCTLExcludingHtab (value) {
if (value.length === 0) { if (value.length === 0) {
return false return false
@@ -14196,31 +14196,13 @@ function stringify (cookie) {
return out.join('; ') return out.join('; ')
} }
let kHeadersListNode
function getHeadersList (headers) {
if (headers[kHeadersList]) {
return headers[kHeadersList]
}
if (!kHeadersListNode) {
kHeadersListNode = Object.getOwnPropertySymbols(headers).find(
(symbol) => symbol.description === 'headers list'
)
assert(kHeadersListNode, 'Headers cannot be parsed')
}
const headersList = headers[kHeadersListNode]
assert(headersList)
return headersList
}
module.exports = { module.exports = {
isCTLExcludingHtab, isCTLExcludingHtab,
stringify, validateCookieName,
getHeadersList validateCookiePath,
validateCookieValue,
toIMFDate,
stringify
} }
@@ -18224,6 +18206,7 @@ const {
isValidHeaderName, isValidHeaderName,
isValidHeaderValue isValidHeaderValue
} = __nccwpck_require__(555) } = __nccwpck_require__(555)
const util = __nccwpck_require__(9023)
const { webidl } = __nccwpck_require__(8134) const { webidl } = __nccwpck_require__(8134)
const assert = __nccwpck_require__(2613) const assert = __nccwpck_require__(2613)
@@ -18777,6 +18760,9 @@ Object.defineProperties(Headers.prototype, {
[Symbol.toStringTag]: { [Symbol.toStringTag]: {
value: 'Headers', value: 'Headers',
configurable: true configurable: true
},
[util.inspect.custom]: {
enumerable: false
} }
}) })
@@ -27953,6 +27939,20 @@ class Pool extends PoolBase {
? { ...options.interceptors } ? { ...options.interceptors }
: undefined : undefined
this[kFactory] = factory this[kFactory] = factory
this.on('connectionError', (origin, targets, error) => {
// If a connection error occurs, we remove the client from the pool,
// and emit a connectionError event. They will not be re-used.
// Fixes https://github.com/nodejs/undici/issues/3895
for (const target of targets) {
// Do not use kRemoveClient here, as it will close the client,
// but the client cannot be closed in this state.
const idx = this[kClients].indexOf(target)
if (idx !== -1) {
this[kClients].splice(idx, 1)
}
}
})
} }
[kGetDispatcher] () { [kGetDispatcher] () {
@@ -88715,7 +88715,8 @@ async function computeKeys() {
const suffix = inputs_1.cacheSuffix ? `-${inputs_1.cacheSuffix}` : ""; const suffix = inputs_1.cacheSuffix ? `-${inputs_1.cacheSuffix}` : "";
const pythonVersion = await getPythonVersion(); const pythonVersion = await getPythonVersion();
const platform = await (0, platforms_1.getPlatform)(); const platform = await (0, platforms_1.getPlatform)();
return `setup-uv-${CACHE_VERSION}-${(0, platforms_1.getArch)()}-${platform}-${pythonVersion}${cacheDependencyPathHash}${suffix}`; const pruned = inputs_1.pruneCache ? "-pruned" : "";
return `setup-uv-${CACHE_VERSION}-${(0, platforms_1.getArch)()}-${platform}-${pythonVersion}${pruned}${cacheDependencyPathHash}${suffix}`;
} }
async function getPythonVersion() { async function getPythonVersion() {
if (inputs_1.pythonVersion !== "") { if (inputs_1.pythonVersion !== "") {
@@ -88731,7 +88732,7 @@ async function getPythonVersion() {
}, },
}; };
try { try {
const execArgs = ["python", "find"]; const execArgs = ["python", "find", "--directory", inputs_1.workingDirectory];
await exec.exec("uv", execArgs, options); await exec.exec("uv", execArgs, options);
const pythonPath = output.trim(); const pythonPath = output.trim();
output = ""; output = "";
@@ -88997,13 +88998,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.githubToken = exports.toolDir = exports.toolBinDir = exports.ignoreEmptyWorkdir = exports.ignoreNothingToCache = exports.pruneCache = exports.cacheDependencyGlob = exports.cacheLocalPath = exports.cacheSuffix = exports.enableCache = exports.checkSum = exports.pythonVersion = exports.uvFile = exports.pyProjectFile = exports.version = void 0; exports.manifestFile = exports.githubToken = exports.serverUrl = exports.toolDir = exports.toolBinDir = exports.ignoreEmptyWorkdir = exports.ignoreNothingToCache = exports.pruneCache = exports.cacheDependencyGlob = exports.cacheLocalPath = exports.cacheSuffix = exports.enableCache = exports.checkSum = exports.workingDirectory = exports.activateEnvironment = exports.pythonVersion = exports.version = void 0;
const core = __importStar(__nccwpck_require__(7484)); const core = __importStar(__nccwpck_require__(7484));
const node_path_1 = __importDefault(__nccwpck_require__(6760)); const node_path_1 = __importDefault(__nccwpck_require__(6760));
exports.version = core.getInput("version"); exports.version = core.getInput("version");
exports.pyProjectFile = core.getInput("pyproject-file");
exports.uvFile = core.getInput("uv-file");
exports.pythonVersion = core.getInput("python-version"); exports.pythonVersion = core.getInput("python-version");
exports.activateEnvironment = core.getBooleanInput("activate-environment");
exports.workingDirectory = core.getInput("working-directory");
exports.checkSum = core.getInput("checksum"); exports.checkSum = core.getInput("checksum");
exports.enableCache = getEnableCache(); exports.enableCache = getEnableCache();
exports.cacheSuffix = core.getInput("cache-suffix") || ""; exports.cacheSuffix = core.getInput("cache-suffix") || "";
@@ -89014,7 +89015,9 @@ exports.ignoreNothingToCache = core.getInput("ignore-nothing-to-cache") === "tru
exports.ignoreEmptyWorkdir = core.getInput("ignore-empty-workdir") === "true"; exports.ignoreEmptyWorkdir = core.getInput("ignore-empty-workdir") === "true";
exports.toolBinDir = getToolBinDir(); exports.toolBinDir = getToolBinDir();
exports.toolDir = getToolDir(); exports.toolDir = getToolDir();
exports.serverUrl = core.getInput("server-url");
exports.githubToken = core.getInput("github-token"); exports.githubToken = core.getInput("github-token");
exports.manifestFile = getManifestFile();
function getEnableCache() { function getEnableCache() {
const enableCacheInput = core.getInput("enable-cache"); const enableCacheInput = core.getInput("enable-cache");
if (enableCacheInput === "auto") { if (enableCacheInput === "auto") {
@@ -89053,10 +89056,16 @@ function getCacheLocalPath() {
if (cacheLocalPathInput !== "") { if (cacheLocalPathInput !== "") {
return expandTilde(cacheLocalPathInput); return expandTilde(cacheLocalPathInput);
} }
if (process.env.RUNNER_ENVIRONMENT === "github-hosted") {
if (process.env.RUNNER_TEMP !== undefined) { if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${node_path_1.default.sep}setup-uv-cache`; return `${process.env.RUNNER_TEMP}${node_path_1.default.sep}setup-uv-cache`;
} }
throw Error("Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input"); throw Error("Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input");
}
if (process.platform === "win32") {
return `${process.env.APPDATA}${node_path_1.default.sep}uv${node_path_1.default.sep}cache`;
}
return `${process.env.HOME}${node_path_1.default.sep}.cache${node_path_1.default.sep}uv`;
} }
function expandTilde(input) { function expandTilde(input) {
if (input.startsWith("~")) { if (input.startsWith("~")) {
@@ -89064,6 +89073,13 @@ function expandTilde(input) {
} }
return input; return input;
} }
function getManifestFile() {
const manifestFileInput = core.getInput("manifest-file");
if (manifestFileInput !== "") {
return manifestFileInput;
}
return undefined;
}
/***/ }), /***/ }),

1749
dist/setup/index.js generated vendored
View File

@@ -13417,7 +13417,7 @@ module.exports = {
const { parseSetCookie } = __nccwpck_require__(17803) const { parseSetCookie } = __nccwpck_require__(17803)
const { stringify, getHeadersList } = __nccwpck_require__(46338) const { stringify } = __nccwpck_require__(46338)
const { webidl } = __nccwpck_require__(8134) const { webidl } = __nccwpck_require__(8134)
const { Headers } = __nccwpck_require__(29061) const { Headers } = __nccwpck_require__(29061)
@@ -13493,14 +13493,13 @@ function getSetCookies (headers) {
webidl.brandCheck(headers, Headers, { strict: false }) webidl.brandCheck(headers, Headers, { strict: false })
const cookies = getHeadersList(headers).cookies const cookies = headers.getSetCookie()
if (!cookies) { if (!cookies) {
return [] return []
} }
// In older versions of undici, cookies is a list of name:value. return cookies.map((pair) => parseSetCookie(pair))
return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))
} }
/** /**
@@ -13928,14 +13927,15 @@ module.exports = {
/***/ }), /***/ }),
/***/ 46338: /***/ 46338:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { /***/ ((module) => {
"use strict"; "use strict";
const assert = __nccwpck_require__(42613) /**
const { kHeadersList } = __nccwpck_require__(99411) * @param {string} value
* @returns {boolean}
*/
function isCTLExcludingHtab (value) { function isCTLExcludingHtab (value) {
if (value.length === 0) { if (value.length === 0) {
return false return false
@@ -14196,31 +14196,13 @@ function stringify (cookie) {
return out.join('; ') return out.join('; ')
} }
let kHeadersListNode
function getHeadersList (headers) {
if (headers[kHeadersList]) {
return headers[kHeadersList]
}
if (!kHeadersListNode) {
kHeadersListNode = Object.getOwnPropertySymbols(headers).find(
(symbol) => symbol.description === 'headers list'
)
assert(kHeadersListNode, 'Headers cannot be parsed')
}
const headersList = headers[kHeadersListNode]
assert(headersList)
return headersList
}
module.exports = { module.exports = {
isCTLExcludingHtab, isCTLExcludingHtab,
stringify, validateCookieName,
getHeadersList validateCookiePath,
validateCookieValue,
toIMFDate,
stringify
} }
@@ -18224,6 +18206,7 @@ const {
isValidHeaderName, isValidHeaderName,
isValidHeaderValue isValidHeaderValue
} = __nccwpck_require__(30555) } = __nccwpck_require__(30555)
const util = __nccwpck_require__(39023)
const { webidl } = __nccwpck_require__(8134) const { webidl } = __nccwpck_require__(8134)
const assert = __nccwpck_require__(42613) const assert = __nccwpck_require__(42613)
@@ -18777,6 +18760,9 @@ Object.defineProperties(Headers.prototype, {
[Symbol.toStringTag]: { [Symbol.toStringTag]: {
value: 'Headers', value: 'Headers',
configurable: true configurable: true
},
[util.inspect.custom]: {
enumerable: false
} }
}) })
@@ -27953,6 +27939,20 @@ class Pool extends PoolBase {
? { ...options.interceptors } ? { ...options.interceptors }
: undefined : undefined
this[kFactory] = factory this[kFactory] = factory
this.on('connectionError', (origin, targets, error) => {
// If a connection error occurs, we remove the client from the pool,
// and emit a connectionError event. They will not be re-used.
// Fixes https://github.com/nodejs/undici/issues/3895
for (const target of targets) {
// Do not use kRemoveClient here, as it will close the client,
// but the client cannot be closed in this state.
const idx = this[kClients].indexOf(target)
if (idx !== -1) {
this[kClients].splice(idx, 1)
}
}
})
} }
[kGetDispatcher] () { [kGetDispatcher] () {
@@ -83360,6 +83360,7 @@ const Agent = __nccwpck_require__(57405)
const ProxyAgent = __nccwpck_require__(76672) const ProxyAgent = __nccwpck_require__(76672)
const EnvHttpProxyAgent = __nccwpck_require__(53137) const EnvHttpProxyAgent = __nccwpck_require__(53137)
const RetryAgent = __nccwpck_require__(30050) const RetryAgent = __nccwpck_require__(30050)
const H2CClient = __nccwpck_require__(36815)
const errors = __nccwpck_require__(68707) const errors = __nccwpck_require__(68707)
const util = __nccwpck_require__(3440) const util = __nccwpck_require__(3440)
const { InvalidArgumentError } = errors const { InvalidArgumentError } = errors
@@ -83385,6 +83386,7 @@ module.exports.Agent = Agent
module.exports.ProxyAgent = ProxyAgent module.exports.ProxyAgent = ProxyAgent
module.exports.EnvHttpProxyAgent = EnvHttpProxyAgent module.exports.EnvHttpProxyAgent = EnvHttpProxyAgent
module.exports.RetryAgent = RetryAgent module.exports.RetryAgent = RetryAgent
module.exports.H2CClient = H2CClient
module.exports.RetryHandler = RetryHandler module.exports.RetryHandler = RetryHandler
module.exports.DecoratorHandler = DecoratorHandler module.exports.DecoratorHandler = DecoratorHandler
@@ -85110,6 +85112,7 @@ module.exports = {
const { Writable } = __nccwpck_require__(57075) const { Writable } = __nccwpck_require__(57075)
const { EventEmitter } = __nccwpck_require__(78474)
const { assertCacheKey, assertCacheValue } = __nccwpck_require__(47659) const { assertCacheKey, assertCacheValue } = __nccwpck_require__(47659)
/** /**
@@ -85121,8 +85124,9 @@ const { assertCacheKey, assertCacheValue } = __nccwpck_require__(47659)
/** /**
* @implements {CacheStore} * @implements {CacheStore}
* @extends {EventEmitter}
*/ */
class MemoryCacheStore { class MemoryCacheStore extends EventEmitter {
#maxCount = Infinity #maxCount = Infinity
#maxSize = Infinity #maxSize = Infinity
#maxEntrySize = Infinity #maxEntrySize = Infinity
@@ -85130,11 +85134,13 @@ class MemoryCacheStore {
#size = 0 #size = 0
#count = 0 #count = 0
#entries = new Map() #entries = new Map()
#hasEmittedMaxSizeEvent = false
/** /**
* @param {import('../../types/cache-interceptor.d.ts').default.MemoryCacheStoreOpts | undefined} [opts] * @param {import('../../types/cache-interceptor.d.ts').default.MemoryCacheStoreOpts | undefined} [opts]
*/ */
constructor (opts) { constructor (opts) {
super()
if (opts) { if (opts) {
if (typeof opts !== 'object') { if (typeof opts !== 'object') {
throw new TypeError('MemoryCacheStore options must be an object') throw new TypeError('MemoryCacheStore options must be an object')
@@ -85175,6 +85181,22 @@ class MemoryCacheStore {
} }
} }
/**
* Get the current size of the cache in bytes
* @returns {number} The current size of the cache in bytes
*/
get size () {
return this.#size
}
/**
* Check if the cache is full (either max size or max count reached)
* @returns {boolean} True if the cache is full, false otherwise
*/
isFull () {
return this.#size >= this.#maxSize || this.#count >= this.#maxCount
}
/** /**
* @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} req * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} req
* @returns {import('../../types/cache-interceptor.d.ts').default.GetResult | undefined} * @returns {import('../../types/cache-interceptor.d.ts').default.GetResult | undefined}
@@ -85185,17 +85207,9 @@ class MemoryCacheStore {
const topLevelKey = `${key.origin}:${key.path}` const topLevelKey = `${key.origin}:${key.path}`
const now = Date.now() const now = Date.now()
const entry = this.#entries.get(topLevelKey)?.find((entry) => ( const entries = this.#entries.get(topLevelKey)
entry.deleteAt > now &&
entry.method === key.method &&
(entry.vary == null || Object.keys(entry.vary).every(headerName => {
if (entry.vary[headerName] === null) {
return key.headers[headerName] === undefined
}
return entry.vary[headerName] === key.headers[headerName] const entry = entries ? findEntry(key, entries, now) : null
}))
))
return entry == null return entry == null
? undefined ? undefined
@@ -85249,12 +85263,32 @@ class MemoryCacheStore {
entries = [] entries = []
store.#entries.set(topLevelKey, entries) store.#entries.set(topLevelKey, entries)
} }
const previousEntry = findEntry(key, entries, Date.now())
if (previousEntry) {
const index = entries.indexOf(previousEntry)
entries.splice(index, 1, entry)
store.#size -= previousEntry.size
} else {
entries.push(entry) entries.push(entry)
store.#count += 1
}
store.#size += entry.size store.#size += entry.size
store.#count += 1
// Check if cache is full and emit event if needed
if (store.#size > store.#maxSize || store.#count > store.#maxCount) { if (store.#size > store.#maxSize || store.#count > store.#maxCount) {
// Emit maxSizeExceeded event if we haven't already
if (!store.#hasEmittedMaxSizeEvent) {
store.emit('maxSizeExceeded', {
size: store.#size,
maxSize: store.#maxSize,
count: store.#count,
maxCount: store.#maxCount
})
store.#hasEmittedMaxSizeEvent = true
}
// Perform eviction
for (const [key, entries] of store.#entries) { for (const [key, entries] of store.#entries) {
for (const entry of entries.splice(0, entries.length / 2)) { for (const entry of entries.splice(0, entries.length / 2)) {
store.#size -= entry.size store.#size -= entry.size
@@ -85264,6 +85298,11 @@ class MemoryCacheStore {
store.#entries.delete(key) store.#entries.delete(key)
} }
} }
// Reset the event flag after eviction
if (store.#size < store.#maxSize && store.#count < store.#maxCount) {
store.#hasEmittedMaxSizeEvent = false
}
} }
callback(null) callback(null)
@@ -85289,6 +85328,20 @@ class MemoryCacheStore {
} }
} }
function findEntry (key, entries, now) {
return entries.find((entry) => (
entry.deleteAt > now &&
entry.method === key.method &&
(entry.vary == null || Object.keys(entry.vary).every(headerName => {
if (entry.vary[headerName] === null) {
return key.headers[headerName] === undefined
}
return entry.vary[headerName] === key.headers[headerName]
}))
))
}
module.exports = MemoryCacheStore module.exports = MemoryCacheStore
@@ -85415,6 +85468,11 @@ module.exports = class SqliteCacheStore {
this.#db = new DatabaseSync(opts?.location ?? ':memory:') this.#db = new DatabaseSync(opts?.location ?? ':memory:')
this.#db.exec(` this.#db.exec(`
PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA temp_store = memory;
PRAGMA optimize;
CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION} ( CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION} (
-- Data specific to us -- Data specific to us
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -85434,9 +85492,8 @@ module.exports = class SqliteCacheStore {
staleAt INTEGER NOT NULL staleAt INTEGER NOT NULL
); );
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_url ON cacheInterceptorV${VERSION}(url); CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_getValuesQuery ON cacheInterceptorV${VERSION}(url, method, deleteAt);
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_method ON cacheInterceptorV${VERSION}(method); CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_deleteByUrlQuery ON cacheInterceptorV${VERSION}(deleteAt);
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_deleteAt ON cacheInterceptorV${VERSION}(deleteAt);
`) `)
this.#getValuesQuery = this.#db.prepare(` this.#getValuesQuery = this.#db.prepare(`
@@ -85646,7 +85703,7 @@ module.exports = class SqliteCacheStore {
} }
#prune () { #prune () {
if (this.size <= this.#maxCount) { if (Number.isFinite(this.#maxCount) && this.size <= this.#maxCount) {
return 0 return 0
} }
@@ -85768,10 +85825,7 @@ function headerValueEquals (lhs, rhs) {
const net = __nccwpck_require__(77030) const net = __nccwpck_require__(77030)
const assert = __nccwpck_require__(34589) const assert = __nccwpck_require__(34589)
const util = __nccwpck_require__(3440) const util = __nccwpck_require__(3440)
const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(68707) const { InvalidArgumentError } = __nccwpck_require__(68707)
const timers = __nccwpck_require__(96603)
function noop () {}
let tls // include tls conditionally since it is not always available let tls // include tls conditionally since it is not always available
@@ -85871,7 +85925,6 @@ function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, sess
servername, servername,
session, session,
localAddress, localAddress,
// TODO(HTTP/2): Add support for h2c
ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],
socket: httpSocket, // upgrade socket connection socket: httpSocket, // upgrade socket connection
port, port,
@@ -85903,7 +85956,7 @@ function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, sess
socket.setKeepAlive(true, keepAliveInitialDelay) socket.setKeepAlive(true, keepAliveInitialDelay)
} }
const clearConnectTimeout = setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port }) const clearConnectTimeout = util.setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port })
socket socket
.setNoDelay(true) .setNoDelay(true)
@@ -85930,78 +85983,6 @@ function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, sess
} }
} }
/**
* @param {WeakRef<net.Socket>} socketWeakRef
* @param {object} opts
* @param {number} opts.timeout
* @param {string} opts.hostname
* @param {number} opts.port
* @returns {() => void}
*/
const setupConnectTimeout = process.platform === 'win32'
? (socketWeakRef, opts) => {
if (!opts.timeout) {
return noop
}
let s1 = null
let s2 = null
const fastTimer = timers.setFastTimeout(() => {
// setImmediate is added to make sure that we prioritize socket error events over timeouts
s1 = setImmediate(() => {
// Windows needs an extra setImmediate probably due to implementation differences in the socket logic
s2 = setImmediate(() => onConnectTimeout(socketWeakRef.deref(), opts))
})
}, opts.timeout)
return () => {
timers.clearFastTimeout(fastTimer)
clearImmediate(s1)
clearImmediate(s2)
}
}
: (socketWeakRef, opts) => {
if (!opts.timeout) {
return noop
}
let s1 = null
const fastTimer = timers.setFastTimeout(() => {
// setImmediate is added to make sure that we prioritize socket error events over timeouts
s1 = setImmediate(() => {
onConnectTimeout(socketWeakRef.deref(), opts)
})
}, opts.timeout)
return () => {
timers.clearFastTimeout(fastTimer)
clearImmediate(s1)
}
}
/**
* @param {net.Socket} socket
* @param {object} opts
* @param {number} opts.timeout
* @param {string} opts.hostname
* @param {number} opts.port
*/
function onConnectTimeout (socket, opts) {
// The socket could be already garbage collected
if (socket == null) {
return
}
let message = 'Connect Timeout Error'
if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) {
message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(', ')},`
} else {
message += ` (attempted address: ${opts.hostname}:${opts.port},`
}
message += ` timeout: ${opts.timeout}ms)`
util.destroy(socket, new ConnectTimeoutError(message))
}
module.exports = buildConnector module.exports = buildConnector
@@ -87278,11 +87259,12 @@ const { Blob } = __nccwpck_require__(4573)
const nodeUtil = __nccwpck_require__(57975) const nodeUtil = __nccwpck_require__(57975)
const { stringify } = __nccwpck_require__(41792) const { stringify } = __nccwpck_require__(41792)
const { EventEmitter: EE } = __nccwpck_require__(78474) const { EventEmitter: EE } = __nccwpck_require__(78474)
const { InvalidArgumentError } = __nccwpck_require__(68707) const timers = __nccwpck_require__(96603)
const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(68707)
const { headerNameLowerCasedRecord } = __nccwpck_require__(10735) const { headerNameLowerCasedRecord } = __nccwpck_require__(10735)
const { tree } = __nccwpck_require__(67752) const { tree } = __nccwpck_require__(67752)
const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) const [nodeMajor, nodeMinor] = process.versions.node.split('.', 2).map(v => Number(v))
class BodyAsyncIterable { class BodyAsyncIterable {
constructor (body) { constructor (body) {
@@ -87297,6 +87279,8 @@ class BodyAsyncIterable {
} }
} }
function noop () {}
/** /**
* @param {*} body * @param {*} body
* @returns {*} * @returns {*}
@@ -88106,6 +88090,78 @@ function errorRequest (client, request, err) {
} }
} }
/**
* @param {WeakRef<net.Socket>} socketWeakRef
* @param {object} opts
* @param {number} opts.timeout
* @param {string} opts.hostname
* @param {number} opts.port
* @returns {() => void}
*/
const setupConnectTimeout = process.platform === 'win32'
? (socketWeakRef, opts) => {
if (!opts.timeout) {
return noop
}
let s1 = null
let s2 = null
const fastTimer = timers.setFastTimeout(() => {
// setImmediate is added to make sure that we prioritize socket error events over timeouts
s1 = setImmediate(() => {
// Windows needs an extra setImmediate probably due to implementation differences in the socket logic
s2 = setImmediate(() => onConnectTimeout(socketWeakRef.deref(), opts))
})
}, opts.timeout)
return () => {
timers.clearFastTimeout(fastTimer)
clearImmediate(s1)
clearImmediate(s2)
}
}
: (socketWeakRef, opts) => {
if (!opts.timeout) {
return noop
}
let s1 = null
const fastTimer = timers.setFastTimeout(() => {
// setImmediate is added to make sure that we prioritize socket error events over timeouts
s1 = setImmediate(() => {
onConnectTimeout(socketWeakRef.deref(), opts)
})
}, opts.timeout)
return () => {
timers.clearFastTimeout(fastTimer)
clearImmediate(s1)
}
}
/**
* @param {net.Socket} socket
* @param {object} opts
* @param {number} opts.timeout
* @param {string} opts.hostname
* @param {number} opts.port
*/
function onConnectTimeout (socket, opts) {
// The socket could be already garbage collected
if (socket == null) {
return
}
let message = 'Connect Timeout Error'
if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) {
message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(', ')},`
} else {
message += ` (attempted address: ${opts.hostname}:${opts.port},`
}
message += ` timeout: ${opts.timeout}ms)`
destroy(socket, new ConnectTimeoutError(message))
}
const kEnumerableProperty = Object.create(null) const kEnumerableProperty = Object.create(null)
kEnumerableProperty.enumerable = true kEnumerableProperty.enumerable = true
@@ -88177,7 +88233,8 @@ module.exports = {
nodeMajor, nodeMajor,
nodeMinor, nodeMinor,
safeHTTPMethods: Object.freeze(['GET', 'HEAD', 'OPTIONS', 'TRACE']), safeHTTPMethods: Object.freeze(['GET', 'HEAD', 'OPTIONS', 'TRACE']),
wrapRequestBody wrapRequestBody,
setupConnectTimeout
} }
@@ -88190,7 +88247,7 @@ module.exports = {
const { InvalidArgumentError } = __nccwpck_require__(68707) const { InvalidArgumentError } = __nccwpck_require__(68707)
const { kClients, kRunning, kClose, kDestroy, kDispatch } = __nccwpck_require__(36443) const { kClients, kRunning, kClose, kDestroy, kDispatch, kUrl } = __nccwpck_require__(36443)
const DispatcherBase = __nccwpck_require__(21841) const DispatcherBase = __nccwpck_require__(21841)
const Pool = __nccwpck_require__(30628) const Pool = __nccwpck_require__(30628)
const Client = __nccwpck_require__(23701) const Client = __nccwpck_require__(23701)
@@ -88234,22 +88291,35 @@ class Agent extends DispatcherBase {
} }
this[kOnConnect] = (origin, targets) => { this[kOnConnect] = (origin, targets) => {
const result = this[kClients].get(origin)
if (result) {
result.count += 1
}
this.emit('connect', origin, [this, ...targets]) this.emit('connect', origin, [this, ...targets])
} }
this[kOnDisconnect] = (origin, targets, err) => { this[kOnDisconnect] = (origin, targets, err) => {
const result = this[kClients].get(origin)
if (result) {
result.count -= 1
if (result.count <= 0) {
this[kClients].delete(origin)
result.dispatcher.destroy()
}
}
this.emit('disconnect', origin, [this, ...targets], err) this.emit('disconnect', origin, [this, ...targets], err)
} }
this[kOnConnectionError] = (origin, targets, err) => { this[kOnConnectionError] = (origin, targets, err) => {
// TODO: should this decrement result.count here?
this.emit('connectionError', origin, [this, ...targets], err) this.emit('connectionError', origin, [this, ...targets], err)
} }
} }
get [kRunning] () { get [kRunning] () {
let ret = 0 let ret = 0
for (const client of this[kClients].values()) { for (const { dispatcher } of this[kClients].values()) {
ret += client[kRunning] ret += dispatcher[kRunning]
} }
return ret return ret
} }
@@ -88262,8 +88332,8 @@ class Agent extends DispatcherBase {
throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.') throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')
} }
let dispatcher = this[kClients].get(key) const result = this[kClients].get(key)
let dispatcher = result && result.dispatcher
if (!dispatcher) { if (!dispatcher) {
dispatcher = this[kFactory](opts.origin, this[kOptions]) dispatcher = this[kFactory](opts.origin, this[kOptions])
.on('drain', this[kOnDrain]) .on('drain', this[kOnDrain])
@@ -88271,10 +88341,7 @@ class Agent extends DispatcherBase {
.on('disconnect', this[kOnDisconnect]) .on('disconnect', this[kOnDisconnect])
.on('connectionError', this[kOnConnectionError]) .on('connectionError', this[kOnConnectionError])
// This introduces a tiny memory leak, as dispatchers are never removed from the map. this[kClients].set(key, { count: 0, dispatcher })
// TODO(mcollina): remove te timer when the client/pool do not have any more
// active connections.
this[kClients].set(key, dispatcher)
} }
return dispatcher.dispatch(opts, handler) return dispatcher.dispatch(opts, handler)
@@ -88282,8 +88349,8 @@ class Agent extends DispatcherBase {
async [kClose] () { async [kClose] () {
const closePromises = [] const closePromises = []
for (const client of this[kClients].values()) { for (const { dispatcher } of this[kClients].values()) {
closePromises.push(client.close()) closePromises.push(dispatcher.close())
} }
this[kClients].clear() this[kClients].clear()
@@ -88292,13 +88359,23 @@ class Agent extends DispatcherBase {
async [kDestroy] (err) { async [kDestroy] (err) {
const destroyPromises = [] const destroyPromises = []
for (const client of this[kClients].values()) { for (const { dispatcher } of this[kClients].values()) {
destroyPromises.push(client.destroy(err)) destroyPromises.push(dispatcher.destroy(err))
} }
this[kClients].clear() this[kClients].clear()
await Promise.all(destroyPromises) await Promise.all(destroyPromises)
} }
get stats () {
const allClientStats = {}
for (const { dispatcher } of this[kClients].values()) {
if (dispatcher.stats) {
allClientStats[dispatcher[kUrl].origin] = dispatcher.stats
}
}
return allClientStats
}
} }
module.exports = Agent module.exports = Agent
@@ -90357,6 +90434,7 @@ function onHttp2SessionGoAway (errorCode) {
assert(client[kRunning] === 0) assert(client[kRunning] === 0)
client.emit('disconnect', client[kUrl], [client], err) client.emit('disconnect', client[kUrl], [client], err)
client.emit('connectionError', client[kUrl], [client], err)
client[kResume]() client[kResume]()
} }
@@ -90443,11 +90521,13 @@ function writeH2 (client, request) {
if (Array.isArray(val)) { if (Array.isArray(val)) {
for (let i = 0; i < val.length; i++) { for (let i = 0; i < val.length; i++) {
if (headers[key]) { if (headers[key]) {
headers[key] += `,${val[i]}` headers[key] += `, ${val[i]}`
} else { } else {
headers[key] = val[i] headers[key] = val[i]
} }
} }
} else if (headers[key]) {
headers[key] += `, ${val}`
} else { } else {
headers[key] = val headers[key] = val
} }
@@ -90956,6 +91036,7 @@ const assert = __nccwpck_require__(34589)
const net = __nccwpck_require__(77030) const net = __nccwpck_require__(77030)
const http = __nccwpck_require__(37067) const http = __nccwpck_require__(37067)
const util = __nccwpck_require__(3440) const util = __nccwpck_require__(3440)
const { ClientStats } = __nccwpck_require__(46854)
const { channels } = __nccwpck_require__(42414) const { channels } = __nccwpck_require__(42414)
const Request = __nccwpck_require__(44655) const Request = __nccwpck_require__(44655)
const DispatcherBase = __nccwpck_require__(21841) const DispatcherBase = __nccwpck_require__(21841)
@@ -91212,6 +91293,10 @@ class Client extends DispatcherBase {
this[kResume](true) this[kResume](true)
} }
get stats () {
return new ClientStats(this)
}
get [kPending] () { get [kPending] () {
return this[kQueue].length - this[kPendingIdx] return this[kQueue].length - this[kPendingIdx]
} }
@@ -92112,6 +92197,136 @@ module.exports = class FixedQueue {
} }
/***/ }),
/***/ 36815:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
const { connect } = __nccwpck_require__(77030)
const { kClose, kDestroy } = __nccwpck_require__(36443)
const { InvalidArgumentError } = __nccwpck_require__(68707)
const util = __nccwpck_require__(3440)
const Client = __nccwpck_require__(23701)
const DispatcherBase = __nccwpck_require__(21841)
class H2CClient extends DispatcherBase {
#client = null
constructor (origin, clientOpts) {
super()
if (typeof origin === 'string') {
origin = new URL(origin)
}
if (origin.protocol !== 'http:') {
throw new InvalidArgumentError(
'h2c-client: Only h2c protocol is supported'
)
}
const { connect, maxConcurrentStreams, pipelining, ...opts } =
clientOpts ?? {}
let defaultMaxConcurrentStreams = 100
let defaultPipelining = 100
if (
maxConcurrentStreams != null &&
Number.isInteger(maxConcurrentStreams) &&
maxConcurrentStreams > 0
) {
defaultMaxConcurrentStreams = maxConcurrentStreams
}
if (pipelining != null && Number.isInteger(pipelining) && pipelining > 0) {
defaultPipelining = pipelining
}
if (defaultPipelining > defaultMaxConcurrentStreams) {
throw new InvalidArgumentError(
'h2c-client: pipelining cannot be greater than maxConcurrentStreams'
)
}
this.#client = new Client(origin, {
...opts,
connect: this.#buildConnector(connect),
maxConcurrentStreams: defaultMaxConcurrentStreams,
pipelining: defaultPipelining,
allowH2: true
})
}
#buildConnector (connectOpts) {
return (opts, callback) => {
const timeout = connectOpts?.connectOpts ?? 10e3
const { hostname, port, pathname } = opts
const socket = connect({
...opts,
host: hostname,
port,
pathname
})
// Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket
if (opts.keepAlive == null || opts.keepAlive) {
const keepAliveInitialDelay =
opts.keepAliveInitialDelay == null ? 60e3 : opts.keepAliveInitialDelay
socket.setKeepAlive(true, keepAliveInitialDelay)
}
socket.alpnProtocol = 'h2'
const clearConnectTimeout = util.setupConnectTimeout(
new WeakRef(socket),
{ timeout, hostname, port }
)
socket
.setNoDelay(true)
.once('connect', function () {
queueMicrotask(clearConnectTimeout)
if (callback) {
const cb = callback
callback = null
cb(null, this)
}
})
.on('error', function (err) {
queueMicrotask(clearConnectTimeout)
if (callback) {
const cb = callback
callback = null
cb(err)
}
})
return socket
}
}
dispatch (opts, handler) {
return this.#client.dispatch(opts, handler)
}
async [kClose] () {
await this.#client.close()
}
async [kDestroy] () {
await this.#client.destroy()
}
}
module.exports = H2CClient
/***/ }), /***/ }),
/***/ 42128: /***/ 42128:
@@ -92120,10 +92335,10 @@ module.exports = class FixedQueue {
"use strict"; "use strict";
const { PoolStats } = __nccwpck_require__(46854)
const DispatcherBase = __nccwpck_require__(21841) const DispatcherBase = __nccwpck_require__(21841)
const FixedQueue = __nccwpck_require__(64660) const FixedQueue = __nccwpck_require__(64660)
const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = __nccwpck_require__(36443) const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = __nccwpck_require__(36443)
const PoolStats = __nccwpck_require__(43246)
const kClients = Symbol('clients') const kClients = Symbol('clients')
const kNeedDrain = Symbol('needDrain') const kNeedDrain = Symbol('needDrain')
@@ -92136,7 +92351,6 @@ const kOnConnectionError = Symbol('onConnectionError')
const kGetDispatcher = Symbol('get dispatcher') const kGetDispatcher = Symbol('get dispatcher')
const kAddClient = Symbol('add client') const kAddClient = Symbol('add client')
const kRemoveClient = Symbol('remove client') const kRemoveClient = Symbol('remove client')
const kStats = Symbol('stats')
class PoolBase extends DispatcherBase { class PoolBase extends DispatcherBase {
constructor () { constructor () {
@@ -92187,8 +92401,6 @@ class PoolBase extends DispatcherBase {
this[kOnConnectionError] = (origin, targets, err) => { this[kOnConnectionError] = (origin, targets, err) => {
pool.emit('connectionError', origin, [pool, ...targets], err) pool.emit('connectionError', origin, [pool, ...targets], err)
} }
this[kStats] = new PoolStats(this)
} }
get [kBusy] () { get [kBusy] () {
@@ -92228,7 +92440,7 @@ class PoolBase extends DispatcherBase {
} }
get stats () { get stats () {
return this[kStats] return new PoolStats(this)
} }
async [kClose] () { async [kClose] () {
@@ -92314,50 +92526,6 @@ module.exports = {
} }
/***/ }),
/***/ 43246:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = __nccwpck_require__(36443)
const kPool = Symbol('pool')
class PoolStats {
constructor (pool) {
this[kPool] = pool
}
get connected () {
return this[kPool][kConnected]
}
get free () {
return this[kPool][kFree]
}
get pending () {
return this[kPool][kPending]
}
get queued () {
return this[kPool][kQueued]
}
get running () {
return this[kPool][kRunning]
}
get size () {
return this[kPool][kSize]
}
}
module.exports = PoolStats
/***/ }), /***/ }),
/***/ 30628: /***/ 30628:
@@ -92371,7 +92539,8 @@ const {
kClients, kClients,
kNeedDrain, kNeedDrain,
kAddClient, kAddClient,
kGetDispatcher kGetDispatcher,
kRemoveClient
} = __nccwpck_require__(42128) } = __nccwpck_require__(42128)
const Client = __nccwpck_require__(23701) const Client = __nccwpck_require__(23701)
const { const {
@@ -92401,6 +92570,7 @@ class Pool extends PoolBase {
autoSelectFamily, autoSelectFamily,
autoSelectFamilyAttemptTimeout, autoSelectFamilyAttemptTimeout,
allowH2, allowH2,
clientTtl,
...options ...options
} = {}) { } = {}) {
if (connections != null && (!Number.isFinite(connections) || connections < 0)) { if (connections != null && (!Number.isFinite(connections) || connections < 0)) {
@@ -92431,12 +92601,20 @@ class Pool extends PoolBase {
this[kConnections] = connections || null this[kConnections] = connections || null
this[kUrl] = util.parseOrigin(origin) this[kUrl] = util.parseOrigin(origin)
this[kOptions] = { ...util.deepClone(options), connect, allowH2 } this[kOptions] = { ...util.deepClone(options), connect, allowH2, clientTtl }
this[kOptions].interceptors = options.interceptors this[kOptions].interceptors = options.interceptors
? { ...options.interceptors } ? { ...options.interceptors }
: undefined : undefined
this[kFactory] = factory this[kFactory] = factory
this.on('connect', (origin, targets) => {
if (clientTtl != null && clientTtl > 0) {
for (const target of targets) {
Object.assign(target, { ttl: Date.now() })
}
}
})
this.on('connectionError', (origin, targets, error) => { this.on('connectionError', (origin, targets, error) => {
// If a connection error occurs, we remove the client from the pool, // If a connection error occurs, we remove the client from the pool,
// and emit a connectionError event. They will not be re-used. // and emit a connectionError event. They will not be re-used.
@@ -92453,8 +92631,12 @@ class Pool extends PoolBase {
} }
[kGetDispatcher] () { [kGetDispatcher] () {
const clientTtlOption = this[kOptions].clientTtl
for (const client of this[kClients]) { for (const client of this[kClients]) {
if (!client[kNeedDrain]) { // check ttl of client and if it's stale, remove it from the pool
if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && ((Date.now() - client.ttl) > clientTtlOption)) {
this[kRemoveClient](client)
} else if (!client[kNeedDrain]) {
return client return client
} }
} }
@@ -92478,13 +92660,14 @@ module.exports = Pool
"use strict"; "use strict";
const { kProxy, kClose, kDestroy } = __nccwpck_require__(36443) const { kProxy, kClose, kDestroy, kDispatch, kConnector } = __nccwpck_require__(36443)
const { URL } = __nccwpck_require__(73136) const { URL } = __nccwpck_require__(73136)
const Agent = __nccwpck_require__(57405) const Agent = __nccwpck_require__(57405)
const Pool = __nccwpck_require__(30628) const Pool = __nccwpck_require__(30628)
const DispatcherBase = __nccwpck_require__(21841) const DispatcherBase = __nccwpck_require__(21841)
const { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = __nccwpck_require__(68707) const { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = __nccwpck_require__(68707)
const buildConnector = __nccwpck_require__(59136) const buildConnector = __nccwpck_require__(59136)
const Client = __nccwpck_require__(23701)
const kAgent = Symbol('proxy agent') const kAgent = Symbol('proxy agent')
const kClient = Symbol('proxy client') const kClient = Symbol('proxy client')
@@ -92492,6 +92675,7 @@ const kProxyHeaders = Symbol('proxy headers')
const kRequestTls = Symbol('request tls settings') const kRequestTls = Symbol('request tls settings')
const kProxyTls = Symbol('proxy tls settings') const kProxyTls = Symbol('proxy tls settings')
const kConnectEndpoint = Symbol('connect endpoint function') const kConnectEndpoint = Symbol('connect endpoint function')
const kTunnelProxy = Symbol('tunnel proxy')
function defaultProtocolPort (protocol) { function defaultProtocolPort (protocol) {
return protocol === 'https:' ? 443 : 80 return protocol === 'https:' ? 443 : 80
@@ -92503,6 +92687,61 @@ function defaultFactory (origin, opts) {
const noop = () => {} const noop = () => {}
class ProxyClient extends DispatcherBase {
#client = null
constructor (origin, opts) {
if (typeof origin === 'string') {
origin = new URL(origin)
}
if (origin.protocol !== 'http:' && origin.protocol !== 'https:') {
throw new InvalidArgumentError('ProxyClient only supports http and https protocols')
}
super()
this.#client = new Client(origin, opts)
}
async [kClose] () {
await this.#client.close()
}
async [kDestroy] () {
await this.#client.destroy()
}
async [kDispatch] (opts, handler) {
const { method, origin } = opts
if (method === 'CONNECT') {
this.#client[kConnector]({
origin,
port: opts.port || defaultProtocolPort(opts.protocol),
path: opts.host,
signal: opts.signal,
headers: {
...this[kProxyHeaders],
host: opts.host
},
servername: this[kProxyTls]?.servername || opts.servername
},
(err, socket) => {
if (err) {
handler.callback(err)
} else {
handler.callback(null, { socket, statusCode: 200 })
}
}
)
return
}
if (typeof origin === 'string') {
opts.origin = new URL(origin)
}
return this.#client.dispatch(opts, handler)
}
}
class ProxyAgent extends DispatcherBase { class ProxyAgent extends DispatcherBase {
constructor (opts) { constructor (opts) {
if (!opts || (typeof opts === 'object' && !(opts instanceof URL) && !opts.uri)) { if (!opts || (typeof opts === 'object' && !(opts instanceof URL) && !opts.uri)) {
@@ -92514,6 +92753,8 @@ class ProxyAgent extends DispatcherBase {
throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.') throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')
} }
const { proxyTunnel = true } = opts
super() super()
const url = this.#getUrl(opts) const url = this.#getUrl(opts)
@@ -92535,9 +92776,19 @@ class ProxyAgent extends DispatcherBase {
this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}` this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`
} }
const factory = (!proxyTunnel && protocol === 'http:')
? (origin, options) => {
if (origin.protocol === 'http:') {
return new ProxyClient(origin, options)
}
return new Client(origin, options)
}
: undefined
const connect = buildConnector({ ...opts.proxyTls }) const connect = buildConnector({ ...opts.proxyTls })
this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }) this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })
this[kClient] = clientFactory(url, { connect }) this[kClient] = clientFactory(url, { connect, factory })
this[kTunnelProxy] = proxyTunnel
this[kAgent] = new Agent({ this[kAgent] = new Agent({
...opts, ...opts,
connect: async (opts, callback) => { connect: async (opts, callback) => {
@@ -92593,6 +92844,10 @@ class ProxyAgent extends DispatcherBase {
headers.host = host headers.host = host
} }
if (!this.#shouldConnect(new URL(opts.origin))) {
opts.path = opts.origin + opts.path
}
return this[kAgent].dispatch( return this[kAgent].dispatch(
{ {
...opts, ...opts,
@@ -92625,6 +92880,19 @@ class ProxyAgent extends DispatcherBase {
await this[kAgent].destroy() await this[kAgent].destroy()
await this[kClient].destroy() await this[kClient].destroy()
} }
#shouldConnect (uri) {
if (typeof uri === 'string') {
uri = new URL(uri)
}
if (this[kTunnelProxy]) {
return true
}
if (uri.protocol !== 'http:' || this[kProxy].protocol !== 'http:') {
return true
}
return false
}
} }
/** /**
@@ -93223,7 +93491,7 @@ const assert = __nccwpck_require__(34589)
* here, which we then just pass on to the next handler (most likely a * here, which we then just pass on to the next handler (most likely a
* CacheHandler). Note that this assumes the proper headers were already * CacheHandler). Note that this assumes the proper headers were already
* included in the request to tell the origin that we want to revalidate the * included in the request to tell the origin that we want to revalidate the
* response (i.e. if-modified-since). * response (i.e. if-modified-since or if-none-match).
* *
* @see https://www.rfc-editor.org/rfc/rfc9111.html#name-validation * @see https://www.rfc-editor.org/rfc/rfc9111.html#name-validation
* *
@@ -94219,7 +94487,7 @@ const util = __nccwpck_require__(3440)
const CacheHandler = __nccwpck_require__(39976) const CacheHandler = __nccwpck_require__(39976)
const MemoryCacheStore = __nccwpck_require__(74889) const MemoryCacheStore = __nccwpck_require__(74889)
const CacheRevalidationHandler = __nccwpck_require__(17133) const CacheRevalidationHandler = __nccwpck_require__(17133)
const { assertCacheStore, assertCacheMethods, makeCacheKey, parseCacheControlHeader } = __nccwpck_require__(47659) const { assertCacheStore, assertCacheMethods, makeCacheKey, normaliseHeaders, parseCacheControlHeader } = __nccwpck_require__(47659)
const { AbortError } = __nccwpck_require__(68707) const { AbortError } = __nccwpck_require__(68707)
/** /**
@@ -94233,7 +94501,12 @@ const { AbortError } = __nccwpck_require__(68707)
*/ */
function needsRevalidation (result, cacheControlDirectives) { function needsRevalidation (result, cacheControlDirectives) {
if (cacheControlDirectives?.['no-cache']) { if (cacheControlDirectives?.['no-cache']) {
// Always revalidate requests with the no-cache directive // Always revalidate requests with the no-cache request directive
return true
}
if (result.cacheControlDirectives?.['no-cache'] && !Array.isArray(result.cacheControlDirectives['no-cache'])) {
// Always revalidate requests with unqualified no-cache response directive
return true return true
} }
@@ -94434,7 +94707,7 @@ function handleResult (
// Check if the response is stale // Check if the response is stale
if (needsRevalidation(result, reqCacheControl)) { if (needsRevalidation(result, reqCacheControl)) {
if (util.isStream(opts.body) && util.bodyLength(opts.body) !== 0) { if (util.isStream(opts.body) && util.bodyLength(opts.body) !== 0) {
// If body is is stream we can't revalidate... // If body is a stream we can't revalidate...
// TODO (fix): This could be less strict... // TODO (fix): This could be less strict...
return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler)) return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler))
} }
@@ -94532,6 +94805,11 @@ module.exports = (opts = {}) => {
return dispatch(opts, handler) return dispatch(opts, handler)
} }
opts = {
...opts,
headers: normaliseHeaders(opts)
}
const reqCacheControl = opts.headers?.['cache-control'] const reqCacheControl = opts.headers?.['cache-control']
? parseCacheControlHeader(opts.headers['cache-control']) ? parseCacheControlHeader(opts.headers['cache-control'])
: undefined : undefined
@@ -95892,11 +96170,12 @@ const {
kMockAgentIsCallHistoryEnabled, kMockAgentIsCallHistoryEnabled,
kMockAgentAddCallHistoryLog, kMockAgentAddCallHistoryLog,
kMockAgentMockCallHistoryInstance, kMockAgentMockCallHistoryInstance,
kMockAgentAcceptsNonStandardSearchParameters,
kMockCallHistoryAddLog kMockCallHistoryAddLog
} = __nccwpck_require__(91117) } = __nccwpck_require__(91117)
const MockClient = __nccwpck_require__(47365) const MockClient = __nccwpck_require__(47365)
const MockPool = __nccwpck_require__(94004) const MockPool = __nccwpck_require__(94004)
const { matchValue, buildAndValidateMockOptions } = __nccwpck_require__(53397) const { matchValue, normalizeSearchParams, buildAndValidateMockOptions } = __nccwpck_require__(53397)
const { InvalidArgumentError, UndiciError } = __nccwpck_require__(68707) const { InvalidArgumentError, UndiciError } = __nccwpck_require__(68707)
const Dispatcher = __nccwpck_require__(30883) const Dispatcher = __nccwpck_require__(30883)
const PendingInterceptorsFormatter = __nccwpck_require__(56142) const PendingInterceptorsFormatter = __nccwpck_require__(56142)
@@ -95911,6 +96190,7 @@ class MockAgent extends Dispatcher {
this[kNetConnect] = true this[kNetConnect] = true
this[kIsMockActive] = true this[kIsMockActive] = true
this[kMockAgentIsCallHistoryEnabled] = mockOptions?.enableCallHistory ?? false this[kMockAgentIsCallHistoryEnabled] = mockOptions?.enableCallHistory ?? false
this[kMockAgentAcceptsNonStandardSearchParameters] = mockOptions?.acceptNonStandardSearchParameters ?? false
// Instantiate Agent and encapsulate // Instantiate Agent and encapsulate
if (opts?.agent && typeof opts.agent.dispatch !== 'function') { if (opts?.agent && typeof opts.agent.dispatch !== 'function') {
@@ -95943,7 +96223,17 @@ class MockAgent extends Dispatcher {
this[kMockAgentAddCallHistoryLog](opts) this[kMockAgentAddCallHistoryLog](opts)
return this[kAgent].dispatch(opts, handler) const acceptNonStandardSearchParameters = this[kMockAgentAcceptsNonStandardSearchParameters]
const dispatchOpts = { ...opts }
if (acceptNonStandardSearchParameters && dispatchOpts.path) {
const [path, searchParams] = dispatchOpts.path.split('?')
const normalizedSearchParams = normalizeSearchParams(searchParams, acceptNonStandardSearchParameters)
dispatchOpts.path = `${path}?${normalizedSearchParams}`
}
return this[kAgent].dispatch(dispatchOpts, handler)
} }
async close () { async close () {
@@ -96023,7 +96313,7 @@ class MockAgent extends Dispatcher {
} }
[kMockAgentSet] (origin, dispatcher) { [kMockAgentSet] (origin, dispatcher) {
this[kClients].set(origin, dispatcher) this[kClients].set(origin, { count: 0, dispatcher })
} }
[kFactory] (origin) { [kFactory] (origin) {
@@ -96035,9 +96325,9 @@ class MockAgent extends Dispatcher {
[kMockAgentGet] (origin) { [kMockAgentGet] (origin) {
// First check if we can immediately find it // First check if we can immediately find it
const client = this[kClients].get(origin) const result = this[kClients].get(origin)
if (client) { if (result?.dispatcher) {
return client return result.dispatcher
} }
// If the origin is not a string create a dummy parent pool and return to user // If the origin is not a string create a dummy parent pool and return to user
@@ -96048,11 +96338,11 @@ class MockAgent extends Dispatcher {
} }
// If we match, create a pool and assign the same dispatches // If we match, create a pool and assign the same dispatches
for (const [keyMatcher, nonExplicitDispatcher] of Array.from(this[kClients])) { for (const [keyMatcher, result] of Array.from(this[kClients])) {
if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { if (result && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {
const dispatcher = this[kFactory](origin) const dispatcher = this[kFactory](origin)
this[kMockAgentSet](origin, dispatcher) this[kMockAgentSet](origin, dispatcher)
dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches] dispatcher[kDispatches] = result.dispatcher[kDispatches]
return dispatcher return dispatcher
} }
} }
@@ -96066,7 +96356,7 @@ class MockAgent extends Dispatcher {
const mockAgentClients = this[kClients] const mockAgentClients = this[kClients]
return Array.from(mockAgentClients.entries()) return Array.from(mockAgentClients.entries())
.flatMap(([origin, scope]) => scope[kDispatches].map(dispatch => ({ ...dispatch, origin }))) .flatMap(([origin, result]) => result.dispatcher[kDispatches].map(dispatch => ({ ...dispatch, origin })))
.filter(({ pending }) => pending) .filter(({ pending }) => pending)
} }
@@ -96766,6 +97056,7 @@ module.exports = {
kMockAgentRegisterCallHistory: Symbol('mock agent register mock call history'), kMockAgentRegisterCallHistory: Symbol('mock agent register mock call history'),
kMockAgentAddCallHistoryLog: Symbol('mock agent add call history log'), kMockAgentAddCallHistoryLog: Symbol('mock agent add call history log'),
kMockAgentIsCallHistoryEnabled: Symbol('mock agent is call history enabled'), kMockAgentIsCallHistoryEnabled: Symbol('mock agent is call history enabled'),
kMockAgentAcceptsNonStandardSearchParameters: Symbol('mock agent accepts non standard search parameters'),
kMockCallHistoryAddLog: Symbol('mock call history add log') kMockCallHistoryAddLog: Symbol('mock call history add log')
} }
@@ -96870,13 +97161,42 @@ function matchHeaders (mockDispatch, headers) {
return true return true
} }
function normalizeSearchParams (query) {
if (typeof query !== 'string') {
return query
}
const originalQp = new URLSearchParams(query)
const normalizedQp = new URLSearchParams()
for (let [key, value] of originalQp.entries()) {
key = key.replace('[]', '')
const valueRepresentsString = /^(['"]).*\1$/.test(value)
if (valueRepresentsString) {
normalizedQp.append(key, value)
continue
}
if (value.includes(',')) {
const values = value.split(',')
for (const v of values) {
normalizedQp.append(key, v)
}
continue
}
normalizedQp.append(key, value)
}
return normalizedQp
}
function safeUrl (path) { function safeUrl (path) {
if (typeof path !== 'string') { if (typeof path !== 'string') {
return path return path
} }
const pathSegments = path.split('?', 3)
const pathSegments = path.split('?')
if (pathSegments.length !== 2) { if (pathSegments.length !== 2) {
return path return path
} }
@@ -97154,6 +97474,10 @@ function buildAndValidateMockOptions (opts) {
throw new InvalidArgumentError('options.enableCallHistory must to be a boolean') throw new InvalidArgumentError('options.enableCallHistory must to be a boolean')
} }
if ('acceptNonStandardSearchParameters' in mockOptions && typeof mockOptions.acceptNonStandardSearchParameters !== 'boolean') {
throw new InvalidArgumentError('options.acceptNonStandardSearchParameters must to be a boolean')
}
return mockOptions return mockOptions
} }
} }
@@ -97173,7 +97497,8 @@ module.exports = {
checkNetConnect, checkNetConnect,
buildAndValidateMockOptions, buildAndValidateMockOptions,
getHeaderByName, getHeaderByName,
buildHeadersFromArray buildHeadersFromArray,
normalizeSearchParams
} }
@@ -97248,7 +97573,19 @@ function makeCacheKey (opts) {
throw new Error('opts.origin is undefined') throw new Error('opts.origin is undefined')
} }
/** @type {Record<string, string[] | string>} */ return {
origin: opts.origin.toString(),
method: opts.method,
path: opts.path,
headers: opts.headers
}
}
/**
* @param {Record<string, string[] | string>}
* @return {Record<string, string[] | string>}
*/
function normaliseHeaders (opts) {
let headers let headers
if (opts.headers == null) { if (opts.headers == null) {
headers = {} headers = {}
@@ -97274,12 +97611,7 @@ function makeCacheKey (opts) {
throw new Error('opts.headers is not an object') throw new Error('opts.headers is not an object')
} }
return { return headers
origin: opts.origin.toString(),
method: opts.method,
path: opts.path,
headers
}
} }
/** /**
@@ -97586,6 +97918,7 @@ function assertCacheMethods (methods, name = 'CacheMethods') {
module.exports = { module.exports = {
makeCacheKey, makeCacheKey,
normaliseHeaders,
assertCacheKey, assertCacheKey,
assertCacheValue, assertCacheValue,
parseCacheControlHeader, parseCacheControlHeader,
@@ -97863,6 +98196,46 @@ module.exports = {
} }
/***/ }),
/***/ 46854:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
const {
kConnected,
kPending,
kRunning,
kSize,
kFree,
kQueued
} = __nccwpck_require__(36443)
class ClientStats {
constructor (client) {
this.connected = client[kConnected]
this.pending = client[kPending]
this.running = client[kRunning]
this.size = client[kSize]
}
}
class PoolStats {
constructor (pool) {
this.connected = pool[kConnected]
this.free = pool[kFree]
this.pending = pool[kPending]
this.queued = pool[kQueued]
this.running = pool[kRunning]
this.size = pool[kSize]
}
}
module.exports = { ClientStats, PoolStats }
/***/ }), /***/ }),
/***/ 96603: /***/ 96603:
@@ -104525,7 +104898,9 @@ function finalizeAndReportTiming (response, initiatorType = 'other') {
originalURL.href, originalURL.href,
initiatorType, initiatorType,
globalThis, globalThis,
cacheState cacheState,
'', // bodyType
response.status
) )
} }
@@ -105210,7 +105585,7 @@ function fetchFinale (fetchParams, response) {
// 3. Set fetchParamss controllers report timing steps to the following steps given a global object global: // 3. Set fetchParamss controllers report timing steps to the following steps given a global object global:
fetchParams.controller.reportTimingSteps = () => { fetchParams.controller.reportTimingSteps = () => {
// 1. If fetchParamss requests URLs scheme is not an HTTP(S) scheme, then return. // 1. If fetchParamss requests URLs scheme is not an HTTP(S) scheme, then return.
if (fetchParams.request.url.protocol !== 'https:') { if (!urlIsHttpHttpsScheme(fetchParams.request.url)) {
return return
} }
@@ -105252,7 +105627,6 @@ function fetchFinale (fetchParams, response) {
// fetchParamss requests URL, fetchParamss requests initiator type, global, cacheState, bodyInfo, // fetchParamss requests URL, fetchParamss requests initiator type, global, cacheState, bodyInfo,
// and responseStatus. // and responseStatus.
if (fetchParams.request.initiatorType != null) { if (fetchParams.request.initiatorType != null) {
// TODO: update markresourcetiming
markResourceTiming(timingInfo, fetchParams.request.url.href, fetchParams.request.initiatorType, globalThis, cacheState, bodyInfo, responseStatus) markResourceTiming(timingInfo, fetchParams.request.url.href, fetchParams.request.initiatorType, globalThis, cacheState, bodyInfo, responseStatus)
} }
} }
@@ -113169,7 +113543,7 @@ function parseExtensions (extensions) {
while (position.position < extensions.length) { while (position.position < extensions.length) {
const pair = collectASequenceOfCodePointsFast(';', extensions, position) const pair = collectASequenceOfCodePointsFast(';', extensions, position)
const [name, value = ''] = pair.split('=') const [name, value = ''] = pair.split('=', 2)
extensionList.set( extensionList.set(
removeHTTPWhitespace(name, true, false), removeHTTPWhitespace(name, true, false),
@@ -121046,7 +121420,8 @@ async function computeKeys() {
const suffix = inputs_1.cacheSuffix ? `-${inputs_1.cacheSuffix}` : ""; const suffix = inputs_1.cacheSuffix ? `-${inputs_1.cacheSuffix}` : "";
const pythonVersion = await getPythonVersion(); const pythonVersion = await getPythonVersion();
const platform = await (0, platforms_1.getPlatform)(); const platform = await (0, platforms_1.getPlatform)();
return `setup-uv-${CACHE_VERSION}-${(0, platforms_1.getArch)()}-${platform}-${pythonVersion}${cacheDependencyPathHash}${suffix}`; const pruned = inputs_1.pruneCache ? "-pruned" : "";
return `setup-uv-${CACHE_VERSION}-${(0, platforms_1.getArch)()}-${platform}-${pythonVersion}${pruned}${cacheDependencyPathHash}${suffix}`;
} }
async function getPythonVersion() { async function getPythonVersion() {
if (inputs_1.pythonVersion !== "") { if (inputs_1.pythonVersion !== "") {
@@ -121062,7 +121437,7 @@ async function getPythonVersion() {
}, },
}; };
try { try {
const execArgs = ["python", "find"]; const execArgs = ["python", "find", "--directory", inputs_1.workingDirectory];
await exec.exec("uv", execArgs, options); await exec.exec("uv", execArgs, options);
const pythonPath = output.trim(); const pythonPath = output.trim();
output = ""; output = "";
@@ -121188,6 +121563,314 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.KNOWN_CHECKSUMS = void 0; exports.KNOWN_CHECKSUMS = void 0;
// AUTOGENERATED_DO_NOT_EDIT // AUTOGENERATED_DO_NOT_EDIT
exports.KNOWN_CHECKSUMS = { exports.KNOWN_CHECKSUMS = {
"aarch64-apple-darwin-0.7.14": "7cb9cb6b3005a16356493887d7e7e297237b754b5753b91e826ada98ab2da172",
"aarch64-pc-windows-msvc-0.7.14": "f28f27e529e30e96e7b289b724c8229cfc5ca25312c23bdae089d6998ffd0aae",
"aarch64-unknown-linux-gnu-0.7.14": "c0932f428d24d87aaad6a6b7ad48aa09f260d2da5c69e877acd87c3ac90fbbad",
"aarch64-unknown-linux-musl-0.7.14": "30e41b1f68b3e57c1375c0b2e7fe932a9eb5487fbcef7c4c7d03def3e05b9f7e",
"arm-unknown-linux-musleabihf-0.7.14": "3b494d3d6a892d9c03d1fa6dcec8ac6077653939a6645570ab6f1f40adbd0b3c",
"armv7-unknown-linux-gnueabihf-0.7.14": "d5d1f6c49559914678267ce9f3a57528ab45e26e907a816736306b4f10a7b4b8",
"armv7-unknown-linux-musleabihf-0.7.14": "0016d3138edc52de9f2f4b0587afb6b579dc3bb3abfe2df151f97cc43a4ab421",
"i686-pc-windows-msvc-0.7.14": "42391f3a71229342b17d944e956d116aabc5147b0ed28a26c59601feac1f24cd",
"i686-unknown-linux-gnu-0.7.14": "71c358c315da7ddd2de334fe52a54719f9bdac8d6970e7966e2d080ae73ad028",
"i686-unknown-linux-musl-0.7.14": "d02de9391fe7b7d7e97dc2fa63a539201a31eb51d2c6a87b7570cf8a5ac22398",
"powerpc64-unknown-linux-gnu-0.7.14": "a2a43332f860520f7cd3d32f5a4ed5e0d938cc59e025372f8f1bfe47ea64355a",
"powerpc64le-unknown-linux-gnu-0.7.14": "3c545528b601a75baad5e1cc93cbf973123e9e6df6d905b432d91ba9ca769c0b",
"riscv64gc-unknown-linux-gnu-0.7.14": "4085fd8d4acb0a50a012fa63ae37e50472bf8742d58f4943529b5b5bda95a1a9",
"s390x-unknown-linux-gnu-0.7.14": "b20a69092f3171dd99445fe0d71e3ed3e67ff85346cb0723a43a1b8d55ce0f33",
"x86_64-apple-darwin-0.7.14": "352a56bb3823040f19f936dd5e277340cd304da03e5b00c0959800a72a9f55ac",
"x86_64-pc-windows-msvc-0.7.14": "f9ac952c69d32b2263ba19ba93d18d9e708dcb9bddb8124555bbda96d6d5168f",
"x86_64-unknown-linux-gnu-0.7.14": "2b38641d02bf107c5099f09778fda93bbaa4a4a2ee44ba303a4097102254e5e5",
"x86_64-unknown-linux-musl-0.7.14": "8c62a823744630e6cf3fdf0bf38c4fe4558bfcbe082b076a76446a3aab2af5f5",
"aarch64-apple-darwin-0.7.13": "721f532b73171586574298d4311a91d5ea2c802ef4db3ebafc434239330090c6",
"aarch64-pc-windows-msvc-0.7.13": "bb40708ad549ad6a12209cb139dd751bf0ede41deb679ce7513ce197bd9ef234",
"aarch64-unknown-linux-gnu-0.7.13": "0b2ad9fe4295881615295add8cc5daa02549d29cc9a61f0578e397efcf12f08f",
"aarch64-unknown-linux-musl-0.7.13": "52baba71881c978d32b7c32216ad0cde4546a4dc62e606c9834ec4616c1610eb",
"arm-unknown-linux-musleabihf-0.7.13": "ff2b11fff489301f9d55c851b9ebce7ca5530d743d2c0a3861cc45896715ea9b",
"armv7-unknown-linux-gnueabihf-0.7.13": "903350811ee31b2b758c8afb853490c27a34382a535b236739705b104bc13894",
"armv7-unknown-linux-musleabihf-0.7.13": "7e3b2aa966c54ced0fcd9febea6b913ee7ea12ee85246513895f199ab13296a8",
"i686-pc-windows-msvc-0.7.13": "5cf71014fde208ee0833026b3828007f8eaf514ec003784dc1ae92633877179b",
"i686-unknown-linux-gnu-0.7.13": "ff031258ff08b3aca46648398e21fe9679744501e3c9a928c8e42d596a708bbc",
"i686-unknown-linux-musl-0.7.13": "41851d695bb5401bce5af81a156d63215087cf8e8e1275e69dd96de4bfa30c26",
"powerpc64-unknown-linux-gnu-0.7.13": "02a80ce1436bf673b0d7276bb24dea0bbc70958dc91e5fb04ad37ac515be7424",
"powerpc64le-unknown-linux-gnu-0.7.13": "60c8907cce089de97dcce732ae363eda0620f7196c25e8bd539f168b93f9e34c",
"riscv64gc-unknown-linux-gnu-0.7.13": "521a5235bc5a053dd7f0221c363544cef6d033064cc9d92dbb4ef19771000052",
"s390x-unknown-linux-gnu-0.7.13": "41e4b6093dd408b41dffb4c9e08c4aa31424ee4573ce9c95566c2617f7f2d0c6",
"x86_64-apple-darwin-0.7.13": "d785753ac092e25316180626aa691c5dfe1fb075290457ba4fdb72c7c5661321",
"x86_64-pc-windows-msvc-0.7.13": "e199b10bef1a7cc540014483e7f60f825a174988f41020e9d2a6b01bd60f0669",
"x86_64-unknown-linux-gnu-0.7.13": "909278eb197c5ed0e9b5f16317d1255270d1f9ea4196e7179ce934d48c4c2545",
"x86_64-unknown-linux-musl-0.7.13": "560bb64e060354e45138d7dd47c8dd48a4f7a349af5520d29cd3c704e79f286c",
"aarch64-apple-darwin-0.7.12": "189108cd026c25d40fb086eaaf320aac52c3f7aab63e185bac51305a1576fc7e",
"aarch64-pc-windows-msvc-0.7.12": "fbedfb71356d0e63c86b507cf1434a58406afe6eac77aee9d37b8282d4006e14",
"aarch64-unknown-linux-gnu-0.7.12": "23233d2e950ed8187858350da5c6803b14cbbeaef780382093bb2f2bc4ba1200",
"aarch64-unknown-linux-musl-0.7.12": "0589f6d27bbbe2e205aa6fc25e4cd28ab97e984cdba20842de8d3a00714e13e9",
"arm-unknown-linux-musleabihf-0.7.12": "6996e32ac1c37af33a4c6e40ab0126a82d62ccb94edb164b7dae554be4dd8336",
"armv7-unknown-linux-gnueabihf-0.7.12": "aee2dc202deed7e15984d71eb59803111052fbe8c0fb3ffad27ae0a6d290d74f",
"armv7-unknown-linux-musleabihf-0.7.12": "87bd7676d31858d9e1937ab69d13e30cc93ebb09fb246dde6a8f183e9570a82c",
"i686-pc-windows-msvc-0.7.12": "c7ec71ba64d01ef3cdb89553445de94ab4fd7375c8f2a7068353aec7a3a06342",
"i686-unknown-linux-gnu-0.7.12": "d1def68ff10b30327a5cacab497664aaf8338e192ba277b76f45dad63208f2e2",
"i686-unknown-linux-musl-0.7.12": "f56a0a9c84b35b7e910c4d628c667b843fb3fa1d9dddb0bbf4bf3f21eeaee07f",
"powerpc64-unknown-linux-gnu-0.7.12": "6eafb546d1b8642a5c27e4dfda213659fee41b0fd150b4c33ef96c917e595344",
"powerpc64le-unknown-linux-gnu-0.7.12": "0d550348d7a0f54352824cd751dc7baea0c23b17d744a5a7784b6b825e5fc909",
"s390x-unknown-linux-gnu-0.7.12": "76f5a2c1c13446233312d140136f3f55fa7c162176327830eb109ccaae6c9cea",
"x86_64-apple-darwin-0.7.12": "a338354420dba089218c05d4d585e4bcf174a65fe53260592b2af19ceec85835",
"x86_64-pc-windows-msvc-0.7.12": "2cf29c8ffaa2549aa0f86927b2510008e8ca3dcd2100277d86faf437382a371b",
"x86_64-unknown-linux-gnu-0.7.12": "735891fb553d0be129f3aa39dc8e9c4c49aaa76ec17f7dfb6a732e79a714873a",
"x86_64-unknown-linux-musl-0.7.12": "bb493f1e6ae426c06b5a103cb71aa60c678976d2377f0590644538658656c2a7",
"aarch64-apple-darwin-0.7.11": "b5f4cb27a3002d6590c3681377c6d826db0b52e2a9529c7144fcd53fec89ba79",
"aarch64-pc-windows-msvc-0.7.11": "856bac93344a6980b2703a4143f26fc042c941b02f11ed21f55ec6be3fdfde87",
"aarch64-unknown-linux-gnu-0.7.11": "80cf695c4e10b532e9db3c7fbbcfb0f8356f2e70e7a4a5040e005f0fae70923d",
"aarch64-unknown-linux-musl-0.7.11": "2ad20d143c74d7f63d1c99db3999f239f045b7be041e23f6ac8b269c99fa54fe",
"arm-unknown-linux-musleabihf-0.7.11": "21fec46f09d96cd9f51378fe01ed050dd2032c1fef823f8bd81fa50a2337bbcc",
"armv7-unknown-linux-gnueabihf-0.7.11": "1a75aaff4695c07151d5b9abb50232ea9fb6f5ccc82d4b319abd8796605d9db8",
"armv7-unknown-linux-musleabihf-0.7.11": "431b3115ab8fb5e2210d01f29b7901e6eb1174ff65545ec49318d6d4adf4c802",
"i686-pc-windows-msvc-0.7.11": "985f5eabf42b8ad0166ae6b9f799564220fa932938a8401c890d5e07321ce7c0",
"i686-unknown-linux-gnu-0.7.11": "619e205d56594fc530dbde6c6a543dd094c796791a5e2cfcd3bb70fa5767bf9d",
"i686-unknown-linux-musl-0.7.11": "838c6336ba8e88818459b10c3520e83601b9c0a9850a209accef9782c050faad",
"powerpc64-unknown-linux-gnu-0.7.11": "769c7f32cbc2ad918ccf9ae661d99a6c0d0fd3a0056691832b4a79049a9d06ec",
"powerpc64le-unknown-linux-gnu-0.7.11": "c9bbbcc2d4f11c83e0edbff5868d95f07f81455adb6f2f909cdb9b992928101b",
"s390x-unknown-linux-gnu-0.7.11": "0e7b9b27e9fef1b42aa052173a2a47a2ec33bad82425237dfac402b7f69bd073",
"x86_64-apple-darwin-0.7.11": "97980b067dc3fea16534371b030eaf38554d701de5058004edcfd542a88a2e84",
"x86_64-pc-windows-msvc-0.7.11": "0f4ef69fde75bb8bcfba7ecf0a4134d8875578cd2e98c9fcfc21573e746c70ac",
"x86_64-unknown-linux-gnu-0.7.11": "df54b274e99b7ef26030dc21d105ce115bc21a644fc6a321bde9222cb1616de6",
"x86_64-unknown-linux-musl-0.7.11": "e4e8948645ebea1950a3c77574ce079dfe1c71547ba5a8a141d6e362fa036684",
"aarch64-apple-darwin-0.7.10": "316b80c19832ff4085748c3a20a3e05f36e1d19234e8b9399a6fd1c971241bce",
"aarch64-pc-windows-msvc-0.7.10": "1eed0f11bca79403648195f8ce257763d956e861cb73de98c480dae15358bb26",
"aarch64-unknown-linux-gnu-0.7.10": "8746acb754807050124c6dbcb05fcad2665a3f0cdb2a0fe9de528bd37b092656",
"aarch64-unknown-linux-musl-0.7.10": "f9000f08850a5c575d5fe1ddc2ec928ecc9f287ecdcd9fa1ea4e3f405b23d4a3",
"arm-unknown-linux-musleabihf-0.7.10": "657b1b8a534f7fe78e63aff56aac5bbcb21f6254df79825fe204d5c7c1219653",
"armv7-unknown-linux-gnueabihf-0.7.10": "1cf4a8f40abbd802a7b44fe9695da356701100d267eb3567c17db27e0a24cf69",
"armv7-unknown-linux-musleabihf-0.7.10": "5282b825f469295dc2b88c94eccd375a93135a279b0711cb10e615e7a71a0617",
"i686-pc-windows-msvc-0.7.10": "f3c62ff935685d9d4312b82d01ed386493b97c3d22bd434d943fc99ce9aef83a",
"i686-unknown-linux-gnu-0.7.10": "24a2a3eb0e89b74de6aac492516303747519439775d22254e838d33410ac27b2",
"i686-unknown-linux-musl-0.7.10": "e317d35af60b38ad32935390a83d12adc3ed7ffdbc2ccccd3039bf6cef650eb3",
"powerpc64-unknown-linux-gnu-0.7.10": "c1ab41ec53cd720179f3351b61b4ded73ec520804413b75051736829a125e4fe",
"powerpc64le-unknown-linux-gnu-0.7.10": "ce2c3fdf177facf6c77c5316bb54b9deaf498bee9f664e01a4030ecf27063ab1",
"s390x-unknown-linux-gnu-0.7.10": "b7603e3f4494e9093a86ace1103e3fcfa172a952989f0c7dca6eeac7f77be81f",
"x86_64-apple-darwin-0.7.10": "9123e8aa944654404787f80731ec08850c4e9b9129c0d0445c9e41438828b8b8",
"x86_64-pc-windows-msvc-0.7.10": "1568a71af55e9d9bc4a050ec79134a342a8a3765a73f6b7ec26490c2814f8797",
"x86_64-unknown-linux-gnu-0.7.10": "ff2ef46298963fee8104ccb3c0a4ecbc97c057ac6a0bc5fec7636c855384252e",
"x86_64-unknown-linux-musl-0.7.10": "b2cf1f63e83a873652ffef032681bbbe1469e3bab617f7e715e09529c30f5689",
"aarch64-apple-darwin-0.7.9": "7a8b716a2b5905fb89512371ce6c6dbc0dd0344185bd1cd93a3fe27516eef7ec",
"aarch64-pc-windows-msvc-0.7.9": "63c0990b9c49dc9f9a92aaaa27ba627cbf9cf6b2e42766588ef6f880208893de",
"aarch64-unknown-linux-gnu-0.7.9": "23242a8051e2191ed8d61f71a6792f2fc069ef18e6cdf07dedac3d3f648643c5",
"aarch64-unknown-linux-musl-0.7.9": "60f30508c9002b2b7af55d70db2741cf7ea24c066ced710ad09681a6d2d19b3a",
"arm-unknown-linux-musleabihf-0.7.9": "57d8e43e257f0ccd9df2b8581338c5145b9937aba53e9c9bb81b31044b720c61",
"armv7-unknown-linux-gnueabihf-0.7.9": "83353ee7e1724083ea94d7f488fa34c9159995a3996f87017fdf72e422c93242",
"armv7-unknown-linux-musleabihf-0.7.9": "b2d8d81bc2abbdd857bad7cd3bf0d36c5155c0681aae8ac9fb8f49d54b95b3f2",
"i686-pc-windows-msvc-0.7.9": "b5dc0dc10d9dd0dcf5729a94e98538418760d13877d4d4b1bc4efa9926280e78",
"i686-unknown-linux-gnu-0.7.9": "fb8f1a7cb593c819c0fff71afa2dc480237ca80a3f5d8d433c8b51d2ae90ffdf",
"i686-unknown-linux-musl-0.7.9": "a77592be13fea81ca42b2b7815784e769e1fd9ff476cfab69f2652823f99c55e",
"powerpc64-unknown-linux-gnu-0.7.9": "26fee4867c158c04dd3a51ff9a23b4220a9ba69fae2e71be618d2cfa48164d96",
"powerpc64le-unknown-linux-gnu-0.7.9": "d588fbb01cacccb7fd6e0f101d34282ebb0569381f967d332f8072055e39840e",
"s390x-unknown-linux-gnu-0.7.9": "d823d68ff662b7e59c6791281427bf1019dae791a964ffae31ae1d2d723dfc08",
"x86_64-apple-darwin-0.7.9": "a4c084568850588b77e4a34c21b7df5c8cf9e2160b4d614307ed92fa12411742",
"x86_64-pc-windows-msvc-0.7.9": "f91d8a3322a10caf257fd416807bd8d2801285b80b46ee37f2d0c6e426b8822c",
"x86_64-unknown-linux-gnu-0.7.9": "b8450a419c0bcc85841bbed8511eb59e2a5683ddd3f813f2b98b97babf6b1b8b",
"x86_64-unknown-linux-musl-0.7.9": "95918a1e1faf851a39cad402f1a77318e8fc90b7f829833ebaff27de9722d60e",
"aarch64-apple-darwin-0.7.8": "ad6b3825ba277de70b9d0a37055f7d828f3f37416aee1cde65000f330efd4587",
"aarch64-pc-windows-msvc-0.7.8": "e43448e5e3267dffb6bbdc30ffa291f8db664d1da9d084c44f99dc568f459e0a",
"aarch64-unknown-linux-gnu-0.7.8": "da9e1c97f1452b25c8955127c92da7b68be228ad0b43bf50bba4dadb25c8b337",
"aarch64-unknown-linux-musl-0.7.8": "4d18efb46f93fa942dc4c212dea3b6b07e3db62fe57d0c3d08de6bf5d9f9bb51",
"arm-unknown-linux-musleabihf-0.7.8": "133b1c3fb850ec496bfb4ef84379bfaeff1d2c322114a0984d8a5c2e10e63028",
"armv7-unknown-linux-gnueabihf-0.7.8": "7d61c6e18e81447482dc80c090c65a6615a1232512899943566baf2808ca37bb",
"armv7-unknown-linux-musleabihf-0.7.8": "0b6d6afcdb7c78e5df42cb2ab0929d2bec2654a350a8efacc6f95e830a31eb6e",
"i686-pc-windows-msvc-0.7.8": "0d4b01372ca972543cd40366bb5480bb457e79dcf45b5f662721d709d6932dbd",
"i686-unknown-linux-gnu-0.7.8": "db1c60961aea7a7f8c64a098801e0138e761b7556d1c1691fc4f3f771f0e47ae",
"i686-unknown-linux-musl-0.7.8": "b765eb1817bc1d545f4860eff0adeb0c7907ea66be14536653192e588386b308",
"powerpc64-unknown-linux-gnu-0.7.8": "2c894b104195ab194af05c6ad756ce8746a349a8620c83888207db5fccf29a8f",
"powerpc64le-unknown-linux-gnu-0.7.8": "4b0d93385685f756068f76af1871dcb7cc8f427ab6d650afc07493d06dca71db",
"s390x-unknown-linux-gnu-0.7.8": "e58fc9f6d846ccbf50d9bcf27920ff4bc061541df8a6a3aa6f13be24981e0772",
"x86_64-apple-darwin-0.7.8": "f046249639014eb70b43cbaf83eb6f56aac724ada354f9b9aad65f9960737920",
"x86_64-pc-windows-msvc-0.7.8": "355736ddf9a01ab9da918b35470027c12128d7ed1d7f54f54771507d79529679",
"x86_64-unknown-linux-gnu-0.7.8": "285981409c746508c1fd125f66a1ea654e487bf1e4d9f45371a062338f788adb",
"x86_64-unknown-linux-musl-0.7.8": "8a707e45e0d1a8bdbc5bd1af0ae7d19ffab55f3722c5e73471039561900e3d48",
"aarch64-apple-darwin-0.7.7": "6a06eaa8165d5abd89c3dc37ffbe1db60fcf49a87d7c612bfca7e87a1514695d",
"aarch64-pc-windows-msvc-0.7.7": "e86cd59f2569f4bf475e5ad944910142c0ab107ad12613429ad8873a6f41087f",
"aarch64-unknown-linux-gnu-0.7.7": "013061d4d33385e9a3fc52df18d22334f20f12616970b0d81583d5125ce8d6fa",
"aarch64-unknown-linux-musl-0.7.7": "4014dc9dc024bb5a082f16c54adcd5936d47dae664bafa38453b3017ede41aab",
"arm-unknown-linux-musleabihf-0.7.7": "c1dc010e3ab855391f3a6906fcffbeac873d136df2b20cfd998105385444e45c",
"armv7-unknown-linux-gnueabihf-0.7.7": "e08406cfcc1ccc0c069d22c91008967f662664abdbf8a15779a1944070e0f5b2",
"armv7-unknown-linux-musleabihf-0.7.7": "35379428e6d001e63714449c26c9111d1d5ee6f3b6a95559c724ad57df9d8d17",
"i686-pc-windows-msvc-0.7.7": "5e47a44df7707b58884cdf5d30527857ec1bf186e8f200517fd11a572669cacc",
"i686-unknown-linux-gnu-0.7.7": "fc782a829cccb0201c4a918d9f5a3a114511d734953f7e5e60aed52951264454",
"i686-unknown-linux-musl-0.7.7": "10b852326ee48502d6da26c7fe394345b7ce7ca94d76f293dbe4cde9577c3993",
"powerpc64-unknown-linux-gnu-0.7.7": "4b26663e0c21289bd21c05a3ba344e6b069c600e5a6333e660ae16eb38027bd5",
"powerpc64le-unknown-linux-gnu-0.7.7": "e691d6a8a8c285cd644cf1f6d47c2568740ddca645c860f9bb23799790b54e56",
"s390x-unknown-linux-gnu-0.7.7": "b21953a1c6c5475306e64f9ccf721762d2fc6aa572ee5268ed61a3b1531f06c1",
"x86_64-apple-darwin-0.7.7": "4b337495ced2a9797357ee853873c2f5a45cc52f6ed68c9feba3c997443452b0",
"x86_64-pc-windows-msvc-0.7.7": "a27a1fdf3f6b850dfb45fb009f7ea0fe3db1a59f692ebdc64c24ff8dbd0467d1",
"x86_64-unknown-linux-gnu-0.7.7": "d83e2b9c2b251c93985824d9a12d97f5b036b7a9ff0b7d647c9ca7ae5ff2ae1b",
"x86_64-unknown-linux-musl-0.7.7": "3876cafbb6599287a78778d2c265fd2050acfc247409ed677a8583f20385a3ae",
"aarch64-apple-darwin-0.7.6": "a0e7c0e44ec4b2743e1c1d1f6edca1418687b05084f48c007c6e1c7d3a35bcd2",
"aarch64-pc-windows-msvc-0.7.6": "2ada1290e87144726b6a723b38fd34ce64da5a3fe820a21685564924f894408c",
"aarch64-unknown-linux-gnu-0.7.6": "4eae30038653bbec528257054fe07495f20c5d4bc663b630258e87d159e282b6",
"aarch64-unknown-linux-musl-0.7.6": "9e59f0753383d6a27404be238360165e415605b1504b209349852a27cc01d48f",
"arm-unknown-linux-musleabihf-0.7.6": "b81d59deeba1f92aba48aefce2b364530baa1cb8aa4c59fc2a90c9acf98c9a20",
"armv7-unknown-linux-gnueabihf-0.7.6": "e9d1b7d52def14fb1ab8af2fa52963ff8e4323934ec2e78720a94d92261fa9fc",
"armv7-unknown-linux-musleabihf-0.7.6": "c525ad0f41c67d944e56362adffcda206aef36f3ed84daf90386fcbfa4a62c66",
"i686-pc-windows-msvc-0.7.6": "aca45dbdb75cd2c5fdf70bf5ff436306d476352b135fcab544c4a9759d7d1af8",
"i686-unknown-linux-gnu-0.7.6": "71448fddb93306b1b67f0c2e711eb79b6ea33d027212259abd7546a48d15b49f",
"i686-unknown-linux-musl-0.7.6": "a641ada8b2ca3ec22c24414c2edef8c01370d7d4ac79998eac091b84f743c476",
"powerpc64-unknown-linux-gnu-0.7.6": "9f63727933d11b0157ebc3fd640811c1224fe55215acff24e8ec5747fb4f90fc",
"powerpc64le-unknown-linux-gnu-0.7.6": "da746e6e809f32ab9709e45c7d5e7c37901478cc610119c08ae335c43ac089b2",
"s390x-unknown-linux-gnu-0.7.6": "a07d4303e97f72312f9db8a1a67bae08f02d883f1879fa917b9ae87aec90d933",
"x86_64-apple-darwin-0.7.6": "718cfd68b13a1a642fadc53646742785cd33b2e06124a01454ad358617841852",
"x86_64-pc-windows-msvc-0.7.6": "4c81818cc89d75ca54762e2641deebad69c0af6594212a9fb24b9849df8ac413",
"x86_64-unknown-linux-gnu-0.7.6": "0c5f0935bba35359150774fc5876d72947b863b8173c94dda776e6d88014a0df",
"x86_64-unknown-linux-musl-0.7.6": "be755e8503b7e7174f24ad8cdcadab94f0662fe0b60df4fc35e1ddae48b19f35",
"aarch64-apple-darwin-0.7.5": "8d82c7f6fcfd79b142c8845f694c8225dd5b401cd720e8e1e2a35a1c4150f516",
"aarch64-pc-windows-msvc-0.7.5": "9ec005bf0b472d47ab730e463cc5a156b18ca9a9a6fe1c72bf18d97384d0b717",
"aarch64-unknown-linux-gnu-0.7.5": "715bd03f6b2924b8f742b716d0f4b9d31ccbb1ad4a7f8df4ce2f572efff7f2cb",
"aarch64-unknown-linux-musl-0.7.5": "ce23f5e1d22f1cdfc0db4358d3b2642c115ad99d404aef15030af31e39ef3484",
"arm-unknown-linux-musleabihf-0.7.5": "2e85c3ba3ba461822940bca197198babcb1a8ce620c3d1c624423e68bba49d43",
"armv7-unknown-linux-gnueabihf-0.7.5": "cbd7990fb0d06750f7e966a54dc344396e4d605d029aa94a0cf00d695cb283e9",
"armv7-unknown-linux-musleabihf-0.7.5": "96d5eb1246e654f4e2c37542797196d94c0d72fe44e470050a9fbf67e356fb10",
"i686-pc-windows-msvc-0.7.5": "84e70b46e0f218db9573b0efce085c13e0e5ce7808b3143b990d1a334e5a8ee6",
"i686-unknown-linux-gnu-0.7.5": "20efc06bc129d8757e81fdd00cf828a9c1d928a4a30c8c538c6d1ed219b52c5d",
"i686-unknown-linux-musl-0.7.5": "3cc8dbcdb230a6abbaa3cd6b918d6150f747f45f8f96b7399d6258c54fab5867",
"powerpc64-unknown-linux-gnu-0.7.5": "dab5571d40ce3347fe295b9afec9f560ad709461883ae604d0de827071b8d2f8",
"powerpc64le-unknown-linux-gnu-0.7.5": "4c3843068cd0e1bf9e5f68e5487fba28feef3196c025a1b1eaddd533a52b7bd7",
"s390x-unknown-linux-gnu-0.7.5": "1b286e386a4d66dd9393caf78888a881cf63202522a6a88262e551bc7b8b3995",
"x86_64-apple-darwin-0.7.5": "751ae339c91a6b8eddb868a64222c2533c722042476e4f28466683ddf96fa488",
"x86_64-pc-windows-msvc-0.7.5": "e95cb3789b2f80052c80048ff2865e06eae7512d06d304127898c70c4fd3564f",
"x86_64-unknown-linux-gnu-0.7.5": "a3d1964080a855e1f8806975b5fa943376045a64852c06ba80540813aa333305",
"x86_64-unknown-linux-musl-0.7.5": "be058167ae65f7a2b56f607b070bd4e93dacd09be52511ccb8ebb10fa132709f",
"aarch64-apple-darwin-0.7.4": "1af8c353479890b29b75933706890627555bbc07e12a0117ae62da3ec2ee372e",
"aarch64-pc-windows-msvc-0.7.4": "3800868f3cc1509d6ea16036e3268ff45fd22a85c922cf3de4fb9535dbb0099e",
"aarch64-unknown-linux-gnu-0.7.4": "c407e4c7431ee6cb28deb842edb49fea1ee3f5674a357f11244bfb0fd57e2ae4",
"aarch64-unknown-linux-musl-0.7.4": "ff0d9172d2105da526501e01c38ecf0558ea323cfcd25adff9a89cd7fad5c076",
"arm-unknown-linux-musleabihf-0.7.4": "4e6b7d15444ae58bc196ee4e7e6e11b451b4e994c0c73968254d3d4ff1c89bca",
"armv7-unknown-linux-gnueabihf-0.7.4": "303bac0f866c450fefe7543297fa87563941f924cb13f007dfe7cc02ac64dcd7",
"armv7-unknown-linux-musleabihf-0.7.4": "004e22fe946fabec6b5dff668f4bd8f93569dab30efe0f3d4640f266760744bd",
"i686-pc-windows-msvc-0.7.4": "113070d23ba1498cf9fff9ae634893a2a1dce42a0baa617c4a82009f61c71fbc",
"i686-unknown-linux-gnu-0.7.4": "19f0f19dfe9d722a2fb89bde4771682cf632182d6204cc4ddb11d700d5b34c07",
"i686-unknown-linux-musl-0.7.4": "fe281041401b4140a387f6101e64fcf4abb344791c12398c441c7e339510423d",
"powerpc64-unknown-linux-gnu-0.7.4": "ef2320254e52234750d9745e6dc6e3b3c990aa51e506057d0869d4d18b55e5e3",
"powerpc64le-unknown-linux-gnu-0.7.4": "e143278764aab89b68c6f55dfdfa4242c8f5d5213880b584880a776a5ca1b0dd",
"s390x-unknown-linux-gnu-0.7.4": "14dbae76be8999dcc8336fac1f6f86710e7ce4f4c3e1aec01e7ef7f9a3468811",
"x86_64-apple-darwin-0.7.4": "a6c5fd8aa67db03447934b14703a2d7bb04b5e5f7ff45630a749760393c5610f",
"x86_64-pc-windows-msvc-0.7.4": "966d0dd8d86f02f94128714180cd5ff42cd2ea9b33b86fc197f25cfa066aaea1",
"x86_64-unknown-linux-gnu-0.7.4": "5264d9b2bf021fccbaf6edb97bc17ce4863687745f2443460a8ca71e55891614",
"x86_64-unknown-linux-musl-0.7.4": "70083140d9efaf82cbb7ffa6231d5de3536d6497ec84d708afaf9b7e2fffbac2",
"aarch64-apple-darwin-0.7.3": "162b328fc63e0075d4267688201de91356e1c1b81db50419fa4466cfe2dfdebc",
"aarch64-pc-windows-msvc-0.7.3": "542b318c98b0295dd3d620fbcd63388757f382e14c69c569cb3ce793aa75c975",
"aarch64-unknown-linux-gnu-0.7.3": "2c2be8bbb83e9bc722f2013de8bb7506cfe6521d0e30b4ad046849d036b3eea6",
"aarch64-unknown-linux-musl-0.7.3": "a3f01c3c993b57fa8d13855c5ba60e3847bda4f8e795a52d52879e242e886604",
"arm-unknown-linux-musleabihf-0.7.3": "87f72dc1c3b1b598e08c8efc7f9ab8eca23df8549cf4c1fc27a4a6b2524809c1",
"armv7-unknown-linux-gnueabihf-0.7.3": "69f285d861cd1809a4bad0f08c2ea8a77ec17cbe20524a4ebbee4c5a7c868520",
"armv7-unknown-linux-musleabihf-0.7.3": "1a0071551cd575bbecef3218fb13bf05ab96ceb71b4b1d13a99b8a4af059f99f",
"i686-pc-windows-msvc-0.7.3": "1c9becbc63c15dcf43b09c0ba84e0ba6fa533fa799b7baf57a36363ef42fbc52",
"i686-unknown-linux-gnu-0.7.3": "a2b56cb262337380aa02b6d131e973d54090c3e655d3e55385d02850454c24de",
"i686-unknown-linux-musl-0.7.3": "d6e846079ef38929206079147448c5683a3018116b2b3e6059cf4c26bcfbb290",
"powerpc64-unknown-linux-gnu-0.7.3": "a9b94c618a5d5bc992102733a45759e38db9a9e069830c3e94c744d1bfc33c21",
"powerpc64le-unknown-linux-gnu-0.7.3": "782e9c343cb7c219b5514e64a799a8b9fa82585f6176b53ed095dc030a22d993",
"s390x-unknown-linux-gnu-0.7.3": "ea803eafd6e3414d3a18aed9257f8ded8f7d1f6f182d2572969c4c487faa1986",
"x86_64-apple-darwin-0.7.3": "d676940b51bdd5606b218bc2965fed67731f94ad07926045716acbf78626e09b",
"x86_64-pc-windows-msvc-0.7.3": "20d3a420abbf2af9699cd9a02225d9325344046af8deb15563cc451e3c4fd059",
"x86_64-unknown-linux-gnu-0.7.3": "17fc118ba4d7e9303f84fcabdc0a593fc3480ba76eb6980668fdbbb96fe88562",
"x86_64-unknown-linux-musl-0.7.3": "325143825b88e7b0dadd1a8e8d3cbe4791d3cbbb9e2244350d917803fec8b3d1",
"aarch64-apple-darwin-0.7.2": "8edc0bea8a9e35409f970b352036326393e79a6039577d8cc9ef63872c178a99",
"aarch64-pc-windows-msvc-0.7.2": "a3d7affcd62e617bd2dd2a91fde679dd8d68a84762c8f3aaac294606ec14ffe5",
"aarch64-unknown-linux-gnu-0.7.2": "2872fdf4785666575d129ba90590c44e6508e22584735f3e7e8a30d773dfc3db",
"aarch64-unknown-linux-musl-0.7.2": "d5b31df40da794dab943c55e67d14fc111146e185b14a6de6eb749ee264a641c",
"arm-unknown-linux-musleabihf-0.7.2": "fd203cef8c6cd775c2a5f7da31f69a72020a6c74b6fb808db3217ab04b70a038",
"armv7-unknown-linux-gnueabihf-0.7.2": "b69999c29c759f5a47f71c1f328d6e7c489229efa5ce0e84afce026201730abb",
"armv7-unknown-linux-musleabihf-0.7.2": "f98a827e198de2d0a7224ecad87eb64c18c9c0ed4f0c768456e9b48482015d2f",
"i686-pc-windows-msvc-0.7.2": "8b06489b2cc8814fc23dae4562c5e7d500e782c2b0d2556529f515a4d1e0b8e3",
"i686-unknown-linux-gnu-0.7.2": "36f26a496c6dc53703e070761ef96f07acc88eae868f94c4665f5c17a88d8acf",
"i686-unknown-linux-musl-0.7.2": "763bf7cd2119c40858cbd0892fd9b2c7102c79e5c590800b2f8e9c2f427cb7d1",
"powerpc64-unknown-linux-gnu-0.7.2": "bd4a42ed0b9ab725f0cb565ae29c338ea6ce0689ddb35da632535a47c891e72f",
"powerpc64le-unknown-linux-gnu-0.7.2": "9a598869167b7e56ab971614972a2c486c8137681210094009a6fb61ac36699b",
"s390x-unknown-linux-gnu-0.7.2": "7dd2240d60b1628869a2348ca0901cceee572bc20116ab04f9484ea0b6d40813",
"x86_64-apple-darwin-0.7.2": "7d30b59d54900c97c492f3c07ff21cc3387a9e5bd8ca6db2d502462eaaeefd68",
"x86_64-pc-windows-msvc-0.7.2": "35fd793df52fd13773425c9a97cc94cc13c8ee63abec6380b5083c183c688019",
"x86_64-unknown-linux-gnu-0.7.2": "cfaab1b5166a6439ff66f020333d3a12bbdf622deee3b510718283e8f06c9de7",
"x86_64-unknown-linux-musl-0.7.2": "dd10babf6c531597d246c97e55e32ca17b44fe251405fe539ec8ea2f22fac2d6",
"aarch64-apple-darwin-0.7.1": "236d70d7738a5f41b45253d68665fda039fecee579939921e0795680d300f55f",
"aarch64-pc-windows-msvc-0.7.1": "5fdbc703e6f22696ac053811e9750ff3cf50814aabf1792b9bc49f2647b836c6",
"aarch64-unknown-linux-gnu-0.7.1": "ee8a98f485a22837be9e95eb55e4cd06db6c8deba94b6a2dd63d828fb5ef4226",
"aarch64-unknown-linux-musl-0.7.1": "b65409802669913f5fd49ed6656d45c434aa9273fb864aefa0fbbb685b9834b6",
"arm-unknown-linux-musleabihf-0.7.1": "96cfceb7716a9003750111c7f1a62aebccf02e0288f95bc670c69062d2ec6e61",
"armv7-unknown-linux-gnueabihf-0.7.1": "f156bdedd8a969dc49a5e01f6b38c7e50a63cf69acf3b5982adfaf232dfcb80f",
"armv7-unknown-linux-musleabihf-0.7.1": "ae21a9c0b413976a24c51f095603294ca36da9089813022cb9bae0b84f0be6de",
"i686-pc-windows-msvc-0.7.1": "38a98c532e463169e8c4f1ae3649dd500c168f6db687e3b29570930c55ffedf7",
"i686-unknown-linux-gnu-0.7.1": "133a41ae763d8474cc4ff8e0c24ab8cdaf422f261cbcc284f4b90b57aa60f3fe",
"i686-unknown-linux-musl-0.7.1": "6e55fea1ee9a8c5c1d29b3aeb033a8b01d3895a347b27ee108ba94c53d60cfb7",
"powerpc64-unknown-linux-gnu-0.7.1": "cd6714a55577d6eb0ecad313646a4ade3c7a4407e1a2a4703a2fbb83c88681d5",
"powerpc64le-unknown-linux-gnu-0.7.1": "a354eda3a43323cf5445cfdf0197ebd4b36e967df9537e97910c47dcd9321aaa",
"s390x-unknown-linux-gnu-0.7.1": "59d194c544a8a53186c3da6ac26f90ab0f453fae71fd2e0d4d177a8ed8890abb",
"x86_64-apple-darwin-0.7.1": "a81e655cc0b6a5ccf9197f2dc0df513171e68804e498c17076d6e56b41234c5d",
"x86_64-pc-windows-msvc-0.7.1": "b4d48072e384014ecd04ec5c544aee523ead1faaebcd428ba5f6abf2836096df",
"x86_64-unknown-linux-gnu-0.7.1": "cec71afc57276b1857970d6ec96e110989c3e4ed0d81f0c4c11c1231970b7e56",
"x86_64-unknown-linux-musl-0.7.1": "9b714ddf470795d5f1aa5c8111ea153139ae202216ffbe4105fb92f202e0b02b",
"aarch64-apple-darwin-0.7.0": "964ebe641b563920e0650a60bf5ac21e6c8c56557704e5ecfaaad7ff62c3a73c",
"aarch64-pc-windows-msvc-0.7.0": "c00950aa4b243e1043d1ec651fdfd71e5f4e5b80135b30fcf3b70fc201aeb1c4",
"aarch64-unknown-linux-gnu-0.7.0": "540fcb8f2f972c82260a8063a6a4b496d7ff858edc42aa0e2c733a7b55ef8dd8",
"aarch64-unknown-linux-musl-0.7.0": "f6367e288617021aba6176945ba20a7f8ea3b22a5f8896314a7d0acb863b533e",
"arm-unknown-linux-musleabihf-0.7.0": "6fc85b25a4b3cb27b924e1f3181f96197667b7465fe52bf703afb5539d09c09c",
"armv7-unknown-linux-gnueabihf-0.7.0": "035b46fde90a7ee4b48292ff9d116cc771b10d9e955d1979b1a1cd6b3998f602",
"armv7-unknown-linux-musleabihf-0.7.0": "5f43390685fbb9f29d6075df1d492f9bf39cabb868bf37e0da3cd925c679b068",
"i686-pc-windows-msvc-0.7.0": "f045db339b2acecc790d2071598275086978a99262d9c4b0c52189c26cba68a9",
"i686-unknown-linux-gnu-0.7.0": "9936acd12616548a04ce6875aa125ea34f3b288181f2188bfb72d914965680be",
"i686-unknown-linux-musl-0.7.0": "bfad15225152d9fa8769731b35dd53e0b39cba045900b6d43f90e655652af5b8",
"powerpc64-unknown-linux-gnu-0.7.0": "91cfac9b5a9ba844c3ba90944e00bfb79da2983b7c6306bdb054c75ab3fea0fe",
"powerpc64le-unknown-linux-gnu-0.7.0": "d690793c993a1a03049b7e7f3f0e41c94ba2c45b0155bdde917d550ecd4ee02d",
"s390x-unknown-linux-gnu-0.7.0": "429ffee0dddd8c0c59e246fb89bef721d1ed22a4c051925d7dfafcfc7dce464f",
"x86_64-apple-darwin-0.7.0": "dc5037f3ffbf8074b3ee63de7a73aa57421b0da0837a478e26317424dbab16f3",
"x86_64-pc-windows-msvc-0.7.0": "62836c9d6e3f346d06c45fee4109be21ca9d1df8d087472dcc8d51815f182332",
"x86_64-unknown-linux-gnu-0.7.0": "ca1e8196672bf04ccb926519f2071208a8d6c0ce02fb65bc7d0a85be1b684b0f",
"x86_64-unknown-linux-musl-0.7.0": "08e1bb8fdea2c6d5edbe40ab1651de097b884020056c0925a9973582ff669d04",
"aarch64-apple-darwin-0.6.17": "e686c73b9314c77a36a6a4c9f94b07c001f0c9157c50c63c764941141c0d0088",
"aarch64-pc-windows-msvc-0.6.17": "3a9468e90df970f75759da6caed7dfde2816e0f3842031235c3835fc0c4e7d09",
"aarch64-unknown-linux-gnu-0.6.17": "6fb716c36e8ca9cf98b7cb347b0ced41679145837eb22890ee5fa9d8b68ce9f5",
"aarch64-unknown-linux-musl-0.6.17": "98750f5c0cd9eb520799d10649efb18441b616150f07e6c1125f616a3fd137e8",
"arm-unknown-linux-musleabihf-0.6.17": "649d8d0f37e8365af5aaa012b09dd083d6e71018e569a4d2e78316d5013f18a7",
"armv7-unknown-linux-gnueabihf-0.6.17": "efc12955d7a6120ea0be2de5ee03dbb33d0d7d9de9dbe0dce560514f2ee129d3",
"armv7-unknown-linux-musleabihf-0.6.17": "0661d97df8262ef83ccdc6a55ed101abfe8f1cf1ff1be879d9b0d7d1e894c970",
"i686-pc-windows-msvc-0.6.17": "56dea6c98e1606e95445e77177d7e3cd49bb3d1a63c81b11fe49bf733adb62a2",
"i686-unknown-linux-gnu-0.6.17": "4bc37f8303a4a5aae1c309f08166884027f325b6872c418cfbaa2cf20a2b2ac5",
"i686-unknown-linux-musl-0.6.17": "8ec08cca0806a9205ccf5758258c617b57e413b33275bcd861fca363e0eaddf7",
"powerpc64-unknown-linux-gnu-0.6.17": "d33b70ab206e1ed0663e755506a11db3776787012bfe9d2b2138a90942f506be",
"powerpc64le-unknown-linux-gnu-0.6.17": "cd91a579850fc45d3b786a654a2c0343836f007929b2e35de9606082eec5361f",
"s390x-unknown-linux-gnu-0.6.17": "3c753a9d3485bbac23403a0b41a9e70ceeb586f3b4df891ced7ed27d4c6c542b",
"x86_64-apple-darwin-0.6.17": "61e9bdc02aacdb994da6ea2a477b11b34c23fc09203237aeee8d3817daab012d",
"x86_64-pc-windows-msvc-0.6.17": "32882cf98f646cafca003e7a7c471b7ff4ba977b681c9fa3b12cf908ba64af82",
"x86_64-unknown-linux-gnu-0.6.17": "720ec28f7a94aa8cd91d3d57dec1434d64b9ae13d1dd6a25f4c0cdb837ba9cf6",
"x86_64-unknown-linux-musl-0.6.17": "28bd6b50be068cc09d8a46b76f8c4b72271d471c6673a5bdb47793622e62224d",
"aarch64-apple-darwin-0.6.16": "2b1ea0d5cf27375738f5f0f229587bc3590c0f501cb00bc48133a3d122d28364",
"aarch64-pc-windows-msvc-0.6.16": "5abca187b8aecbdffef7547cb39a527168e4cb93d8d2e4ce14271f5831a4d902",
"aarch64-unknown-linux-gnu-0.6.16": "a82f96ab5f285825f9acee6ac1563683c4940d80df2f08549cad43d37c7ba4a7",
"aarch64-unknown-linux-musl-0.6.16": "ae3f793c62fe6ced80483d6c78cb49f06a01088bc5d86f1446a9b5988b2acecc",
"arm-unknown-linux-musleabihf-0.6.16": "91f7f5a4eb97b7983a8e5421d5bfea8802064422ce2f535055f373726eb0aa9a",
"armv7-unknown-linux-gnueabihf-0.6.16": "a4ffe043952bf4e757a5ca0f546bb83b055b6ee0646dd5c4f5e5f13dbc5ee8f8",
"armv7-unknown-linux-musleabihf-0.6.16": "0237c8d9914e0d9fd2f022d6d5f91ce392d13e0ccbb7fa7ebe601296a67c3d6c",
"i686-pc-windows-msvc-0.6.16": "f5c6400f07db2014b2b0c66770e1125fa70efe4dd99cc8351838bed0045c34f8",
"i686-unknown-linux-gnu-0.6.16": "f46f89efcc599a6695e8378a1201e62cd4afb9a4438d65a89098ab11201f84ab",
"i686-unknown-linux-musl-0.6.16": "afe69380a9d3592a87893d6bdc11ff33e4180b98f1e1fd4e626c0307d7598914",
"powerpc64-unknown-linux-gnu-0.6.16": "bf455747580dbbf76cbcf616f67f825c40bd1bdec20c9ff993e03485f9eaad44",
"powerpc64le-unknown-linux-gnu-0.6.16": "508ec561b1740a551d2b33e96671e0e8435a1bcc0e97080f3d7ba88a096bd360",
"s390x-unknown-linux-gnu-0.6.16": "e25c5527826524f51f114388bff47871bf1ca67badbfd72d45427bdba4b46794",
"x86_64-apple-darwin-0.6.16": "ce512b5e40a8ad2916a46df2bdba729d5541e4b3649a09aaddff6e525be012e4",
"x86_64-pc-windows-msvc-0.6.16": "f1b4c24ec602b6c0b06b6bc64aa447bbe4cf313e93fbec326741961e80ffa8b7",
"x86_64-unknown-linux-gnu-0.6.16": "e9ef28b675df68978a60f87192fb8c730b8bfca9bef42b121686b218ea0f6542",
"x86_64-unknown-linux-musl-0.6.16": "25024557931d04cc34f80b818c7547c9c62b762ec6df807e30cb52f383fa2615",
"aarch64-apple-darwin-0.6.15": "1c5b25f75c6438b6910dbc4c6903debe53f31ee14aee55d02243dfe7bf7c9f72",
"aarch64-pc-windows-msvc-0.6.15": "317fe0b29e647aad1e9f02ffe764dcbbc6e2ef189f018c81b673884173ab98ba",
"aarch64-unknown-linux-gnu-0.6.15": "3bf650aec162157b7e01461f41c2a9797366b6043452c6e7035c6c926d0a585b",
"aarch64-unknown-linux-musl-0.6.15": "183cebae8c9d91bbd48219f9006a5c0c41c90a075d6724aec53a7ea0503c665a",
"arm-unknown-linux-musleabihf-0.6.15": "d83c76e130ffb25fb6a4ba8ea5870207d810190733a14ae87084c63a417912f6",
"armv7-unknown-linux-gnueabihf-0.6.15": "d661ec44e5fc7553cd8dd5ad5f48848c5a4d5279ba0df0036c0e2422ec9f312b",
"armv7-unknown-linux-musleabihf-0.6.15": "6fc86a829965362f99602c47627b269c9b676731586a60ca5bb9d6069677938d",
"i686-pc-windows-msvc-0.6.15": "7f15e3377e94fac882b33465cb8cbb24705f5c8d63d9d65c6f1b0816c1d30a0b",
"i686-unknown-linux-gnu-0.6.15": "bfedd03be9f579a9bc10e6c25176017e514cca0500cfb9bba43794387a577661",
"i686-unknown-linux-musl-0.6.15": "82bf8666c0a57514af4e5403f162314b710e1682e1065ab71a845ebb5d8db0b7",
"powerpc64-unknown-linux-gnu-0.6.15": "6e9795344d61ee9ac497d6e03a447d808f2aab13925f30e44c00638abec57deb",
"powerpc64le-unknown-linux-gnu-0.6.15": "e38f13284ed8b645b87ef07c8b549d1f1a5b746aa0411c2115dcd5cda0da13fc",
"s390x-unknown-linux-gnu-0.6.15": "416f61249b330ea9735cda0c866c9460f87111bc9d4e040c98916fda6a45be09",
"x86_64-apple-darwin-0.6.15": "97adf61511c0f6ea42c090443c38d8d71116b78ae626363f9f149924c91ae886",
"x86_64-pc-windows-msvc-0.6.15": "10c75d566db1447f3bdcbcb31d6598e4b5f4ea638be5d8b73a7350929389512b",
"x86_64-unknown-linux-gnu-0.6.15": "85d98ef282cdbfcb4020922f0c12421ecca4130f0a4570d3b827a15ffd544acc",
"x86_64-unknown-linux-musl-0.6.15": "78289c93836cb32b8b24e3216b5b316e7fdf483365de2fc571844d308387e8a4",
"aarch64-apple-darwin-0.6.14": "4ea4731010fbd1bc8e790e07f199f55a5c7c2c732e9b77f85e302b0bee61b756", "aarch64-apple-darwin-0.6.14": "4ea4731010fbd1bc8e790e07f199f55a5c7c2c732e9b77f85e302b0bee61b756",
"aarch64-pc-windows-msvc-0.6.14": "7b0b3367c4060c9b47b961201ceb4252e97496c890ad1bd13c664bf5b0744d57", "aarch64-pc-windows-msvc-0.6.14": "7b0b3367c4060c9b47b961201ceb4252e97496c890ad1bd13c664bf5b0744d57",
"aarch64-unknown-linux-gnu-0.6.14": "ea25597354af186bdd55aee0de431e16d45d82951a4f41f065a8e4dc27885265", "aarch64-unknown-linux-gnu-0.6.14": "ea25597354af186bdd55aee0de431e16d45d82951a4f41f065a8e4dc27885265",
@@ -124011,7 +124694,8 @@ var __importStar = (this && this.__importStar) || (function () {
})(); })();
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.tryGetFromToolCache = tryGetFromToolCache; exports.tryGetFromToolCache = tryGetFromToolCache;
exports.downloadVersion = downloadVersion; exports.downloadVersionFromGithub = downloadVersionFromGithub;
exports.downloadVersionFromManifest = downloadVersionFromManifest;
exports.resolveVersion = resolveVersion; exports.resolveVersion = resolveVersion;
const core = __importStar(__nccwpck_require__(37484)); const core = __importStar(__nccwpck_require__(37484));
const tc = __importStar(__nccwpck_require__(33472)); const tc = __importStar(__nccwpck_require__(33472));
@@ -124021,6 +124705,7 @@ const node_fs_1 = __nccwpck_require__(73024);
const constants_1 = __nccwpck_require__(56156); const constants_1 = __nccwpck_require__(56156);
const checksum_1 = __nccwpck_require__(95391); const checksum_1 = __nccwpck_require__(95391);
const octokit_1 = __nccwpck_require__(73352); const octokit_1 = __nccwpck_require__(73352);
const version_manifest_1 = __nccwpck_require__(54000);
function tryGetFromToolCache(arch, version) { function tryGetFromToolCache(arch, version) {
core.debug(`Trying to get uv from tool cache for ${version}...`); core.debug(`Trying to get uv from tool cache for ${version}...`);
const cachedVersions = tc.findAllVersions(constants_1.TOOL_CACHE_NAME, arch); const cachedVersions = tc.findAllVersions(constants_1.TOOL_CACHE_NAME, arch);
@@ -124032,18 +124717,26 @@ function tryGetFromToolCache(arch, version) {
const installedPath = tc.find(constants_1.TOOL_CACHE_NAME, resolvedVersion, arch); const installedPath = tc.find(constants_1.TOOL_CACHE_NAME, resolvedVersion, arch);
return { version: resolvedVersion, installedPath }; return { version: resolvedVersion, installedPath };
} }
async function downloadVersion(platform, arch, version, checkSum, githubToken) { async function downloadVersionFromGithub(serverUrl, platform, arch, version, checkSum, githubToken) {
const resolvedVersion = await resolveVersion(version, githubToken);
const artifact = `uv-${arch}-${platform}`; const artifact = `uv-${arch}-${platform}`;
let extension = ".tar.gz"; const extension = getExtension(platform);
if (platform === "pc-windows-msvc") { const downloadUrl = `${serverUrl}/${constants_1.OWNER}/${constants_1.REPO}/releases/download/${version}/${artifact}${extension}`;
extension = ".zip"; return await downloadVersion(downloadUrl, artifact, platform, arch, version, checkSum, githubToken);
}
async function downloadVersionFromManifest(manifestUrl, platform, arch, version, checkSum, githubToken) {
const downloadUrl = await (0, version_manifest_1.getDownloadUrl)(manifestUrl, version, arch, platform);
if (!downloadUrl) {
core.info(`manifest-file does not contain version ${version}, arch ${arch}, platform ${platform}. Falling back to GitHub releases.`);
return await downloadVersionFromGithub("https://github.com", platform, arch, version, checkSum, githubToken);
} }
const downloadUrl = `https://github.com/${constants_1.OWNER}/${constants_1.REPO}/releases/download/${resolvedVersion}/${artifact}${extension}`; return await downloadVersion(downloadUrl, `uv-${arch}-${platform}`, platform, arch, version, checkSum, githubToken);
}
async function downloadVersion(downloadUrl, artifactName, platform, arch, version, checkSum, githubToken) {
core.info(`Downloading uv from "${downloadUrl}" ...`); core.info(`Downloading uv from "${downloadUrl}" ...`);
const downloadPath = await tc.downloadTool(downloadUrl, undefined, githubToken); const downloadPath = await tc.downloadTool(downloadUrl, undefined, githubToken);
await (0, checksum_1.validateChecksum)(checkSum, downloadPath, arch, platform, resolvedVersion); await (0, checksum_1.validateChecksum)(checkSum, downloadPath, arch, platform, version);
let uvDir; let uvDir;
const extension = getExtension(platform);
if (platform === "pc-windows-msvc") { if (platform === "pc-windows-msvc") {
const fullPathWithExtension = `${downloadPath}${extension}`; const fullPathWithExtension = `${downloadPath}${extension}`;
await node_fs_1.promises.copyFile(downloadPath, fullPathWithExtension); await node_fs_1.promises.copyFile(downloadPath, fullPathWithExtension);
@@ -124052,16 +124745,29 @@ async function downloadVersion(platform, arch, version, checkSum, githubToken) {
} }
else { else {
const extractedDir = await tc.extractTar(downloadPath); const extractedDir = await tc.extractTar(downloadPath);
uvDir = path.join(extractedDir, artifact); uvDir = path.join(extractedDir, artifactName);
} }
const cachedToolDir = await tc.cacheDir(uvDir, constants_1.TOOL_CACHE_NAME, resolvedVersion, arch); const cachedToolDir = await tc.cacheDir(uvDir, constants_1.TOOL_CACHE_NAME, version, arch);
return { version: resolvedVersion, cachedToolDir }; return { version: version, cachedToolDir };
} }
async function resolveVersion(versionInput, githubToken) { function getExtension(platform) {
return platform === "pc-windows-msvc" ? ".zip" : ".tar.gz";
}
async function resolveVersion(versionInput, manifestFile, githubToken) {
core.debug(`Resolving version: ${versionInput}`); core.debug(`Resolving version: ${versionInput}`);
const version = versionInput === "latest" let version;
if (manifestFile) {
version =
versionInput === "latest"
? await (0, version_manifest_1.getLatestKnownVersion)(manifestFile)
: versionInput;
}
else {
version =
versionInput === "latest"
? await getLatestVersion(githubToken) ? await getLatestVersion(githubToken)
: versionInput; : versionInput;
}
if (tc.isExplicitVersion(version)) { if (tc.isExplicitVersion(version)) {
core.debug(`Version ${version} is an explicit version.`); core.debug(`Version ${version} is an explicit version.`);
return version; return version;
@@ -124142,6 +124848,110 @@ function maxSatisfying(versions, version) {
} }
/***/ }),
/***/ 54000:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.getLatestKnownVersion = getLatestKnownVersion;
exports.getDownloadUrl = getDownloadUrl;
exports.updateVersionManifest = updateVersionManifest;
const node_fs_1 = __nccwpck_require__(73024);
const core = __importStar(__nccwpck_require__(37484));
const semver = __importStar(__nccwpck_require__(39318));
const fetch_1 = __nccwpck_require__(3385);
const node_path_1 = __nccwpck_require__(76760);
const localManifestFile = (0, node_path_1.join)(__dirname, "..", "..", "version-manifest.json");
async function getLatestKnownVersion(manifestUrl) {
const manifestEntries = await getManifestEntries(manifestUrl);
return manifestEntries.reduce((a, b) => semver.gt(a.version, b.version) ? a : b).version;
}
async function getDownloadUrl(manifestUrl, version, arch, platform) {
const manifestEntries = await getManifestEntries(manifestUrl);
const entry = manifestEntries.find((entry) => entry.version === version &&
entry.arch === arch &&
entry.platform === platform);
return entry ? entry.downloadUrl : undefined;
}
async function getManifestEntries(manifestUrl) {
let data;
if (manifestUrl !== undefined) {
core.info(`Fetching manifest-file from: ${manifestUrl}`);
const response = await (0, fetch_1.fetch)(manifestUrl, {});
if (!response.ok) {
throw new Error(`Failed to fetch manifest-file: ${response.status} ${response.statusText}`);
}
data = await response.text();
}
else {
core.info("manifest-file not provided, reading from local file.");
const fileContent = await node_fs_1.promises.readFile(localManifestFile);
data = fileContent.toString();
}
return JSON.parse(data);
}
async function updateVersionManifest(manifestUrl, downloadUrls) {
const manifest = [];
for (const downloadUrl of downloadUrls) {
const urlParts = downloadUrl.split("/");
const version = urlParts[urlParts.length - 2];
const artifactName = urlParts[urlParts.length - 1];
if (!artifactName.startsWith("uv-")) {
continue;
}
if (artifactName.startsWith("uv-installer")) {
continue;
}
const artifactParts = artifactName.split(".")[0].split("-");
manifest.push({
version: version,
artifactName: artifactName,
arch: artifactParts[1],
platform: artifactName.split(`uv-${artifactParts[1]}-`)[1].split(".")[0],
downloadUrl: downloadUrl,
});
}
core.debug(`Updating manifest-file: ${JSON.stringify(manifest)}`);
await node_fs_1.promises.writeFile(manifestUrl, JSON.stringify(manifest));
}
/***/ }), /***/ }),
/***/ 99660: /***/ 99660:
@@ -124281,7 +125091,7 @@ const platforms_1 = __nccwpck_require__(98361);
const inputs_1 = __nccwpck_require__(9612); const inputs_1 = __nccwpck_require__(9612);
const exec = __importStar(__nccwpck_require__(95236)); const exec = __importStar(__nccwpck_require__(95236));
const node_fs_1 = __importDefault(__nccwpck_require__(73024)); const node_fs_1 = __importDefault(__nccwpck_require__(73024));
const pyproject_1 = __nccwpck_require__(53929); const config_file_1 = __nccwpck_require__(27846);
async function run() { async function run() {
detectEmptyWorkdir(); detectEmptyWorkdir();
const platform = await (0, platforms_1.getPlatform)(); const platform = await (0, platforms_1.getPlatform)();
@@ -124297,7 +125107,8 @@ async function run() {
addToolBinToPath(); addToolBinToPath();
addUvToPathAndOutput(setupResult.uvDir); addUvToPathAndOutput(setupResult.uvDir);
setToolDir(); setToolDir();
await setupPython(); setupPython();
await activateEnvironment();
addMatchers(); addMatchers();
setCacheDir(inputs_1.cacheLocalPath); setCacheDir(inputs_1.cacheLocalPath);
core.setOutput("uv-version", setupResult.version); core.setOutput("uv-version", setupResult.version);
@@ -124322,7 +125133,7 @@ function detectEmptyWorkdir() {
} }
} }
async function setupUv(platform, arch, checkSum, githubToken) { async function setupUv(platform, arch, checkSum, githubToken) {
const resolvedVersion = await determineVersion(); const resolvedVersion = await determineVersion(inputs_1.manifestFile);
const toolCacheResult = (0, download_version_1.tryGetFromToolCache)(arch, resolvedVersion); const toolCacheResult = (0, download_version_1.tryGetFromToolCache)(arch, resolvedVersion);
if (toolCacheResult.installedPath) { if (toolCacheResult.installedPath) {
core.info(`Found uv in tool-cache for ${toolCacheResult.version}`); core.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
@@ -124331,30 +125142,29 @@ async function setupUv(platform, arch, checkSum, githubToken) {
version: toolCacheResult.version, version: toolCacheResult.version,
}; };
} }
const downloadVersionResult = await (0, download_version_1.downloadVersion)(platform, arch, resolvedVersion, checkSum, githubToken); let downloadVersionResult;
if (inputs_1.serverUrl !== "https://github.com") {
core.warning("The input server-url is deprecated. Please use manifest-file instead.");
downloadVersionResult = await (0, download_version_1.downloadVersionFromGithub)(inputs_1.serverUrl, platform, arch, resolvedVersion, checkSum, githubToken);
}
else {
downloadVersionResult = await (0, download_version_1.downloadVersionFromManifest)(inputs_1.manifestFile, platform, arch, resolvedVersion, checkSum, githubToken);
}
return { return {
uvDir: downloadVersionResult.cachedToolDir, uvDir: downloadVersionResult.cachedToolDir,
version: downloadVersionResult.version, version: downloadVersionResult.version,
}; };
} }
async function determineVersion() { async function determineVersion(manifestFile) {
if (inputs_1.version !== "") { if (inputs_1.version !== "") {
return await (0, download_version_1.resolveVersion)(inputs_1.version, inputs_1.githubToken); return await (0, download_version_1.resolveVersion)(inputs_1.version, manifestFile, inputs_1.githubToken);
} }
const configFile = inputs_1.uvFile !== "" ? inputs_1.uvFile : inputs_1.pyProjectFile; const versionFromUvToml = (0, config_file_1.getUvVersionFromConfigFile)(`${inputs_1.workingDirectory}${path.sep}uv.toml`);
if (configFile !== "") { const versionFromPyproject = (0, config_file_1.getUvVersionFromConfigFile)(`${inputs_1.workingDirectory}${path.sep}pyproject.toml`);
const versionFromConfigFile = (0, pyproject_1.getUvVersionFromConfigFile)(configFile); if (versionFromUvToml === undefined && versionFromPyproject === undefined) {
if (versionFromConfigFile === undefined) { core.info("Could not determine uv version from uv.toml or pyproject.toml. Falling back to latest.");
core.warning(`Could not find required-version under [tool.uv] in ${configFile}. Falling back to latest`);
} }
return await (0, download_version_1.resolveVersion)(versionFromConfigFile || "latest", inputs_1.githubToken); return await (0, download_version_1.resolveVersion)(versionFromUvToml || versionFromPyproject || "latest", manifestFile, inputs_1.githubToken);
}
if (!node_fs_1.default.existsSync("uv.toml") && !node_fs_1.default.existsSync("pyproject.toml")) {
return await (0, download_version_1.resolveVersion)("latest", inputs_1.githubToken);
}
const versionFile = node_fs_1.default.existsSync("uv.toml") ? "uv.toml" : "pyproject.toml";
const versionFromConfigFile = (0, pyproject_1.getUvVersionFromConfigFile)(versionFile);
return await (0, download_version_1.resolveVersion)(versionFromConfigFile || "latest", inputs_1.githubToken);
} }
function addUvToPathAndOutput(cachedPath) { function addUvToPathAndOutput(cachedPath) {
core.setOutput("uv-path", `${cachedPath}${path.sep}uv`); core.setOutput("uv-path", `${cachedPath}${path.sep}uv`);
@@ -124390,22 +125200,23 @@ function setToolDir() {
core.info(`Set UV_TOOL_DIR to ${inputs_1.toolDir}`); core.info(`Set UV_TOOL_DIR to ${inputs_1.toolDir}`);
} }
} }
async function setupPython() { function setupPython() {
if (inputs_1.pythonVersion !== "") { if (inputs_1.pythonVersion !== "") {
core.exportVariable("UV_PYTHON", inputs_1.pythonVersion); core.exportVariable("UV_PYTHON", inputs_1.pythonVersion);
core.info(`Set UV_PYTHON to ${inputs_1.pythonVersion}`); core.info(`Set UV_PYTHON to ${inputs_1.pythonVersion}`);
const options = { }
silent: !core.isDebug(), }
}; async function activateEnvironment() {
const execArgs = ["venv", "--python", inputs_1.pythonVersion]; if (inputs_1.activateEnvironment) {
const execArgs = ["venv", ".venv", "--directory", inputs_1.workingDirectory];
core.info("Activating python venv..."); core.info("Activating python venv...");
await exec.exec("uv", execArgs, options); await exec.exec("uv", execArgs);
let venvBinPath = ".venv/bin"; let venvBinPath = `${inputs_1.workingDirectory}${path.sep}.venv${path.sep}bin`;
if (process.platform === "win32") { if (process.platform === "win32") {
venvBinPath = ".venv/Scripts"; venvBinPath = `${inputs_1.workingDirectory}${path.sep}.venv${path.sep}Scripts`;
} }
core.addPath(path.resolve(venvBinPath)); core.addPath(path.resolve(venvBinPath));
core.exportVariable("VIRTUAL_ENV", path.resolve(".venv")); core.exportVariable("VIRTUAL_ENV", path.resolve(`${inputs_1.workingDirectory}${path.sep}.venv`));
} }
} }
function setCacheDir(cacheLocalPath) { function setCacheDir(cacheLocalPath) {
@@ -124419,6 +125230,88 @@ function addMatchers() {
run(); run();
/***/ }),
/***/ 27846:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.getUvVersionFromConfigFile = getUvVersionFromConfigFile;
const node_fs_1 = __importDefault(__nccwpck_require__(73024));
const core = __importStar(__nccwpck_require__(37484));
const toml = __importStar(__nccwpck_require__(27106));
function getUvVersionFromConfigFile(filePath) {
core.info(`Trying to find required-version for uv in: ${filePath}`);
if (!node_fs_1.default.existsSync(filePath)) {
core.info(`Could not find file: ${filePath}`);
return undefined;
}
let requiredVersion;
try {
requiredVersion = getRequiredVersion(filePath);
}
catch (err) {
const message = err.message;
core.warning(`Error while parsing ${filePath}: ${message}`);
return undefined;
}
if (requiredVersion?.startsWith("==")) {
requiredVersion = requiredVersion.slice(2);
}
if (requiredVersion !== undefined) {
core.info(`Found required-version for uv in ${filePath}: ${requiredVersion}`);
}
return requiredVersion;
}
function getRequiredVersion(filePath) {
const fileContent = node_fs_1.default.readFileSync(filePath, "utf-8");
if (filePath.endsWith("pyproject.toml")) {
const tomlContent = toml.parse(fileContent);
return tomlContent?.tool?.uv?.["required-version"];
}
const tomlContent = toml.parse(fileContent);
return tomlContent["required-version"];
}
/***/ }), /***/ }),
/***/ 56156: /***/ 56156:
@@ -124433,6 +125326,35 @@ exports.OWNER = "astral-sh";
exports.TOOL_CACHE_NAME = "uv"; exports.TOOL_CACHE_NAME = "uv";
/***/ }),
/***/ 3385:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.fetch = void 0;
exports.getProxyAgent = getProxyAgent;
const undici_1 = __nccwpck_require__(46752);
function getProxyAgent() {
const httpProxy = process.env.HTTP_PROXY || process.env.http_proxy;
if (httpProxy) {
return new undici_1.ProxyAgent(httpProxy);
}
const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
if (httpsProxy) {
return new undici_1.ProxyAgent(httpsProxy);
}
return undefined;
}
const fetch = async (url, opts) => await (0, undici_1.fetch)(url, {
dispatcher: getProxyAgent(),
...opts,
});
exports.fetch = fetch;
/***/ }), /***/ }),
/***/ 9612: /***/ 9612:
@@ -124477,13 +125399,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.githubToken = exports.toolDir = exports.toolBinDir = exports.ignoreEmptyWorkdir = exports.ignoreNothingToCache = exports.pruneCache = exports.cacheDependencyGlob = exports.cacheLocalPath = exports.cacheSuffix = exports.enableCache = exports.checkSum = exports.pythonVersion = exports.uvFile = exports.pyProjectFile = exports.version = void 0; exports.manifestFile = exports.githubToken = exports.serverUrl = exports.toolDir = exports.toolBinDir = exports.ignoreEmptyWorkdir = exports.ignoreNothingToCache = exports.pruneCache = exports.cacheDependencyGlob = exports.cacheLocalPath = exports.cacheSuffix = exports.enableCache = exports.checkSum = exports.workingDirectory = exports.activateEnvironment = exports.pythonVersion = exports.version = void 0;
const core = __importStar(__nccwpck_require__(37484)); const core = __importStar(__nccwpck_require__(37484));
const node_path_1 = __importDefault(__nccwpck_require__(76760)); const node_path_1 = __importDefault(__nccwpck_require__(76760));
exports.version = core.getInput("version"); exports.version = core.getInput("version");
exports.pyProjectFile = core.getInput("pyproject-file");
exports.uvFile = core.getInput("uv-file");
exports.pythonVersion = core.getInput("python-version"); exports.pythonVersion = core.getInput("python-version");
exports.activateEnvironment = core.getBooleanInput("activate-environment");
exports.workingDirectory = core.getInput("working-directory");
exports.checkSum = core.getInput("checksum"); exports.checkSum = core.getInput("checksum");
exports.enableCache = getEnableCache(); exports.enableCache = getEnableCache();
exports.cacheSuffix = core.getInput("cache-suffix") || ""; exports.cacheSuffix = core.getInput("cache-suffix") || "";
@@ -124494,7 +125416,9 @@ exports.ignoreNothingToCache = core.getInput("ignore-nothing-to-cache") === "tru
exports.ignoreEmptyWorkdir = core.getInput("ignore-empty-workdir") === "true"; exports.ignoreEmptyWorkdir = core.getInput("ignore-empty-workdir") === "true";
exports.toolBinDir = getToolBinDir(); exports.toolBinDir = getToolBinDir();
exports.toolDir = getToolDir(); exports.toolDir = getToolDir();
exports.serverUrl = core.getInput("server-url");
exports.githubToken = core.getInput("github-token"); exports.githubToken = core.getInput("github-token");
exports.manifestFile = getManifestFile();
function getEnableCache() { function getEnableCache() {
const enableCacheInput = core.getInput("enable-cache"); const enableCacheInput = core.getInput("enable-cache");
if (enableCacheInput === "auto") { if (enableCacheInput === "auto") {
@@ -124533,10 +125457,16 @@ function getCacheLocalPath() {
if (cacheLocalPathInput !== "") { if (cacheLocalPathInput !== "") {
return expandTilde(cacheLocalPathInput); return expandTilde(cacheLocalPathInput);
} }
if (process.env.RUNNER_ENVIRONMENT === "github-hosted") {
if (process.env.RUNNER_TEMP !== undefined) { if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${node_path_1.default.sep}setup-uv-cache`; return `${process.env.RUNNER_TEMP}${node_path_1.default.sep}setup-uv-cache`;
} }
throw Error("Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input"); throw Error("Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input");
}
if (process.platform === "win32") {
return `${process.env.APPDATA}${node_path_1.default.sep}uv${node_path_1.default.sep}cache`;
}
return `${process.env.HOME}${node_path_1.default.sep}.cache${node_path_1.default.sep}uv`;
} }
function expandTilde(input) { function expandTilde(input) {
if (input.startsWith("~")) { if (input.startsWith("~")) {
@@ -124544,6 +125474,13 @@ function expandTilde(input) {
} }
return input; return input;
} }
function getManifestFile() {
const manifestFileInput = core.getInput("manifest-file");
if (manifestFileInput !== "") {
return manifestFileInput;
}
return undefined;
}
/***/ }), /***/ }),
@@ -124554,38 +125491,21 @@ function expandTilde(input) {
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.Octokit = exports.customFetch = void 0; exports.Octokit = void 0;
exports.getProxyAgent = getProxyAgent;
const core_1 = __nccwpck_require__(60767); const core_1 = __nccwpck_require__(60767);
const plugin_paginate_rest_1 = __nccwpck_require__(93779); const plugin_paginate_rest_1 = __nccwpck_require__(93779);
const plugin_rest_endpoint_methods_1 = __nccwpck_require__(49210); const plugin_rest_endpoint_methods_1 = __nccwpck_require__(49210);
const undici_1 = __nccwpck_require__(46752); const fetch_1 = __nccwpck_require__(3385);
const DEFAULTS = { const DEFAULTS = {
baseUrl: "https://api.github.com", baseUrl: "https://api.github.com",
userAgent: "setup-uv", userAgent: "setup-uv",
}; };
function getProxyAgent() {
const httpProxy = process.env.HTTP_PROXY || process.env.http_prox;
if (httpProxy) {
return new undici_1.ProxyAgent(httpProxy);
}
const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
if (httpsProxy) {
return new undici_1.ProxyAgent(httpsProxy);
}
return undefined;
}
const customFetch = async (url, opts) => await (0, undici_1.fetch)(url, {
dispatcher: getProxyAgent(),
...opts,
});
exports.customFetch = customFetch;
exports.Octokit = core_1.Octokit.plugin(plugin_paginate_rest_1.paginateRest, plugin_rest_endpoint_methods_1.legacyRestEndpointMethods).defaults(function buildDefaults(options) { exports.Octokit = core_1.Octokit.plugin(plugin_paginate_rest_1.paginateRest, plugin_rest_endpoint_methods_1.legacyRestEndpointMethods).defaults(function buildDefaults(options) {
return { return {
...DEFAULTS, ...DEFAULTS,
...options, ...options,
request: { request: {
fetch: exports.customFetch, fetch: fetch_1.fetch,
...options.request, ...options.request,
}, },
}; };
@@ -124694,88 +125614,6 @@ async function isMuslOs() {
} }
/***/ }),
/***/ 53929:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.getUvVersionFromConfigFile = getUvVersionFromConfigFile;
const node_fs_1 = __importDefault(__nccwpck_require__(73024));
const core = __importStar(__nccwpck_require__(37484));
const toml = __importStar(__nccwpck_require__(27106));
function getUvVersionFromConfigFile(filePath) {
core.debug(`Trying to find required-version for uv in: ${filePath}`);
if (!node_fs_1.default.existsSync(filePath)) {
core.warning(`Could not find file: ${filePath}`);
return undefined;
}
let requiredVersion;
try {
requiredVersion = getRequiredVersion(filePath);
}
catch (err) {
const message = err.message;
core.warning(`Error while parsing ${filePath}: ${message}`);
return undefined;
}
if (requiredVersion?.startsWith("==")) {
requiredVersion = requiredVersion.slice(2);
}
if (requiredVersion !== undefined) {
core.info(`Found required-version for uv in ${filePath}: ${requiredVersion}`);
}
return requiredVersion;
}
function getRequiredVersion(filePath) {
const fileContent = node_fs_1.default.readFileSync(filePath, "utf-8");
if (filePath.endsWith("pyproject.toml")) {
const tomlContent = toml.parse(fileContent);
return tomlContent?.tool?.uv?.["required-version"];
}
const tomlContent = toml.parse(fileContent);
return tomlContent["required-version"];
}
/***/ }), /***/ }),
/***/ 42078: /***/ 42078:
@@ -127021,15 +127859,15 @@ var __copyProps = (to, from, except, desc) => {
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// dist/index.js // dist/index.js
var dist_exports = {}; var index_exports = {};
__export(dist_exports, { __export(index_exports, {
TomlDate: () => TomlDate, TomlDate: () => TomlDate,
TomlError: () => TomlError, TomlError: () => TomlError,
default: () => dist_default, default: () => index_default,
parse: () => parse, parse: () => parse,
stringify: () => stringify stringify: () => stringify
}); });
module.exports = __toCommonJS(dist_exports); module.exports = __toCommonJS(index_exports);
// dist/error.js // dist/error.js
function getLineColFromPtr(string, ptr) { function getLineColFromPtr(string, ptr) {
@@ -127111,9 +127949,7 @@ function skipUntil(str, ptr, sep, end, banNewLines = false) {
i = indexOfNewline(str, i); i = indexOfNewline(str, i);
} else if (c === sep) { } else if (c === sep) {
return i + 1; return i + 1;
} else if (c === end) { } else if (c === end || banNewLines && (c === "\n" || c === "\r" && str[i + 1] === "\n")) {
return i;
} else if (banNewLines && (c === "\n" || c === "\r" && str[i + 1] === "\n")) {
return i; return i;
} }
} }
@@ -127128,7 +127964,7 @@ function getStringEnd(str, seek) {
seek += target.length - 1; seek += target.length - 1;
do do
seek = str.indexOf(target, ++seek); seek = str.indexOf(target, ++seek);
while (seek > -1 && first !== "'" && str[seek - 1] === "\\" && str[seek - 2] !== "\\"); while (seek > -1 && first !== "'" && str[seek - 1] === "\\" && (str[seek - 2] !== "\\" || str[seek - 3] === "\\"));
if (seek > -1) { if (seek > -1) {
seek += target.length; seek += target.length;
if (target.length > 1) { if (target.length > 1) {
@@ -127159,6 +127995,7 @@ var TomlDate = class _TomlDate extends Date {
date = `0000-01-01T${date}`; date = `0000-01-01T${date}`;
} }
hasTime = !!match[2]; hasTime = !!match[2];
hasTime && date[10] === " " && (date = date.replace(" ", "T"));
if (match[2] && +match[2] > 23) { if (match[2] && +match[2] > 23) {
date = ""; date = "";
} else { } else {
@@ -127385,7 +128222,7 @@ function sliceAndTrimEndOf(str, startPtr, endPtr, allowNewLines) {
} }
return [trimmed, commentIdx]; return [trimmed, commentIdx];
} }
function extractValue(str, ptr, end, depth) { function extractValue(str, ptr, end, depth = -1) {
if (depth === 0) { if (depth === 0) {
throw new TomlError("document contains excessively nested structures. aborting.", { throw new TomlError("document contains excessively nested structures. aborting.", {
toml: str, toml: str,
@@ -127395,8 +128232,8 @@ function extractValue(str, ptr, end, depth) {
let c = str[ptr]; let c = str[ptr];
if (c === "[" || c === "{") { if (c === "[" || c === "{") {
let [value, endPtr2] = c === "[" ? parseArray(str, ptr, depth) : parseInlineTable(str, ptr, depth); let [value, endPtr2] = c === "[" ? parseArray(str, ptr, depth) : parseInlineTable(str, ptr, depth);
let newPtr = skipUntil(str, endPtr2, ",", end); let newPtr = end ? skipUntil(str, endPtr2, ",", end) : endPtr2;
if (end === "}") { if (endPtr2 - newPtr && end === "}") {
let nextNewLine = indexOfNewline(str, endPtr2, newPtr); let nextNewLine = indexOfNewline(str, endPtr2, newPtr);
if (nextNewLine > -1) { if (nextNewLine > -1) {
throw new TomlError("newlines are not allowed in inline tables", { throw new TomlError("newlines are not allowed in inline tables", {
@@ -127510,7 +128347,7 @@ function parseKey(str, ptr, end = "=") {
} while (dot + 1 && dot < endPtr); } while (dot + 1 && dot < endPtr);
return [parsed, skipVoid(str, endPtr + 1, true, true)]; return [parsed, skipVoid(str, endPtr + 1, true, true)];
} }
function parseInlineTable(str, ptr, depth) { function parseInlineTable(str, ptr, depth = -1) {
let res = {}; let res = {};
let seen = /* @__PURE__ */ new Set(); let seen = /* @__PURE__ */ new Set();
let c; let c;
@@ -127578,7 +128415,7 @@ function parseInlineTable(str, ptr, depth) {
} }
return [res, ptr]; return [res, ptr];
} }
function parseArray(str, ptr, depth) { function parseArray(str, ptr, depth = -1) {
let res = []; let res = [];
let c; let c;
ptr++; ptr++;
@@ -127870,7 +128707,7 @@ function stringify(obj, opts) {
} }
// dist/index.js // dist/index.js
var dist_default = { parse, stringify, TomlDate, TomlError }; var index_default = { parse, stringify, TomlDate, TomlError };
// Annotate the CommonJS export names for ESM import in node: // Annotate the CommonJS export names for ESM import in node:
0 && (0); 0 && (0);
/*! /*!
@@ -128704,7 +129541,8 @@ var NON_VARIABLE_OPTIONS = [
"headers", "headers",
"request", "request",
"query", "query",
"mediaType" "mediaType",
"operationName"
]; ];
var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
@@ -128842,7 +129680,7 @@ var createTokenAuth = function createTokenAuth2(token) {
;// CONCATENATED MODULE: ./node_modules/@octokit/core/dist-src/version.js ;// CONCATENATED MODULE: ./node_modules/@octokit/core/dist-src/version.js
const version_VERSION = "6.1.4"; const version_VERSION = "7.0.2";
;// CONCATENATED MODULE: ./node_modules/@octokit/core/dist-src/index.js ;// CONCATENATED MODULE: ./node_modules/@octokit/core/dist-src/index.js
@@ -129127,8 +129965,10 @@ var paginatingEndpoints = [
"GET /notifications", "GET /notifications",
"GET /organizations", "GET /organizations",
"GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/cache/usage-by-repository",
"GET /orgs/{org}/actions/hosted-runners",
"GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/permissions/repositories",
"GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups",
"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners",
"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories",
"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners",
"GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/runners",
@@ -129138,6 +129978,7 @@ var paginatingEndpoints = [
"GET /orgs/{org}/actions/variables/{name}/repositories", "GET /orgs/{org}/actions/variables/{name}/repositories",
"GET /orgs/{org}/attestations/{subject_digest}", "GET /orgs/{org}/attestations/{subject_digest}",
"GET /orgs/{org}/blocks", "GET /orgs/{org}/blocks",
"GET /orgs/{org}/campaigns",
"GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/code-scanning/alerts",
"GET /orgs/{org}/code-security/configurations", "GET /orgs/{org}/code-security/configurations",
"GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories", "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories",
@@ -129146,7 +129987,6 @@ var paginatingEndpoints = [
"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories",
"GET /orgs/{org}/copilot/billing/seats", "GET /orgs/{org}/copilot/billing/seats",
"GET /orgs/{org}/copilot/metrics", "GET /orgs/{org}/copilot/metrics",
"GET /orgs/{org}/copilot/usage",
"GET /orgs/{org}/dependabot/alerts", "GET /orgs/{org}/dependabot/alerts",
"GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets",
"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories",
@@ -129181,10 +130021,11 @@ var paginatingEndpoints = [
"GET /orgs/{org}/repos", "GET /orgs/{org}/repos",
"GET /orgs/{org}/rulesets", "GET /orgs/{org}/rulesets",
"GET /orgs/{org}/rulesets/rule-suites", "GET /orgs/{org}/rulesets/rule-suites",
"GET /orgs/{org}/rulesets/{ruleset_id}/history",
"GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/secret-scanning/alerts",
"GET /orgs/{org}/security-advisories", "GET /orgs/{org}/security-advisories",
"GET /orgs/{org}/settings/network-configurations",
"GET /orgs/{org}/team/{team_slug}/copilot/metrics", "GET /orgs/{org}/team/{team_slug}/copilot/metrics",
"GET /orgs/{org}/team/{team_slug}/copilot/usage",
"GET /orgs/{org}/teams", "GET /orgs/{org}/teams",
"GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions",
"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments",
@@ -129279,6 +130120,7 @@ var paginatingEndpoints = [
"GET /repos/{owner}/{repo}/rules/branches/{branch}", "GET /repos/{owner}/{repo}/rules/branches/{branch}",
"GET /repos/{owner}/{repo}/rulesets", "GET /repos/{owner}/{repo}/rulesets",
"GET /repos/{owner}/{repo}/rulesets/rule-suites", "GET /repos/{owner}/{repo}/rulesets/rule-suites",
"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history",
"GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts",
"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations",
"GET /repos/{owner}/{repo}/security-advisories", "GET /repos/{owner}/{repo}/security-advisories",
@@ -129390,7 +130232,7 @@ __nccwpck_require__.d(__webpack_exports__, {
}); });
;// CONCATENATED MODULE: ./node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js ;// CONCATENATED MODULE: ./node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js
const VERSION = "13.3.1"; const VERSION = "14.0.0";
//# sourceMappingURL=version.js.map //# sourceMappingURL=version.js.map
@@ -129421,6 +130263,7 @@ const Endpoints = {
createEnvironmentVariable: [ createEnvironmentVariable: [
"POST /repos/{owner}/{repo}/environments/{environment_name}/variables" "POST /repos/{owner}/{repo}/environments/{environment_name}/variables"
], ],
createHostedRunnerForOrg: ["POST /orgs/{org}/actions/hosted-runners"],
createOrUpdateEnvironmentSecret: [ createOrUpdateEnvironmentSecret: [
"PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"
], ],
@@ -129458,6 +130301,9 @@ const Endpoints = {
deleteEnvironmentVariable: [ deleteEnvironmentVariable: [
"DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"
], ],
deleteHostedRunnerForOrg: [
"DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"
],
deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"],
deleteRepoSecret: [ deleteRepoSecret: [
@@ -129546,6 +130392,24 @@ const Endpoints = {
getGithubActionsPermissionsRepository: [ getGithubActionsPermissionsRepository: [
"GET /repos/{owner}/{repo}/actions/permissions" "GET /repos/{owner}/{repo}/actions/permissions"
], ],
getHostedRunnerForOrg: [
"GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"
],
getHostedRunnersGithubOwnedImagesForOrg: [
"GET /orgs/{org}/actions/hosted-runners/images/github-owned"
],
getHostedRunnersLimitsForOrg: [
"GET /orgs/{org}/actions/hosted-runners/limits"
],
getHostedRunnersMachineSpecsForOrg: [
"GET /orgs/{org}/actions/hosted-runners/machine-sizes"
],
getHostedRunnersPartnerImagesForOrg: [
"GET /orgs/{org}/actions/hosted-runners/images/partner"
],
getHostedRunnersPlatformsForOrg: [
"GET /orgs/{org}/actions/hosted-runners/platforms"
],
getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
@@ -129589,6 +130453,10 @@ const Endpoints = {
listEnvironmentVariables: [ listEnvironmentVariables: [
"GET /repos/{owner}/{repo}/environments/{environment_name}/variables" "GET /repos/{owner}/{repo}/environments/{environment_name}/variables"
], ],
listGithubHostedRunnersInGroupForOrg: [
"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"
],
listHostedRunnersForOrg: ["GET /orgs/{org}/actions/hosted-runners"],
listJobsForWorkflowRun: [ listJobsForWorkflowRun: [
"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs" "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"
], ],
@@ -129707,6 +130575,9 @@ const Endpoints = {
updateEnvironmentVariable: [ updateEnvironmentVariable: [
"PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" "PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"
], ],
updateHostedRunnerForOrg: [
"PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"
],
updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"],
updateRepoVariable: [ updateRepoVariable: [
"PATCH /repos/{owner}/{repo}/actions/variables/{name}" "PATCH /repos/{owner}/{repo}/actions/variables/{name}"
@@ -129848,6 +130719,13 @@ const Endpoints = {
"GET /users/{username}/settings/billing/shared-storage" "GET /users/{username}/settings/billing/shared-storage"
] ]
}, },
campaigns: {
createCampaign: ["POST /orgs/{org}/campaigns"],
deleteCampaign: ["DELETE /orgs/{org}/campaigns/{campaign_number}"],
getCampaignSummary: ["GET /orgs/{org}/campaigns/{campaign_number}"],
listOrgCampaigns: ["GET /orgs/{org}/campaigns"],
updateCampaign: ["PATCH /orgs/{org}/campaigns/{campaign_number}"]
},
checks: { checks: {
create: ["POST /repos/{owner}/{repo}/check-runs"], create: ["POST /repos/{owner}/{repo}/check-runs"],
createSuite: ["POST /repos/{owner}/{repo}/check-suites"], createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
@@ -130126,9 +131004,7 @@ const Endpoints = {
getCopilotSeatDetailsForUser: [ getCopilotSeatDetailsForUser: [
"GET /orgs/{org}/members/{username}/copilot" "GET /orgs/{org}/members/{username}/copilot"
], ],
listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"], listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"]
usageMetricsForOrg: ["GET /orgs/{org}/copilot/usage"],
usageMetricsForTeam: ["GET /orgs/{org}/team/{team_slug}/copilot/usage"]
}, },
dependabot: { dependabot: {
addSelectedRepoToOrgSecret: [ addSelectedRepoToOrgSecret: [
@@ -130224,6 +131100,26 @@ const Endpoints = {
getAllTemplates: ["GET /gitignore/templates"], getAllTemplates: ["GET /gitignore/templates"],
getTemplate: ["GET /gitignore/templates/{name}"] getTemplate: ["GET /gitignore/templates/{name}"]
}, },
hostedCompute: {
createNetworkConfigurationForOrg: [
"POST /orgs/{org}/settings/network-configurations"
],
deleteNetworkConfigurationFromOrg: [
"DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"
],
getNetworkConfigurationForOrg: [
"GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"
],
getNetworkSettingsForOrg: [
"GET /orgs/{org}/settings/network-settings/{network_settings_id}"
],
listNetworkConfigurationsForOrg: [
"GET /orgs/{org}/settings/network-configurations"
],
updateNetworkConfigurationForOrg: [
"PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"
]
},
interactions: { interactions: {
getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
@@ -130415,6 +131311,7 @@ const Endpoints = {
"PUT /orgs/{org}/outside_collaborators/{username}" "PUT /orgs/{org}/outside_collaborators/{username}"
], ],
createInvitation: ["POST /orgs/{org}/invitations"], createInvitation: ["POST /orgs/{org}/invitations"],
createIssueType: ["POST /orgs/{org}/issue-types"],
createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"], createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"],
createOrUpdateCustomPropertiesValuesForRepos: [ createOrUpdateCustomPropertiesValuesForRepos: [
"PATCH /orgs/{org}/properties/values" "PATCH /orgs/{org}/properties/values"
@@ -130424,6 +131321,7 @@ const Endpoints = {
], ],
createWebhook: ["POST /orgs/{org}/hooks"], createWebhook: ["POST /orgs/{org}/hooks"],
delete: ["DELETE /orgs/{org}"], delete: ["DELETE /orgs/{org}"],
deleteIssueType: ["DELETE /orgs/{org}/issue-types/{issue_type_id}"],
deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
enableOrDisableSecurityProductOnAllOrgRepos: [ enableOrDisableSecurityProductOnAllOrgRepos: [
"POST /orgs/{org}/{security_product}/{enablement}", "POST /orgs/{org}/{security_product}/{enablement}",
@@ -130440,6 +131338,10 @@ const Endpoints = {
getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"], getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"],
getOrgRulesetHistory: ["GET /orgs/{org}/rulesets/{ruleset_id}/history"],
getOrgRulesetVersion: [
"GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"
],
getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
getWebhookDelivery: [ getWebhookDelivery: [
@@ -130454,6 +131356,7 @@ const Endpoints = {
listForAuthenticatedUser: ["GET /user/orgs"], listForAuthenticatedUser: ["GET /user/orgs"],
listForUser: ["GET /users/{username}/orgs"], listForUser: ["GET /users/{username}/orgs"],
listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
listIssueTypes: ["GET /orgs/{org}/issue-types"],
listMembers: ["GET /orgs/{org}/members"], listMembers: ["GET /orgs/{org}/members"],
listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"], listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"],
@@ -130528,6 +131431,7 @@ const Endpoints = {
], ],
unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
update: ["PATCH /orgs/{org}"], update: ["PATCH /orgs/{org}"],
updateIssueType: ["PUT /orgs/{org}/issue-types/{issue_type_id}"],
updateMembershipForAuthenticatedUser: [ updateMembershipForAuthenticatedUser: [
"PATCH /user/memberships/orgs/{org}" "PATCH /user/memberships/orgs/{org}"
], ],
@@ -130640,37 +131544,6 @@ const Endpoints = {
"PATCH /orgs/{org}/private-registries/{secret_name}" "PATCH /orgs/{org}/private-registries/{secret_name}"
] ]
}, },
projects: {
addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
createCard: ["POST /projects/columns/{column_id}/cards"],
createColumn: ["POST /projects/{project_id}/columns"],
createForAuthenticatedUser: ["POST /user/projects"],
createForOrg: ["POST /orgs/{org}/projects"],
createForRepo: ["POST /repos/{owner}/{repo}/projects"],
delete: ["DELETE /projects/{project_id}"],
deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
deleteColumn: ["DELETE /projects/columns/{column_id}"],
get: ["GET /projects/{project_id}"],
getCard: ["GET /projects/columns/cards/{card_id}"],
getColumn: ["GET /projects/columns/{column_id}"],
getPermissionForUser: [
"GET /projects/{project_id}/collaborators/{username}/permission"
],
listCards: ["GET /projects/columns/{column_id}/cards"],
listCollaborators: ["GET /projects/{project_id}/collaborators"],
listColumns: ["GET /projects/{project_id}/columns"],
listForOrg: ["GET /orgs/{org}/projects"],
listForRepo: ["GET /repos/{owner}/{repo}/projects"],
listForUser: ["GET /users/{username}/projects"],
moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
moveColumn: ["POST /projects/columns/{column_id}/moves"],
removeCollaborator: [
"DELETE /projects/{project_id}/collaborators/{username}"
],
update: ["PATCH /projects/{project_id}"],
updateCard: ["PATCH /projects/columns/cards/{card_id}"],
updateColumn: ["PATCH /projects/columns/{column_id}"]
},
pulls: { pulls: {
checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
create: ["POST /repos/{owner}/{repo}/pulls"], create: ["POST /repos/{owner}/{repo}/pulls"],
@@ -131042,6 +131915,12 @@ const Endpoints = {
], ],
getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"], getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"],
getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
getRepoRulesetHistory: [
"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"
],
getRepoRulesetVersion: [
"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"
],
getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"],
getStatusChecksProtection: [ getStatusChecksProtection: [
"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
@@ -131215,7 +132094,13 @@ const Endpoints = {
search: { search: {
code: ["GET /search/code"], code: ["GET /search/code"],
commits: ["GET /search/commits"], commits: ["GET /search/commits"],
issuesAndPullRequests: ["GET /search/issues"], issuesAndPullRequests: [
"GET /search/issues",
{},
{
deprecated: "octokit.rest.search.issuesAndPullRequests() is deprecated, see https://docs.github.com/rest/search/search#search-issues-and-pull-requests"
}
],
labels: ["GET /search/labels"], labels: ["GET /search/labels"],
repos: ["GET /search/repositories"], repos: ["GET /search/repositories"],
topics: ["GET /search/topics"], topics: ["GET /search/topics"],
@@ -131269,15 +132154,9 @@ const Endpoints = {
addOrUpdateMembershipForUserInOrg: [ addOrUpdateMembershipForUserInOrg: [
"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"
], ],
addOrUpdateProjectPermissionsInOrg: [
"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"
],
addOrUpdateRepoPermissionsInOrg: [ addOrUpdateRepoPermissionsInOrg: [
"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
], ],
checkPermissionsForProjectInOrg: [
"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"
],
checkPermissionsForRepoInOrg: [ checkPermissionsForRepoInOrg: [
"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
], ],
@@ -131314,14 +132193,10 @@ const Endpoints = {
listPendingInvitationsInOrg: [ listPendingInvitationsInOrg: [
"GET /orgs/{org}/teams/{team_slug}/invitations" "GET /orgs/{org}/teams/{team_slug}/invitations"
], ],
listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
removeMembershipForUserInOrg: [ removeMembershipForUserInOrg: [
"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"
], ],
removeProjectInOrg: [
"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"
],
removeRepoInOrg: [ removeRepoInOrg: [
"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
], ],

View File

@@ -8018,7 +8018,7 @@ module.exports = {
const { parseSetCookie } = __nccwpck_require__(7803) const { parseSetCookie } = __nccwpck_require__(7803)
const { stringify, getHeadersList } = __nccwpck_require__(6338) const { stringify } = __nccwpck_require__(6338)
const { webidl } = __nccwpck_require__(8134) const { webidl } = __nccwpck_require__(8134)
const { Headers } = __nccwpck_require__(9061) const { Headers } = __nccwpck_require__(9061)
@@ -8094,14 +8094,13 @@ function getSetCookies (headers) {
webidl.brandCheck(headers, Headers, { strict: false }) webidl.brandCheck(headers, Headers, { strict: false })
const cookies = getHeadersList(headers).cookies const cookies = headers.getSetCookie()
if (!cookies) { if (!cookies) {
return [] return []
} }
// In older versions of undici, cookies is a list of name:value. return cookies.map((pair) => parseSetCookie(pair))
return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))
} }
/** /**
@@ -8529,14 +8528,15 @@ module.exports = {
/***/ }), /***/ }),
/***/ 6338: /***/ 6338:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { /***/ ((module) => {
"use strict"; "use strict";
const assert = __nccwpck_require__(2613) /**
const { kHeadersList } = __nccwpck_require__(9411) * @param {string} value
* @returns {boolean}
*/
function isCTLExcludingHtab (value) { function isCTLExcludingHtab (value) {
if (value.length === 0) { if (value.length === 0) {
return false return false
@@ -8797,31 +8797,13 @@ function stringify (cookie) {
return out.join('; ') return out.join('; ')
} }
let kHeadersListNode
function getHeadersList (headers) {
if (headers[kHeadersList]) {
return headers[kHeadersList]
}
if (!kHeadersListNode) {
kHeadersListNode = Object.getOwnPropertySymbols(headers).find(
(symbol) => symbol.description === 'headers list'
)
assert(kHeadersListNode, 'Headers cannot be parsed')
}
const headersList = headers[kHeadersListNode]
assert(headersList)
return headersList
}
module.exports = { module.exports = {
isCTLExcludingHtab, isCTLExcludingHtab,
stringify, validateCookieName,
getHeadersList validateCookiePath,
validateCookieValue,
toIMFDate,
stringify
} }
@@ -12825,6 +12807,7 @@ const {
isValidHeaderName, isValidHeaderName,
isValidHeaderValue isValidHeaderValue
} = __nccwpck_require__(555) } = __nccwpck_require__(555)
const util = __nccwpck_require__(9023)
const { webidl } = __nccwpck_require__(8134) const { webidl } = __nccwpck_require__(8134)
const assert = __nccwpck_require__(2613) const assert = __nccwpck_require__(2613)
@@ -13378,6 +13361,9 @@ Object.defineProperties(Headers.prototype, {
[Symbol.toStringTag]: { [Symbol.toStringTag]: {
value: 'Headers', value: 'Headers',
configurable: true configurable: true
},
[util.inspect.custom]: {
enumerable: false
} }
}) })
@@ -22554,6 +22540,20 @@ class Pool extends PoolBase {
? { ...options.interceptors } ? { ...options.interceptors }
: undefined : undefined
this[kFactory] = factory this[kFactory] = factory
this.on('connectionError', (origin, targets, error) => {
// If a connection error occurs, we remove the client from the pool,
// and emit a connectionError event. They will not be re-used.
// Fixes https://github.com/nodejs/undici/issues/3895
for (const target of targets) {
// Do not use kRemoveClient here, as it will close the client,
// but the client cannot be closed in this state.
const idx = this[kClients].indexOf(target)
if (idx !== -1) {
this[kClients].splice(idx, 1)
}
}
})
} }
[kGetDispatcher] () { [kGetDispatcher] () {
@@ -28201,6 +28201,7 @@ const Agent = __nccwpck_require__(7405)
const ProxyAgent = __nccwpck_require__(6672) const ProxyAgent = __nccwpck_require__(6672)
const EnvHttpProxyAgent = __nccwpck_require__(3137) const EnvHttpProxyAgent = __nccwpck_require__(3137)
const RetryAgent = __nccwpck_require__(50) const RetryAgent = __nccwpck_require__(50)
const H2CClient = __nccwpck_require__(6815)
const errors = __nccwpck_require__(8707) const errors = __nccwpck_require__(8707)
const util = __nccwpck_require__(3440) const util = __nccwpck_require__(3440)
const { InvalidArgumentError } = errors const { InvalidArgumentError } = errors
@@ -28226,6 +28227,7 @@ module.exports.Agent = Agent
module.exports.ProxyAgent = ProxyAgent module.exports.ProxyAgent = ProxyAgent
module.exports.EnvHttpProxyAgent = EnvHttpProxyAgent module.exports.EnvHttpProxyAgent = EnvHttpProxyAgent
module.exports.RetryAgent = RetryAgent module.exports.RetryAgent = RetryAgent
module.exports.H2CClient = H2CClient
module.exports.RetryHandler = RetryHandler module.exports.RetryHandler = RetryHandler
module.exports.DecoratorHandler = DecoratorHandler module.exports.DecoratorHandler = DecoratorHandler
@@ -29951,6 +29953,7 @@ module.exports = {
const { Writable } = __nccwpck_require__(7075) const { Writable } = __nccwpck_require__(7075)
const { EventEmitter } = __nccwpck_require__(8474)
const { assertCacheKey, assertCacheValue } = __nccwpck_require__(7659) const { assertCacheKey, assertCacheValue } = __nccwpck_require__(7659)
/** /**
@@ -29962,8 +29965,9 @@ const { assertCacheKey, assertCacheValue } = __nccwpck_require__(7659)
/** /**
* @implements {CacheStore} * @implements {CacheStore}
* @extends {EventEmitter}
*/ */
class MemoryCacheStore { class MemoryCacheStore extends EventEmitter {
#maxCount = Infinity #maxCount = Infinity
#maxSize = Infinity #maxSize = Infinity
#maxEntrySize = Infinity #maxEntrySize = Infinity
@@ -29971,11 +29975,13 @@ class MemoryCacheStore {
#size = 0 #size = 0
#count = 0 #count = 0
#entries = new Map() #entries = new Map()
#hasEmittedMaxSizeEvent = false
/** /**
* @param {import('../../types/cache-interceptor.d.ts').default.MemoryCacheStoreOpts | undefined} [opts] * @param {import('../../types/cache-interceptor.d.ts').default.MemoryCacheStoreOpts | undefined} [opts]
*/ */
constructor (opts) { constructor (opts) {
super()
if (opts) { if (opts) {
if (typeof opts !== 'object') { if (typeof opts !== 'object') {
throw new TypeError('MemoryCacheStore options must be an object') throw new TypeError('MemoryCacheStore options must be an object')
@@ -30016,6 +30022,22 @@ class MemoryCacheStore {
} }
} }
/**
* Get the current size of the cache in bytes
* @returns {number} The current size of the cache in bytes
*/
get size () {
return this.#size
}
/**
* Check if the cache is full (either max size or max count reached)
* @returns {boolean} True if the cache is full, false otherwise
*/
isFull () {
return this.#size >= this.#maxSize || this.#count >= this.#maxCount
}
/** /**
* @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} req * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} req
* @returns {import('../../types/cache-interceptor.d.ts').default.GetResult | undefined} * @returns {import('../../types/cache-interceptor.d.ts').default.GetResult | undefined}
@@ -30026,17 +30048,9 @@ class MemoryCacheStore {
const topLevelKey = `${key.origin}:${key.path}` const topLevelKey = `${key.origin}:${key.path}`
const now = Date.now() const now = Date.now()
const entry = this.#entries.get(topLevelKey)?.find((entry) => ( const entries = this.#entries.get(topLevelKey)
entry.deleteAt > now &&
entry.method === key.method &&
(entry.vary == null || Object.keys(entry.vary).every(headerName => {
if (entry.vary[headerName] === null) {
return key.headers[headerName] === undefined
}
return entry.vary[headerName] === key.headers[headerName] const entry = entries ? findEntry(key, entries, now) : null
}))
))
return entry == null return entry == null
? undefined ? undefined
@@ -30090,12 +30104,32 @@ class MemoryCacheStore {
entries = [] entries = []
store.#entries.set(topLevelKey, entries) store.#entries.set(topLevelKey, entries)
} }
const previousEntry = findEntry(key, entries, Date.now())
if (previousEntry) {
const index = entries.indexOf(previousEntry)
entries.splice(index, 1, entry)
store.#size -= previousEntry.size
} else {
entries.push(entry) entries.push(entry)
store.#count += 1
}
store.#size += entry.size store.#size += entry.size
store.#count += 1
// Check if cache is full and emit event if needed
if (store.#size > store.#maxSize || store.#count > store.#maxCount) { if (store.#size > store.#maxSize || store.#count > store.#maxCount) {
// Emit maxSizeExceeded event if we haven't already
if (!store.#hasEmittedMaxSizeEvent) {
store.emit('maxSizeExceeded', {
size: store.#size,
maxSize: store.#maxSize,
count: store.#count,
maxCount: store.#maxCount
})
store.#hasEmittedMaxSizeEvent = true
}
// Perform eviction
for (const [key, entries] of store.#entries) { for (const [key, entries] of store.#entries) {
for (const entry of entries.splice(0, entries.length / 2)) { for (const entry of entries.splice(0, entries.length / 2)) {
store.#size -= entry.size store.#size -= entry.size
@@ -30105,6 +30139,11 @@ class MemoryCacheStore {
store.#entries.delete(key) store.#entries.delete(key)
} }
} }
// Reset the event flag after eviction
if (store.#size < store.#maxSize && store.#count < store.#maxCount) {
store.#hasEmittedMaxSizeEvent = false
}
} }
callback(null) callback(null)
@@ -30130,6 +30169,20 @@ class MemoryCacheStore {
} }
} }
function findEntry (key, entries, now) {
return entries.find((entry) => (
entry.deleteAt > now &&
entry.method === key.method &&
(entry.vary == null || Object.keys(entry.vary).every(headerName => {
if (entry.vary[headerName] === null) {
return key.headers[headerName] === undefined
}
return entry.vary[headerName] === key.headers[headerName]
}))
))
}
module.exports = MemoryCacheStore module.exports = MemoryCacheStore
@@ -30256,6 +30309,11 @@ module.exports = class SqliteCacheStore {
this.#db = new DatabaseSync(opts?.location ?? ':memory:') this.#db = new DatabaseSync(opts?.location ?? ':memory:')
this.#db.exec(` this.#db.exec(`
PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA temp_store = memory;
PRAGMA optimize;
CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION} ( CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION} (
-- Data specific to us -- Data specific to us
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -30275,9 +30333,8 @@ module.exports = class SqliteCacheStore {
staleAt INTEGER NOT NULL staleAt INTEGER NOT NULL
); );
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_url ON cacheInterceptorV${VERSION}(url); CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_getValuesQuery ON cacheInterceptorV${VERSION}(url, method, deleteAt);
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_method ON cacheInterceptorV${VERSION}(method); CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_deleteByUrlQuery ON cacheInterceptorV${VERSION}(deleteAt);
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_deleteAt ON cacheInterceptorV${VERSION}(deleteAt);
`) `)
this.#getValuesQuery = this.#db.prepare(` this.#getValuesQuery = this.#db.prepare(`
@@ -30487,7 +30544,7 @@ module.exports = class SqliteCacheStore {
} }
#prune () { #prune () {
if (this.size <= this.#maxCount) { if (Number.isFinite(this.#maxCount) && this.size <= this.#maxCount) {
return 0 return 0
} }
@@ -30609,10 +30666,7 @@ function headerValueEquals (lhs, rhs) {
const net = __nccwpck_require__(7030) const net = __nccwpck_require__(7030)
const assert = __nccwpck_require__(4589) const assert = __nccwpck_require__(4589)
const util = __nccwpck_require__(3440) const util = __nccwpck_require__(3440)
const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(8707) const { InvalidArgumentError } = __nccwpck_require__(8707)
const timers = __nccwpck_require__(6603)
function noop () {}
let tls // include tls conditionally since it is not always available let tls // include tls conditionally since it is not always available
@@ -30712,7 +30766,6 @@ function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, sess
servername, servername,
session, session,
localAddress, localAddress,
// TODO(HTTP/2): Add support for h2c
ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],
socket: httpSocket, // upgrade socket connection socket: httpSocket, // upgrade socket connection
port, port,
@@ -30744,7 +30797,7 @@ function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, sess
socket.setKeepAlive(true, keepAliveInitialDelay) socket.setKeepAlive(true, keepAliveInitialDelay)
} }
const clearConnectTimeout = setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port }) const clearConnectTimeout = util.setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port })
socket socket
.setNoDelay(true) .setNoDelay(true)
@@ -30771,78 +30824,6 @@ function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, sess
} }
} }
/**
* @param {WeakRef<net.Socket>} socketWeakRef
* @param {object} opts
* @param {number} opts.timeout
* @param {string} opts.hostname
* @param {number} opts.port
* @returns {() => void}
*/
const setupConnectTimeout = process.platform === 'win32'
? (socketWeakRef, opts) => {
if (!opts.timeout) {
return noop
}
let s1 = null
let s2 = null
const fastTimer = timers.setFastTimeout(() => {
// setImmediate is added to make sure that we prioritize socket error events over timeouts
s1 = setImmediate(() => {
// Windows needs an extra setImmediate probably due to implementation differences in the socket logic
s2 = setImmediate(() => onConnectTimeout(socketWeakRef.deref(), opts))
})
}, opts.timeout)
return () => {
timers.clearFastTimeout(fastTimer)
clearImmediate(s1)
clearImmediate(s2)
}
}
: (socketWeakRef, opts) => {
if (!opts.timeout) {
return noop
}
let s1 = null
const fastTimer = timers.setFastTimeout(() => {
// setImmediate is added to make sure that we prioritize socket error events over timeouts
s1 = setImmediate(() => {
onConnectTimeout(socketWeakRef.deref(), opts)
})
}, opts.timeout)
return () => {
timers.clearFastTimeout(fastTimer)
clearImmediate(s1)
}
}
/**
* @param {net.Socket} socket
* @param {object} opts
* @param {number} opts.timeout
* @param {string} opts.hostname
* @param {number} opts.port
*/
function onConnectTimeout (socket, opts) {
// The socket could be already garbage collected
if (socket == null) {
return
}
let message = 'Connect Timeout Error'
if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) {
message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(', ')},`
} else {
message += ` (attempted address: ${opts.hostname}:${opts.port},`
}
message += ` timeout: ${opts.timeout}ms)`
util.destroy(socket, new ConnectTimeoutError(message))
}
module.exports = buildConnector module.exports = buildConnector
@@ -32119,11 +32100,12 @@ const { Blob } = __nccwpck_require__(4573)
const nodeUtil = __nccwpck_require__(7975) const nodeUtil = __nccwpck_require__(7975)
const { stringify } = __nccwpck_require__(1792) const { stringify } = __nccwpck_require__(1792)
const { EventEmitter: EE } = __nccwpck_require__(8474) const { EventEmitter: EE } = __nccwpck_require__(8474)
const { InvalidArgumentError } = __nccwpck_require__(8707) const timers = __nccwpck_require__(6603)
const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(8707)
const { headerNameLowerCasedRecord } = __nccwpck_require__(735) const { headerNameLowerCasedRecord } = __nccwpck_require__(735)
const { tree } = __nccwpck_require__(7752) const { tree } = __nccwpck_require__(7752)
const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) const [nodeMajor, nodeMinor] = process.versions.node.split('.', 2).map(v => Number(v))
class BodyAsyncIterable { class BodyAsyncIterable {
constructor (body) { constructor (body) {
@@ -32138,6 +32120,8 @@ class BodyAsyncIterable {
} }
} }
function noop () {}
/** /**
* @param {*} body * @param {*} body
* @returns {*} * @returns {*}
@@ -32947,6 +32931,78 @@ function errorRequest (client, request, err) {
} }
} }
/**
* @param {WeakRef<net.Socket>} socketWeakRef
* @param {object} opts
* @param {number} opts.timeout
* @param {string} opts.hostname
* @param {number} opts.port
* @returns {() => void}
*/
const setupConnectTimeout = process.platform === 'win32'
? (socketWeakRef, opts) => {
if (!opts.timeout) {
return noop
}
let s1 = null
let s2 = null
const fastTimer = timers.setFastTimeout(() => {
// setImmediate is added to make sure that we prioritize socket error events over timeouts
s1 = setImmediate(() => {
// Windows needs an extra setImmediate probably due to implementation differences in the socket logic
s2 = setImmediate(() => onConnectTimeout(socketWeakRef.deref(), opts))
})
}, opts.timeout)
return () => {
timers.clearFastTimeout(fastTimer)
clearImmediate(s1)
clearImmediate(s2)
}
}
: (socketWeakRef, opts) => {
if (!opts.timeout) {
return noop
}
let s1 = null
const fastTimer = timers.setFastTimeout(() => {
// setImmediate is added to make sure that we prioritize socket error events over timeouts
s1 = setImmediate(() => {
onConnectTimeout(socketWeakRef.deref(), opts)
})
}, opts.timeout)
return () => {
timers.clearFastTimeout(fastTimer)
clearImmediate(s1)
}
}
/**
* @param {net.Socket} socket
* @param {object} opts
* @param {number} opts.timeout
* @param {string} opts.hostname
* @param {number} opts.port
*/
function onConnectTimeout (socket, opts) {
// The socket could be already garbage collected
if (socket == null) {
return
}
let message = 'Connect Timeout Error'
if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) {
message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(', ')},`
} else {
message += ` (attempted address: ${opts.hostname}:${opts.port},`
}
message += ` timeout: ${opts.timeout}ms)`
destroy(socket, new ConnectTimeoutError(message))
}
const kEnumerableProperty = Object.create(null) const kEnumerableProperty = Object.create(null)
kEnumerableProperty.enumerable = true kEnumerableProperty.enumerable = true
@@ -33018,7 +33074,8 @@ module.exports = {
nodeMajor, nodeMajor,
nodeMinor, nodeMinor,
safeHTTPMethods: Object.freeze(['GET', 'HEAD', 'OPTIONS', 'TRACE']), safeHTTPMethods: Object.freeze(['GET', 'HEAD', 'OPTIONS', 'TRACE']),
wrapRequestBody wrapRequestBody,
setupConnectTimeout
} }
@@ -33031,7 +33088,7 @@ module.exports = {
const { InvalidArgumentError } = __nccwpck_require__(8707) const { InvalidArgumentError } = __nccwpck_require__(8707)
const { kClients, kRunning, kClose, kDestroy, kDispatch } = __nccwpck_require__(6443) const { kClients, kRunning, kClose, kDestroy, kDispatch, kUrl } = __nccwpck_require__(6443)
const DispatcherBase = __nccwpck_require__(1841) const DispatcherBase = __nccwpck_require__(1841)
const Pool = __nccwpck_require__(628) const Pool = __nccwpck_require__(628)
const Client = __nccwpck_require__(3701) const Client = __nccwpck_require__(3701)
@@ -33075,22 +33132,35 @@ class Agent extends DispatcherBase {
} }
this[kOnConnect] = (origin, targets) => { this[kOnConnect] = (origin, targets) => {
const result = this[kClients].get(origin)
if (result) {
result.count += 1
}
this.emit('connect', origin, [this, ...targets]) this.emit('connect', origin, [this, ...targets])
} }
this[kOnDisconnect] = (origin, targets, err) => { this[kOnDisconnect] = (origin, targets, err) => {
const result = this[kClients].get(origin)
if (result) {
result.count -= 1
if (result.count <= 0) {
this[kClients].delete(origin)
result.dispatcher.destroy()
}
}
this.emit('disconnect', origin, [this, ...targets], err) this.emit('disconnect', origin, [this, ...targets], err)
} }
this[kOnConnectionError] = (origin, targets, err) => { this[kOnConnectionError] = (origin, targets, err) => {
// TODO: should this decrement result.count here?
this.emit('connectionError', origin, [this, ...targets], err) this.emit('connectionError', origin, [this, ...targets], err)
} }
} }
get [kRunning] () { get [kRunning] () {
let ret = 0 let ret = 0
for (const client of this[kClients].values()) { for (const { dispatcher } of this[kClients].values()) {
ret += client[kRunning] ret += dispatcher[kRunning]
} }
return ret return ret
} }
@@ -33103,8 +33173,8 @@ class Agent extends DispatcherBase {
throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.') throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')
} }
let dispatcher = this[kClients].get(key) const result = this[kClients].get(key)
let dispatcher = result && result.dispatcher
if (!dispatcher) { if (!dispatcher) {
dispatcher = this[kFactory](opts.origin, this[kOptions]) dispatcher = this[kFactory](opts.origin, this[kOptions])
.on('drain', this[kOnDrain]) .on('drain', this[kOnDrain])
@@ -33112,10 +33182,7 @@ class Agent extends DispatcherBase {
.on('disconnect', this[kOnDisconnect]) .on('disconnect', this[kOnDisconnect])
.on('connectionError', this[kOnConnectionError]) .on('connectionError', this[kOnConnectionError])
// This introduces a tiny memory leak, as dispatchers are never removed from the map. this[kClients].set(key, { count: 0, dispatcher })
// TODO(mcollina): remove te timer when the client/pool do not have any more
// active connections.
this[kClients].set(key, dispatcher)
} }
return dispatcher.dispatch(opts, handler) return dispatcher.dispatch(opts, handler)
@@ -33123,8 +33190,8 @@ class Agent extends DispatcherBase {
async [kClose] () { async [kClose] () {
const closePromises = [] const closePromises = []
for (const client of this[kClients].values()) { for (const { dispatcher } of this[kClients].values()) {
closePromises.push(client.close()) closePromises.push(dispatcher.close())
} }
this[kClients].clear() this[kClients].clear()
@@ -33133,13 +33200,23 @@ class Agent extends DispatcherBase {
async [kDestroy] (err) { async [kDestroy] (err) {
const destroyPromises = [] const destroyPromises = []
for (const client of this[kClients].values()) { for (const { dispatcher } of this[kClients].values()) {
destroyPromises.push(client.destroy(err)) destroyPromises.push(dispatcher.destroy(err))
} }
this[kClients].clear() this[kClients].clear()
await Promise.all(destroyPromises) await Promise.all(destroyPromises)
} }
get stats () {
const allClientStats = {}
for (const { dispatcher } of this[kClients].values()) {
if (dispatcher.stats) {
allClientStats[dispatcher[kUrl].origin] = dispatcher.stats
}
}
return allClientStats
}
} }
module.exports = Agent module.exports = Agent
@@ -35198,6 +35275,7 @@ function onHttp2SessionGoAway (errorCode) {
assert(client[kRunning] === 0) assert(client[kRunning] === 0)
client.emit('disconnect', client[kUrl], [client], err) client.emit('disconnect', client[kUrl], [client], err)
client.emit('connectionError', client[kUrl], [client], err)
client[kResume]() client[kResume]()
} }
@@ -35284,11 +35362,13 @@ function writeH2 (client, request) {
if (Array.isArray(val)) { if (Array.isArray(val)) {
for (let i = 0; i < val.length; i++) { for (let i = 0; i < val.length; i++) {
if (headers[key]) { if (headers[key]) {
headers[key] += `,${val[i]}` headers[key] += `, ${val[i]}`
} else { } else {
headers[key] = val[i] headers[key] = val[i]
} }
} }
} else if (headers[key]) {
headers[key] += `, ${val}`
} else { } else {
headers[key] = val headers[key] = val
} }
@@ -35797,6 +35877,7 @@ const assert = __nccwpck_require__(4589)
const net = __nccwpck_require__(7030) const net = __nccwpck_require__(7030)
const http = __nccwpck_require__(7067) const http = __nccwpck_require__(7067)
const util = __nccwpck_require__(3440) const util = __nccwpck_require__(3440)
const { ClientStats } = __nccwpck_require__(6854)
const { channels } = __nccwpck_require__(2414) const { channels } = __nccwpck_require__(2414)
const Request = __nccwpck_require__(4655) const Request = __nccwpck_require__(4655)
const DispatcherBase = __nccwpck_require__(1841) const DispatcherBase = __nccwpck_require__(1841)
@@ -36053,6 +36134,10 @@ class Client extends DispatcherBase {
this[kResume](true) this[kResume](true)
} }
get stats () {
return new ClientStats(this)
}
get [kPending] () { get [kPending] () {
return this[kQueue].length - this[kPendingIdx] return this[kQueue].length - this[kPendingIdx]
} }
@@ -36953,6 +37038,136 @@ module.exports = class FixedQueue {
} }
/***/ }),
/***/ 6815:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
const { connect } = __nccwpck_require__(7030)
const { kClose, kDestroy } = __nccwpck_require__(6443)
const { InvalidArgumentError } = __nccwpck_require__(8707)
const util = __nccwpck_require__(3440)
const Client = __nccwpck_require__(3701)
const DispatcherBase = __nccwpck_require__(1841)
class H2CClient extends DispatcherBase {
#client = null
constructor (origin, clientOpts) {
super()
if (typeof origin === 'string') {
origin = new URL(origin)
}
if (origin.protocol !== 'http:') {
throw new InvalidArgumentError(
'h2c-client: Only h2c protocol is supported'
)
}
const { connect, maxConcurrentStreams, pipelining, ...opts } =
clientOpts ?? {}
let defaultMaxConcurrentStreams = 100
let defaultPipelining = 100
if (
maxConcurrentStreams != null &&
Number.isInteger(maxConcurrentStreams) &&
maxConcurrentStreams > 0
) {
defaultMaxConcurrentStreams = maxConcurrentStreams
}
if (pipelining != null && Number.isInteger(pipelining) && pipelining > 0) {
defaultPipelining = pipelining
}
if (defaultPipelining > defaultMaxConcurrentStreams) {
throw new InvalidArgumentError(
'h2c-client: pipelining cannot be greater than maxConcurrentStreams'
)
}
this.#client = new Client(origin, {
...opts,
connect: this.#buildConnector(connect),
maxConcurrentStreams: defaultMaxConcurrentStreams,
pipelining: defaultPipelining,
allowH2: true
})
}
#buildConnector (connectOpts) {
return (opts, callback) => {
const timeout = connectOpts?.connectOpts ?? 10e3
const { hostname, port, pathname } = opts
const socket = connect({
...opts,
host: hostname,
port,
pathname
})
// Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket
if (opts.keepAlive == null || opts.keepAlive) {
const keepAliveInitialDelay =
opts.keepAliveInitialDelay == null ? 60e3 : opts.keepAliveInitialDelay
socket.setKeepAlive(true, keepAliveInitialDelay)
}
socket.alpnProtocol = 'h2'
const clearConnectTimeout = util.setupConnectTimeout(
new WeakRef(socket),
{ timeout, hostname, port }
)
socket
.setNoDelay(true)
.once('connect', function () {
queueMicrotask(clearConnectTimeout)
if (callback) {
const cb = callback
callback = null
cb(null, this)
}
})
.on('error', function (err) {
queueMicrotask(clearConnectTimeout)
if (callback) {
const cb = callback
callback = null
cb(err)
}
})
return socket
}
}
dispatch (opts, handler) {
return this.#client.dispatch(opts, handler)
}
async [kClose] () {
await this.#client.close()
}
async [kDestroy] () {
await this.#client.destroy()
}
}
module.exports = H2CClient
/***/ }), /***/ }),
/***/ 2128: /***/ 2128:
@@ -36961,10 +37176,10 @@ module.exports = class FixedQueue {
"use strict"; "use strict";
const { PoolStats } = __nccwpck_require__(6854)
const DispatcherBase = __nccwpck_require__(1841) const DispatcherBase = __nccwpck_require__(1841)
const FixedQueue = __nccwpck_require__(4660) const FixedQueue = __nccwpck_require__(4660)
const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = __nccwpck_require__(6443) const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = __nccwpck_require__(6443)
const PoolStats = __nccwpck_require__(3246)
const kClients = Symbol('clients') const kClients = Symbol('clients')
const kNeedDrain = Symbol('needDrain') const kNeedDrain = Symbol('needDrain')
@@ -36977,7 +37192,6 @@ const kOnConnectionError = Symbol('onConnectionError')
const kGetDispatcher = Symbol('get dispatcher') const kGetDispatcher = Symbol('get dispatcher')
const kAddClient = Symbol('add client') const kAddClient = Symbol('add client')
const kRemoveClient = Symbol('remove client') const kRemoveClient = Symbol('remove client')
const kStats = Symbol('stats')
class PoolBase extends DispatcherBase { class PoolBase extends DispatcherBase {
constructor () { constructor () {
@@ -37028,8 +37242,6 @@ class PoolBase extends DispatcherBase {
this[kOnConnectionError] = (origin, targets, err) => { this[kOnConnectionError] = (origin, targets, err) => {
pool.emit('connectionError', origin, [pool, ...targets], err) pool.emit('connectionError', origin, [pool, ...targets], err)
} }
this[kStats] = new PoolStats(this)
} }
get [kBusy] () { get [kBusy] () {
@@ -37069,7 +37281,7 @@ class PoolBase extends DispatcherBase {
} }
get stats () { get stats () {
return this[kStats] return new PoolStats(this)
} }
async [kClose] () { async [kClose] () {
@@ -37155,50 +37367,6 @@ module.exports = {
} }
/***/ }),
/***/ 3246:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = __nccwpck_require__(6443)
const kPool = Symbol('pool')
class PoolStats {
constructor (pool) {
this[kPool] = pool
}
get connected () {
return this[kPool][kConnected]
}
get free () {
return this[kPool][kFree]
}
get pending () {
return this[kPool][kPending]
}
get queued () {
return this[kPool][kQueued]
}
get running () {
return this[kPool][kRunning]
}
get size () {
return this[kPool][kSize]
}
}
module.exports = PoolStats
/***/ }), /***/ }),
/***/ 628: /***/ 628:
@@ -37212,7 +37380,8 @@ const {
kClients, kClients,
kNeedDrain, kNeedDrain,
kAddClient, kAddClient,
kGetDispatcher kGetDispatcher,
kRemoveClient
} = __nccwpck_require__(2128) } = __nccwpck_require__(2128)
const Client = __nccwpck_require__(3701) const Client = __nccwpck_require__(3701)
const { const {
@@ -37242,6 +37411,7 @@ class Pool extends PoolBase {
autoSelectFamily, autoSelectFamily,
autoSelectFamilyAttemptTimeout, autoSelectFamilyAttemptTimeout,
allowH2, allowH2,
clientTtl,
...options ...options
} = {}) { } = {}) {
if (connections != null && (!Number.isFinite(connections) || connections < 0)) { if (connections != null && (!Number.isFinite(connections) || connections < 0)) {
@@ -37272,12 +37442,20 @@ class Pool extends PoolBase {
this[kConnections] = connections || null this[kConnections] = connections || null
this[kUrl] = util.parseOrigin(origin) this[kUrl] = util.parseOrigin(origin)
this[kOptions] = { ...util.deepClone(options), connect, allowH2 } this[kOptions] = { ...util.deepClone(options), connect, allowH2, clientTtl }
this[kOptions].interceptors = options.interceptors this[kOptions].interceptors = options.interceptors
? { ...options.interceptors } ? { ...options.interceptors }
: undefined : undefined
this[kFactory] = factory this[kFactory] = factory
this.on('connect', (origin, targets) => {
if (clientTtl != null && clientTtl > 0) {
for (const target of targets) {
Object.assign(target, { ttl: Date.now() })
}
}
})
this.on('connectionError', (origin, targets, error) => { this.on('connectionError', (origin, targets, error) => {
// If a connection error occurs, we remove the client from the pool, // If a connection error occurs, we remove the client from the pool,
// and emit a connectionError event. They will not be re-used. // and emit a connectionError event. They will not be re-used.
@@ -37294,8 +37472,12 @@ class Pool extends PoolBase {
} }
[kGetDispatcher] () { [kGetDispatcher] () {
const clientTtlOption = this[kOptions].clientTtl
for (const client of this[kClients]) { for (const client of this[kClients]) {
if (!client[kNeedDrain]) { // check ttl of client and if it's stale, remove it from the pool
if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && ((Date.now() - client.ttl) > clientTtlOption)) {
this[kRemoveClient](client)
} else if (!client[kNeedDrain]) {
return client return client
} }
} }
@@ -37319,13 +37501,14 @@ module.exports = Pool
"use strict"; "use strict";
const { kProxy, kClose, kDestroy } = __nccwpck_require__(6443) const { kProxy, kClose, kDestroy, kDispatch, kConnector } = __nccwpck_require__(6443)
const { URL } = __nccwpck_require__(3136) const { URL } = __nccwpck_require__(3136)
const Agent = __nccwpck_require__(7405) const Agent = __nccwpck_require__(7405)
const Pool = __nccwpck_require__(628) const Pool = __nccwpck_require__(628)
const DispatcherBase = __nccwpck_require__(1841) const DispatcherBase = __nccwpck_require__(1841)
const { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = __nccwpck_require__(8707) const { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = __nccwpck_require__(8707)
const buildConnector = __nccwpck_require__(9136) const buildConnector = __nccwpck_require__(9136)
const Client = __nccwpck_require__(3701)
const kAgent = Symbol('proxy agent') const kAgent = Symbol('proxy agent')
const kClient = Symbol('proxy client') const kClient = Symbol('proxy client')
@@ -37333,6 +37516,7 @@ const kProxyHeaders = Symbol('proxy headers')
const kRequestTls = Symbol('request tls settings') const kRequestTls = Symbol('request tls settings')
const kProxyTls = Symbol('proxy tls settings') const kProxyTls = Symbol('proxy tls settings')
const kConnectEndpoint = Symbol('connect endpoint function') const kConnectEndpoint = Symbol('connect endpoint function')
const kTunnelProxy = Symbol('tunnel proxy')
function defaultProtocolPort (protocol) { function defaultProtocolPort (protocol) {
return protocol === 'https:' ? 443 : 80 return protocol === 'https:' ? 443 : 80
@@ -37344,6 +37528,61 @@ function defaultFactory (origin, opts) {
const noop = () => {} const noop = () => {}
class ProxyClient extends DispatcherBase {
#client = null
constructor (origin, opts) {
if (typeof origin === 'string') {
origin = new URL(origin)
}
if (origin.protocol !== 'http:' && origin.protocol !== 'https:') {
throw new InvalidArgumentError('ProxyClient only supports http and https protocols')
}
super()
this.#client = new Client(origin, opts)
}
async [kClose] () {
await this.#client.close()
}
async [kDestroy] () {
await this.#client.destroy()
}
async [kDispatch] (opts, handler) {
const { method, origin } = opts
if (method === 'CONNECT') {
this.#client[kConnector]({
origin,
port: opts.port || defaultProtocolPort(opts.protocol),
path: opts.host,
signal: opts.signal,
headers: {
...this[kProxyHeaders],
host: opts.host
},
servername: this[kProxyTls]?.servername || opts.servername
},
(err, socket) => {
if (err) {
handler.callback(err)
} else {
handler.callback(null, { socket, statusCode: 200 })
}
}
)
return
}
if (typeof origin === 'string') {
opts.origin = new URL(origin)
}
return this.#client.dispatch(opts, handler)
}
}
class ProxyAgent extends DispatcherBase { class ProxyAgent extends DispatcherBase {
constructor (opts) { constructor (opts) {
if (!opts || (typeof opts === 'object' && !(opts instanceof URL) && !opts.uri)) { if (!opts || (typeof opts === 'object' && !(opts instanceof URL) && !opts.uri)) {
@@ -37355,6 +37594,8 @@ class ProxyAgent extends DispatcherBase {
throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.') throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')
} }
const { proxyTunnel = true } = opts
super() super()
const url = this.#getUrl(opts) const url = this.#getUrl(opts)
@@ -37376,9 +37617,19 @@ class ProxyAgent extends DispatcherBase {
this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}` this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`
} }
const factory = (!proxyTunnel && protocol === 'http:')
? (origin, options) => {
if (origin.protocol === 'http:') {
return new ProxyClient(origin, options)
}
return new Client(origin, options)
}
: undefined
const connect = buildConnector({ ...opts.proxyTls }) const connect = buildConnector({ ...opts.proxyTls })
this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }) this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })
this[kClient] = clientFactory(url, { connect }) this[kClient] = clientFactory(url, { connect, factory })
this[kTunnelProxy] = proxyTunnel
this[kAgent] = new Agent({ this[kAgent] = new Agent({
...opts, ...opts,
connect: async (opts, callback) => { connect: async (opts, callback) => {
@@ -37434,6 +37685,10 @@ class ProxyAgent extends DispatcherBase {
headers.host = host headers.host = host
} }
if (!this.#shouldConnect(new URL(opts.origin))) {
opts.path = opts.origin + opts.path
}
return this[kAgent].dispatch( return this[kAgent].dispatch(
{ {
...opts, ...opts,
@@ -37466,6 +37721,19 @@ class ProxyAgent extends DispatcherBase {
await this[kAgent].destroy() await this[kAgent].destroy()
await this[kClient].destroy() await this[kClient].destroy()
} }
#shouldConnect (uri) {
if (typeof uri === 'string') {
uri = new URL(uri)
}
if (this[kTunnelProxy]) {
return true
}
if (uri.protocol !== 'http:' || this[kProxy].protocol !== 'http:') {
return true
}
return false
}
} }
/** /**
@@ -38064,7 +38332,7 @@ const assert = __nccwpck_require__(4589)
* here, which we then just pass on to the next handler (most likely a * here, which we then just pass on to the next handler (most likely a
* CacheHandler). Note that this assumes the proper headers were already * CacheHandler). Note that this assumes the proper headers were already
* included in the request to tell the origin that we want to revalidate the * included in the request to tell the origin that we want to revalidate the
* response (i.e. if-modified-since). * response (i.e. if-modified-since or if-none-match).
* *
* @see https://www.rfc-editor.org/rfc/rfc9111.html#name-validation * @see https://www.rfc-editor.org/rfc/rfc9111.html#name-validation
* *
@@ -39060,7 +39328,7 @@ const util = __nccwpck_require__(3440)
const CacheHandler = __nccwpck_require__(9976) const CacheHandler = __nccwpck_require__(9976)
const MemoryCacheStore = __nccwpck_require__(4889) const MemoryCacheStore = __nccwpck_require__(4889)
const CacheRevalidationHandler = __nccwpck_require__(7133) const CacheRevalidationHandler = __nccwpck_require__(7133)
const { assertCacheStore, assertCacheMethods, makeCacheKey, parseCacheControlHeader } = __nccwpck_require__(7659) const { assertCacheStore, assertCacheMethods, makeCacheKey, normaliseHeaders, parseCacheControlHeader } = __nccwpck_require__(7659)
const { AbortError } = __nccwpck_require__(8707) const { AbortError } = __nccwpck_require__(8707)
/** /**
@@ -39074,7 +39342,12 @@ const { AbortError } = __nccwpck_require__(8707)
*/ */
function needsRevalidation (result, cacheControlDirectives) { function needsRevalidation (result, cacheControlDirectives) {
if (cacheControlDirectives?.['no-cache']) { if (cacheControlDirectives?.['no-cache']) {
// Always revalidate requests with the no-cache directive // Always revalidate requests with the no-cache request directive
return true
}
if (result.cacheControlDirectives?.['no-cache'] && !Array.isArray(result.cacheControlDirectives['no-cache'])) {
// Always revalidate requests with unqualified no-cache response directive
return true return true
} }
@@ -39275,7 +39548,7 @@ function handleResult (
// Check if the response is stale // Check if the response is stale
if (needsRevalidation(result, reqCacheControl)) { if (needsRevalidation(result, reqCacheControl)) {
if (util.isStream(opts.body) && util.bodyLength(opts.body) !== 0) { if (util.isStream(opts.body) && util.bodyLength(opts.body) !== 0) {
// If body is is stream we can't revalidate... // If body is a stream we can't revalidate...
// TODO (fix): This could be less strict... // TODO (fix): This could be less strict...
return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler)) return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler))
} }
@@ -39373,6 +39646,11 @@ module.exports = (opts = {}) => {
return dispatch(opts, handler) return dispatch(opts, handler)
} }
opts = {
...opts,
headers: normaliseHeaders(opts)
}
const reqCacheControl = opts.headers?.['cache-control'] const reqCacheControl = opts.headers?.['cache-control']
? parseCacheControlHeader(opts.headers['cache-control']) ? parseCacheControlHeader(opts.headers['cache-control'])
: undefined : undefined
@@ -40733,11 +41011,12 @@ const {
kMockAgentIsCallHistoryEnabled, kMockAgentIsCallHistoryEnabled,
kMockAgentAddCallHistoryLog, kMockAgentAddCallHistoryLog,
kMockAgentMockCallHistoryInstance, kMockAgentMockCallHistoryInstance,
kMockAgentAcceptsNonStandardSearchParameters,
kMockCallHistoryAddLog kMockCallHistoryAddLog
} = __nccwpck_require__(1117) } = __nccwpck_require__(1117)
const MockClient = __nccwpck_require__(7365) const MockClient = __nccwpck_require__(7365)
const MockPool = __nccwpck_require__(4004) const MockPool = __nccwpck_require__(4004)
const { matchValue, buildAndValidateMockOptions } = __nccwpck_require__(3397) const { matchValue, normalizeSearchParams, buildAndValidateMockOptions } = __nccwpck_require__(3397)
const { InvalidArgumentError, UndiciError } = __nccwpck_require__(8707) const { InvalidArgumentError, UndiciError } = __nccwpck_require__(8707)
const Dispatcher = __nccwpck_require__(883) const Dispatcher = __nccwpck_require__(883)
const PendingInterceptorsFormatter = __nccwpck_require__(6142) const PendingInterceptorsFormatter = __nccwpck_require__(6142)
@@ -40752,6 +41031,7 @@ class MockAgent extends Dispatcher {
this[kNetConnect] = true this[kNetConnect] = true
this[kIsMockActive] = true this[kIsMockActive] = true
this[kMockAgentIsCallHistoryEnabled] = mockOptions?.enableCallHistory ?? false this[kMockAgentIsCallHistoryEnabled] = mockOptions?.enableCallHistory ?? false
this[kMockAgentAcceptsNonStandardSearchParameters] = mockOptions?.acceptNonStandardSearchParameters ?? false
// Instantiate Agent and encapsulate // Instantiate Agent and encapsulate
if (opts?.agent && typeof opts.agent.dispatch !== 'function') { if (opts?.agent && typeof opts.agent.dispatch !== 'function') {
@@ -40784,7 +41064,17 @@ class MockAgent extends Dispatcher {
this[kMockAgentAddCallHistoryLog](opts) this[kMockAgentAddCallHistoryLog](opts)
return this[kAgent].dispatch(opts, handler) const acceptNonStandardSearchParameters = this[kMockAgentAcceptsNonStandardSearchParameters]
const dispatchOpts = { ...opts }
if (acceptNonStandardSearchParameters && dispatchOpts.path) {
const [path, searchParams] = dispatchOpts.path.split('?')
const normalizedSearchParams = normalizeSearchParams(searchParams, acceptNonStandardSearchParameters)
dispatchOpts.path = `${path}?${normalizedSearchParams}`
}
return this[kAgent].dispatch(dispatchOpts, handler)
} }
async close () { async close () {
@@ -40864,7 +41154,7 @@ class MockAgent extends Dispatcher {
} }
[kMockAgentSet] (origin, dispatcher) { [kMockAgentSet] (origin, dispatcher) {
this[kClients].set(origin, dispatcher) this[kClients].set(origin, { count: 0, dispatcher })
} }
[kFactory] (origin) { [kFactory] (origin) {
@@ -40876,9 +41166,9 @@ class MockAgent extends Dispatcher {
[kMockAgentGet] (origin) { [kMockAgentGet] (origin) {
// First check if we can immediately find it // First check if we can immediately find it
const client = this[kClients].get(origin) const result = this[kClients].get(origin)
if (client) { if (result?.dispatcher) {
return client return result.dispatcher
} }
// If the origin is not a string create a dummy parent pool and return to user // If the origin is not a string create a dummy parent pool and return to user
@@ -40889,11 +41179,11 @@ class MockAgent extends Dispatcher {
} }
// If we match, create a pool and assign the same dispatches // If we match, create a pool and assign the same dispatches
for (const [keyMatcher, nonExplicitDispatcher] of Array.from(this[kClients])) { for (const [keyMatcher, result] of Array.from(this[kClients])) {
if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { if (result && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {
const dispatcher = this[kFactory](origin) const dispatcher = this[kFactory](origin)
this[kMockAgentSet](origin, dispatcher) this[kMockAgentSet](origin, dispatcher)
dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches] dispatcher[kDispatches] = result.dispatcher[kDispatches]
return dispatcher return dispatcher
} }
} }
@@ -40907,7 +41197,7 @@ class MockAgent extends Dispatcher {
const mockAgentClients = this[kClients] const mockAgentClients = this[kClients]
return Array.from(mockAgentClients.entries()) return Array.from(mockAgentClients.entries())
.flatMap(([origin, scope]) => scope[kDispatches].map(dispatch => ({ ...dispatch, origin }))) .flatMap(([origin, result]) => result.dispatcher[kDispatches].map(dispatch => ({ ...dispatch, origin })))
.filter(({ pending }) => pending) .filter(({ pending }) => pending)
} }
@@ -41607,6 +41897,7 @@ module.exports = {
kMockAgentRegisterCallHistory: Symbol('mock agent register mock call history'), kMockAgentRegisterCallHistory: Symbol('mock agent register mock call history'),
kMockAgentAddCallHistoryLog: Symbol('mock agent add call history log'), kMockAgentAddCallHistoryLog: Symbol('mock agent add call history log'),
kMockAgentIsCallHistoryEnabled: Symbol('mock agent is call history enabled'), kMockAgentIsCallHistoryEnabled: Symbol('mock agent is call history enabled'),
kMockAgentAcceptsNonStandardSearchParameters: Symbol('mock agent accepts non standard search parameters'),
kMockCallHistoryAddLog: Symbol('mock call history add log') kMockCallHistoryAddLog: Symbol('mock call history add log')
} }
@@ -41711,13 +42002,42 @@ function matchHeaders (mockDispatch, headers) {
return true return true
} }
function normalizeSearchParams (query) {
if (typeof query !== 'string') {
return query
}
const originalQp = new URLSearchParams(query)
const normalizedQp = new URLSearchParams()
for (let [key, value] of originalQp.entries()) {
key = key.replace('[]', '')
const valueRepresentsString = /^(['"]).*\1$/.test(value)
if (valueRepresentsString) {
normalizedQp.append(key, value)
continue
}
if (value.includes(',')) {
const values = value.split(',')
for (const v of values) {
normalizedQp.append(key, v)
}
continue
}
normalizedQp.append(key, value)
}
return normalizedQp
}
function safeUrl (path) { function safeUrl (path) {
if (typeof path !== 'string') { if (typeof path !== 'string') {
return path return path
} }
const pathSegments = path.split('?', 3)
const pathSegments = path.split('?')
if (pathSegments.length !== 2) { if (pathSegments.length !== 2) {
return path return path
} }
@@ -41995,6 +42315,10 @@ function buildAndValidateMockOptions (opts) {
throw new InvalidArgumentError('options.enableCallHistory must to be a boolean') throw new InvalidArgumentError('options.enableCallHistory must to be a boolean')
} }
if ('acceptNonStandardSearchParameters' in mockOptions && typeof mockOptions.acceptNonStandardSearchParameters !== 'boolean') {
throw new InvalidArgumentError('options.acceptNonStandardSearchParameters must to be a boolean')
}
return mockOptions return mockOptions
} }
} }
@@ -42014,7 +42338,8 @@ module.exports = {
checkNetConnect, checkNetConnect,
buildAndValidateMockOptions, buildAndValidateMockOptions,
getHeaderByName, getHeaderByName,
buildHeadersFromArray buildHeadersFromArray,
normalizeSearchParams
} }
@@ -42089,7 +42414,19 @@ function makeCacheKey (opts) {
throw new Error('opts.origin is undefined') throw new Error('opts.origin is undefined')
} }
/** @type {Record<string, string[] | string>} */ return {
origin: opts.origin.toString(),
method: opts.method,
path: opts.path,
headers: opts.headers
}
}
/**
* @param {Record<string, string[] | string>}
* @return {Record<string, string[] | string>}
*/
function normaliseHeaders (opts) {
let headers let headers
if (opts.headers == null) { if (opts.headers == null) {
headers = {} headers = {}
@@ -42115,12 +42452,7 @@ function makeCacheKey (opts) {
throw new Error('opts.headers is not an object') throw new Error('opts.headers is not an object')
} }
return { return headers
origin: opts.origin.toString(),
method: opts.method,
path: opts.path,
headers
}
} }
/** /**
@@ -42427,6 +42759,7 @@ function assertCacheMethods (methods, name = 'CacheMethods') {
module.exports = { module.exports = {
makeCacheKey, makeCacheKey,
normaliseHeaders,
assertCacheKey, assertCacheKey,
assertCacheValue, assertCacheValue,
parseCacheControlHeader, parseCacheControlHeader,
@@ -42704,6 +43037,46 @@ module.exports = {
} }
/***/ }),
/***/ 6854:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
const {
kConnected,
kPending,
kRunning,
kSize,
kFree,
kQueued
} = __nccwpck_require__(6443)
class ClientStats {
constructor (client) {
this.connected = client[kConnected]
this.pending = client[kPending]
this.running = client[kRunning]
this.size = client[kSize]
}
}
class PoolStats {
constructor (pool) {
this.connected = pool[kConnected]
this.free = pool[kFree]
this.pending = pool[kPending]
this.queued = pool[kQueued]
this.running = pool[kRunning]
this.size = pool[kSize]
}
}
module.exports = { ClientStats, PoolStats }
/***/ }), /***/ }),
/***/ 6603: /***/ 6603:
@@ -49366,7 +49739,9 @@ function finalizeAndReportTiming (response, initiatorType = 'other') {
originalURL.href, originalURL.href,
initiatorType, initiatorType,
globalThis, globalThis,
cacheState cacheState,
'', // bodyType
response.status
) )
} }
@@ -50051,7 +50426,7 @@ function fetchFinale (fetchParams, response) {
// 3. Set fetchParamss controllers report timing steps to the following steps given a global object global: // 3. Set fetchParamss controllers report timing steps to the following steps given a global object global:
fetchParams.controller.reportTimingSteps = () => { fetchParams.controller.reportTimingSteps = () => {
// 1. If fetchParamss requests URLs scheme is not an HTTP(S) scheme, then return. // 1. If fetchParamss requests URLs scheme is not an HTTP(S) scheme, then return.
if (fetchParams.request.url.protocol !== 'https:') { if (!urlIsHttpHttpsScheme(fetchParams.request.url)) {
return return
} }
@@ -50093,7 +50468,6 @@ function fetchFinale (fetchParams, response) {
// fetchParamss requests URL, fetchParamss requests initiator type, global, cacheState, bodyInfo, // fetchParamss requests URL, fetchParamss requests initiator type, global, cacheState, bodyInfo,
// and responseStatus. // and responseStatus.
if (fetchParams.request.initiatorType != null) { if (fetchParams.request.initiatorType != null) {
// TODO: update markresourcetiming
markResourceTiming(timingInfo, fetchParams.request.url.href, fetchParams.request.initiatorType, globalThis, cacheState, bodyInfo, responseStatus) markResourceTiming(timingInfo, fetchParams.request.url.href, fetchParams.request.initiatorType, globalThis, cacheState, bodyInfo, responseStatus)
} }
} }
@@ -58010,7 +58384,7 @@ function parseExtensions (extensions) {
while (position.position < extensions.length) { while (position.position < extensions.length) {
const pair = collectASequenceOfCodePointsFast(';', extensions, position) const pair = collectASequenceOfCodePointsFast(';', extensions, position)
const [name, value = ''] = pair.split('=') const [name, value = ''] = pair.split('=', 2)
extensionList.set( extensionList.set(
removeHTTPWhitespace(name, true, false), removeHTTPWhitespace(name, true, false),
@@ -58847,6 +59221,314 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.KNOWN_CHECKSUMS = void 0; exports.KNOWN_CHECKSUMS = void 0;
// AUTOGENERATED_DO_NOT_EDIT // AUTOGENERATED_DO_NOT_EDIT
exports.KNOWN_CHECKSUMS = { exports.KNOWN_CHECKSUMS = {
"aarch64-apple-darwin-0.7.14": "7cb9cb6b3005a16356493887d7e7e297237b754b5753b91e826ada98ab2da172",
"aarch64-pc-windows-msvc-0.7.14": "f28f27e529e30e96e7b289b724c8229cfc5ca25312c23bdae089d6998ffd0aae",
"aarch64-unknown-linux-gnu-0.7.14": "c0932f428d24d87aaad6a6b7ad48aa09f260d2da5c69e877acd87c3ac90fbbad",
"aarch64-unknown-linux-musl-0.7.14": "30e41b1f68b3e57c1375c0b2e7fe932a9eb5487fbcef7c4c7d03def3e05b9f7e",
"arm-unknown-linux-musleabihf-0.7.14": "3b494d3d6a892d9c03d1fa6dcec8ac6077653939a6645570ab6f1f40adbd0b3c",
"armv7-unknown-linux-gnueabihf-0.7.14": "d5d1f6c49559914678267ce9f3a57528ab45e26e907a816736306b4f10a7b4b8",
"armv7-unknown-linux-musleabihf-0.7.14": "0016d3138edc52de9f2f4b0587afb6b579dc3bb3abfe2df151f97cc43a4ab421",
"i686-pc-windows-msvc-0.7.14": "42391f3a71229342b17d944e956d116aabc5147b0ed28a26c59601feac1f24cd",
"i686-unknown-linux-gnu-0.7.14": "71c358c315da7ddd2de334fe52a54719f9bdac8d6970e7966e2d080ae73ad028",
"i686-unknown-linux-musl-0.7.14": "d02de9391fe7b7d7e97dc2fa63a539201a31eb51d2c6a87b7570cf8a5ac22398",
"powerpc64-unknown-linux-gnu-0.7.14": "a2a43332f860520f7cd3d32f5a4ed5e0d938cc59e025372f8f1bfe47ea64355a",
"powerpc64le-unknown-linux-gnu-0.7.14": "3c545528b601a75baad5e1cc93cbf973123e9e6df6d905b432d91ba9ca769c0b",
"riscv64gc-unknown-linux-gnu-0.7.14": "4085fd8d4acb0a50a012fa63ae37e50472bf8742d58f4943529b5b5bda95a1a9",
"s390x-unknown-linux-gnu-0.7.14": "b20a69092f3171dd99445fe0d71e3ed3e67ff85346cb0723a43a1b8d55ce0f33",
"x86_64-apple-darwin-0.7.14": "352a56bb3823040f19f936dd5e277340cd304da03e5b00c0959800a72a9f55ac",
"x86_64-pc-windows-msvc-0.7.14": "f9ac952c69d32b2263ba19ba93d18d9e708dcb9bddb8124555bbda96d6d5168f",
"x86_64-unknown-linux-gnu-0.7.14": "2b38641d02bf107c5099f09778fda93bbaa4a4a2ee44ba303a4097102254e5e5",
"x86_64-unknown-linux-musl-0.7.14": "8c62a823744630e6cf3fdf0bf38c4fe4558bfcbe082b076a76446a3aab2af5f5",
"aarch64-apple-darwin-0.7.13": "721f532b73171586574298d4311a91d5ea2c802ef4db3ebafc434239330090c6",
"aarch64-pc-windows-msvc-0.7.13": "bb40708ad549ad6a12209cb139dd751bf0ede41deb679ce7513ce197bd9ef234",
"aarch64-unknown-linux-gnu-0.7.13": "0b2ad9fe4295881615295add8cc5daa02549d29cc9a61f0578e397efcf12f08f",
"aarch64-unknown-linux-musl-0.7.13": "52baba71881c978d32b7c32216ad0cde4546a4dc62e606c9834ec4616c1610eb",
"arm-unknown-linux-musleabihf-0.7.13": "ff2b11fff489301f9d55c851b9ebce7ca5530d743d2c0a3861cc45896715ea9b",
"armv7-unknown-linux-gnueabihf-0.7.13": "903350811ee31b2b758c8afb853490c27a34382a535b236739705b104bc13894",
"armv7-unknown-linux-musleabihf-0.7.13": "7e3b2aa966c54ced0fcd9febea6b913ee7ea12ee85246513895f199ab13296a8",
"i686-pc-windows-msvc-0.7.13": "5cf71014fde208ee0833026b3828007f8eaf514ec003784dc1ae92633877179b",
"i686-unknown-linux-gnu-0.7.13": "ff031258ff08b3aca46648398e21fe9679744501e3c9a928c8e42d596a708bbc",
"i686-unknown-linux-musl-0.7.13": "41851d695bb5401bce5af81a156d63215087cf8e8e1275e69dd96de4bfa30c26",
"powerpc64-unknown-linux-gnu-0.7.13": "02a80ce1436bf673b0d7276bb24dea0bbc70958dc91e5fb04ad37ac515be7424",
"powerpc64le-unknown-linux-gnu-0.7.13": "60c8907cce089de97dcce732ae363eda0620f7196c25e8bd539f168b93f9e34c",
"riscv64gc-unknown-linux-gnu-0.7.13": "521a5235bc5a053dd7f0221c363544cef6d033064cc9d92dbb4ef19771000052",
"s390x-unknown-linux-gnu-0.7.13": "41e4b6093dd408b41dffb4c9e08c4aa31424ee4573ce9c95566c2617f7f2d0c6",
"x86_64-apple-darwin-0.7.13": "d785753ac092e25316180626aa691c5dfe1fb075290457ba4fdb72c7c5661321",
"x86_64-pc-windows-msvc-0.7.13": "e199b10bef1a7cc540014483e7f60f825a174988f41020e9d2a6b01bd60f0669",
"x86_64-unknown-linux-gnu-0.7.13": "909278eb197c5ed0e9b5f16317d1255270d1f9ea4196e7179ce934d48c4c2545",
"x86_64-unknown-linux-musl-0.7.13": "560bb64e060354e45138d7dd47c8dd48a4f7a349af5520d29cd3c704e79f286c",
"aarch64-apple-darwin-0.7.12": "189108cd026c25d40fb086eaaf320aac52c3f7aab63e185bac51305a1576fc7e",
"aarch64-pc-windows-msvc-0.7.12": "fbedfb71356d0e63c86b507cf1434a58406afe6eac77aee9d37b8282d4006e14",
"aarch64-unknown-linux-gnu-0.7.12": "23233d2e950ed8187858350da5c6803b14cbbeaef780382093bb2f2bc4ba1200",
"aarch64-unknown-linux-musl-0.7.12": "0589f6d27bbbe2e205aa6fc25e4cd28ab97e984cdba20842de8d3a00714e13e9",
"arm-unknown-linux-musleabihf-0.7.12": "6996e32ac1c37af33a4c6e40ab0126a82d62ccb94edb164b7dae554be4dd8336",
"armv7-unknown-linux-gnueabihf-0.7.12": "aee2dc202deed7e15984d71eb59803111052fbe8c0fb3ffad27ae0a6d290d74f",
"armv7-unknown-linux-musleabihf-0.7.12": "87bd7676d31858d9e1937ab69d13e30cc93ebb09fb246dde6a8f183e9570a82c",
"i686-pc-windows-msvc-0.7.12": "c7ec71ba64d01ef3cdb89553445de94ab4fd7375c8f2a7068353aec7a3a06342",
"i686-unknown-linux-gnu-0.7.12": "d1def68ff10b30327a5cacab497664aaf8338e192ba277b76f45dad63208f2e2",
"i686-unknown-linux-musl-0.7.12": "f56a0a9c84b35b7e910c4d628c667b843fb3fa1d9dddb0bbf4bf3f21eeaee07f",
"powerpc64-unknown-linux-gnu-0.7.12": "6eafb546d1b8642a5c27e4dfda213659fee41b0fd150b4c33ef96c917e595344",
"powerpc64le-unknown-linux-gnu-0.7.12": "0d550348d7a0f54352824cd751dc7baea0c23b17d744a5a7784b6b825e5fc909",
"s390x-unknown-linux-gnu-0.7.12": "76f5a2c1c13446233312d140136f3f55fa7c162176327830eb109ccaae6c9cea",
"x86_64-apple-darwin-0.7.12": "a338354420dba089218c05d4d585e4bcf174a65fe53260592b2af19ceec85835",
"x86_64-pc-windows-msvc-0.7.12": "2cf29c8ffaa2549aa0f86927b2510008e8ca3dcd2100277d86faf437382a371b",
"x86_64-unknown-linux-gnu-0.7.12": "735891fb553d0be129f3aa39dc8e9c4c49aaa76ec17f7dfb6a732e79a714873a",
"x86_64-unknown-linux-musl-0.7.12": "bb493f1e6ae426c06b5a103cb71aa60c678976d2377f0590644538658656c2a7",
"aarch64-apple-darwin-0.7.11": "b5f4cb27a3002d6590c3681377c6d826db0b52e2a9529c7144fcd53fec89ba79",
"aarch64-pc-windows-msvc-0.7.11": "856bac93344a6980b2703a4143f26fc042c941b02f11ed21f55ec6be3fdfde87",
"aarch64-unknown-linux-gnu-0.7.11": "80cf695c4e10b532e9db3c7fbbcfb0f8356f2e70e7a4a5040e005f0fae70923d",
"aarch64-unknown-linux-musl-0.7.11": "2ad20d143c74d7f63d1c99db3999f239f045b7be041e23f6ac8b269c99fa54fe",
"arm-unknown-linux-musleabihf-0.7.11": "21fec46f09d96cd9f51378fe01ed050dd2032c1fef823f8bd81fa50a2337bbcc",
"armv7-unknown-linux-gnueabihf-0.7.11": "1a75aaff4695c07151d5b9abb50232ea9fb6f5ccc82d4b319abd8796605d9db8",
"armv7-unknown-linux-musleabihf-0.7.11": "431b3115ab8fb5e2210d01f29b7901e6eb1174ff65545ec49318d6d4adf4c802",
"i686-pc-windows-msvc-0.7.11": "985f5eabf42b8ad0166ae6b9f799564220fa932938a8401c890d5e07321ce7c0",
"i686-unknown-linux-gnu-0.7.11": "619e205d56594fc530dbde6c6a543dd094c796791a5e2cfcd3bb70fa5767bf9d",
"i686-unknown-linux-musl-0.7.11": "838c6336ba8e88818459b10c3520e83601b9c0a9850a209accef9782c050faad",
"powerpc64-unknown-linux-gnu-0.7.11": "769c7f32cbc2ad918ccf9ae661d99a6c0d0fd3a0056691832b4a79049a9d06ec",
"powerpc64le-unknown-linux-gnu-0.7.11": "c9bbbcc2d4f11c83e0edbff5868d95f07f81455adb6f2f909cdb9b992928101b",
"s390x-unknown-linux-gnu-0.7.11": "0e7b9b27e9fef1b42aa052173a2a47a2ec33bad82425237dfac402b7f69bd073",
"x86_64-apple-darwin-0.7.11": "97980b067dc3fea16534371b030eaf38554d701de5058004edcfd542a88a2e84",
"x86_64-pc-windows-msvc-0.7.11": "0f4ef69fde75bb8bcfba7ecf0a4134d8875578cd2e98c9fcfc21573e746c70ac",
"x86_64-unknown-linux-gnu-0.7.11": "df54b274e99b7ef26030dc21d105ce115bc21a644fc6a321bde9222cb1616de6",
"x86_64-unknown-linux-musl-0.7.11": "e4e8948645ebea1950a3c77574ce079dfe1c71547ba5a8a141d6e362fa036684",
"aarch64-apple-darwin-0.7.10": "316b80c19832ff4085748c3a20a3e05f36e1d19234e8b9399a6fd1c971241bce",
"aarch64-pc-windows-msvc-0.7.10": "1eed0f11bca79403648195f8ce257763d956e861cb73de98c480dae15358bb26",
"aarch64-unknown-linux-gnu-0.7.10": "8746acb754807050124c6dbcb05fcad2665a3f0cdb2a0fe9de528bd37b092656",
"aarch64-unknown-linux-musl-0.7.10": "f9000f08850a5c575d5fe1ddc2ec928ecc9f287ecdcd9fa1ea4e3f405b23d4a3",
"arm-unknown-linux-musleabihf-0.7.10": "657b1b8a534f7fe78e63aff56aac5bbcb21f6254df79825fe204d5c7c1219653",
"armv7-unknown-linux-gnueabihf-0.7.10": "1cf4a8f40abbd802a7b44fe9695da356701100d267eb3567c17db27e0a24cf69",
"armv7-unknown-linux-musleabihf-0.7.10": "5282b825f469295dc2b88c94eccd375a93135a279b0711cb10e615e7a71a0617",
"i686-pc-windows-msvc-0.7.10": "f3c62ff935685d9d4312b82d01ed386493b97c3d22bd434d943fc99ce9aef83a",
"i686-unknown-linux-gnu-0.7.10": "24a2a3eb0e89b74de6aac492516303747519439775d22254e838d33410ac27b2",
"i686-unknown-linux-musl-0.7.10": "e317d35af60b38ad32935390a83d12adc3ed7ffdbc2ccccd3039bf6cef650eb3",
"powerpc64-unknown-linux-gnu-0.7.10": "c1ab41ec53cd720179f3351b61b4ded73ec520804413b75051736829a125e4fe",
"powerpc64le-unknown-linux-gnu-0.7.10": "ce2c3fdf177facf6c77c5316bb54b9deaf498bee9f664e01a4030ecf27063ab1",
"s390x-unknown-linux-gnu-0.7.10": "b7603e3f4494e9093a86ace1103e3fcfa172a952989f0c7dca6eeac7f77be81f",
"x86_64-apple-darwin-0.7.10": "9123e8aa944654404787f80731ec08850c4e9b9129c0d0445c9e41438828b8b8",
"x86_64-pc-windows-msvc-0.7.10": "1568a71af55e9d9bc4a050ec79134a342a8a3765a73f6b7ec26490c2814f8797",
"x86_64-unknown-linux-gnu-0.7.10": "ff2ef46298963fee8104ccb3c0a4ecbc97c057ac6a0bc5fec7636c855384252e",
"x86_64-unknown-linux-musl-0.7.10": "b2cf1f63e83a873652ffef032681bbbe1469e3bab617f7e715e09529c30f5689",
"aarch64-apple-darwin-0.7.9": "7a8b716a2b5905fb89512371ce6c6dbc0dd0344185bd1cd93a3fe27516eef7ec",
"aarch64-pc-windows-msvc-0.7.9": "63c0990b9c49dc9f9a92aaaa27ba627cbf9cf6b2e42766588ef6f880208893de",
"aarch64-unknown-linux-gnu-0.7.9": "23242a8051e2191ed8d61f71a6792f2fc069ef18e6cdf07dedac3d3f648643c5",
"aarch64-unknown-linux-musl-0.7.9": "60f30508c9002b2b7af55d70db2741cf7ea24c066ced710ad09681a6d2d19b3a",
"arm-unknown-linux-musleabihf-0.7.9": "57d8e43e257f0ccd9df2b8581338c5145b9937aba53e9c9bb81b31044b720c61",
"armv7-unknown-linux-gnueabihf-0.7.9": "83353ee7e1724083ea94d7f488fa34c9159995a3996f87017fdf72e422c93242",
"armv7-unknown-linux-musleabihf-0.7.9": "b2d8d81bc2abbdd857bad7cd3bf0d36c5155c0681aae8ac9fb8f49d54b95b3f2",
"i686-pc-windows-msvc-0.7.9": "b5dc0dc10d9dd0dcf5729a94e98538418760d13877d4d4b1bc4efa9926280e78",
"i686-unknown-linux-gnu-0.7.9": "fb8f1a7cb593c819c0fff71afa2dc480237ca80a3f5d8d433c8b51d2ae90ffdf",
"i686-unknown-linux-musl-0.7.9": "a77592be13fea81ca42b2b7815784e769e1fd9ff476cfab69f2652823f99c55e",
"powerpc64-unknown-linux-gnu-0.7.9": "26fee4867c158c04dd3a51ff9a23b4220a9ba69fae2e71be618d2cfa48164d96",
"powerpc64le-unknown-linux-gnu-0.7.9": "d588fbb01cacccb7fd6e0f101d34282ebb0569381f967d332f8072055e39840e",
"s390x-unknown-linux-gnu-0.7.9": "d823d68ff662b7e59c6791281427bf1019dae791a964ffae31ae1d2d723dfc08",
"x86_64-apple-darwin-0.7.9": "a4c084568850588b77e4a34c21b7df5c8cf9e2160b4d614307ed92fa12411742",
"x86_64-pc-windows-msvc-0.7.9": "f91d8a3322a10caf257fd416807bd8d2801285b80b46ee37f2d0c6e426b8822c",
"x86_64-unknown-linux-gnu-0.7.9": "b8450a419c0bcc85841bbed8511eb59e2a5683ddd3f813f2b98b97babf6b1b8b",
"x86_64-unknown-linux-musl-0.7.9": "95918a1e1faf851a39cad402f1a77318e8fc90b7f829833ebaff27de9722d60e",
"aarch64-apple-darwin-0.7.8": "ad6b3825ba277de70b9d0a37055f7d828f3f37416aee1cde65000f330efd4587",
"aarch64-pc-windows-msvc-0.7.8": "e43448e5e3267dffb6bbdc30ffa291f8db664d1da9d084c44f99dc568f459e0a",
"aarch64-unknown-linux-gnu-0.7.8": "da9e1c97f1452b25c8955127c92da7b68be228ad0b43bf50bba4dadb25c8b337",
"aarch64-unknown-linux-musl-0.7.8": "4d18efb46f93fa942dc4c212dea3b6b07e3db62fe57d0c3d08de6bf5d9f9bb51",
"arm-unknown-linux-musleabihf-0.7.8": "133b1c3fb850ec496bfb4ef84379bfaeff1d2c322114a0984d8a5c2e10e63028",
"armv7-unknown-linux-gnueabihf-0.7.8": "7d61c6e18e81447482dc80c090c65a6615a1232512899943566baf2808ca37bb",
"armv7-unknown-linux-musleabihf-0.7.8": "0b6d6afcdb7c78e5df42cb2ab0929d2bec2654a350a8efacc6f95e830a31eb6e",
"i686-pc-windows-msvc-0.7.8": "0d4b01372ca972543cd40366bb5480bb457e79dcf45b5f662721d709d6932dbd",
"i686-unknown-linux-gnu-0.7.8": "db1c60961aea7a7f8c64a098801e0138e761b7556d1c1691fc4f3f771f0e47ae",
"i686-unknown-linux-musl-0.7.8": "b765eb1817bc1d545f4860eff0adeb0c7907ea66be14536653192e588386b308",
"powerpc64-unknown-linux-gnu-0.7.8": "2c894b104195ab194af05c6ad756ce8746a349a8620c83888207db5fccf29a8f",
"powerpc64le-unknown-linux-gnu-0.7.8": "4b0d93385685f756068f76af1871dcb7cc8f427ab6d650afc07493d06dca71db",
"s390x-unknown-linux-gnu-0.7.8": "e58fc9f6d846ccbf50d9bcf27920ff4bc061541df8a6a3aa6f13be24981e0772",
"x86_64-apple-darwin-0.7.8": "f046249639014eb70b43cbaf83eb6f56aac724ada354f9b9aad65f9960737920",
"x86_64-pc-windows-msvc-0.7.8": "355736ddf9a01ab9da918b35470027c12128d7ed1d7f54f54771507d79529679",
"x86_64-unknown-linux-gnu-0.7.8": "285981409c746508c1fd125f66a1ea654e487bf1e4d9f45371a062338f788adb",
"x86_64-unknown-linux-musl-0.7.8": "8a707e45e0d1a8bdbc5bd1af0ae7d19ffab55f3722c5e73471039561900e3d48",
"aarch64-apple-darwin-0.7.7": "6a06eaa8165d5abd89c3dc37ffbe1db60fcf49a87d7c612bfca7e87a1514695d",
"aarch64-pc-windows-msvc-0.7.7": "e86cd59f2569f4bf475e5ad944910142c0ab107ad12613429ad8873a6f41087f",
"aarch64-unknown-linux-gnu-0.7.7": "013061d4d33385e9a3fc52df18d22334f20f12616970b0d81583d5125ce8d6fa",
"aarch64-unknown-linux-musl-0.7.7": "4014dc9dc024bb5a082f16c54adcd5936d47dae664bafa38453b3017ede41aab",
"arm-unknown-linux-musleabihf-0.7.7": "c1dc010e3ab855391f3a6906fcffbeac873d136df2b20cfd998105385444e45c",
"armv7-unknown-linux-gnueabihf-0.7.7": "e08406cfcc1ccc0c069d22c91008967f662664abdbf8a15779a1944070e0f5b2",
"armv7-unknown-linux-musleabihf-0.7.7": "35379428e6d001e63714449c26c9111d1d5ee6f3b6a95559c724ad57df9d8d17",
"i686-pc-windows-msvc-0.7.7": "5e47a44df7707b58884cdf5d30527857ec1bf186e8f200517fd11a572669cacc",
"i686-unknown-linux-gnu-0.7.7": "fc782a829cccb0201c4a918d9f5a3a114511d734953f7e5e60aed52951264454",
"i686-unknown-linux-musl-0.7.7": "10b852326ee48502d6da26c7fe394345b7ce7ca94d76f293dbe4cde9577c3993",
"powerpc64-unknown-linux-gnu-0.7.7": "4b26663e0c21289bd21c05a3ba344e6b069c600e5a6333e660ae16eb38027bd5",
"powerpc64le-unknown-linux-gnu-0.7.7": "e691d6a8a8c285cd644cf1f6d47c2568740ddca645c860f9bb23799790b54e56",
"s390x-unknown-linux-gnu-0.7.7": "b21953a1c6c5475306e64f9ccf721762d2fc6aa572ee5268ed61a3b1531f06c1",
"x86_64-apple-darwin-0.7.7": "4b337495ced2a9797357ee853873c2f5a45cc52f6ed68c9feba3c997443452b0",
"x86_64-pc-windows-msvc-0.7.7": "a27a1fdf3f6b850dfb45fb009f7ea0fe3db1a59f692ebdc64c24ff8dbd0467d1",
"x86_64-unknown-linux-gnu-0.7.7": "d83e2b9c2b251c93985824d9a12d97f5b036b7a9ff0b7d647c9ca7ae5ff2ae1b",
"x86_64-unknown-linux-musl-0.7.7": "3876cafbb6599287a78778d2c265fd2050acfc247409ed677a8583f20385a3ae",
"aarch64-apple-darwin-0.7.6": "a0e7c0e44ec4b2743e1c1d1f6edca1418687b05084f48c007c6e1c7d3a35bcd2",
"aarch64-pc-windows-msvc-0.7.6": "2ada1290e87144726b6a723b38fd34ce64da5a3fe820a21685564924f894408c",
"aarch64-unknown-linux-gnu-0.7.6": "4eae30038653bbec528257054fe07495f20c5d4bc663b630258e87d159e282b6",
"aarch64-unknown-linux-musl-0.7.6": "9e59f0753383d6a27404be238360165e415605b1504b209349852a27cc01d48f",
"arm-unknown-linux-musleabihf-0.7.6": "b81d59deeba1f92aba48aefce2b364530baa1cb8aa4c59fc2a90c9acf98c9a20",
"armv7-unknown-linux-gnueabihf-0.7.6": "e9d1b7d52def14fb1ab8af2fa52963ff8e4323934ec2e78720a94d92261fa9fc",
"armv7-unknown-linux-musleabihf-0.7.6": "c525ad0f41c67d944e56362adffcda206aef36f3ed84daf90386fcbfa4a62c66",
"i686-pc-windows-msvc-0.7.6": "aca45dbdb75cd2c5fdf70bf5ff436306d476352b135fcab544c4a9759d7d1af8",
"i686-unknown-linux-gnu-0.7.6": "71448fddb93306b1b67f0c2e711eb79b6ea33d027212259abd7546a48d15b49f",
"i686-unknown-linux-musl-0.7.6": "a641ada8b2ca3ec22c24414c2edef8c01370d7d4ac79998eac091b84f743c476",
"powerpc64-unknown-linux-gnu-0.7.6": "9f63727933d11b0157ebc3fd640811c1224fe55215acff24e8ec5747fb4f90fc",
"powerpc64le-unknown-linux-gnu-0.7.6": "da746e6e809f32ab9709e45c7d5e7c37901478cc610119c08ae335c43ac089b2",
"s390x-unknown-linux-gnu-0.7.6": "a07d4303e97f72312f9db8a1a67bae08f02d883f1879fa917b9ae87aec90d933",
"x86_64-apple-darwin-0.7.6": "718cfd68b13a1a642fadc53646742785cd33b2e06124a01454ad358617841852",
"x86_64-pc-windows-msvc-0.7.6": "4c81818cc89d75ca54762e2641deebad69c0af6594212a9fb24b9849df8ac413",
"x86_64-unknown-linux-gnu-0.7.6": "0c5f0935bba35359150774fc5876d72947b863b8173c94dda776e6d88014a0df",
"x86_64-unknown-linux-musl-0.7.6": "be755e8503b7e7174f24ad8cdcadab94f0662fe0b60df4fc35e1ddae48b19f35",
"aarch64-apple-darwin-0.7.5": "8d82c7f6fcfd79b142c8845f694c8225dd5b401cd720e8e1e2a35a1c4150f516",
"aarch64-pc-windows-msvc-0.7.5": "9ec005bf0b472d47ab730e463cc5a156b18ca9a9a6fe1c72bf18d97384d0b717",
"aarch64-unknown-linux-gnu-0.7.5": "715bd03f6b2924b8f742b716d0f4b9d31ccbb1ad4a7f8df4ce2f572efff7f2cb",
"aarch64-unknown-linux-musl-0.7.5": "ce23f5e1d22f1cdfc0db4358d3b2642c115ad99d404aef15030af31e39ef3484",
"arm-unknown-linux-musleabihf-0.7.5": "2e85c3ba3ba461822940bca197198babcb1a8ce620c3d1c624423e68bba49d43",
"armv7-unknown-linux-gnueabihf-0.7.5": "cbd7990fb0d06750f7e966a54dc344396e4d605d029aa94a0cf00d695cb283e9",
"armv7-unknown-linux-musleabihf-0.7.5": "96d5eb1246e654f4e2c37542797196d94c0d72fe44e470050a9fbf67e356fb10",
"i686-pc-windows-msvc-0.7.5": "84e70b46e0f218db9573b0efce085c13e0e5ce7808b3143b990d1a334e5a8ee6",
"i686-unknown-linux-gnu-0.7.5": "20efc06bc129d8757e81fdd00cf828a9c1d928a4a30c8c538c6d1ed219b52c5d",
"i686-unknown-linux-musl-0.7.5": "3cc8dbcdb230a6abbaa3cd6b918d6150f747f45f8f96b7399d6258c54fab5867",
"powerpc64-unknown-linux-gnu-0.7.5": "dab5571d40ce3347fe295b9afec9f560ad709461883ae604d0de827071b8d2f8",
"powerpc64le-unknown-linux-gnu-0.7.5": "4c3843068cd0e1bf9e5f68e5487fba28feef3196c025a1b1eaddd533a52b7bd7",
"s390x-unknown-linux-gnu-0.7.5": "1b286e386a4d66dd9393caf78888a881cf63202522a6a88262e551bc7b8b3995",
"x86_64-apple-darwin-0.7.5": "751ae339c91a6b8eddb868a64222c2533c722042476e4f28466683ddf96fa488",
"x86_64-pc-windows-msvc-0.7.5": "e95cb3789b2f80052c80048ff2865e06eae7512d06d304127898c70c4fd3564f",
"x86_64-unknown-linux-gnu-0.7.5": "a3d1964080a855e1f8806975b5fa943376045a64852c06ba80540813aa333305",
"x86_64-unknown-linux-musl-0.7.5": "be058167ae65f7a2b56f607b070bd4e93dacd09be52511ccb8ebb10fa132709f",
"aarch64-apple-darwin-0.7.4": "1af8c353479890b29b75933706890627555bbc07e12a0117ae62da3ec2ee372e",
"aarch64-pc-windows-msvc-0.7.4": "3800868f3cc1509d6ea16036e3268ff45fd22a85c922cf3de4fb9535dbb0099e",
"aarch64-unknown-linux-gnu-0.7.4": "c407e4c7431ee6cb28deb842edb49fea1ee3f5674a357f11244bfb0fd57e2ae4",
"aarch64-unknown-linux-musl-0.7.4": "ff0d9172d2105da526501e01c38ecf0558ea323cfcd25adff9a89cd7fad5c076",
"arm-unknown-linux-musleabihf-0.7.4": "4e6b7d15444ae58bc196ee4e7e6e11b451b4e994c0c73968254d3d4ff1c89bca",
"armv7-unknown-linux-gnueabihf-0.7.4": "303bac0f866c450fefe7543297fa87563941f924cb13f007dfe7cc02ac64dcd7",
"armv7-unknown-linux-musleabihf-0.7.4": "004e22fe946fabec6b5dff668f4bd8f93569dab30efe0f3d4640f266760744bd",
"i686-pc-windows-msvc-0.7.4": "113070d23ba1498cf9fff9ae634893a2a1dce42a0baa617c4a82009f61c71fbc",
"i686-unknown-linux-gnu-0.7.4": "19f0f19dfe9d722a2fb89bde4771682cf632182d6204cc4ddb11d700d5b34c07",
"i686-unknown-linux-musl-0.7.4": "fe281041401b4140a387f6101e64fcf4abb344791c12398c441c7e339510423d",
"powerpc64-unknown-linux-gnu-0.7.4": "ef2320254e52234750d9745e6dc6e3b3c990aa51e506057d0869d4d18b55e5e3",
"powerpc64le-unknown-linux-gnu-0.7.4": "e143278764aab89b68c6f55dfdfa4242c8f5d5213880b584880a776a5ca1b0dd",
"s390x-unknown-linux-gnu-0.7.4": "14dbae76be8999dcc8336fac1f6f86710e7ce4f4c3e1aec01e7ef7f9a3468811",
"x86_64-apple-darwin-0.7.4": "a6c5fd8aa67db03447934b14703a2d7bb04b5e5f7ff45630a749760393c5610f",
"x86_64-pc-windows-msvc-0.7.4": "966d0dd8d86f02f94128714180cd5ff42cd2ea9b33b86fc197f25cfa066aaea1",
"x86_64-unknown-linux-gnu-0.7.4": "5264d9b2bf021fccbaf6edb97bc17ce4863687745f2443460a8ca71e55891614",
"x86_64-unknown-linux-musl-0.7.4": "70083140d9efaf82cbb7ffa6231d5de3536d6497ec84d708afaf9b7e2fffbac2",
"aarch64-apple-darwin-0.7.3": "162b328fc63e0075d4267688201de91356e1c1b81db50419fa4466cfe2dfdebc",
"aarch64-pc-windows-msvc-0.7.3": "542b318c98b0295dd3d620fbcd63388757f382e14c69c569cb3ce793aa75c975",
"aarch64-unknown-linux-gnu-0.7.3": "2c2be8bbb83e9bc722f2013de8bb7506cfe6521d0e30b4ad046849d036b3eea6",
"aarch64-unknown-linux-musl-0.7.3": "a3f01c3c993b57fa8d13855c5ba60e3847bda4f8e795a52d52879e242e886604",
"arm-unknown-linux-musleabihf-0.7.3": "87f72dc1c3b1b598e08c8efc7f9ab8eca23df8549cf4c1fc27a4a6b2524809c1",
"armv7-unknown-linux-gnueabihf-0.7.3": "69f285d861cd1809a4bad0f08c2ea8a77ec17cbe20524a4ebbee4c5a7c868520",
"armv7-unknown-linux-musleabihf-0.7.3": "1a0071551cd575bbecef3218fb13bf05ab96ceb71b4b1d13a99b8a4af059f99f",
"i686-pc-windows-msvc-0.7.3": "1c9becbc63c15dcf43b09c0ba84e0ba6fa533fa799b7baf57a36363ef42fbc52",
"i686-unknown-linux-gnu-0.7.3": "a2b56cb262337380aa02b6d131e973d54090c3e655d3e55385d02850454c24de",
"i686-unknown-linux-musl-0.7.3": "d6e846079ef38929206079147448c5683a3018116b2b3e6059cf4c26bcfbb290",
"powerpc64-unknown-linux-gnu-0.7.3": "a9b94c618a5d5bc992102733a45759e38db9a9e069830c3e94c744d1bfc33c21",
"powerpc64le-unknown-linux-gnu-0.7.3": "782e9c343cb7c219b5514e64a799a8b9fa82585f6176b53ed095dc030a22d993",
"s390x-unknown-linux-gnu-0.7.3": "ea803eafd6e3414d3a18aed9257f8ded8f7d1f6f182d2572969c4c487faa1986",
"x86_64-apple-darwin-0.7.3": "d676940b51bdd5606b218bc2965fed67731f94ad07926045716acbf78626e09b",
"x86_64-pc-windows-msvc-0.7.3": "20d3a420abbf2af9699cd9a02225d9325344046af8deb15563cc451e3c4fd059",
"x86_64-unknown-linux-gnu-0.7.3": "17fc118ba4d7e9303f84fcabdc0a593fc3480ba76eb6980668fdbbb96fe88562",
"x86_64-unknown-linux-musl-0.7.3": "325143825b88e7b0dadd1a8e8d3cbe4791d3cbbb9e2244350d917803fec8b3d1",
"aarch64-apple-darwin-0.7.2": "8edc0bea8a9e35409f970b352036326393e79a6039577d8cc9ef63872c178a99",
"aarch64-pc-windows-msvc-0.7.2": "a3d7affcd62e617bd2dd2a91fde679dd8d68a84762c8f3aaac294606ec14ffe5",
"aarch64-unknown-linux-gnu-0.7.2": "2872fdf4785666575d129ba90590c44e6508e22584735f3e7e8a30d773dfc3db",
"aarch64-unknown-linux-musl-0.7.2": "d5b31df40da794dab943c55e67d14fc111146e185b14a6de6eb749ee264a641c",
"arm-unknown-linux-musleabihf-0.7.2": "fd203cef8c6cd775c2a5f7da31f69a72020a6c74b6fb808db3217ab04b70a038",
"armv7-unknown-linux-gnueabihf-0.7.2": "b69999c29c759f5a47f71c1f328d6e7c489229efa5ce0e84afce026201730abb",
"armv7-unknown-linux-musleabihf-0.7.2": "f98a827e198de2d0a7224ecad87eb64c18c9c0ed4f0c768456e9b48482015d2f",
"i686-pc-windows-msvc-0.7.2": "8b06489b2cc8814fc23dae4562c5e7d500e782c2b0d2556529f515a4d1e0b8e3",
"i686-unknown-linux-gnu-0.7.2": "36f26a496c6dc53703e070761ef96f07acc88eae868f94c4665f5c17a88d8acf",
"i686-unknown-linux-musl-0.7.2": "763bf7cd2119c40858cbd0892fd9b2c7102c79e5c590800b2f8e9c2f427cb7d1",
"powerpc64-unknown-linux-gnu-0.7.2": "bd4a42ed0b9ab725f0cb565ae29c338ea6ce0689ddb35da632535a47c891e72f",
"powerpc64le-unknown-linux-gnu-0.7.2": "9a598869167b7e56ab971614972a2c486c8137681210094009a6fb61ac36699b",
"s390x-unknown-linux-gnu-0.7.2": "7dd2240d60b1628869a2348ca0901cceee572bc20116ab04f9484ea0b6d40813",
"x86_64-apple-darwin-0.7.2": "7d30b59d54900c97c492f3c07ff21cc3387a9e5bd8ca6db2d502462eaaeefd68",
"x86_64-pc-windows-msvc-0.7.2": "35fd793df52fd13773425c9a97cc94cc13c8ee63abec6380b5083c183c688019",
"x86_64-unknown-linux-gnu-0.7.2": "cfaab1b5166a6439ff66f020333d3a12bbdf622deee3b510718283e8f06c9de7",
"x86_64-unknown-linux-musl-0.7.2": "dd10babf6c531597d246c97e55e32ca17b44fe251405fe539ec8ea2f22fac2d6",
"aarch64-apple-darwin-0.7.1": "236d70d7738a5f41b45253d68665fda039fecee579939921e0795680d300f55f",
"aarch64-pc-windows-msvc-0.7.1": "5fdbc703e6f22696ac053811e9750ff3cf50814aabf1792b9bc49f2647b836c6",
"aarch64-unknown-linux-gnu-0.7.1": "ee8a98f485a22837be9e95eb55e4cd06db6c8deba94b6a2dd63d828fb5ef4226",
"aarch64-unknown-linux-musl-0.7.1": "b65409802669913f5fd49ed6656d45c434aa9273fb864aefa0fbbb685b9834b6",
"arm-unknown-linux-musleabihf-0.7.1": "96cfceb7716a9003750111c7f1a62aebccf02e0288f95bc670c69062d2ec6e61",
"armv7-unknown-linux-gnueabihf-0.7.1": "f156bdedd8a969dc49a5e01f6b38c7e50a63cf69acf3b5982adfaf232dfcb80f",
"armv7-unknown-linux-musleabihf-0.7.1": "ae21a9c0b413976a24c51f095603294ca36da9089813022cb9bae0b84f0be6de",
"i686-pc-windows-msvc-0.7.1": "38a98c532e463169e8c4f1ae3649dd500c168f6db687e3b29570930c55ffedf7",
"i686-unknown-linux-gnu-0.7.1": "133a41ae763d8474cc4ff8e0c24ab8cdaf422f261cbcc284f4b90b57aa60f3fe",
"i686-unknown-linux-musl-0.7.1": "6e55fea1ee9a8c5c1d29b3aeb033a8b01d3895a347b27ee108ba94c53d60cfb7",
"powerpc64-unknown-linux-gnu-0.7.1": "cd6714a55577d6eb0ecad313646a4ade3c7a4407e1a2a4703a2fbb83c88681d5",
"powerpc64le-unknown-linux-gnu-0.7.1": "a354eda3a43323cf5445cfdf0197ebd4b36e967df9537e97910c47dcd9321aaa",
"s390x-unknown-linux-gnu-0.7.1": "59d194c544a8a53186c3da6ac26f90ab0f453fae71fd2e0d4d177a8ed8890abb",
"x86_64-apple-darwin-0.7.1": "a81e655cc0b6a5ccf9197f2dc0df513171e68804e498c17076d6e56b41234c5d",
"x86_64-pc-windows-msvc-0.7.1": "b4d48072e384014ecd04ec5c544aee523ead1faaebcd428ba5f6abf2836096df",
"x86_64-unknown-linux-gnu-0.7.1": "cec71afc57276b1857970d6ec96e110989c3e4ed0d81f0c4c11c1231970b7e56",
"x86_64-unknown-linux-musl-0.7.1": "9b714ddf470795d5f1aa5c8111ea153139ae202216ffbe4105fb92f202e0b02b",
"aarch64-apple-darwin-0.7.0": "964ebe641b563920e0650a60bf5ac21e6c8c56557704e5ecfaaad7ff62c3a73c",
"aarch64-pc-windows-msvc-0.7.0": "c00950aa4b243e1043d1ec651fdfd71e5f4e5b80135b30fcf3b70fc201aeb1c4",
"aarch64-unknown-linux-gnu-0.7.0": "540fcb8f2f972c82260a8063a6a4b496d7ff858edc42aa0e2c733a7b55ef8dd8",
"aarch64-unknown-linux-musl-0.7.0": "f6367e288617021aba6176945ba20a7f8ea3b22a5f8896314a7d0acb863b533e",
"arm-unknown-linux-musleabihf-0.7.0": "6fc85b25a4b3cb27b924e1f3181f96197667b7465fe52bf703afb5539d09c09c",
"armv7-unknown-linux-gnueabihf-0.7.0": "035b46fde90a7ee4b48292ff9d116cc771b10d9e955d1979b1a1cd6b3998f602",
"armv7-unknown-linux-musleabihf-0.7.0": "5f43390685fbb9f29d6075df1d492f9bf39cabb868bf37e0da3cd925c679b068",
"i686-pc-windows-msvc-0.7.0": "f045db339b2acecc790d2071598275086978a99262d9c4b0c52189c26cba68a9",
"i686-unknown-linux-gnu-0.7.0": "9936acd12616548a04ce6875aa125ea34f3b288181f2188bfb72d914965680be",
"i686-unknown-linux-musl-0.7.0": "bfad15225152d9fa8769731b35dd53e0b39cba045900b6d43f90e655652af5b8",
"powerpc64-unknown-linux-gnu-0.7.0": "91cfac9b5a9ba844c3ba90944e00bfb79da2983b7c6306bdb054c75ab3fea0fe",
"powerpc64le-unknown-linux-gnu-0.7.0": "d690793c993a1a03049b7e7f3f0e41c94ba2c45b0155bdde917d550ecd4ee02d",
"s390x-unknown-linux-gnu-0.7.0": "429ffee0dddd8c0c59e246fb89bef721d1ed22a4c051925d7dfafcfc7dce464f",
"x86_64-apple-darwin-0.7.0": "dc5037f3ffbf8074b3ee63de7a73aa57421b0da0837a478e26317424dbab16f3",
"x86_64-pc-windows-msvc-0.7.0": "62836c9d6e3f346d06c45fee4109be21ca9d1df8d087472dcc8d51815f182332",
"x86_64-unknown-linux-gnu-0.7.0": "ca1e8196672bf04ccb926519f2071208a8d6c0ce02fb65bc7d0a85be1b684b0f",
"x86_64-unknown-linux-musl-0.7.0": "08e1bb8fdea2c6d5edbe40ab1651de097b884020056c0925a9973582ff669d04",
"aarch64-apple-darwin-0.6.17": "e686c73b9314c77a36a6a4c9f94b07c001f0c9157c50c63c764941141c0d0088",
"aarch64-pc-windows-msvc-0.6.17": "3a9468e90df970f75759da6caed7dfde2816e0f3842031235c3835fc0c4e7d09",
"aarch64-unknown-linux-gnu-0.6.17": "6fb716c36e8ca9cf98b7cb347b0ced41679145837eb22890ee5fa9d8b68ce9f5",
"aarch64-unknown-linux-musl-0.6.17": "98750f5c0cd9eb520799d10649efb18441b616150f07e6c1125f616a3fd137e8",
"arm-unknown-linux-musleabihf-0.6.17": "649d8d0f37e8365af5aaa012b09dd083d6e71018e569a4d2e78316d5013f18a7",
"armv7-unknown-linux-gnueabihf-0.6.17": "efc12955d7a6120ea0be2de5ee03dbb33d0d7d9de9dbe0dce560514f2ee129d3",
"armv7-unknown-linux-musleabihf-0.6.17": "0661d97df8262ef83ccdc6a55ed101abfe8f1cf1ff1be879d9b0d7d1e894c970",
"i686-pc-windows-msvc-0.6.17": "56dea6c98e1606e95445e77177d7e3cd49bb3d1a63c81b11fe49bf733adb62a2",
"i686-unknown-linux-gnu-0.6.17": "4bc37f8303a4a5aae1c309f08166884027f325b6872c418cfbaa2cf20a2b2ac5",
"i686-unknown-linux-musl-0.6.17": "8ec08cca0806a9205ccf5758258c617b57e413b33275bcd861fca363e0eaddf7",
"powerpc64-unknown-linux-gnu-0.6.17": "d33b70ab206e1ed0663e755506a11db3776787012bfe9d2b2138a90942f506be",
"powerpc64le-unknown-linux-gnu-0.6.17": "cd91a579850fc45d3b786a654a2c0343836f007929b2e35de9606082eec5361f",
"s390x-unknown-linux-gnu-0.6.17": "3c753a9d3485bbac23403a0b41a9e70ceeb586f3b4df891ced7ed27d4c6c542b",
"x86_64-apple-darwin-0.6.17": "61e9bdc02aacdb994da6ea2a477b11b34c23fc09203237aeee8d3817daab012d",
"x86_64-pc-windows-msvc-0.6.17": "32882cf98f646cafca003e7a7c471b7ff4ba977b681c9fa3b12cf908ba64af82",
"x86_64-unknown-linux-gnu-0.6.17": "720ec28f7a94aa8cd91d3d57dec1434d64b9ae13d1dd6a25f4c0cdb837ba9cf6",
"x86_64-unknown-linux-musl-0.6.17": "28bd6b50be068cc09d8a46b76f8c4b72271d471c6673a5bdb47793622e62224d",
"aarch64-apple-darwin-0.6.16": "2b1ea0d5cf27375738f5f0f229587bc3590c0f501cb00bc48133a3d122d28364",
"aarch64-pc-windows-msvc-0.6.16": "5abca187b8aecbdffef7547cb39a527168e4cb93d8d2e4ce14271f5831a4d902",
"aarch64-unknown-linux-gnu-0.6.16": "a82f96ab5f285825f9acee6ac1563683c4940d80df2f08549cad43d37c7ba4a7",
"aarch64-unknown-linux-musl-0.6.16": "ae3f793c62fe6ced80483d6c78cb49f06a01088bc5d86f1446a9b5988b2acecc",
"arm-unknown-linux-musleabihf-0.6.16": "91f7f5a4eb97b7983a8e5421d5bfea8802064422ce2f535055f373726eb0aa9a",
"armv7-unknown-linux-gnueabihf-0.6.16": "a4ffe043952bf4e757a5ca0f546bb83b055b6ee0646dd5c4f5e5f13dbc5ee8f8",
"armv7-unknown-linux-musleabihf-0.6.16": "0237c8d9914e0d9fd2f022d6d5f91ce392d13e0ccbb7fa7ebe601296a67c3d6c",
"i686-pc-windows-msvc-0.6.16": "f5c6400f07db2014b2b0c66770e1125fa70efe4dd99cc8351838bed0045c34f8",
"i686-unknown-linux-gnu-0.6.16": "f46f89efcc599a6695e8378a1201e62cd4afb9a4438d65a89098ab11201f84ab",
"i686-unknown-linux-musl-0.6.16": "afe69380a9d3592a87893d6bdc11ff33e4180b98f1e1fd4e626c0307d7598914",
"powerpc64-unknown-linux-gnu-0.6.16": "bf455747580dbbf76cbcf616f67f825c40bd1bdec20c9ff993e03485f9eaad44",
"powerpc64le-unknown-linux-gnu-0.6.16": "508ec561b1740a551d2b33e96671e0e8435a1bcc0e97080f3d7ba88a096bd360",
"s390x-unknown-linux-gnu-0.6.16": "e25c5527826524f51f114388bff47871bf1ca67badbfd72d45427bdba4b46794",
"x86_64-apple-darwin-0.6.16": "ce512b5e40a8ad2916a46df2bdba729d5541e4b3649a09aaddff6e525be012e4",
"x86_64-pc-windows-msvc-0.6.16": "f1b4c24ec602b6c0b06b6bc64aa447bbe4cf313e93fbec326741961e80ffa8b7",
"x86_64-unknown-linux-gnu-0.6.16": "e9ef28b675df68978a60f87192fb8c730b8bfca9bef42b121686b218ea0f6542",
"x86_64-unknown-linux-musl-0.6.16": "25024557931d04cc34f80b818c7547c9c62b762ec6df807e30cb52f383fa2615",
"aarch64-apple-darwin-0.6.15": "1c5b25f75c6438b6910dbc4c6903debe53f31ee14aee55d02243dfe7bf7c9f72",
"aarch64-pc-windows-msvc-0.6.15": "317fe0b29e647aad1e9f02ffe764dcbbc6e2ef189f018c81b673884173ab98ba",
"aarch64-unknown-linux-gnu-0.6.15": "3bf650aec162157b7e01461f41c2a9797366b6043452c6e7035c6c926d0a585b",
"aarch64-unknown-linux-musl-0.6.15": "183cebae8c9d91bbd48219f9006a5c0c41c90a075d6724aec53a7ea0503c665a",
"arm-unknown-linux-musleabihf-0.6.15": "d83c76e130ffb25fb6a4ba8ea5870207d810190733a14ae87084c63a417912f6",
"armv7-unknown-linux-gnueabihf-0.6.15": "d661ec44e5fc7553cd8dd5ad5f48848c5a4d5279ba0df0036c0e2422ec9f312b",
"armv7-unknown-linux-musleabihf-0.6.15": "6fc86a829965362f99602c47627b269c9b676731586a60ca5bb9d6069677938d",
"i686-pc-windows-msvc-0.6.15": "7f15e3377e94fac882b33465cb8cbb24705f5c8d63d9d65c6f1b0816c1d30a0b",
"i686-unknown-linux-gnu-0.6.15": "bfedd03be9f579a9bc10e6c25176017e514cca0500cfb9bba43794387a577661",
"i686-unknown-linux-musl-0.6.15": "82bf8666c0a57514af4e5403f162314b710e1682e1065ab71a845ebb5d8db0b7",
"powerpc64-unknown-linux-gnu-0.6.15": "6e9795344d61ee9ac497d6e03a447d808f2aab13925f30e44c00638abec57deb",
"powerpc64le-unknown-linux-gnu-0.6.15": "e38f13284ed8b645b87ef07c8b549d1f1a5b746aa0411c2115dcd5cda0da13fc",
"s390x-unknown-linux-gnu-0.6.15": "416f61249b330ea9735cda0c866c9460f87111bc9d4e040c98916fda6a45be09",
"x86_64-apple-darwin-0.6.15": "97adf61511c0f6ea42c090443c38d8d71116b78ae626363f9f149924c91ae886",
"x86_64-pc-windows-msvc-0.6.15": "10c75d566db1447f3bdcbcb31d6598e4b5f4ea638be5d8b73a7350929389512b",
"x86_64-unknown-linux-gnu-0.6.15": "85d98ef282cdbfcb4020922f0c12421ecca4130f0a4570d3b827a15ffd544acc",
"x86_64-unknown-linux-musl-0.6.15": "78289c93836cb32b8b24e3216b5b316e7fdf483365de2fc571844d308387e8a4",
"aarch64-apple-darwin-0.6.14": "4ea4731010fbd1bc8e790e07f199f55a5c7c2c732e9b77f85e302b0bee61b756", "aarch64-apple-darwin-0.6.14": "4ea4731010fbd1bc8e790e07f199f55a5c7c2c732e9b77f85e302b0bee61b756",
"aarch64-pc-windows-msvc-0.6.14": "7b0b3367c4060c9b47b961201ceb4252e97496c890ad1bd13c664bf5b0744d57", "aarch64-pc-windows-msvc-0.6.14": "7b0b3367c4060c9b47b961201ceb4252e97496c890ad1bd13c664bf5b0744d57",
"aarch64-unknown-linux-gnu-0.6.14": "ea25597354af186bdd55aee0de431e16d45d82951a4f41f065a8e4dc27885265", "aarch64-unknown-linux-gnu-0.6.14": "ea25597354af186bdd55aee0de431e16d45d82951a4f41f065a8e4dc27885265",
@@ -61722,7 +62404,111 @@ async function downloadAssetContent(downloadUrl) {
/***/ }), /***/ }),
/***/ 5653: /***/ 4000:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.getLatestKnownVersion = getLatestKnownVersion;
exports.getDownloadUrl = getDownloadUrl;
exports.updateVersionManifest = updateVersionManifest;
const node_fs_1 = __nccwpck_require__(3024);
const core = __importStar(__nccwpck_require__(7484));
const semver = __importStar(__nccwpck_require__(9318));
const fetch_1 = __nccwpck_require__(3385);
const node_path_1 = __nccwpck_require__(6760);
const localManifestFile = (0, node_path_1.join)(__dirname, "..", "..", "version-manifest.json");
async function getLatestKnownVersion(manifestUrl) {
const manifestEntries = await getManifestEntries(manifestUrl);
return manifestEntries.reduce((a, b) => semver.gt(a.version, b.version) ? a : b).version;
}
async function getDownloadUrl(manifestUrl, version, arch, platform) {
const manifestEntries = await getManifestEntries(manifestUrl);
const entry = manifestEntries.find((entry) => entry.version === version &&
entry.arch === arch &&
entry.platform === platform);
return entry ? entry.downloadUrl : undefined;
}
async function getManifestEntries(manifestUrl) {
let data;
if (manifestUrl !== undefined) {
core.info(`Fetching manifest-file from: ${manifestUrl}`);
const response = await (0, fetch_1.fetch)(manifestUrl, {});
if (!response.ok) {
throw new Error(`Failed to fetch manifest-file: ${response.status} ${response.statusText}`);
}
data = await response.text();
}
else {
core.info("manifest-file not provided, reading from local file.");
const fileContent = await node_fs_1.promises.readFile(localManifestFile);
data = fileContent.toString();
}
return JSON.parse(data);
}
async function updateVersionManifest(manifestUrl, downloadUrls) {
const manifest = [];
for (const downloadUrl of downloadUrls) {
const urlParts = downloadUrl.split("/");
const version = urlParts[urlParts.length - 2];
const artifactName = urlParts[urlParts.length - 1];
if (!artifactName.startsWith("uv-")) {
continue;
}
if (artifactName.startsWith("uv-installer")) {
continue;
}
const artifactParts = artifactName.split(".")[0].split("-");
manifest.push({
version: version,
artifactName: artifactName,
arch: artifactParts[1],
platform: artifactName.split(`uv-${artifactParts[1]}-`)[1].split(".")[0],
downloadUrl: downloadUrl,
});
}
core.debug(`Updating manifest-file: ${JSON.stringify(manifest)}`);
await node_fs_1.promises.writeFile(manifestUrl, JSON.stringify(manifest));
}
/***/ }),
/***/ 7416:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict"; "use strict";
@@ -61766,24 +62552,36 @@ const core = __importStar(__nccwpck_require__(7484));
const octokit_1 = __nccwpck_require__(3352); const octokit_1 = __nccwpck_require__(3352);
const constants_1 = __nccwpck_require__(6156); const constants_1 = __nccwpck_require__(6156);
const update_known_checksums_1 = __nccwpck_require__(6182); const update_known_checksums_1 = __nccwpck_require__(6182);
const version_manifest_1 = __nccwpck_require__(4000);
async function run() { async function run() {
const checksumFilePath = process.argv.slice(2)[0]; const checksumFilePath = process.argv.slice(2)[0];
const github_token = process.argv.slice(2)[1]; const versionsManifestFile = process.argv.slice(2)[1];
const githubToken = process.argv.slice(2)[2];
const octokit = new octokit_1.Octokit({ const octokit = new octokit_1.Octokit({
auth: github_token, auth: githubToken,
}); });
const response = await octokit.paginate(octokit.rest.repos.listReleases, { const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({
owner: constants_1.OWNER, owner: constants_1.OWNER,
repo: constants_1.REPO, repo: constants_1.REPO,
}); });
const downloadUrls = response.flatMap((release) => release.assets const latestKnownVersion = await (0, version_manifest_1.getLatestKnownVersion)(undefined);
if (semver.lte(latestRelease.tag_name, latestKnownVersion)) {
core.info(`Latest release (${latestRelease.tag_name}) is not newer than the latest known version (${latestKnownVersion}). Skipping update.`);
return;
}
const releases = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: constants_1.OWNER,
repo: constants_1.REPO,
});
const checksumDownloadUrls = releases.flatMap((release) => release.assets
.filter((asset) => asset.name.endsWith(".sha256")) .filter((asset) => asset.name.endsWith(".sha256"))
.map((asset) => asset.browser_download_url)); .map((asset) => asset.browser_download_url));
await (0, update_known_checksums_1.updateChecksums)(checksumFilePath, downloadUrls); await (0, update_known_checksums_1.updateChecksums)(checksumFilePath, checksumDownloadUrls);
const latestVersion = response const artifactDownloadUrls = releases.flatMap((release) => release.assets
.map((release) => release.tag_name) .filter((asset) => !asset.name.endsWith(".sha256"))
.sort(semver.rcompare)[0]; .map((asset) => asset.browser_download_url));
core.setOutput("latest-version", latestVersion); await (0, version_manifest_1.updateVersionManifest)(versionsManifestFile, artifactDownloadUrls);
core.setOutput("latest-version", latestRelease.tag_name);
} }
run(); run();
@@ -61804,24 +62602,17 @@ exports.TOOL_CACHE_NAME = "uv";
/***/ }), /***/ }),
/***/ 3352: /***/ 3385:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.Octokit = exports.customFetch = void 0; exports.fetch = void 0;
exports.getProxyAgent = getProxyAgent; exports.getProxyAgent = getProxyAgent;
const core_1 = __nccwpck_require__(767);
const plugin_paginate_rest_1 = __nccwpck_require__(3779);
const plugin_rest_endpoint_methods_1 = __nccwpck_require__(9210);
const undici_1 = __nccwpck_require__(6752); const undici_1 = __nccwpck_require__(6752);
const DEFAULTS = {
baseUrl: "https://api.github.com",
userAgent: "setup-uv",
};
function getProxyAgent() { function getProxyAgent() {
const httpProxy = process.env.HTTP_PROXY || process.env.http_prox; const httpProxy = process.env.HTTP_PROXY || process.env.http_proxy;
if (httpProxy) { if (httpProxy) {
return new undici_1.ProxyAgent(httpProxy); return new undici_1.ProxyAgent(httpProxy);
} }
@@ -61831,17 +62622,36 @@ function getProxyAgent() {
} }
return undefined; return undefined;
} }
const customFetch = async (url, opts) => await (0, undici_1.fetch)(url, { const fetch = async (url, opts) => await (0, undici_1.fetch)(url, {
dispatcher: getProxyAgent(), dispatcher: getProxyAgent(),
...opts, ...opts,
}); });
exports.customFetch = customFetch; exports.fetch = fetch;
/***/ }),
/***/ 3352:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.Octokit = void 0;
const core_1 = __nccwpck_require__(767);
const plugin_paginate_rest_1 = __nccwpck_require__(3779);
const plugin_rest_endpoint_methods_1 = __nccwpck_require__(9210);
const fetch_1 = __nccwpck_require__(3385);
const DEFAULTS = {
baseUrl: "https://api.github.com",
userAgent: "setup-uv",
};
exports.Octokit = core_1.Octokit.plugin(plugin_paginate_rest_1.paginateRest, plugin_rest_endpoint_methods_1.legacyRestEndpointMethods).defaults(function buildDefaults(options) { exports.Octokit = core_1.Octokit.plugin(plugin_paginate_rest_1.paginateRest, plugin_rest_endpoint_methods_1.legacyRestEndpointMethods).defaults(function buildDefaults(options) {
return { return {
...DEFAULTS, ...DEFAULTS,
...options, ...options,
request: { request: {
fetch: exports.customFetch, fetch: fetch_1.fetch,
...options.request, ...options.request,
}, },
}; };
@@ -62050,6 +62860,14 @@ module.exports = require("node:net");
/***/ }), /***/ }),
/***/ 6760:
/***/ ((module) => {
"use strict";
module.exports = require("node:path");
/***/ }),
/***/ 643: /***/ 643:
/***/ ((module) => { /***/ ((module) => {
@@ -64845,7 +65663,8 @@ var NON_VARIABLE_OPTIONS = [
"headers", "headers",
"request", "request",
"query", "query",
"mediaType" "mediaType",
"operationName"
]; ];
var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
@@ -64983,7 +65802,7 @@ var createTokenAuth = function createTokenAuth2(token) {
;// CONCATENATED MODULE: ./node_modules/@octokit/core/dist-src/version.js ;// CONCATENATED MODULE: ./node_modules/@octokit/core/dist-src/version.js
const version_VERSION = "6.1.4"; const version_VERSION = "7.0.2";
;// CONCATENATED MODULE: ./node_modules/@octokit/core/dist-src/index.js ;// CONCATENATED MODULE: ./node_modules/@octokit/core/dist-src/index.js
@@ -65268,8 +66087,10 @@ var paginatingEndpoints = [
"GET /notifications", "GET /notifications",
"GET /organizations", "GET /organizations",
"GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/cache/usage-by-repository",
"GET /orgs/{org}/actions/hosted-runners",
"GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/permissions/repositories",
"GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups",
"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners",
"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories",
"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners",
"GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/runners",
@@ -65279,6 +66100,7 @@ var paginatingEndpoints = [
"GET /orgs/{org}/actions/variables/{name}/repositories", "GET /orgs/{org}/actions/variables/{name}/repositories",
"GET /orgs/{org}/attestations/{subject_digest}", "GET /orgs/{org}/attestations/{subject_digest}",
"GET /orgs/{org}/blocks", "GET /orgs/{org}/blocks",
"GET /orgs/{org}/campaigns",
"GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/code-scanning/alerts",
"GET /orgs/{org}/code-security/configurations", "GET /orgs/{org}/code-security/configurations",
"GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories", "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories",
@@ -65287,7 +66109,6 @@ var paginatingEndpoints = [
"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories",
"GET /orgs/{org}/copilot/billing/seats", "GET /orgs/{org}/copilot/billing/seats",
"GET /orgs/{org}/copilot/metrics", "GET /orgs/{org}/copilot/metrics",
"GET /orgs/{org}/copilot/usage",
"GET /orgs/{org}/dependabot/alerts", "GET /orgs/{org}/dependabot/alerts",
"GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets",
"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories",
@@ -65322,10 +66143,11 @@ var paginatingEndpoints = [
"GET /orgs/{org}/repos", "GET /orgs/{org}/repos",
"GET /orgs/{org}/rulesets", "GET /orgs/{org}/rulesets",
"GET /orgs/{org}/rulesets/rule-suites", "GET /orgs/{org}/rulesets/rule-suites",
"GET /orgs/{org}/rulesets/{ruleset_id}/history",
"GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/secret-scanning/alerts",
"GET /orgs/{org}/security-advisories", "GET /orgs/{org}/security-advisories",
"GET /orgs/{org}/settings/network-configurations",
"GET /orgs/{org}/team/{team_slug}/copilot/metrics", "GET /orgs/{org}/team/{team_slug}/copilot/metrics",
"GET /orgs/{org}/team/{team_slug}/copilot/usage",
"GET /orgs/{org}/teams", "GET /orgs/{org}/teams",
"GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions",
"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments",
@@ -65420,6 +66242,7 @@ var paginatingEndpoints = [
"GET /repos/{owner}/{repo}/rules/branches/{branch}", "GET /repos/{owner}/{repo}/rules/branches/{branch}",
"GET /repos/{owner}/{repo}/rulesets", "GET /repos/{owner}/{repo}/rulesets",
"GET /repos/{owner}/{repo}/rulesets/rule-suites", "GET /repos/{owner}/{repo}/rulesets/rule-suites",
"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history",
"GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts",
"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations",
"GET /repos/{owner}/{repo}/security-advisories", "GET /repos/{owner}/{repo}/security-advisories",
@@ -65531,7 +66354,7 @@ __nccwpck_require__.d(__webpack_exports__, {
}); });
;// CONCATENATED MODULE: ./node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js ;// CONCATENATED MODULE: ./node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js
const VERSION = "13.3.1"; const VERSION = "14.0.0";
//# sourceMappingURL=version.js.map //# sourceMappingURL=version.js.map
@@ -65562,6 +66385,7 @@ const Endpoints = {
createEnvironmentVariable: [ createEnvironmentVariable: [
"POST /repos/{owner}/{repo}/environments/{environment_name}/variables" "POST /repos/{owner}/{repo}/environments/{environment_name}/variables"
], ],
createHostedRunnerForOrg: ["POST /orgs/{org}/actions/hosted-runners"],
createOrUpdateEnvironmentSecret: [ createOrUpdateEnvironmentSecret: [
"PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"
], ],
@@ -65599,6 +66423,9 @@ const Endpoints = {
deleteEnvironmentVariable: [ deleteEnvironmentVariable: [
"DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"
], ],
deleteHostedRunnerForOrg: [
"DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"
],
deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"],
deleteRepoSecret: [ deleteRepoSecret: [
@@ -65687,6 +66514,24 @@ const Endpoints = {
getGithubActionsPermissionsRepository: [ getGithubActionsPermissionsRepository: [
"GET /repos/{owner}/{repo}/actions/permissions" "GET /repos/{owner}/{repo}/actions/permissions"
], ],
getHostedRunnerForOrg: [
"GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"
],
getHostedRunnersGithubOwnedImagesForOrg: [
"GET /orgs/{org}/actions/hosted-runners/images/github-owned"
],
getHostedRunnersLimitsForOrg: [
"GET /orgs/{org}/actions/hosted-runners/limits"
],
getHostedRunnersMachineSpecsForOrg: [
"GET /orgs/{org}/actions/hosted-runners/machine-sizes"
],
getHostedRunnersPartnerImagesForOrg: [
"GET /orgs/{org}/actions/hosted-runners/images/partner"
],
getHostedRunnersPlatformsForOrg: [
"GET /orgs/{org}/actions/hosted-runners/platforms"
],
getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
@@ -65730,6 +66575,10 @@ const Endpoints = {
listEnvironmentVariables: [ listEnvironmentVariables: [
"GET /repos/{owner}/{repo}/environments/{environment_name}/variables" "GET /repos/{owner}/{repo}/environments/{environment_name}/variables"
], ],
listGithubHostedRunnersInGroupForOrg: [
"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"
],
listHostedRunnersForOrg: ["GET /orgs/{org}/actions/hosted-runners"],
listJobsForWorkflowRun: [ listJobsForWorkflowRun: [
"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs" "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"
], ],
@@ -65848,6 +66697,9 @@ const Endpoints = {
updateEnvironmentVariable: [ updateEnvironmentVariable: [
"PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" "PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"
], ],
updateHostedRunnerForOrg: [
"PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"
],
updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"],
updateRepoVariable: [ updateRepoVariable: [
"PATCH /repos/{owner}/{repo}/actions/variables/{name}" "PATCH /repos/{owner}/{repo}/actions/variables/{name}"
@@ -65989,6 +66841,13 @@ const Endpoints = {
"GET /users/{username}/settings/billing/shared-storage" "GET /users/{username}/settings/billing/shared-storage"
] ]
}, },
campaigns: {
createCampaign: ["POST /orgs/{org}/campaigns"],
deleteCampaign: ["DELETE /orgs/{org}/campaigns/{campaign_number}"],
getCampaignSummary: ["GET /orgs/{org}/campaigns/{campaign_number}"],
listOrgCampaigns: ["GET /orgs/{org}/campaigns"],
updateCampaign: ["PATCH /orgs/{org}/campaigns/{campaign_number}"]
},
checks: { checks: {
create: ["POST /repos/{owner}/{repo}/check-runs"], create: ["POST /repos/{owner}/{repo}/check-runs"],
createSuite: ["POST /repos/{owner}/{repo}/check-suites"], createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
@@ -66267,9 +67126,7 @@ const Endpoints = {
getCopilotSeatDetailsForUser: [ getCopilotSeatDetailsForUser: [
"GET /orgs/{org}/members/{username}/copilot" "GET /orgs/{org}/members/{username}/copilot"
], ],
listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"], listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"]
usageMetricsForOrg: ["GET /orgs/{org}/copilot/usage"],
usageMetricsForTeam: ["GET /orgs/{org}/team/{team_slug}/copilot/usage"]
}, },
dependabot: { dependabot: {
addSelectedRepoToOrgSecret: [ addSelectedRepoToOrgSecret: [
@@ -66365,6 +67222,26 @@ const Endpoints = {
getAllTemplates: ["GET /gitignore/templates"], getAllTemplates: ["GET /gitignore/templates"],
getTemplate: ["GET /gitignore/templates/{name}"] getTemplate: ["GET /gitignore/templates/{name}"]
}, },
hostedCompute: {
createNetworkConfigurationForOrg: [
"POST /orgs/{org}/settings/network-configurations"
],
deleteNetworkConfigurationFromOrg: [
"DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"
],
getNetworkConfigurationForOrg: [
"GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"
],
getNetworkSettingsForOrg: [
"GET /orgs/{org}/settings/network-settings/{network_settings_id}"
],
listNetworkConfigurationsForOrg: [
"GET /orgs/{org}/settings/network-configurations"
],
updateNetworkConfigurationForOrg: [
"PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"
]
},
interactions: { interactions: {
getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
@@ -66556,6 +67433,7 @@ const Endpoints = {
"PUT /orgs/{org}/outside_collaborators/{username}" "PUT /orgs/{org}/outside_collaborators/{username}"
], ],
createInvitation: ["POST /orgs/{org}/invitations"], createInvitation: ["POST /orgs/{org}/invitations"],
createIssueType: ["POST /orgs/{org}/issue-types"],
createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"], createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"],
createOrUpdateCustomPropertiesValuesForRepos: [ createOrUpdateCustomPropertiesValuesForRepos: [
"PATCH /orgs/{org}/properties/values" "PATCH /orgs/{org}/properties/values"
@@ -66565,6 +67443,7 @@ const Endpoints = {
], ],
createWebhook: ["POST /orgs/{org}/hooks"], createWebhook: ["POST /orgs/{org}/hooks"],
delete: ["DELETE /orgs/{org}"], delete: ["DELETE /orgs/{org}"],
deleteIssueType: ["DELETE /orgs/{org}/issue-types/{issue_type_id}"],
deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
enableOrDisableSecurityProductOnAllOrgRepos: [ enableOrDisableSecurityProductOnAllOrgRepos: [
"POST /orgs/{org}/{security_product}/{enablement}", "POST /orgs/{org}/{security_product}/{enablement}",
@@ -66581,6 +67460,10 @@ const Endpoints = {
getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"], getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"],
getOrgRulesetHistory: ["GET /orgs/{org}/rulesets/{ruleset_id}/history"],
getOrgRulesetVersion: [
"GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"
],
getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
getWebhookDelivery: [ getWebhookDelivery: [
@@ -66595,6 +67478,7 @@ const Endpoints = {
listForAuthenticatedUser: ["GET /user/orgs"], listForAuthenticatedUser: ["GET /user/orgs"],
listForUser: ["GET /users/{username}/orgs"], listForUser: ["GET /users/{username}/orgs"],
listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
listIssueTypes: ["GET /orgs/{org}/issue-types"],
listMembers: ["GET /orgs/{org}/members"], listMembers: ["GET /orgs/{org}/members"],
listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"], listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"],
@@ -66669,6 +67553,7 @@ const Endpoints = {
], ],
unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
update: ["PATCH /orgs/{org}"], update: ["PATCH /orgs/{org}"],
updateIssueType: ["PUT /orgs/{org}/issue-types/{issue_type_id}"],
updateMembershipForAuthenticatedUser: [ updateMembershipForAuthenticatedUser: [
"PATCH /user/memberships/orgs/{org}" "PATCH /user/memberships/orgs/{org}"
], ],
@@ -66781,37 +67666,6 @@ const Endpoints = {
"PATCH /orgs/{org}/private-registries/{secret_name}" "PATCH /orgs/{org}/private-registries/{secret_name}"
] ]
}, },
projects: {
addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
createCard: ["POST /projects/columns/{column_id}/cards"],
createColumn: ["POST /projects/{project_id}/columns"],
createForAuthenticatedUser: ["POST /user/projects"],
createForOrg: ["POST /orgs/{org}/projects"],
createForRepo: ["POST /repos/{owner}/{repo}/projects"],
delete: ["DELETE /projects/{project_id}"],
deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
deleteColumn: ["DELETE /projects/columns/{column_id}"],
get: ["GET /projects/{project_id}"],
getCard: ["GET /projects/columns/cards/{card_id}"],
getColumn: ["GET /projects/columns/{column_id}"],
getPermissionForUser: [
"GET /projects/{project_id}/collaborators/{username}/permission"
],
listCards: ["GET /projects/columns/{column_id}/cards"],
listCollaborators: ["GET /projects/{project_id}/collaborators"],
listColumns: ["GET /projects/{project_id}/columns"],
listForOrg: ["GET /orgs/{org}/projects"],
listForRepo: ["GET /repos/{owner}/{repo}/projects"],
listForUser: ["GET /users/{username}/projects"],
moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
moveColumn: ["POST /projects/columns/{column_id}/moves"],
removeCollaborator: [
"DELETE /projects/{project_id}/collaborators/{username}"
],
update: ["PATCH /projects/{project_id}"],
updateCard: ["PATCH /projects/columns/cards/{card_id}"],
updateColumn: ["PATCH /projects/columns/{column_id}"]
},
pulls: { pulls: {
checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
create: ["POST /repos/{owner}/{repo}/pulls"], create: ["POST /repos/{owner}/{repo}/pulls"],
@@ -67183,6 +68037,12 @@ const Endpoints = {
], ],
getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"], getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"],
getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
getRepoRulesetHistory: [
"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"
],
getRepoRulesetVersion: [
"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"
],
getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"],
getStatusChecksProtection: [ getStatusChecksProtection: [
"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
@@ -67356,7 +68216,13 @@ const Endpoints = {
search: { search: {
code: ["GET /search/code"], code: ["GET /search/code"],
commits: ["GET /search/commits"], commits: ["GET /search/commits"],
issuesAndPullRequests: ["GET /search/issues"], issuesAndPullRequests: [
"GET /search/issues",
{},
{
deprecated: "octokit.rest.search.issuesAndPullRequests() is deprecated, see https://docs.github.com/rest/search/search#search-issues-and-pull-requests"
}
],
labels: ["GET /search/labels"], labels: ["GET /search/labels"],
repos: ["GET /search/repositories"], repos: ["GET /search/repositories"],
topics: ["GET /search/topics"], topics: ["GET /search/topics"],
@@ -67410,15 +68276,9 @@ const Endpoints = {
addOrUpdateMembershipForUserInOrg: [ addOrUpdateMembershipForUserInOrg: [
"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"
], ],
addOrUpdateProjectPermissionsInOrg: [
"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"
],
addOrUpdateRepoPermissionsInOrg: [ addOrUpdateRepoPermissionsInOrg: [
"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
], ],
checkPermissionsForProjectInOrg: [
"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"
],
checkPermissionsForRepoInOrg: [ checkPermissionsForRepoInOrg: [
"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
], ],
@@ -67455,14 +68315,10 @@ const Endpoints = {
listPendingInvitationsInOrg: [ listPendingInvitationsInOrg: [
"GET /orgs/{org}/teams/{team_slug}/invitations" "GET /orgs/{org}/teams/{team_slug}/invitations"
], ],
listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
removeMembershipForUserInOrg: [ removeMembershipForUserInOrg: [
"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"
], ],
removeProjectInOrg: [
"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"
],
removeRepoInOrg: [ removeRepoInOrg: [
"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
], ],
@@ -67837,7 +68693,7 @@ legacyRestEndpointMethods.VERSION = VERSION;
/******/ // startup /******/ // startup
/******/ // Load entry module and return exports /******/ // Load entry module and return exports
/******/ // This entry module is referenced by other modules so it can't be inlined /******/ // This entry module is referenced by other modules so it can't be inlined
/******/ var __webpack_exports__ = __nccwpck_require__(5653); /******/ var __webpack_exports__ = __nccwpck_require__(7416);
/******/ module.exports = __webpack_exports__; /******/ module.exports = __webpack_exports__;
/******/ /******/
/******/ })() /******/ })()

416
package-lock.json generated
View File

@@ -15,22 +15,23 @@
"@actions/glob": "^0.5.0", "@actions/glob": "^0.5.0",
"@actions/io": "^1.1.3", "@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.2", "@actions/tool-cache": "^2.0.2",
"@octokit/core": "^6.1.4", "@octokit/core": "^7.0.2",
"@octokit/plugin-paginate-rest": "^11.4.3", "@octokit/plugin-paginate-rest": "^12.0.0",
"@octokit/plugin-rest-endpoint-methods": "^13.3.1", "@octokit/plugin-rest-endpoint-methods": "^14.0.0",
"@renovatebot/pep440": "^4.1.0", "@renovatebot/pep440": "^4.1.0",
"smol-toml": "^1.3.1", "smol-toml": "^1.3.4",
"undici": "^7.5.0" "undici": "^7.10.0"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "1.9.4", "@biomejs/biome": "1.9.4",
"@types/node": "^22.13.10", "@types/js-yaml": "^4.0.9",
"@types/semver": "^7.5.8", "@types/node": "^22.15.21",
"@types/semver": "^7.7.0",
"@vercel/ncc": "^0.38.3", "@vercel/ncc": "^0.38.3",
"jest": "^29.7.0", "jest": "^29.7.0",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"ts-jest": "^29.2.6", "ts-jest": "^29.3.2",
"typescript": "^5.8.2" "typescript": "^5.8.3"
} }
}, },
"node_modules/@actions/cache": { "node_modules/@actions/cache": {
@@ -96,9 +97,10 @@
} }
}, },
"node_modules/@actions/http-client/node_modules/undici": { "node_modules/@actions/http-client/node_modules/undici": {
"version": "5.28.5", "version": "5.29.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
"integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
"license": "MIT",
"dependencies": { "dependencies": {
"@fastify/busboy": "^2.0.0" "@fastify/busboy": "^2.0.0"
}, },
@@ -1512,66 +1514,72 @@
} }
}, },
"node_modules/@octokit/auth-token": { "node_modules/@octokit/auth-token": {
"version": "5.1.2", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz",
"integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==", "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==",
"license": "MIT",
"engines": { "engines": {
"node": ">= 18" "node": ">= 20"
} }
}, },
"node_modules/@octokit/core": { "node_modules/@octokit/core": {
"version": "6.1.4", "version": "7.0.2",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.2.tgz",
"integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==", "integrity": "sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==",
"license": "MIT",
"dependencies": { "dependencies": {
"@octokit/auth-token": "^5.0.0", "@octokit/auth-token": "^6.0.0",
"@octokit/graphql": "^8.1.2", "@octokit/graphql": "^9.0.1",
"@octokit/request": "^9.2.1", "@octokit/request": "^10.0.2",
"@octokit/request-error": "^6.1.7", "@octokit/request-error": "^7.0.0",
"@octokit/types": "^13.6.2", "@octokit/types": "^14.0.0",
"before-after-hook": "^3.0.2", "before-after-hook": "^4.0.0",
"universal-user-agent": "^7.0.0" "universal-user-agent": "^7.0.0"
}, },
"engines": { "engines": {
"node": ">= 18" "node": ">= 20"
} }
}, },
"node_modules/@octokit/endpoint": { "node_modules/@octokit/endpoint": {
"version": "10.1.3", "version": "11.0.0",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz", "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.0.tgz",
"integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==", "integrity": "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"@octokit/types": "^13.6.2", "@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.2" "universal-user-agent": "^7.0.2"
}, },
"engines": { "engines": {
"node": ">= 18" "node": ">= 20"
} }
}, },
"node_modules/@octokit/graphql": { "node_modules/@octokit/graphql": {
"version": "8.1.2", "version": "9.0.1",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.1.tgz",
"integrity": "sha512-bdlj/CJVjpaz06NBpfHhp4kGJaRZfz7AzC+6EwUImRtrwIw8dIgJ63Xg0OzV9pRn3rIzrt5c2sa++BL0JJ8GLw==", "integrity": "sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==",
"license": "MIT",
"dependencies": { "dependencies": {
"@octokit/request": "^9.1.4", "@octokit/request": "^10.0.2",
"@octokit/types": "^13.6.2", "@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.0" "universal-user-agent": "^7.0.0"
}, },
"engines": { "engines": {
"node": ">= 18" "node": ">= 20"
} }
}, },
"node_modules/@octokit/openapi-types": { "node_modules/@octokit/openapi-types": {
"version": "23.0.1", "version": "25.0.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.0.0.tgz",
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==" "integrity": "sha512-FZvktFu7HfOIJf2BScLKIEYjDsw6RKc7rBJCdvCTfKsVnx2GEB/Nbzjr29DUdb7vQhlzS/j8qDzdditP0OC6aw==",
"license": "MIT"
}, },
"node_modules/@octokit/plugin-paginate-rest": { "node_modules/@octokit/plugin-paginate-rest": {
"version": "11.4.3", "version": "12.0.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.3.tgz", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-12.0.0.tgz",
"integrity": "sha512-tBXaAbXkqVJlRoA/zQVe9mUdb8rScmivqtpv3ovsC5xhje/a+NOCivs7eUhWBwCApJVsR4G5HMeaLbq7PxqZGA==", "integrity": "sha512-MPd6WK1VtZ52lFrgZ0R2FlaoiWllzgqFHaSZxvp72NmoDeZ0m8GeJdg4oB6ctqMTYyrnDYp592Xma21mrgiyDA==",
"license": "MIT",
"dependencies": { "dependencies": {
"@octokit/types": "^13.7.0" "@octokit/types": "^14.0.0"
}, },
"engines": { "engines": {
"node": ">= 18" "node": ">= 18"
@@ -1581,11 +1589,12 @@
} }
}, },
"node_modules/@octokit/plugin-rest-endpoint-methods": { "node_modules/@octokit/plugin-rest-endpoint-methods": {
"version": "13.3.1", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-14.0.0.tgz",
"integrity": "sha512-o8uOBdsyR+WR8MK9Cco8dCgvG13H1RlM1nWnK/W7TEACQBFux/vPREgKucxUfuDQ5yi1T3hGf4C5ZmZXAERgwQ==", "integrity": "sha512-iQt6ovem4b7zZYZQtdv+PwgbL5VPq37th1m2x2TdkgimIDJpsi2A6Q/OI/23i/hR6z5mL0EgisNR4dcbmckSZQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"@octokit/types": "^13.8.0" "@octokit/types": "^14.0.0"
}, },
"engines": { "engines": {
"node": ">= 18" "node": ">= 18"
@@ -1595,37 +1604,40 @@
} }
}, },
"node_modules/@octokit/request": { "node_modules/@octokit/request": {
"version": "9.2.2", "version": "10.0.2",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.2.tgz",
"integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==", "integrity": "sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==",
"license": "MIT",
"dependencies": { "dependencies": {
"@octokit/endpoint": "^10.1.3", "@octokit/endpoint": "^11.0.0",
"@octokit/request-error": "^6.1.7", "@octokit/request-error": "^7.0.0",
"@octokit/types": "^13.6.2", "@octokit/types": "^14.0.0",
"fast-content-type-parse": "^2.0.0", "fast-content-type-parse": "^3.0.0",
"universal-user-agent": "^7.0.2" "universal-user-agent": "^7.0.2"
}, },
"engines": { "engines": {
"node": ">= 18" "node": ">= 20"
} }
}, },
"node_modules/@octokit/request-error": { "node_modules/@octokit/request-error": {
"version": "6.1.7", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.0.tgz",
"integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", "integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==",
"license": "MIT",
"dependencies": { "dependencies": {
"@octokit/types": "^13.6.2" "@octokit/types": "^14.0.0"
}, },
"engines": { "engines": {
"node": ">= 18" "node": ">= 20"
} }
}, },
"node_modules/@octokit/types": { "node_modules/@octokit/types": {
"version": "13.8.0", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.0.0.tgz",
"integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==", "integrity": "sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA==",
"license": "MIT",
"dependencies": { "dependencies": {
"@octokit/openapi-types": "^23.0.1" "@octokit/openapi-types": "^25.0.0"
} }
}, },
"node_modules/@opentelemetry/api": { "node_modules/@opentelemetry/api": {
@@ -1814,12 +1826,20 @@
"@types/istanbul-lib-report": "*" "@types/istanbul-lib-report": "*"
} }
}, },
"node_modules/@types/js-yaml": {
"version": "4.0.9",
"resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz",
"integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "22.13.10", "version": "22.15.21",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz",
"integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", "integrity": "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~6.20.0" "undici-types": "~6.21.0"
} }
}, },
"node_modules/@types/node-fetch": { "node_modules/@types/node-fetch": {
@@ -1845,10 +1865,11 @@
} }
}, },
"node_modules/@types/semver": { "node_modules/@types/semver": {
"version": "7.5.8", "version": "7.7.0",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz",
"integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==",
"dev": true "dev": true,
"license": "MIT"
}, },
"node_modules/@types/stack-utils": { "node_modules/@types/stack-utils": {
"version": "2.0.1", "version": "2.0.1",
@@ -2077,9 +2098,10 @@
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
}, },
"node_modules/before-after-hook": { "node_modules/before-after-hook": {
"version": "3.0.2", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz",
"integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==" "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==",
"license": "Apache-2.0"
}, },
"node_modules/brace-expansion": { "node_modules/brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
@@ -2547,9 +2569,9 @@
} }
}, },
"node_modules/fast-content-type-parse": { "node_modules/fast-content-type-parse": {
"version": "2.0.1", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz", "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz",
"integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==", "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==",
"funding": [ "funding": [
{ {
"type": "github", "type": "github",
@@ -2559,7 +2581,8 @@
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/fastify" "url": "https://opencollective.com/fastify"
} }
] ],
"license": "MIT"
}, },
"node_modules/fast-json-stable-stringify": { "node_modules/fast-json-stable-stringify": {
"version": "2.1.0", "version": "2.1.0",
@@ -4182,9 +4205,10 @@
} }
}, },
"node_modules/smol-toml": { "node_modules/smol-toml": {
"version": "1.3.1", "version": "1.3.4",
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz", "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.4.tgz",
"integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==", "integrity": "sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==",
"license": "BSD-3-Clause",
"engines": { "engines": {
"node": ">= 18" "node": ">= 18"
}, },
@@ -4360,10 +4384,11 @@
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
}, },
"node_modules/ts-jest": { "node_modules/ts-jest": {
"version": "29.2.6", "version": "29.3.2",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz",
"integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==", "integrity": "sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"bs-logger": "^0.2.6", "bs-logger": "^0.2.6",
"ejs": "^3.1.10", "ejs": "^3.1.10",
@@ -4373,6 +4398,7 @@
"lodash.memoize": "^4.1.2", "lodash.memoize": "^4.1.2",
"make-error": "^1.3.6", "make-error": "^1.3.6",
"semver": "^7.7.1", "semver": "^7.7.1",
"type-fest": "^4.39.1",
"yargs-parser": "^21.1.1" "yargs-parser": "^21.1.1"
}, },
"bin": { "bin": {
@@ -4441,11 +4467,25 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/typescript": { "node_modules/type-fest": {
"version": "5.8.2", "version": "4.40.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.1.tgz",
"integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "integrity": "sha512-9YvLNnORDpI+vghLU/Nf+zSv0kL47KbVJ1o3sKgoTefl6i+zebxbiDQWoe/oWWqPhIgQdRZRT1KA9sCPL810SA==",
"dev": true, "dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/typescript": {
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"dev": true,
"license": "Apache-2.0",
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
@@ -4455,22 +4495,25 @@
} }
}, },
"node_modules/undici": { "node_modules/undici": {
"version": "7.5.0", "version": "7.10.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.5.0.tgz", "resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz",
"integrity": "sha512-NFQG741e8mJ0fLQk90xKxFdaSM7z4+IQpAgsFI36bCDY9Z2+aXXZjVy2uUksMouWfMI9+w5ejOq5zYYTBCQJDQ==", "integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==",
"license": "MIT",
"engines": { "engines": {
"node": ">=20.18.1" "node": ">=20.18.1"
} }
}, },
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "6.20.0", "version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
"license": "MIT"
}, },
"node_modules/universal-user-agent": { "node_modules/universal-user-agent": {
"version": "7.0.2", "version": "7.0.3",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz",
"integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==" "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==",
"license": "ISC"
}, },
"node_modules/update-browserslist-db": { "node_modules/update-browserslist-db": {
"version": "1.0.10", "version": "1.0.10",
@@ -4732,9 +4775,9 @@
}, },
"dependencies": { "dependencies": {
"undici": { "undici": {
"version": "5.28.5", "version": "5.29.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
"integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
"requires": { "requires": {
"@fastify/busboy": "^2.0.0" "@fastify/busboy": "^2.0.0"
} }
@@ -5800,90 +5843,90 @@
} }
}, },
"@octokit/auth-token": { "@octokit/auth-token": {
"version": "5.1.2", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz",
"integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==" "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w=="
}, },
"@octokit/core": { "@octokit/core": {
"version": "6.1.4", "version": "7.0.2",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.2.tgz",
"integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==", "integrity": "sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==",
"requires": { "requires": {
"@octokit/auth-token": "^5.0.0", "@octokit/auth-token": "^6.0.0",
"@octokit/graphql": "^8.1.2", "@octokit/graphql": "^9.0.1",
"@octokit/request": "^9.2.1", "@octokit/request": "^10.0.2",
"@octokit/request-error": "^6.1.7", "@octokit/request-error": "^7.0.0",
"@octokit/types": "^13.6.2", "@octokit/types": "^14.0.0",
"before-after-hook": "^3.0.2", "before-after-hook": "^4.0.0",
"universal-user-agent": "^7.0.0" "universal-user-agent": "^7.0.0"
} }
}, },
"@octokit/endpoint": { "@octokit/endpoint": {
"version": "10.1.3", "version": "11.0.0",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz", "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.0.tgz",
"integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==", "integrity": "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==",
"requires": { "requires": {
"@octokit/types": "^13.6.2", "@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.2" "universal-user-agent": "^7.0.2"
} }
}, },
"@octokit/graphql": { "@octokit/graphql": {
"version": "8.1.2", "version": "9.0.1",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.1.tgz",
"integrity": "sha512-bdlj/CJVjpaz06NBpfHhp4kGJaRZfz7AzC+6EwUImRtrwIw8dIgJ63Xg0OzV9pRn3rIzrt5c2sa++BL0JJ8GLw==", "integrity": "sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==",
"requires": { "requires": {
"@octokit/request": "^9.1.4", "@octokit/request": "^10.0.2",
"@octokit/types": "^13.6.2", "@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.0" "universal-user-agent": "^7.0.0"
} }
}, },
"@octokit/openapi-types": { "@octokit/openapi-types": {
"version": "23.0.1", "version": "25.0.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.0.0.tgz",
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==" "integrity": "sha512-FZvktFu7HfOIJf2BScLKIEYjDsw6RKc7rBJCdvCTfKsVnx2GEB/Nbzjr29DUdb7vQhlzS/j8qDzdditP0OC6aw=="
}, },
"@octokit/plugin-paginate-rest": { "@octokit/plugin-paginate-rest": {
"version": "11.4.3", "version": "12.0.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.3.tgz", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-12.0.0.tgz",
"integrity": "sha512-tBXaAbXkqVJlRoA/zQVe9mUdb8rScmivqtpv3ovsC5xhje/a+NOCivs7eUhWBwCApJVsR4G5HMeaLbq7PxqZGA==", "integrity": "sha512-MPd6WK1VtZ52lFrgZ0R2FlaoiWllzgqFHaSZxvp72NmoDeZ0m8GeJdg4oB6ctqMTYyrnDYp592Xma21mrgiyDA==",
"requires": { "requires": {
"@octokit/types": "^13.7.0" "@octokit/types": "^14.0.0"
} }
}, },
"@octokit/plugin-rest-endpoint-methods": { "@octokit/plugin-rest-endpoint-methods": {
"version": "13.3.1", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-14.0.0.tgz",
"integrity": "sha512-o8uOBdsyR+WR8MK9Cco8dCgvG13H1RlM1nWnK/W7TEACQBFux/vPREgKucxUfuDQ5yi1T3hGf4C5ZmZXAERgwQ==", "integrity": "sha512-iQt6ovem4b7zZYZQtdv+PwgbL5VPq37th1m2x2TdkgimIDJpsi2A6Q/OI/23i/hR6z5mL0EgisNR4dcbmckSZQ==",
"requires": { "requires": {
"@octokit/types": "^13.8.0" "@octokit/types": "^14.0.0"
} }
}, },
"@octokit/request": { "@octokit/request": {
"version": "9.2.2", "version": "10.0.2",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.2.tgz",
"integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==", "integrity": "sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==",
"requires": { "requires": {
"@octokit/endpoint": "^10.1.3", "@octokit/endpoint": "^11.0.0",
"@octokit/request-error": "^6.1.7", "@octokit/request-error": "^7.0.0",
"@octokit/types": "^13.6.2", "@octokit/types": "^14.0.0",
"fast-content-type-parse": "^2.0.0", "fast-content-type-parse": "^3.0.0",
"universal-user-agent": "^7.0.2" "universal-user-agent": "^7.0.2"
} }
}, },
"@octokit/request-error": { "@octokit/request-error": {
"version": "6.1.7", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.0.tgz",
"integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", "integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==",
"requires": { "requires": {
"@octokit/types": "^13.6.2" "@octokit/types": "^14.0.0"
} }
}, },
"@octokit/types": { "@octokit/types": {
"version": "13.8.0", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.0.0.tgz",
"integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==", "integrity": "sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA==",
"requires": { "requires": {
"@octokit/openapi-types": "^23.0.1" "@octokit/openapi-types": "^25.0.0"
} }
}, },
"@opentelemetry/api": { "@opentelemetry/api": {
@@ -6047,12 +6090,18 @@
"@types/istanbul-lib-report": "*" "@types/istanbul-lib-report": "*"
} }
}, },
"@types/js-yaml": {
"version": "4.0.9",
"resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz",
"integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==",
"dev": true
},
"@types/node": { "@types/node": {
"version": "22.13.10", "version": "22.15.21",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz",
"integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", "integrity": "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==",
"requires": { "requires": {
"undici-types": "~6.20.0" "undici-types": "~6.21.0"
} }
}, },
"@types/node-fetch": { "@types/node-fetch": {
@@ -6077,9 +6126,9 @@
} }
}, },
"@types/semver": { "@types/semver": {
"version": "7.5.8", "version": "7.7.0",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz",
"integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==",
"dev": true "dev": true
}, },
"@types/stack-utils": { "@types/stack-utils": {
@@ -6260,9 +6309,9 @@
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
}, },
"before-after-hook": { "before-after-hook": {
"version": "3.0.2", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz",
"integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==" "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
@@ -6581,9 +6630,9 @@
} }
}, },
"fast-content-type-parse": { "fast-content-type-parse": {
"version": "2.0.1", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz", "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz",
"integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==" "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg=="
}, },
"fast-json-stable-stringify": { "fast-json-stable-stringify": {
"version": "2.1.0", "version": "2.1.0",
@@ -7801,9 +7850,9 @@
"dev": true "dev": true
}, },
"smol-toml": { "smol-toml": {
"version": "1.3.1", "version": "1.3.4",
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz", "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.4.tgz",
"integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==" "integrity": "sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA=="
}, },
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
@@ -7933,9 +7982,9 @@
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
}, },
"ts-jest": { "ts-jest": {
"version": "29.2.6", "version": "29.3.2",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz",
"integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==", "integrity": "sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==",
"dev": true, "dev": true,
"requires": { "requires": {
"bs-logger": "^0.2.6", "bs-logger": "^0.2.6",
@@ -7946,6 +7995,7 @@
"lodash.memoize": "^4.1.2", "lodash.memoize": "^4.1.2",
"make-error": "^1.3.6", "make-error": "^1.3.6",
"semver": "^7.7.1", "semver": "^7.7.1",
"type-fest": "^4.39.1",
"yargs-parser": "^21.1.1" "yargs-parser": "^21.1.1"
}, },
"dependencies": { "dependencies": {
@@ -7973,26 +8023,32 @@
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true "dev": true
}, },
"type-fest": {
"version": "4.40.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.1.tgz",
"integrity": "sha512-9YvLNnORDpI+vghLU/Nf+zSv0kL47KbVJ1o3sKgoTefl6i+zebxbiDQWoe/oWWqPhIgQdRZRT1KA9sCPL810SA==",
"dev": true
},
"typescript": { "typescript": {
"version": "5.8.2", "version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
"integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"dev": true "dev": true
}, },
"undici": { "undici": {
"version": "7.5.0", "version": "7.10.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.5.0.tgz", "resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz",
"integrity": "sha512-NFQG741e8mJ0fLQk90xKxFdaSM7z4+IQpAgsFI36bCDY9Z2+aXXZjVy2uUksMouWfMI9+w5ejOq5zYYTBCQJDQ==" "integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw=="
}, },
"undici-types": { "undici-types": {
"version": "6.20.0", "version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="
}, },
"universal-user-agent": { "universal-user-agent": {
"version": "7.0.2", "version": "7.0.3",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz",
"integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==" "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="
}, },
"update-browserslist-db": { "update-browserslist-db": {
"version": "1.0.10", "version": "1.0.10",

View File

@@ -9,10 +9,10 @@
"format": "biome format --fix", "format": "biome format --fix",
"format-check": "biome format", "format-check": "biome format",
"lint": "biome lint --fix", "lint": "biome lint --fix",
"package": "ncc build -o dist/setup src/setup-uv.ts && ncc build -o dist/save-cache src/save-cache.ts && ncc build -o dist/update-known-checksums src/update-known-checksums.ts", "package": "ncc build -o dist/setup src/setup-uv.ts && ncc build -o dist/save-cache src/save-cache.ts && ncc build -o dist/update-known-versions src/update-known-versions.ts",
"test": "jest", "test": "jest",
"act": "act pull_request -W .github/workflows/test.yml --container-architecture linux/amd64 -s GITHUB_TOKEN=\"$(gh auth token)\"", "act": "act pull_request -W .github/workflows/test.yml --container-architecture linux/amd64 -s GITHUB_TOKEN=\"$(gh auth token)\"",
"update-known-checksums": "RUNNER_TEMP=known_checksums node dist/update-known-checksums/index.js src/download/checksum/known-checksums.ts \"$(gh auth token)\"", "update-known-versions": "RUNNER_TEMP=known_versions node dist/update-known-versions/index.js src/download/checksum/known-versions.ts \"$(gh auth token)\"",
"all": "npm run build && npm run format && npm run lint && npm run package && npm test" "all": "npm run build && npm run format && npm run lint && npm run package && npm test"
}, },
"repository": { "repository": {
@@ -29,21 +29,22 @@
"@actions/glob": "^0.5.0", "@actions/glob": "^0.5.0",
"@actions/io": "^1.1.3", "@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.2", "@actions/tool-cache": "^2.0.2",
"@octokit/core": "^6.1.4", "@octokit/core": "^7.0.2",
"@octokit/plugin-paginate-rest": "^11.4.3", "@octokit/plugin-paginate-rest": "^12.0.0",
"@octokit/plugin-rest-endpoint-methods": "^13.3.1", "@octokit/plugin-rest-endpoint-methods": "^14.0.0",
"@renovatebot/pep440": "^4.1.0", "@renovatebot/pep440": "^4.1.0",
"smol-toml": "^1.3.1", "smol-toml": "^1.3.4",
"undici": "^7.5.0" "undici": "^7.10.0"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "1.9.4", "@biomejs/biome": "1.9.4",
"@types/node": "^22.13.10", "@types/js-yaml": "^4.0.9",
"@types/semver": "^7.5.8", "@types/node": "^22.15.21",
"@types/semver": "^7.7.0",
"@vercel/ncc": "^0.38.3", "@vercel/ncc": "^0.38.3",
"jest": "^29.7.0", "jest": "^29.7.0",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"ts-jest": "^29.2.6", "ts-jest": "^29.3.2",
"typescript": "^5.8.2" "typescript": "^5.8.3"
} }
} }

View File

@@ -4,7 +4,9 @@ import {
cacheDependencyGlob, cacheDependencyGlob,
cacheLocalPath, cacheLocalPath,
cacheSuffix, cacheSuffix,
pruneCache,
pythonVersion as pythonVersionInput, pythonVersion as pythonVersionInput,
workingDirectory,
} from "../utils/inputs"; } from "../utils/inputs";
import { getArch, getPlatform } from "../utils/platforms"; import { getArch, getPlatform } from "../utils/platforms";
import { hashFiles } from "../hash/hash-files"; import { hashFiles } from "../hash/hash-files";
@@ -54,7 +56,8 @@ async function computeKeys(): Promise<string> {
const suffix = cacheSuffix ? `-${cacheSuffix}` : ""; const suffix = cacheSuffix ? `-${cacheSuffix}` : "";
const pythonVersion = await getPythonVersion(); const pythonVersion = await getPythonVersion();
const platform = await getPlatform(); const platform = await getPlatform();
return `setup-uv-${CACHE_VERSION}-${getArch()}-${platform}-${pythonVersion}${cacheDependencyPathHash}${suffix}`; const pruned = pruneCache ? "-pruned" : "";
return `setup-uv-${CACHE_VERSION}-${getArch()}-${platform}-${pythonVersion}${pruned}${cacheDependencyPathHash}${suffix}`;
} }
async function getPythonVersion(): Promise<string> { async function getPythonVersion(): Promise<string> {
@@ -73,7 +76,7 @@ async function getPythonVersion(): Promise<string> {
}; };
try { try {
const execArgs = ["python", "find"]; const execArgs = ["python", "find", "--directory", workingDirectory];
await exec.exec("uv", execArgs, options); await exec.exec("uv", execArgs, options);
const pythonPath = output.trim(); const pythonPath = output.trim();

View File

@@ -1,5 +1,621 @@
// AUTOGENERATED_DO_NOT_EDIT // AUTOGENERATED_DO_NOT_EDIT
export const KNOWN_CHECKSUMS: { [key: string]: string } = { export const KNOWN_CHECKSUMS: { [key: string]: string } = {
"aarch64-apple-darwin-0.7.14":
"7cb9cb6b3005a16356493887d7e7e297237b754b5753b91e826ada98ab2da172",
"aarch64-pc-windows-msvc-0.7.14":
"f28f27e529e30e96e7b289b724c8229cfc5ca25312c23bdae089d6998ffd0aae",
"aarch64-unknown-linux-gnu-0.7.14":
"c0932f428d24d87aaad6a6b7ad48aa09f260d2da5c69e877acd87c3ac90fbbad",
"aarch64-unknown-linux-musl-0.7.14":
"30e41b1f68b3e57c1375c0b2e7fe932a9eb5487fbcef7c4c7d03def3e05b9f7e",
"arm-unknown-linux-musleabihf-0.7.14":
"3b494d3d6a892d9c03d1fa6dcec8ac6077653939a6645570ab6f1f40adbd0b3c",
"armv7-unknown-linux-gnueabihf-0.7.14":
"d5d1f6c49559914678267ce9f3a57528ab45e26e907a816736306b4f10a7b4b8",
"armv7-unknown-linux-musleabihf-0.7.14":
"0016d3138edc52de9f2f4b0587afb6b579dc3bb3abfe2df151f97cc43a4ab421",
"i686-pc-windows-msvc-0.7.14":
"42391f3a71229342b17d944e956d116aabc5147b0ed28a26c59601feac1f24cd",
"i686-unknown-linux-gnu-0.7.14":
"71c358c315da7ddd2de334fe52a54719f9bdac8d6970e7966e2d080ae73ad028",
"i686-unknown-linux-musl-0.7.14":
"d02de9391fe7b7d7e97dc2fa63a539201a31eb51d2c6a87b7570cf8a5ac22398",
"powerpc64-unknown-linux-gnu-0.7.14":
"a2a43332f860520f7cd3d32f5a4ed5e0d938cc59e025372f8f1bfe47ea64355a",
"powerpc64le-unknown-linux-gnu-0.7.14":
"3c545528b601a75baad5e1cc93cbf973123e9e6df6d905b432d91ba9ca769c0b",
"riscv64gc-unknown-linux-gnu-0.7.14":
"4085fd8d4acb0a50a012fa63ae37e50472bf8742d58f4943529b5b5bda95a1a9",
"s390x-unknown-linux-gnu-0.7.14":
"b20a69092f3171dd99445fe0d71e3ed3e67ff85346cb0723a43a1b8d55ce0f33",
"x86_64-apple-darwin-0.7.14":
"352a56bb3823040f19f936dd5e277340cd304da03e5b00c0959800a72a9f55ac",
"x86_64-pc-windows-msvc-0.7.14":
"f9ac952c69d32b2263ba19ba93d18d9e708dcb9bddb8124555bbda96d6d5168f",
"x86_64-unknown-linux-gnu-0.7.14":
"2b38641d02bf107c5099f09778fda93bbaa4a4a2ee44ba303a4097102254e5e5",
"x86_64-unknown-linux-musl-0.7.14":
"8c62a823744630e6cf3fdf0bf38c4fe4558bfcbe082b076a76446a3aab2af5f5",
"aarch64-apple-darwin-0.7.13":
"721f532b73171586574298d4311a91d5ea2c802ef4db3ebafc434239330090c6",
"aarch64-pc-windows-msvc-0.7.13":
"bb40708ad549ad6a12209cb139dd751bf0ede41deb679ce7513ce197bd9ef234",
"aarch64-unknown-linux-gnu-0.7.13":
"0b2ad9fe4295881615295add8cc5daa02549d29cc9a61f0578e397efcf12f08f",
"aarch64-unknown-linux-musl-0.7.13":
"52baba71881c978d32b7c32216ad0cde4546a4dc62e606c9834ec4616c1610eb",
"arm-unknown-linux-musleabihf-0.7.13":
"ff2b11fff489301f9d55c851b9ebce7ca5530d743d2c0a3861cc45896715ea9b",
"armv7-unknown-linux-gnueabihf-0.7.13":
"903350811ee31b2b758c8afb853490c27a34382a535b236739705b104bc13894",
"armv7-unknown-linux-musleabihf-0.7.13":
"7e3b2aa966c54ced0fcd9febea6b913ee7ea12ee85246513895f199ab13296a8",
"i686-pc-windows-msvc-0.7.13":
"5cf71014fde208ee0833026b3828007f8eaf514ec003784dc1ae92633877179b",
"i686-unknown-linux-gnu-0.7.13":
"ff031258ff08b3aca46648398e21fe9679744501e3c9a928c8e42d596a708bbc",
"i686-unknown-linux-musl-0.7.13":
"41851d695bb5401bce5af81a156d63215087cf8e8e1275e69dd96de4bfa30c26",
"powerpc64-unknown-linux-gnu-0.7.13":
"02a80ce1436bf673b0d7276bb24dea0bbc70958dc91e5fb04ad37ac515be7424",
"powerpc64le-unknown-linux-gnu-0.7.13":
"60c8907cce089de97dcce732ae363eda0620f7196c25e8bd539f168b93f9e34c",
"riscv64gc-unknown-linux-gnu-0.7.13":
"521a5235bc5a053dd7f0221c363544cef6d033064cc9d92dbb4ef19771000052",
"s390x-unknown-linux-gnu-0.7.13":
"41e4b6093dd408b41dffb4c9e08c4aa31424ee4573ce9c95566c2617f7f2d0c6",
"x86_64-apple-darwin-0.7.13":
"d785753ac092e25316180626aa691c5dfe1fb075290457ba4fdb72c7c5661321",
"x86_64-pc-windows-msvc-0.7.13":
"e199b10bef1a7cc540014483e7f60f825a174988f41020e9d2a6b01bd60f0669",
"x86_64-unknown-linux-gnu-0.7.13":
"909278eb197c5ed0e9b5f16317d1255270d1f9ea4196e7179ce934d48c4c2545",
"x86_64-unknown-linux-musl-0.7.13":
"560bb64e060354e45138d7dd47c8dd48a4f7a349af5520d29cd3c704e79f286c",
"aarch64-apple-darwin-0.7.12":
"189108cd026c25d40fb086eaaf320aac52c3f7aab63e185bac51305a1576fc7e",
"aarch64-pc-windows-msvc-0.7.12":
"fbedfb71356d0e63c86b507cf1434a58406afe6eac77aee9d37b8282d4006e14",
"aarch64-unknown-linux-gnu-0.7.12":
"23233d2e950ed8187858350da5c6803b14cbbeaef780382093bb2f2bc4ba1200",
"aarch64-unknown-linux-musl-0.7.12":
"0589f6d27bbbe2e205aa6fc25e4cd28ab97e984cdba20842de8d3a00714e13e9",
"arm-unknown-linux-musleabihf-0.7.12":
"6996e32ac1c37af33a4c6e40ab0126a82d62ccb94edb164b7dae554be4dd8336",
"armv7-unknown-linux-gnueabihf-0.7.12":
"aee2dc202deed7e15984d71eb59803111052fbe8c0fb3ffad27ae0a6d290d74f",
"armv7-unknown-linux-musleabihf-0.7.12":
"87bd7676d31858d9e1937ab69d13e30cc93ebb09fb246dde6a8f183e9570a82c",
"i686-pc-windows-msvc-0.7.12":
"c7ec71ba64d01ef3cdb89553445de94ab4fd7375c8f2a7068353aec7a3a06342",
"i686-unknown-linux-gnu-0.7.12":
"d1def68ff10b30327a5cacab497664aaf8338e192ba277b76f45dad63208f2e2",
"i686-unknown-linux-musl-0.7.12":
"f56a0a9c84b35b7e910c4d628c667b843fb3fa1d9dddb0bbf4bf3f21eeaee07f",
"powerpc64-unknown-linux-gnu-0.7.12":
"6eafb546d1b8642a5c27e4dfda213659fee41b0fd150b4c33ef96c917e595344",
"powerpc64le-unknown-linux-gnu-0.7.12":
"0d550348d7a0f54352824cd751dc7baea0c23b17d744a5a7784b6b825e5fc909",
"s390x-unknown-linux-gnu-0.7.12":
"76f5a2c1c13446233312d140136f3f55fa7c162176327830eb109ccaae6c9cea",
"x86_64-apple-darwin-0.7.12":
"a338354420dba089218c05d4d585e4bcf174a65fe53260592b2af19ceec85835",
"x86_64-pc-windows-msvc-0.7.12":
"2cf29c8ffaa2549aa0f86927b2510008e8ca3dcd2100277d86faf437382a371b",
"x86_64-unknown-linux-gnu-0.7.12":
"735891fb553d0be129f3aa39dc8e9c4c49aaa76ec17f7dfb6a732e79a714873a",
"x86_64-unknown-linux-musl-0.7.12":
"bb493f1e6ae426c06b5a103cb71aa60c678976d2377f0590644538658656c2a7",
"aarch64-apple-darwin-0.7.11":
"b5f4cb27a3002d6590c3681377c6d826db0b52e2a9529c7144fcd53fec89ba79",
"aarch64-pc-windows-msvc-0.7.11":
"856bac93344a6980b2703a4143f26fc042c941b02f11ed21f55ec6be3fdfde87",
"aarch64-unknown-linux-gnu-0.7.11":
"80cf695c4e10b532e9db3c7fbbcfb0f8356f2e70e7a4a5040e005f0fae70923d",
"aarch64-unknown-linux-musl-0.7.11":
"2ad20d143c74d7f63d1c99db3999f239f045b7be041e23f6ac8b269c99fa54fe",
"arm-unknown-linux-musleabihf-0.7.11":
"21fec46f09d96cd9f51378fe01ed050dd2032c1fef823f8bd81fa50a2337bbcc",
"armv7-unknown-linux-gnueabihf-0.7.11":
"1a75aaff4695c07151d5b9abb50232ea9fb6f5ccc82d4b319abd8796605d9db8",
"armv7-unknown-linux-musleabihf-0.7.11":
"431b3115ab8fb5e2210d01f29b7901e6eb1174ff65545ec49318d6d4adf4c802",
"i686-pc-windows-msvc-0.7.11":
"985f5eabf42b8ad0166ae6b9f799564220fa932938a8401c890d5e07321ce7c0",
"i686-unknown-linux-gnu-0.7.11":
"619e205d56594fc530dbde6c6a543dd094c796791a5e2cfcd3bb70fa5767bf9d",
"i686-unknown-linux-musl-0.7.11":
"838c6336ba8e88818459b10c3520e83601b9c0a9850a209accef9782c050faad",
"powerpc64-unknown-linux-gnu-0.7.11":
"769c7f32cbc2ad918ccf9ae661d99a6c0d0fd3a0056691832b4a79049a9d06ec",
"powerpc64le-unknown-linux-gnu-0.7.11":
"c9bbbcc2d4f11c83e0edbff5868d95f07f81455adb6f2f909cdb9b992928101b",
"s390x-unknown-linux-gnu-0.7.11":
"0e7b9b27e9fef1b42aa052173a2a47a2ec33bad82425237dfac402b7f69bd073",
"x86_64-apple-darwin-0.7.11":
"97980b067dc3fea16534371b030eaf38554d701de5058004edcfd542a88a2e84",
"x86_64-pc-windows-msvc-0.7.11":
"0f4ef69fde75bb8bcfba7ecf0a4134d8875578cd2e98c9fcfc21573e746c70ac",
"x86_64-unknown-linux-gnu-0.7.11":
"df54b274e99b7ef26030dc21d105ce115bc21a644fc6a321bde9222cb1616de6",
"x86_64-unknown-linux-musl-0.7.11":
"e4e8948645ebea1950a3c77574ce079dfe1c71547ba5a8a141d6e362fa036684",
"aarch64-apple-darwin-0.7.10":
"316b80c19832ff4085748c3a20a3e05f36e1d19234e8b9399a6fd1c971241bce",
"aarch64-pc-windows-msvc-0.7.10":
"1eed0f11bca79403648195f8ce257763d956e861cb73de98c480dae15358bb26",
"aarch64-unknown-linux-gnu-0.7.10":
"8746acb754807050124c6dbcb05fcad2665a3f0cdb2a0fe9de528bd37b092656",
"aarch64-unknown-linux-musl-0.7.10":
"f9000f08850a5c575d5fe1ddc2ec928ecc9f287ecdcd9fa1ea4e3f405b23d4a3",
"arm-unknown-linux-musleabihf-0.7.10":
"657b1b8a534f7fe78e63aff56aac5bbcb21f6254df79825fe204d5c7c1219653",
"armv7-unknown-linux-gnueabihf-0.7.10":
"1cf4a8f40abbd802a7b44fe9695da356701100d267eb3567c17db27e0a24cf69",
"armv7-unknown-linux-musleabihf-0.7.10":
"5282b825f469295dc2b88c94eccd375a93135a279b0711cb10e615e7a71a0617",
"i686-pc-windows-msvc-0.7.10":
"f3c62ff935685d9d4312b82d01ed386493b97c3d22bd434d943fc99ce9aef83a",
"i686-unknown-linux-gnu-0.7.10":
"24a2a3eb0e89b74de6aac492516303747519439775d22254e838d33410ac27b2",
"i686-unknown-linux-musl-0.7.10":
"e317d35af60b38ad32935390a83d12adc3ed7ffdbc2ccccd3039bf6cef650eb3",
"powerpc64-unknown-linux-gnu-0.7.10":
"c1ab41ec53cd720179f3351b61b4ded73ec520804413b75051736829a125e4fe",
"powerpc64le-unknown-linux-gnu-0.7.10":
"ce2c3fdf177facf6c77c5316bb54b9deaf498bee9f664e01a4030ecf27063ab1",
"s390x-unknown-linux-gnu-0.7.10":
"b7603e3f4494e9093a86ace1103e3fcfa172a952989f0c7dca6eeac7f77be81f",
"x86_64-apple-darwin-0.7.10":
"9123e8aa944654404787f80731ec08850c4e9b9129c0d0445c9e41438828b8b8",
"x86_64-pc-windows-msvc-0.7.10":
"1568a71af55e9d9bc4a050ec79134a342a8a3765a73f6b7ec26490c2814f8797",
"x86_64-unknown-linux-gnu-0.7.10":
"ff2ef46298963fee8104ccb3c0a4ecbc97c057ac6a0bc5fec7636c855384252e",
"x86_64-unknown-linux-musl-0.7.10":
"b2cf1f63e83a873652ffef032681bbbe1469e3bab617f7e715e09529c30f5689",
"aarch64-apple-darwin-0.7.9":
"7a8b716a2b5905fb89512371ce6c6dbc0dd0344185bd1cd93a3fe27516eef7ec",
"aarch64-pc-windows-msvc-0.7.9":
"63c0990b9c49dc9f9a92aaaa27ba627cbf9cf6b2e42766588ef6f880208893de",
"aarch64-unknown-linux-gnu-0.7.9":
"23242a8051e2191ed8d61f71a6792f2fc069ef18e6cdf07dedac3d3f648643c5",
"aarch64-unknown-linux-musl-0.7.9":
"60f30508c9002b2b7af55d70db2741cf7ea24c066ced710ad09681a6d2d19b3a",
"arm-unknown-linux-musleabihf-0.7.9":
"57d8e43e257f0ccd9df2b8581338c5145b9937aba53e9c9bb81b31044b720c61",
"armv7-unknown-linux-gnueabihf-0.7.9":
"83353ee7e1724083ea94d7f488fa34c9159995a3996f87017fdf72e422c93242",
"armv7-unknown-linux-musleabihf-0.7.9":
"b2d8d81bc2abbdd857bad7cd3bf0d36c5155c0681aae8ac9fb8f49d54b95b3f2",
"i686-pc-windows-msvc-0.7.9":
"b5dc0dc10d9dd0dcf5729a94e98538418760d13877d4d4b1bc4efa9926280e78",
"i686-unknown-linux-gnu-0.7.9":
"fb8f1a7cb593c819c0fff71afa2dc480237ca80a3f5d8d433c8b51d2ae90ffdf",
"i686-unknown-linux-musl-0.7.9":
"a77592be13fea81ca42b2b7815784e769e1fd9ff476cfab69f2652823f99c55e",
"powerpc64-unknown-linux-gnu-0.7.9":
"26fee4867c158c04dd3a51ff9a23b4220a9ba69fae2e71be618d2cfa48164d96",
"powerpc64le-unknown-linux-gnu-0.7.9":
"d588fbb01cacccb7fd6e0f101d34282ebb0569381f967d332f8072055e39840e",
"s390x-unknown-linux-gnu-0.7.9":
"d823d68ff662b7e59c6791281427bf1019dae791a964ffae31ae1d2d723dfc08",
"x86_64-apple-darwin-0.7.9":
"a4c084568850588b77e4a34c21b7df5c8cf9e2160b4d614307ed92fa12411742",
"x86_64-pc-windows-msvc-0.7.9":
"f91d8a3322a10caf257fd416807bd8d2801285b80b46ee37f2d0c6e426b8822c",
"x86_64-unknown-linux-gnu-0.7.9":
"b8450a419c0bcc85841bbed8511eb59e2a5683ddd3f813f2b98b97babf6b1b8b",
"x86_64-unknown-linux-musl-0.7.9":
"95918a1e1faf851a39cad402f1a77318e8fc90b7f829833ebaff27de9722d60e",
"aarch64-apple-darwin-0.7.8":
"ad6b3825ba277de70b9d0a37055f7d828f3f37416aee1cde65000f330efd4587",
"aarch64-pc-windows-msvc-0.7.8":
"e43448e5e3267dffb6bbdc30ffa291f8db664d1da9d084c44f99dc568f459e0a",
"aarch64-unknown-linux-gnu-0.7.8":
"da9e1c97f1452b25c8955127c92da7b68be228ad0b43bf50bba4dadb25c8b337",
"aarch64-unknown-linux-musl-0.7.8":
"4d18efb46f93fa942dc4c212dea3b6b07e3db62fe57d0c3d08de6bf5d9f9bb51",
"arm-unknown-linux-musleabihf-0.7.8":
"133b1c3fb850ec496bfb4ef84379bfaeff1d2c322114a0984d8a5c2e10e63028",
"armv7-unknown-linux-gnueabihf-0.7.8":
"7d61c6e18e81447482dc80c090c65a6615a1232512899943566baf2808ca37bb",
"armv7-unknown-linux-musleabihf-0.7.8":
"0b6d6afcdb7c78e5df42cb2ab0929d2bec2654a350a8efacc6f95e830a31eb6e",
"i686-pc-windows-msvc-0.7.8":
"0d4b01372ca972543cd40366bb5480bb457e79dcf45b5f662721d709d6932dbd",
"i686-unknown-linux-gnu-0.7.8":
"db1c60961aea7a7f8c64a098801e0138e761b7556d1c1691fc4f3f771f0e47ae",
"i686-unknown-linux-musl-0.7.8":
"b765eb1817bc1d545f4860eff0adeb0c7907ea66be14536653192e588386b308",
"powerpc64-unknown-linux-gnu-0.7.8":
"2c894b104195ab194af05c6ad756ce8746a349a8620c83888207db5fccf29a8f",
"powerpc64le-unknown-linux-gnu-0.7.8":
"4b0d93385685f756068f76af1871dcb7cc8f427ab6d650afc07493d06dca71db",
"s390x-unknown-linux-gnu-0.7.8":
"e58fc9f6d846ccbf50d9bcf27920ff4bc061541df8a6a3aa6f13be24981e0772",
"x86_64-apple-darwin-0.7.8":
"f046249639014eb70b43cbaf83eb6f56aac724ada354f9b9aad65f9960737920",
"x86_64-pc-windows-msvc-0.7.8":
"355736ddf9a01ab9da918b35470027c12128d7ed1d7f54f54771507d79529679",
"x86_64-unknown-linux-gnu-0.7.8":
"285981409c746508c1fd125f66a1ea654e487bf1e4d9f45371a062338f788adb",
"x86_64-unknown-linux-musl-0.7.8":
"8a707e45e0d1a8bdbc5bd1af0ae7d19ffab55f3722c5e73471039561900e3d48",
"aarch64-apple-darwin-0.7.7":
"6a06eaa8165d5abd89c3dc37ffbe1db60fcf49a87d7c612bfca7e87a1514695d",
"aarch64-pc-windows-msvc-0.7.7":
"e86cd59f2569f4bf475e5ad944910142c0ab107ad12613429ad8873a6f41087f",
"aarch64-unknown-linux-gnu-0.7.7":
"013061d4d33385e9a3fc52df18d22334f20f12616970b0d81583d5125ce8d6fa",
"aarch64-unknown-linux-musl-0.7.7":
"4014dc9dc024bb5a082f16c54adcd5936d47dae664bafa38453b3017ede41aab",
"arm-unknown-linux-musleabihf-0.7.7":
"c1dc010e3ab855391f3a6906fcffbeac873d136df2b20cfd998105385444e45c",
"armv7-unknown-linux-gnueabihf-0.7.7":
"e08406cfcc1ccc0c069d22c91008967f662664abdbf8a15779a1944070e0f5b2",
"armv7-unknown-linux-musleabihf-0.7.7":
"35379428e6d001e63714449c26c9111d1d5ee6f3b6a95559c724ad57df9d8d17",
"i686-pc-windows-msvc-0.7.7":
"5e47a44df7707b58884cdf5d30527857ec1bf186e8f200517fd11a572669cacc",
"i686-unknown-linux-gnu-0.7.7":
"fc782a829cccb0201c4a918d9f5a3a114511d734953f7e5e60aed52951264454",
"i686-unknown-linux-musl-0.7.7":
"10b852326ee48502d6da26c7fe394345b7ce7ca94d76f293dbe4cde9577c3993",
"powerpc64-unknown-linux-gnu-0.7.7":
"4b26663e0c21289bd21c05a3ba344e6b069c600e5a6333e660ae16eb38027bd5",
"powerpc64le-unknown-linux-gnu-0.7.7":
"e691d6a8a8c285cd644cf1f6d47c2568740ddca645c860f9bb23799790b54e56",
"s390x-unknown-linux-gnu-0.7.7":
"b21953a1c6c5475306e64f9ccf721762d2fc6aa572ee5268ed61a3b1531f06c1",
"x86_64-apple-darwin-0.7.7":
"4b337495ced2a9797357ee853873c2f5a45cc52f6ed68c9feba3c997443452b0",
"x86_64-pc-windows-msvc-0.7.7":
"a27a1fdf3f6b850dfb45fb009f7ea0fe3db1a59f692ebdc64c24ff8dbd0467d1",
"x86_64-unknown-linux-gnu-0.7.7":
"d83e2b9c2b251c93985824d9a12d97f5b036b7a9ff0b7d647c9ca7ae5ff2ae1b",
"x86_64-unknown-linux-musl-0.7.7":
"3876cafbb6599287a78778d2c265fd2050acfc247409ed677a8583f20385a3ae",
"aarch64-apple-darwin-0.7.6":
"a0e7c0e44ec4b2743e1c1d1f6edca1418687b05084f48c007c6e1c7d3a35bcd2",
"aarch64-pc-windows-msvc-0.7.6":
"2ada1290e87144726b6a723b38fd34ce64da5a3fe820a21685564924f894408c",
"aarch64-unknown-linux-gnu-0.7.6":
"4eae30038653bbec528257054fe07495f20c5d4bc663b630258e87d159e282b6",
"aarch64-unknown-linux-musl-0.7.6":
"9e59f0753383d6a27404be238360165e415605b1504b209349852a27cc01d48f",
"arm-unknown-linux-musleabihf-0.7.6":
"b81d59deeba1f92aba48aefce2b364530baa1cb8aa4c59fc2a90c9acf98c9a20",
"armv7-unknown-linux-gnueabihf-0.7.6":
"e9d1b7d52def14fb1ab8af2fa52963ff8e4323934ec2e78720a94d92261fa9fc",
"armv7-unknown-linux-musleabihf-0.7.6":
"c525ad0f41c67d944e56362adffcda206aef36f3ed84daf90386fcbfa4a62c66",
"i686-pc-windows-msvc-0.7.6":
"aca45dbdb75cd2c5fdf70bf5ff436306d476352b135fcab544c4a9759d7d1af8",
"i686-unknown-linux-gnu-0.7.6":
"71448fddb93306b1b67f0c2e711eb79b6ea33d027212259abd7546a48d15b49f",
"i686-unknown-linux-musl-0.7.6":
"a641ada8b2ca3ec22c24414c2edef8c01370d7d4ac79998eac091b84f743c476",
"powerpc64-unknown-linux-gnu-0.7.6":
"9f63727933d11b0157ebc3fd640811c1224fe55215acff24e8ec5747fb4f90fc",
"powerpc64le-unknown-linux-gnu-0.7.6":
"da746e6e809f32ab9709e45c7d5e7c37901478cc610119c08ae335c43ac089b2",
"s390x-unknown-linux-gnu-0.7.6":
"a07d4303e97f72312f9db8a1a67bae08f02d883f1879fa917b9ae87aec90d933",
"x86_64-apple-darwin-0.7.6":
"718cfd68b13a1a642fadc53646742785cd33b2e06124a01454ad358617841852",
"x86_64-pc-windows-msvc-0.7.6":
"4c81818cc89d75ca54762e2641deebad69c0af6594212a9fb24b9849df8ac413",
"x86_64-unknown-linux-gnu-0.7.6":
"0c5f0935bba35359150774fc5876d72947b863b8173c94dda776e6d88014a0df",
"x86_64-unknown-linux-musl-0.7.6":
"be755e8503b7e7174f24ad8cdcadab94f0662fe0b60df4fc35e1ddae48b19f35",
"aarch64-apple-darwin-0.7.5":
"8d82c7f6fcfd79b142c8845f694c8225dd5b401cd720e8e1e2a35a1c4150f516",
"aarch64-pc-windows-msvc-0.7.5":
"9ec005bf0b472d47ab730e463cc5a156b18ca9a9a6fe1c72bf18d97384d0b717",
"aarch64-unknown-linux-gnu-0.7.5":
"715bd03f6b2924b8f742b716d0f4b9d31ccbb1ad4a7f8df4ce2f572efff7f2cb",
"aarch64-unknown-linux-musl-0.7.5":
"ce23f5e1d22f1cdfc0db4358d3b2642c115ad99d404aef15030af31e39ef3484",
"arm-unknown-linux-musleabihf-0.7.5":
"2e85c3ba3ba461822940bca197198babcb1a8ce620c3d1c624423e68bba49d43",
"armv7-unknown-linux-gnueabihf-0.7.5":
"cbd7990fb0d06750f7e966a54dc344396e4d605d029aa94a0cf00d695cb283e9",
"armv7-unknown-linux-musleabihf-0.7.5":
"96d5eb1246e654f4e2c37542797196d94c0d72fe44e470050a9fbf67e356fb10",
"i686-pc-windows-msvc-0.7.5":
"84e70b46e0f218db9573b0efce085c13e0e5ce7808b3143b990d1a334e5a8ee6",
"i686-unknown-linux-gnu-0.7.5":
"20efc06bc129d8757e81fdd00cf828a9c1d928a4a30c8c538c6d1ed219b52c5d",
"i686-unknown-linux-musl-0.7.5":
"3cc8dbcdb230a6abbaa3cd6b918d6150f747f45f8f96b7399d6258c54fab5867",
"powerpc64-unknown-linux-gnu-0.7.5":
"dab5571d40ce3347fe295b9afec9f560ad709461883ae604d0de827071b8d2f8",
"powerpc64le-unknown-linux-gnu-0.7.5":
"4c3843068cd0e1bf9e5f68e5487fba28feef3196c025a1b1eaddd533a52b7bd7",
"s390x-unknown-linux-gnu-0.7.5":
"1b286e386a4d66dd9393caf78888a881cf63202522a6a88262e551bc7b8b3995",
"x86_64-apple-darwin-0.7.5":
"751ae339c91a6b8eddb868a64222c2533c722042476e4f28466683ddf96fa488",
"x86_64-pc-windows-msvc-0.7.5":
"e95cb3789b2f80052c80048ff2865e06eae7512d06d304127898c70c4fd3564f",
"x86_64-unknown-linux-gnu-0.7.5":
"a3d1964080a855e1f8806975b5fa943376045a64852c06ba80540813aa333305",
"x86_64-unknown-linux-musl-0.7.5":
"be058167ae65f7a2b56f607b070bd4e93dacd09be52511ccb8ebb10fa132709f",
"aarch64-apple-darwin-0.7.4":
"1af8c353479890b29b75933706890627555bbc07e12a0117ae62da3ec2ee372e",
"aarch64-pc-windows-msvc-0.7.4":
"3800868f3cc1509d6ea16036e3268ff45fd22a85c922cf3de4fb9535dbb0099e",
"aarch64-unknown-linux-gnu-0.7.4":
"c407e4c7431ee6cb28deb842edb49fea1ee3f5674a357f11244bfb0fd57e2ae4",
"aarch64-unknown-linux-musl-0.7.4":
"ff0d9172d2105da526501e01c38ecf0558ea323cfcd25adff9a89cd7fad5c076",
"arm-unknown-linux-musleabihf-0.7.4":
"4e6b7d15444ae58bc196ee4e7e6e11b451b4e994c0c73968254d3d4ff1c89bca",
"armv7-unknown-linux-gnueabihf-0.7.4":
"303bac0f866c450fefe7543297fa87563941f924cb13f007dfe7cc02ac64dcd7",
"armv7-unknown-linux-musleabihf-0.7.4":
"004e22fe946fabec6b5dff668f4bd8f93569dab30efe0f3d4640f266760744bd",
"i686-pc-windows-msvc-0.7.4":
"113070d23ba1498cf9fff9ae634893a2a1dce42a0baa617c4a82009f61c71fbc",
"i686-unknown-linux-gnu-0.7.4":
"19f0f19dfe9d722a2fb89bde4771682cf632182d6204cc4ddb11d700d5b34c07",
"i686-unknown-linux-musl-0.7.4":
"fe281041401b4140a387f6101e64fcf4abb344791c12398c441c7e339510423d",
"powerpc64-unknown-linux-gnu-0.7.4":
"ef2320254e52234750d9745e6dc6e3b3c990aa51e506057d0869d4d18b55e5e3",
"powerpc64le-unknown-linux-gnu-0.7.4":
"e143278764aab89b68c6f55dfdfa4242c8f5d5213880b584880a776a5ca1b0dd",
"s390x-unknown-linux-gnu-0.7.4":
"14dbae76be8999dcc8336fac1f6f86710e7ce4f4c3e1aec01e7ef7f9a3468811",
"x86_64-apple-darwin-0.7.4":
"a6c5fd8aa67db03447934b14703a2d7bb04b5e5f7ff45630a749760393c5610f",
"x86_64-pc-windows-msvc-0.7.4":
"966d0dd8d86f02f94128714180cd5ff42cd2ea9b33b86fc197f25cfa066aaea1",
"x86_64-unknown-linux-gnu-0.7.4":
"5264d9b2bf021fccbaf6edb97bc17ce4863687745f2443460a8ca71e55891614",
"x86_64-unknown-linux-musl-0.7.4":
"70083140d9efaf82cbb7ffa6231d5de3536d6497ec84d708afaf9b7e2fffbac2",
"aarch64-apple-darwin-0.7.3":
"162b328fc63e0075d4267688201de91356e1c1b81db50419fa4466cfe2dfdebc",
"aarch64-pc-windows-msvc-0.7.3":
"542b318c98b0295dd3d620fbcd63388757f382e14c69c569cb3ce793aa75c975",
"aarch64-unknown-linux-gnu-0.7.3":
"2c2be8bbb83e9bc722f2013de8bb7506cfe6521d0e30b4ad046849d036b3eea6",
"aarch64-unknown-linux-musl-0.7.3":
"a3f01c3c993b57fa8d13855c5ba60e3847bda4f8e795a52d52879e242e886604",
"arm-unknown-linux-musleabihf-0.7.3":
"87f72dc1c3b1b598e08c8efc7f9ab8eca23df8549cf4c1fc27a4a6b2524809c1",
"armv7-unknown-linux-gnueabihf-0.7.3":
"69f285d861cd1809a4bad0f08c2ea8a77ec17cbe20524a4ebbee4c5a7c868520",
"armv7-unknown-linux-musleabihf-0.7.3":
"1a0071551cd575bbecef3218fb13bf05ab96ceb71b4b1d13a99b8a4af059f99f",
"i686-pc-windows-msvc-0.7.3":
"1c9becbc63c15dcf43b09c0ba84e0ba6fa533fa799b7baf57a36363ef42fbc52",
"i686-unknown-linux-gnu-0.7.3":
"a2b56cb262337380aa02b6d131e973d54090c3e655d3e55385d02850454c24de",
"i686-unknown-linux-musl-0.7.3":
"d6e846079ef38929206079147448c5683a3018116b2b3e6059cf4c26bcfbb290",
"powerpc64-unknown-linux-gnu-0.7.3":
"a9b94c618a5d5bc992102733a45759e38db9a9e069830c3e94c744d1bfc33c21",
"powerpc64le-unknown-linux-gnu-0.7.3":
"782e9c343cb7c219b5514e64a799a8b9fa82585f6176b53ed095dc030a22d993",
"s390x-unknown-linux-gnu-0.7.3":
"ea803eafd6e3414d3a18aed9257f8ded8f7d1f6f182d2572969c4c487faa1986",
"x86_64-apple-darwin-0.7.3":
"d676940b51bdd5606b218bc2965fed67731f94ad07926045716acbf78626e09b",
"x86_64-pc-windows-msvc-0.7.3":
"20d3a420abbf2af9699cd9a02225d9325344046af8deb15563cc451e3c4fd059",
"x86_64-unknown-linux-gnu-0.7.3":
"17fc118ba4d7e9303f84fcabdc0a593fc3480ba76eb6980668fdbbb96fe88562",
"x86_64-unknown-linux-musl-0.7.3":
"325143825b88e7b0dadd1a8e8d3cbe4791d3cbbb9e2244350d917803fec8b3d1",
"aarch64-apple-darwin-0.7.2":
"8edc0bea8a9e35409f970b352036326393e79a6039577d8cc9ef63872c178a99",
"aarch64-pc-windows-msvc-0.7.2":
"a3d7affcd62e617bd2dd2a91fde679dd8d68a84762c8f3aaac294606ec14ffe5",
"aarch64-unknown-linux-gnu-0.7.2":
"2872fdf4785666575d129ba90590c44e6508e22584735f3e7e8a30d773dfc3db",
"aarch64-unknown-linux-musl-0.7.2":
"d5b31df40da794dab943c55e67d14fc111146e185b14a6de6eb749ee264a641c",
"arm-unknown-linux-musleabihf-0.7.2":
"fd203cef8c6cd775c2a5f7da31f69a72020a6c74b6fb808db3217ab04b70a038",
"armv7-unknown-linux-gnueabihf-0.7.2":
"b69999c29c759f5a47f71c1f328d6e7c489229efa5ce0e84afce026201730abb",
"armv7-unknown-linux-musleabihf-0.7.2":
"f98a827e198de2d0a7224ecad87eb64c18c9c0ed4f0c768456e9b48482015d2f",
"i686-pc-windows-msvc-0.7.2":
"8b06489b2cc8814fc23dae4562c5e7d500e782c2b0d2556529f515a4d1e0b8e3",
"i686-unknown-linux-gnu-0.7.2":
"36f26a496c6dc53703e070761ef96f07acc88eae868f94c4665f5c17a88d8acf",
"i686-unknown-linux-musl-0.7.2":
"763bf7cd2119c40858cbd0892fd9b2c7102c79e5c590800b2f8e9c2f427cb7d1",
"powerpc64-unknown-linux-gnu-0.7.2":
"bd4a42ed0b9ab725f0cb565ae29c338ea6ce0689ddb35da632535a47c891e72f",
"powerpc64le-unknown-linux-gnu-0.7.2":
"9a598869167b7e56ab971614972a2c486c8137681210094009a6fb61ac36699b",
"s390x-unknown-linux-gnu-0.7.2":
"7dd2240d60b1628869a2348ca0901cceee572bc20116ab04f9484ea0b6d40813",
"x86_64-apple-darwin-0.7.2":
"7d30b59d54900c97c492f3c07ff21cc3387a9e5bd8ca6db2d502462eaaeefd68",
"x86_64-pc-windows-msvc-0.7.2":
"35fd793df52fd13773425c9a97cc94cc13c8ee63abec6380b5083c183c688019",
"x86_64-unknown-linux-gnu-0.7.2":
"cfaab1b5166a6439ff66f020333d3a12bbdf622deee3b510718283e8f06c9de7",
"x86_64-unknown-linux-musl-0.7.2":
"dd10babf6c531597d246c97e55e32ca17b44fe251405fe539ec8ea2f22fac2d6",
"aarch64-apple-darwin-0.7.1":
"236d70d7738a5f41b45253d68665fda039fecee579939921e0795680d300f55f",
"aarch64-pc-windows-msvc-0.7.1":
"5fdbc703e6f22696ac053811e9750ff3cf50814aabf1792b9bc49f2647b836c6",
"aarch64-unknown-linux-gnu-0.7.1":
"ee8a98f485a22837be9e95eb55e4cd06db6c8deba94b6a2dd63d828fb5ef4226",
"aarch64-unknown-linux-musl-0.7.1":
"b65409802669913f5fd49ed6656d45c434aa9273fb864aefa0fbbb685b9834b6",
"arm-unknown-linux-musleabihf-0.7.1":
"96cfceb7716a9003750111c7f1a62aebccf02e0288f95bc670c69062d2ec6e61",
"armv7-unknown-linux-gnueabihf-0.7.1":
"f156bdedd8a969dc49a5e01f6b38c7e50a63cf69acf3b5982adfaf232dfcb80f",
"armv7-unknown-linux-musleabihf-0.7.1":
"ae21a9c0b413976a24c51f095603294ca36da9089813022cb9bae0b84f0be6de",
"i686-pc-windows-msvc-0.7.1":
"38a98c532e463169e8c4f1ae3649dd500c168f6db687e3b29570930c55ffedf7",
"i686-unknown-linux-gnu-0.7.1":
"133a41ae763d8474cc4ff8e0c24ab8cdaf422f261cbcc284f4b90b57aa60f3fe",
"i686-unknown-linux-musl-0.7.1":
"6e55fea1ee9a8c5c1d29b3aeb033a8b01d3895a347b27ee108ba94c53d60cfb7",
"powerpc64-unknown-linux-gnu-0.7.1":
"cd6714a55577d6eb0ecad313646a4ade3c7a4407e1a2a4703a2fbb83c88681d5",
"powerpc64le-unknown-linux-gnu-0.7.1":
"a354eda3a43323cf5445cfdf0197ebd4b36e967df9537e97910c47dcd9321aaa",
"s390x-unknown-linux-gnu-0.7.1":
"59d194c544a8a53186c3da6ac26f90ab0f453fae71fd2e0d4d177a8ed8890abb",
"x86_64-apple-darwin-0.7.1":
"a81e655cc0b6a5ccf9197f2dc0df513171e68804e498c17076d6e56b41234c5d",
"x86_64-pc-windows-msvc-0.7.1":
"b4d48072e384014ecd04ec5c544aee523ead1faaebcd428ba5f6abf2836096df",
"x86_64-unknown-linux-gnu-0.7.1":
"cec71afc57276b1857970d6ec96e110989c3e4ed0d81f0c4c11c1231970b7e56",
"x86_64-unknown-linux-musl-0.7.1":
"9b714ddf470795d5f1aa5c8111ea153139ae202216ffbe4105fb92f202e0b02b",
"aarch64-apple-darwin-0.7.0":
"964ebe641b563920e0650a60bf5ac21e6c8c56557704e5ecfaaad7ff62c3a73c",
"aarch64-pc-windows-msvc-0.7.0":
"c00950aa4b243e1043d1ec651fdfd71e5f4e5b80135b30fcf3b70fc201aeb1c4",
"aarch64-unknown-linux-gnu-0.7.0":
"540fcb8f2f972c82260a8063a6a4b496d7ff858edc42aa0e2c733a7b55ef8dd8",
"aarch64-unknown-linux-musl-0.7.0":
"f6367e288617021aba6176945ba20a7f8ea3b22a5f8896314a7d0acb863b533e",
"arm-unknown-linux-musleabihf-0.7.0":
"6fc85b25a4b3cb27b924e1f3181f96197667b7465fe52bf703afb5539d09c09c",
"armv7-unknown-linux-gnueabihf-0.7.0":
"035b46fde90a7ee4b48292ff9d116cc771b10d9e955d1979b1a1cd6b3998f602",
"armv7-unknown-linux-musleabihf-0.7.0":
"5f43390685fbb9f29d6075df1d492f9bf39cabb868bf37e0da3cd925c679b068",
"i686-pc-windows-msvc-0.7.0":
"f045db339b2acecc790d2071598275086978a99262d9c4b0c52189c26cba68a9",
"i686-unknown-linux-gnu-0.7.0":
"9936acd12616548a04ce6875aa125ea34f3b288181f2188bfb72d914965680be",
"i686-unknown-linux-musl-0.7.0":
"bfad15225152d9fa8769731b35dd53e0b39cba045900b6d43f90e655652af5b8",
"powerpc64-unknown-linux-gnu-0.7.0":
"91cfac9b5a9ba844c3ba90944e00bfb79da2983b7c6306bdb054c75ab3fea0fe",
"powerpc64le-unknown-linux-gnu-0.7.0":
"d690793c993a1a03049b7e7f3f0e41c94ba2c45b0155bdde917d550ecd4ee02d",
"s390x-unknown-linux-gnu-0.7.0":
"429ffee0dddd8c0c59e246fb89bef721d1ed22a4c051925d7dfafcfc7dce464f",
"x86_64-apple-darwin-0.7.0":
"dc5037f3ffbf8074b3ee63de7a73aa57421b0da0837a478e26317424dbab16f3",
"x86_64-pc-windows-msvc-0.7.0":
"62836c9d6e3f346d06c45fee4109be21ca9d1df8d087472dcc8d51815f182332",
"x86_64-unknown-linux-gnu-0.7.0":
"ca1e8196672bf04ccb926519f2071208a8d6c0ce02fb65bc7d0a85be1b684b0f",
"x86_64-unknown-linux-musl-0.7.0":
"08e1bb8fdea2c6d5edbe40ab1651de097b884020056c0925a9973582ff669d04",
"aarch64-apple-darwin-0.6.17":
"e686c73b9314c77a36a6a4c9f94b07c001f0c9157c50c63c764941141c0d0088",
"aarch64-pc-windows-msvc-0.6.17":
"3a9468e90df970f75759da6caed7dfde2816e0f3842031235c3835fc0c4e7d09",
"aarch64-unknown-linux-gnu-0.6.17":
"6fb716c36e8ca9cf98b7cb347b0ced41679145837eb22890ee5fa9d8b68ce9f5",
"aarch64-unknown-linux-musl-0.6.17":
"98750f5c0cd9eb520799d10649efb18441b616150f07e6c1125f616a3fd137e8",
"arm-unknown-linux-musleabihf-0.6.17":
"649d8d0f37e8365af5aaa012b09dd083d6e71018e569a4d2e78316d5013f18a7",
"armv7-unknown-linux-gnueabihf-0.6.17":
"efc12955d7a6120ea0be2de5ee03dbb33d0d7d9de9dbe0dce560514f2ee129d3",
"armv7-unknown-linux-musleabihf-0.6.17":
"0661d97df8262ef83ccdc6a55ed101abfe8f1cf1ff1be879d9b0d7d1e894c970",
"i686-pc-windows-msvc-0.6.17":
"56dea6c98e1606e95445e77177d7e3cd49bb3d1a63c81b11fe49bf733adb62a2",
"i686-unknown-linux-gnu-0.6.17":
"4bc37f8303a4a5aae1c309f08166884027f325b6872c418cfbaa2cf20a2b2ac5",
"i686-unknown-linux-musl-0.6.17":
"8ec08cca0806a9205ccf5758258c617b57e413b33275bcd861fca363e0eaddf7",
"powerpc64-unknown-linux-gnu-0.6.17":
"d33b70ab206e1ed0663e755506a11db3776787012bfe9d2b2138a90942f506be",
"powerpc64le-unknown-linux-gnu-0.6.17":
"cd91a579850fc45d3b786a654a2c0343836f007929b2e35de9606082eec5361f",
"s390x-unknown-linux-gnu-0.6.17":
"3c753a9d3485bbac23403a0b41a9e70ceeb586f3b4df891ced7ed27d4c6c542b",
"x86_64-apple-darwin-0.6.17":
"61e9bdc02aacdb994da6ea2a477b11b34c23fc09203237aeee8d3817daab012d",
"x86_64-pc-windows-msvc-0.6.17":
"32882cf98f646cafca003e7a7c471b7ff4ba977b681c9fa3b12cf908ba64af82",
"x86_64-unknown-linux-gnu-0.6.17":
"720ec28f7a94aa8cd91d3d57dec1434d64b9ae13d1dd6a25f4c0cdb837ba9cf6",
"x86_64-unknown-linux-musl-0.6.17":
"28bd6b50be068cc09d8a46b76f8c4b72271d471c6673a5bdb47793622e62224d",
"aarch64-apple-darwin-0.6.16":
"2b1ea0d5cf27375738f5f0f229587bc3590c0f501cb00bc48133a3d122d28364",
"aarch64-pc-windows-msvc-0.6.16":
"5abca187b8aecbdffef7547cb39a527168e4cb93d8d2e4ce14271f5831a4d902",
"aarch64-unknown-linux-gnu-0.6.16":
"a82f96ab5f285825f9acee6ac1563683c4940d80df2f08549cad43d37c7ba4a7",
"aarch64-unknown-linux-musl-0.6.16":
"ae3f793c62fe6ced80483d6c78cb49f06a01088bc5d86f1446a9b5988b2acecc",
"arm-unknown-linux-musleabihf-0.6.16":
"91f7f5a4eb97b7983a8e5421d5bfea8802064422ce2f535055f373726eb0aa9a",
"armv7-unknown-linux-gnueabihf-0.6.16":
"a4ffe043952bf4e757a5ca0f546bb83b055b6ee0646dd5c4f5e5f13dbc5ee8f8",
"armv7-unknown-linux-musleabihf-0.6.16":
"0237c8d9914e0d9fd2f022d6d5f91ce392d13e0ccbb7fa7ebe601296a67c3d6c",
"i686-pc-windows-msvc-0.6.16":
"f5c6400f07db2014b2b0c66770e1125fa70efe4dd99cc8351838bed0045c34f8",
"i686-unknown-linux-gnu-0.6.16":
"f46f89efcc599a6695e8378a1201e62cd4afb9a4438d65a89098ab11201f84ab",
"i686-unknown-linux-musl-0.6.16":
"afe69380a9d3592a87893d6bdc11ff33e4180b98f1e1fd4e626c0307d7598914",
"powerpc64-unknown-linux-gnu-0.6.16":
"bf455747580dbbf76cbcf616f67f825c40bd1bdec20c9ff993e03485f9eaad44",
"powerpc64le-unknown-linux-gnu-0.6.16":
"508ec561b1740a551d2b33e96671e0e8435a1bcc0e97080f3d7ba88a096bd360",
"s390x-unknown-linux-gnu-0.6.16":
"e25c5527826524f51f114388bff47871bf1ca67badbfd72d45427bdba4b46794",
"x86_64-apple-darwin-0.6.16":
"ce512b5e40a8ad2916a46df2bdba729d5541e4b3649a09aaddff6e525be012e4",
"x86_64-pc-windows-msvc-0.6.16":
"f1b4c24ec602b6c0b06b6bc64aa447bbe4cf313e93fbec326741961e80ffa8b7",
"x86_64-unknown-linux-gnu-0.6.16":
"e9ef28b675df68978a60f87192fb8c730b8bfca9bef42b121686b218ea0f6542",
"x86_64-unknown-linux-musl-0.6.16":
"25024557931d04cc34f80b818c7547c9c62b762ec6df807e30cb52f383fa2615",
"aarch64-apple-darwin-0.6.15":
"1c5b25f75c6438b6910dbc4c6903debe53f31ee14aee55d02243dfe7bf7c9f72",
"aarch64-pc-windows-msvc-0.6.15":
"317fe0b29e647aad1e9f02ffe764dcbbc6e2ef189f018c81b673884173ab98ba",
"aarch64-unknown-linux-gnu-0.6.15":
"3bf650aec162157b7e01461f41c2a9797366b6043452c6e7035c6c926d0a585b",
"aarch64-unknown-linux-musl-0.6.15":
"183cebae8c9d91bbd48219f9006a5c0c41c90a075d6724aec53a7ea0503c665a",
"arm-unknown-linux-musleabihf-0.6.15":
"d83c76e130ffb25fb6a4ba8ea5870207d810190733a14ae87084c63a417912f6",
"armv7-unknown-linux-gnueabihf-0.6.15":
"d661ec44e5fc7553cd8dd5ad5f48848c5a4d5279ba0df0036c0e2422ec9f312b",
"armv7-unknown-linux-musleabihf-0.6.15":
"6fc86a829965362f99602c47627b269c9b676731586a60ca5bb9d6069677938d",
"i686-pc-windows-msvc-0.6.15":
"7f15e3377e94fac882b33465cb8cbb24705f5c8d63d9d65c6f1b0816c1d30a0b",
"i686-unknown-linux-gnu-0.6.15":
"bfedd03be9f579a9bc10e6c25176017e514cca0500cfb9bba43794387a577661",
"i686-unknown-linux-musl-0.6.15":
"82bf8666c0a57514af4e5403f162314b710e1682e1065ab71a845ebb5d8db0b7",
"powerpc64-unknown-linux-gnu-0.6.15":
"6e9795344d61ee9ac497d6e03a447d808f2aab13925f30e44c00638abec57deb",
"powerpc64le-unknown-linux-gnu-0.6.15":
"e38f13284ed8b645b87ef07c8b549d1f1a5b746aa0411c2115dcd5cda0da13fc",
"s390x-unknown-linux-gnu-0.6.15":
"416f61249b330ea9735cda0c866c9460f87111bc9d4e040c98916fda6a45be09",
"x86_64-apple-darwin-0.6.15":
"97adf61511c0f6ea42c090443c38d8d71116b78ae626363f9f149924c91ae886",
"x86_64-pc-windows-msvc-0.6.15":
"10c75d566db1447f3bdcbcb31d6598e4b5f4ea638be5d8b73a7350929389512b",
"x86_64-unknown-linux-gnu-0.6.15":
"85d98ef282cdbfcb4020922f0c12421ecca4130f0a4570d3b827a15ffd544acc",
"x86_64-unknown-linux-musl-0.6.15":
"78289c93836cb32b8b24e3216b5b316e7fdf483365de2fc571844d308387e8a4",
"aarch64-apple-darwin-0.6.14": "aarch64-apple-darwin-0.6.14":
"4ea4731010fbd1bc8e790e07f199f55a5c7c2c732e9b77f85e302b0bee61b756", "4ea4731010fbd1bc8e790e07f199f55a5c7c2c732e9b77f85e302b0bee61b756",
"aarch64-pc-windows-msvc-0.6.14": "aarch64-pc-windows-msvc-0.6.14":

View File

@@ -7,6 +7,10 @@ import { OWNER, REPO, TOOL_CACHE_NAME } from "../utils/constants";
import type { Architecture, Platform } from "../utils/platforms"; import type { Architecture, Platform } from "../utils/platforms";
import { validateChecksum } from "./checksum/checksum"; import { validateChecksum } from "./checksum/checksum";
import { Octokit } from "../utils/octokit"; import { Octokit } from "../utils/octokit";
import {
getDownloadUrl,
getLatestKnownVersion as getLatestVersionInManifest,
} from "./version-manifest";
export function tryGetFromToolCache( export function tryGetFromToolCache(
arch: Architecture, arch: Architecture,
@@ -23,36 +27,85 @@ export function tryGetFromToolCache(
return { version: resolvedVersion, installedPath }; return { version: resolvedVersion, installedPath };
} }
export async function downloadVersion( export async function downloadVersionFromGithub(
serverUrl: string,
platform: Platform, platform: Platform,
arch: Architecture, arch: Architecture,
version: string, version: string,
checkSum: string | undefined, checkSum: string | undefined,
githubToken: string, githubToken: string,
): Promise<{ version: string; cachedToolDir: string }> { ): Promise<{ version: string; cachedToolDir: string }> {
const resolvedVersion = await resolveVersion(version, githubToken);
const artifact = `uv-${arch}-${platform}`; const artifact = `uv-${arch}-${platform}`;
let extension = ".tar.gz"; const extension = getExtension(platform);
if (platform === "pc-windows-msvc") { const downloadUrl = `${serverUrl}/${OWNER}/${REPO}/releases/download/${version}/${artifact}${extension}`;
extension = ".zip"; return await downloadVersion(
} downloadUrl,
const downloadUrl = `https://github.com/${OWNER}/${REPO}/releases/download/${resolvedVersion}/${artifact}${extension}`; artifact,
core.info(`Downloading uv from "${downloadUrl}" ...`); platform,
arch,
version,
checkSum,
githubToken,
);
}
export async function downloadVersionFromManifest(
manifestUrl: string | undefined,
platform: Platform,
arch: Architecture,
version: string,
checkSum: string | undefined,
githubToken: string,
): Promise<{ version: string; cachedToolDir: string }> {
const downloadUrl = await getDownloadUrl(
manifestUrl,
version,
arch,
platform,
);
if (!downloadUrl) {
core.info(
`manifest-file does not contain version ${version}, arch ${arch}, platform ${platform}. Falling back to GitHub releases.`,
);
return await downloadVersionFromGithub(
"https://github.com",
platform,
arch,
version,
checkSum,
githubToken,
);
}
return await downloadVersion(
downloadUrl,
`uv-${arch}-${platform}`,
platform,
arch,
version,
checkSum,
githubToken,
);
}
async function downloadVersion(
downloadUrl: string,
artifactName: string,
platform: Platform,
arch: Architecture,
version: string,
checkSum: string | undefined,
githubToken: string,
): Promise<{ version: string; cachedToolDir: string }> {
core.info(`Downloading uv from "${downloadUrl}" ...`);
const downloadPath = await tc.downloadTool( const downloadPath = await tc.downloadTool(
downloadUrl, downloadUrl,
undefined, undefined,
githubToken, githubToken,
); );
await validateChecksum( await validateChecksum(checkSum, downloadPath, arch, platform, version);
checkSum,
downloadPath,
arch,
platform,
resolvedVersion,
);
let uvDir: string; let uvDir: string;
const extension = getExtension(platform);
if (platform === "pc-windows-msvc") { if (platform === "pc-windows-msvc") {
const fullPathWithExtension = `${downloadPath}${extension}`; const fullPathWithExtension = `${downloadPath}${extension}`;
await fs.copyFile(downloadPath, fullPathWithExtension); await fs.copyFile(downloadPath, fullPathWithExtension);
@@ -60,26 +113,39 @@ export async function downloadVersion(
// On windows extracting the zip does not create an intermediate directory // On windows extracting the zip does not create an intermediate directory
} else { } else {
const extractedDir = await tc.extractTar(downloadPath); const extractedDir = await tc.extractTar(downloadPath);
uvDir = path.join(extractedDir, artifact); uvDir = path.join(extractedDir, artifactName);
} }
const cachedToolDir = await tc.cacheDir( const cachedToolDir = await tc.cacheDir(
uvDir, uvDir,
TOOL_CACHE_NAME, TOOL_CACHE_NAME,
resolvedVersion, version,
arch, arch,
); );
return { version: resolvedVersion, cachedToolDir }; return { version: version, cachedToolDir };
}
function getExtension(platform: Platform): string {
return platform === "pc-windows-msvc" ? ".zip" : ".tar.gz";
} }
export async function resolveVersion( export async function resolveVersion(
versionInput: string, versionInput: string,
manifestFile: string | undefined,
githubToken: string, githubToken: string,
): Promise<string> { ): Promise<string> {
core.debug(`Resolving version: ${versionInput}`); core.debug(`Resolving version: ${versionInput}`);
const version = let version: string;
if (manifestFile) {
version =
versionInput === "latest"
? await getLatestVersionInManifest(manifestFile)
: versionInput;
} else {
version =
versionInput === "latest" versionInput === "latest"
? await getLatestVersion(githubToken) ? await getLatestVersion(githubToken)
: versionInput; : versionInput;
}
if (tc.isExplicitVersion(version)) { if (tc.isExplicitVersion(version)) {
core.debug(`Version ${version} is an explicit version.`); core.debug(`Version ${version} is an explicit version.`);
return version; return version;

View File

@@ -0,0 +1,91 @@
import { promises as fs } from "node:fs";
import * as core from "@actions/core";
import * as semver from "semver";
import { fetch } from "../utils/fetch";
import { join } from "node:path";
const localManifestFile = join(__dirname, "..", "..", "version-manifest.json");
interface ManifestEntry {
version: string;
artifactName: string;
arch: string;
platform: string;
downloadUrl: string;
}
export async function getLatestKnownVersion(
manifestUrl: string | undefined,
): Promise<string> {
const manifestEntries = await getManifestEntries(manifestUrl);
return manifestEntries.reduce((a, b) =>
semver.gt(a.version, b.version) ? a : b,
).version;
}
export async function getDownloadUrl(
manifestUrl: string | undefined,
version: string,
arch: string,
platform: string,
): Promise<string | undefined> {
const manifestEntries = await getManifestEntries(manifestUrl);
const entry = manifestEntries.find(
(entry) =>
entry.version === version &&
entry.arch === arch &&
entry.platform === platform,
);
return entry ? entry.downloadUrl : undefined;
}
async function getManifestEntries(
manifestUrl: string | undefined,
): Promise<ManifestEntry[]> {
let data: string;
if (manifestUrl !== undefined) {
core.info(`Fetching manifest-file from: ${manifestUrl}`);
const response = await fetch(manifestUrl, {});
if (!response.ok) {
throw new Error(
`Failed to fetch manifest-file: ${response.status} ${response.statusText}`,
);
}
data = await response.text();
} else {
core.info("manifest-file not provided, reading from local file.");
const fileContent = await fs.readFile(localManifestFile);
data = fileContent.toString();
}
return JSON.parse(data);
}
export async function updateVersionManifest(
manifestUrl: string,
downloadUrls: string[],
): Promise<void> {
const manifest: ManifestEntry[] = [];
for (const downloadUrl of downloadUrls) {
const urlParts = downloadUrl.split("/");
const version = urlParts[urlParts.length - 2];
const artifactName = urlParts[urlParts.length - 1];
if (!artifactName.startsWith("uv-")) {
continue;
}
if (artifactName.startsWith("uv-installer")) {
continue;
}
const artifactParts = artifactName.split(".")[0].split("-");
manifest.push({
version: version,
artifactName: artifactName,
arch: artifactParts[1],
platform: artifactName.split(`uv-${artifactParts[1]}-`)[1].split(".")[0],
downloadUrl: downloadUrl,
});
}
core.debug(`Updating manifest-file: ${JSON.stringify(manifest)}`);
await fs.writeFile(manifestUrl, JSON.stringify(manifest));
}

View File

@@ -1,9 +1,10 @@
import * as core from "@actions/core"; import * as core from "@actions/core";
import * as path from "node:path"; import * as path from "node:path";
import { import {
downloadVersion,
tryGetFromToolCache, tryGetFromToolCache,
resolveVersion, resolveVersion,
downloadVersionFromGithub,
downloadVersionFromManifest,
} from "./download/download-version"; } from "./download/download-version";
import { restoreCache } from "./cache/restore-cache"; import { restoreCache } from "./cache/restore-cache";
@@ -14,21 +15,23 @@ import {
type Platform, type Platform,
} from "./utils/platforms"; } from "./utils/platforms";
import { import {
activateEnvironment as activateEnvironmentInput,
cacheLocalPath, cacheLocalPath,
checkSum, checkSum,
ignoreEmptyWorkdir, ignoreEmptyWorkdir,
enableCache, enableCache,
githubToken, githubToken,
pyProjectFile,
pythonVersion, pythonVersion,
toolBinDir, toolBinDir,
toolDir, toolDir,
uvFile,
version as versionInput, version as versionInput,
workingDirectory,
serverUrl,
manifestFile,
} from "./utils/inputs"; } from "./utils/inputs";
import * as exec from "@actions/exec"; import * as exec from "@actions/exec";
import fs from "node:fs"; import fs from "node:fs";
import { getUvVersionFromConfigFile } from "./utils/pyproject"; import { getUvVersionFromConfigFile } from "./utils/config-file";
async function run(): Promise<void> { async function run(): Promise<void> {
detectEmptyWorkdir(); detectEmptyWorkdir();
@@ -47,7 +50,8 @@ async function run(): Promise<void> {
addToolBinToPath(); addToolBinToPath();
addUvToPathAndOutput(setupResult.uvDir); addUvToPathAndOutput(setupResult.uvDir);
setToolDir(); setToolDir();
await setupPython(); setupPython();
await activateEnvironment();
addMatchers(); addMatchers();
setCacheDir(cacheLocalPath); setCacheDir(cacheLocalPath);
@@ -83,7 +87,7 @@ async function setupUv(
checkSum: string | undefined, checkSum: string | undefined,
githubToken: string, githubToken: string,
): Promise<{ uvDir: string; version: string }> { ): Promise<{ uvDir: string; version: string }> {
const resolvedVersion = await determineVersion(); const resolvedVersion = await determineVersion(manifestFile);
const toolCacheResult = tryGetFromToolCache(arch, resolvedVersion); const toolCacheResult = tryGetFromToolCache(arch, resolvedVersion);
if (toolCacheResult.installedPath) { if (toolCacheResult.installedPath) {
core.info(`Found uv in tool-cache for ${toolCacheResult.version}`); core.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
@@ -93,13 +97,29 @@ async function setupUv(
}; };
} }
const downloadVersionResult = await downloadVersion( let downloadVersionResult: { version: string; cachedToolDir: string };
if (serverUrl !== "https://github.com") {
core.warning(
"The input server-url is deprecated. Please use manifest-file instead.",
);
downloadVersionResult = await downloadVersionFromGithub(
serverUrl,
platform, platform,
arch, arch,
resolvedVersion, resolvedVersion,
checkSum, checkSum,
githubToken, githubToken,
); );
} else {
downloadVersionResult = await downloadVersionFromManifest(
manifestFile,
platform,
arch,
resolvedVersion,
checkSum,
githubToken,
);
}
return { return {
uvDir: downloadVersionResult.cachedToolDir, uvDir: downloadVersionResult.cachedToolDir,
@@ -107,26 +127,28 @@ async function setupUv(
}; };
} }
async function determineVersion(): Promise<string> { async function determineVersion(
manifestFile: string | undefined,
): Promise<string> {
if (versionInput !== "") { if (versionInput !== "") {
return await resolveVersion(versionInput, githubToken); return await resolveVersion(versionInput, manifestFile, githubToken);
} }
const configFile = uvFile !== "" ? uvFile : pyProjectFile; const versionFromUvToml = getUvVersionFromConfigFile(
if (configFile !== "") { `${workingDirectory}${path.sep}uv.toml`,
const versionFromConfigFile = getUvVersionFromConfigFile(configFile); );
if (versionFromConfigFile === undefined) { const versionFromPyproject = getUvVersionFromConfigFile(
core.warning( `${workingDirectory}${path.sep}pyproject.toml`,
`Could not find required-version under [tool.uv] in ${configFile}. Falling back to latest`, );
if (versionFromUvToml === undefined && versionFromPyproject === undefined) {
core.info(
"Could not determine uv version from uv.toml or pyproject.toml. Falling back to latest.",
); );
} }
return await resolveVersion(versionFromConfigFile || "latest", githubToken); return await resolveVersion(
} versionFromUvToml || versionFromPyproject || "latest",
if (!fs.existsSync("uv.toml") && !fs.existsSync("pyproject.toml")) { manifestFile,
return await resolveVersion("latest", githubToken); githubToken,
} );
const versionFile = fs.existsSync("uv.toml") ? "uv.toml" : "pyproject.toml";
const versionFromConfigFile = getUvVersionFromConfigFile(versionFile);
return await resolveVersion(versionFromConfigFile || "latest", githubToken);
} }
function addUvToPathAndOutput(cachedPath: string): void { function addUvToPathAndOutput(cachedPath: string): void {
@@ -163,24 +185,29 @@ function setToolDir(): void {
} }
} }
async function setupPython(): Promise<void> { function setupPython(): void {
if (pythonVersion !== "") { if (pythonVersion !== "") {
core.exportVariable("UV_PYTHON", pythonVersion); core.exportVariable("UV_PYTHON", pythonVersion);
core.info(`Set UV_PYTHON to ${pythonVersion}`); core.info(`Set UV_PYTHON to ${pythonVersion}`);
const options: exec.ExecOptions = { }
silent: !core.isDebug(), }
};
const execArgs = ["venv", "--python", pythonVersion]; async function activateEnvironment(): Promise<void> {
if (activateEnvironmentInput) {
const execArgs = ["venv", ".venv", "--directory", workingDirectory];
core.info("Activating python venv..."); core.info("Activating python venv...");
await exec.exec("uv", execArgs, options); await exec.exec("uv", execArgs);
let venvBinPath = ".venv/bin"; let venvBinPath = `${workingDirectory}${path.sep}.venv${path.sep}bin`;
if (process.platform === "win32") { if (process.platform === "win32") {
venvBinPath = ".venv/Scripts"; venvBinPath = `${workingDirectory}${path.sep}.venv${path.sep}Scripts`;
} }
core.addPath(path.resolve(venvBinPath)); core.addPath(path.resolve(venvBinPath));
core.exportVariable("VIRTUAL_ENV", path.resolve(".venv")); core.exportVariable(
"VIRTUAL_ENV",
path.resolve(`${workingDirectory}${path.sep}.venv`),
);
} }
} }

View File

@@ -1,34 +0,0 @@
import * as semver from "semver";
import * as core from "@actions/core";
import { Octokit } from "./utils/octokit";
import { OWNER, REPO } from "./utils/constants";
import { updateChecksums } from "./download/checksum/update-known-checksums";
async function run(): Promise<void> {
const checksumFilePath = process.argv.slice(2)[0];
const github_token = process.argv.slice(2)[1];
const octokit = new Octokit({
auth: github_token,
});
const response = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: OWNER,
repo: REPO,
});
const downloadUrls: string[] = response.flatMap((release) =>
release.assets
.filter((asset) => asset.name.endsWith(".sha256"))
.map((asset) => asset.browser_download_url),
);
await updateChecksums(checksumFilePath, downloadUrls);
const latestVersion = response
.map((release) => release.tag_name)
.sort(semver.rcompare)[0];
core.setOutput("latest-version", latestVersion);
}
run();

View File

@@ -0,0 +1,58 @@
import * as semver from "semver";
import * as core from "@actions/core";
import { Octokit } from "./utils/octokit";
import { OWNER, REPO } from "./utils/constants";
import { updateChecksums } from "./download/checksum/update-known-checksums";
import {
updateVersionManifest,
getLatestKnownVersion,
} from "./download/version-manifest";
async function run(): Promise<void> {
const checksumFilePath = process.argv.slice(2)[0];
const versionsManifestFile = process.argv.slice(2)[1];
const githubToken = process.argv.slice(2)[2];
const octokit = new Octokit({
auth: githubToken,
});
const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({
owner: OWNER,
repo: REPO,
});
const latestKnownVersion = await getLatestKnownVersion(undefined);
if (semver.lte(latestRelease.tag_name, latestKnownVersion)) {
core.info(
`Latest release (${latestRelease.tag_name}) is not newer than the latest known version (${latestKnownVersion}). Skipping update.`,
);
return;
}
const releases = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: OWNER,
repo: REPO,
});
const checksumDownloadUrls: string[] = releases.flatMap((release) =>
release.assets
.filter((asset) => asset.name.endsWith(".sha256"))
.map((asset) => asset.browser_download_url),
);
await updateChecksums(checksumFilePath, checksumDownloadUrls);
const artifactDownloadUrls: string[] = releases.flatMap((release) =>
release.assets
.filter((asset) => !asset.name.endsWith(".sha256"))
.map((asset) => asset.browser_download_url),
);
await updateVersionManifest(versionsManifestFile, artifactDownloadUrls);
core.setOutput("latest-version", latestRelease.tag_name);
}
run();

View File

@@ -5,9 +5,9 @@ import * as toml from "smol-toml";
export function getUvVersionFromConfigFile( export function getUvVersionFromConfigFile(
filePath: string, filePath: string,
): string | undefined { ): string | undefined {
core.debug(`Trying to find required-version for uv in: ${filePath}`); core.info(`Trying to find required-version for uv in: ${filePath}`);
if (!fs.existsSync(filePath)) { if (!fs.existsSync(filePath)) {
core.warning(`Could not find file: ${filePath}`); core.info(`Could not find file: ${filePath}`);
return undefined; return undefined;
} }
let requiredVersion: string | undefined; let requiredVersion: string | undefined;

21
src/utils/fetch.ts Normal file
View File

@@ -0,0 +1,21 @@
import { fetch as undiciFetch, ProxyAgent, type RequestInit } from "undici";
export function getProxyAgent() {
const httpProxy = process.env.HTTP_PROXY || process.env.http_proxy;
if (httpProxy) {
return new ProxyAgent(httpProxy);
}
const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
if (httpsProxy) {
return new ProxyAgent(httpsProxy);
}
return undefined;
}
export const fetch = async (url: string, opts: RequestInit) =>
await undiciFetch(url, {
dispatcher: getProxyAgent(),
...opts,
});

View File

@@ -1,10 +1,11 @@
import * as core from "@actions/core"; import * as core from "@actions/core";
import path from "node:path"; import path from "node:path";
import { getManifestFromRepo } from "@actions/tool-cache";
export const version = core.getInput("version"); export const version = core.getInput("version");
export const pyProjectFile = core.getInput("pyproject-file");
export const uvFile = core.getInput("uv-file");
export const pythonVersion = core.getInput("python-version"); export const pythonVersion = core.getInput("python-version");
export const activateEnvironment = core.getBooleanInput("activate-environment");
export const workingDirectory = core.getInput("working-directory");
export const checkSum = core.getInput("checksum"); export const checkSum = core.getInput("checksum");
export const enableCache = getEnableCache(); export const enableCache = getEnableCache();
export const cacheSuffix = core.getInput("cache-suffix") || ""; export const cacheSuffix = core.getInput("cache-suffix") || "";
@@ -17,7 +18,9 @@ export const ignoreEmptyWorkdir =
core.getInput("ignore-empty-workdir") === "true"; core.getInput("ignore-empty-workdir") === "true";
export const toolBinDir = getToolBinDir(); export const toolBinDir = getToolBinDir();
export const toolDir = getToolDir(); export const toolDir = getToolDir();
export const serverUrl = core.getInput("server-url");
export const githubToken = core.getInput("github-token"); export const githubToken = core.getInput("github-token");
export const manifestFile = getManifestFile();
function getEnableCache(): boolean { function getEnableCache(): boolean {
const enableCacheInput = core.getInput("enable-cache"); const enableCacheInput = core.getInput("enable-cache");
@@ -64,12 +67,18 @@ function getCacheLocalPath(): string {
if (cacheLocalPathInput !== "") { if (cacheLocalPathInput !== "") {
return expandTilde(cacheLocalPathInput); return expandTilde(cacheLocalPathInput);
} }
if (process.env.RUNNER_ENVIRONMENT === "github-hosted") {
if (process.env.RUNNER_TEMP !== undefined) { if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${path.sep}setup-uv-cache`; return `${process.env.RUNNER_TEMP}${path.sep}setup-uv-cache`;
} }
throw Error( throw Error(
"Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input", "Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input",
); );
}
if (process.platform === "win32") {
return `${process.env.APPDATA}${path.sep}uv${path.sep}cache`;
}
return `${process.env.HOME}${path.sep}.cache${path.sep}uv`;
} }
function expandTilde(input: string): string { function expandTilde(input: string): string {
@@ -78,3 +87,11 @@ function expandTilde(input: string): string {
} }
return input; return input;
} }
function getManifestFile(): string | undefined {
const manifestFileInput = core.getInput("manifest-file");
if (manifestFileInput !== "") {
return manifestFileInput;
}
return undefined;
}

View File

@@ -8,7 +8,7 @@ import {
type PaginateInterface, type PaginateInterface,
} from "@octokit/plugin-paginate-rest"; } from "@octokit/plugin-paginate-rest";
import { legacyRestEndpointMethods } from "@octokit/plugin-rest-endpoint-methods"; import { legacyRestEndpointMethods } from "@octokit/plugin-rest-endpoint-methods";
import { fetch as undiciFetch, ProxyAgent, type RequestInit } from "undici"; import { fetch as customFetch } from "./fetch";
export type { RestEndpointMethodTypes } from "@octokit/plugin-rest-endpoint-methods"; export type { RestEndpointMethodTypes } from "@octokit/plugin-rest-endpoint-methods";
@@ -17,26 +17,6 @@ const DEFAULTS = {
userAgent: "setup-uv", userAgent: "setup-uv",
}; };
export function getProxyAgent() {
const httpProxy = process.env.HTTP_PROXY || process.env.http_prox;
if (httpProxy) {
return new ProxyAgent(httpProxy);
}
const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
if (httpsProxy) {
return new ProxyAgent(httpsProxy);
}
return undefined;
}
export const customFetch = async (url: string, opts: RequestInit) =>
await undiciFetch(url, {
dispatcher: getProxyAgent(),
...opts,
});
export const Octokit: typeof Core & export const Octokit: typeof Core &
Constructor< Constructor<
{ {

21730
version-manifest.json Normal file

File diff suppressed because it is too large Load Diff