mirror of
https://github.com/astral-sh/setup-uv.git
synced 2026-11-05 01:35:32 +00:00
Compare commits
11
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a73d6eb01 | ||
|
|
68ef1d76d3 | ||
|
|
fce2a640fd | ||
|
|
a1b1886df2 | ||
|
|
4c58170a94 | ||
|
|
68559e99cc | ||
|
|
0192b69518 | ||
|
|
2f29784424 | ||
|
|
9c7332190c | ||
|
|
80fbe0140c | ||
|
|
36b7b57007 |
@@ -19,7 +19,7 @@ jobs:
|
||||
pull-requests: read
|
||||
steps:
|
||||
- name: 🚀 Run Release Drafter
|
||||
uses: release-drafter/release-drafter@34d80673e067bdc0c24568d3af899c216adcfaa9 # v7.7.0
|
||||
uses: release-drafter/release-drafter@72967cdc98ddd3160f1fc3dff619de365e137dd0 # v7.9.0
|
||||
with:
|
||||
commitish: ${{ github.sha }}
|
||||
env:
|
||||
|
||||
+41
-16
@@ -53,6 +53,8 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, macos-15, windows-latest]
|
||||
steps:
|
||||
- if: runner.os == 'macOS'
|
||||
uses: astral-sh/github-actions/demudhra@7aa50a3def9f5428c532b0ae972d1e5b357de5a5 # 2026.11.03.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
@@ -281,6 +283,8 @@ jobs:
|
||||
- os: macos-latest
|
||||
checksum: "a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218"
|
||||
steps:
|
||||
- if: runner.os == 'macOS'
|
||||
uses: astral-sh/github-actions/demudhra@7aa50a3def9f5428c532b0ae972d1e5b357de5a5 # 2026.11.03.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
@@ -318,6 +322,8 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, macos-15, windows-latest]
|
||||
steps:
|
||||
- if: runner.os == 'macOS'
|
||||
uses: astral-sh/github-actions/demudhra@7aa50a3def9f5428c532b0ae972d1e5b357de5a5 # 2026.11.03.0
|
||||
- name: Install default version
|
||||
uses: $/
|
||||
- run: uv tool install ruff==0.14.10
|
||||
@@ -329,6 +335,8 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
steps:
|
||||
- if: runner.os == 'macOS'
|
||||
uses: astral-sh/github-actions/demudhra@7aa50a3def9f5428c532b0ae972d1e5b357de5a5 # 2026.11.03.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
@@ -366,6 +374,8 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
steps:
|
||||
- if: runner.os == 'macOS'
|
||||
uses: astral-sh/github-actions/demudhra@7aa50a3def9f5428c532b0ae972d1e5b357de5a5 # 2026.11.03.0
|
||||
- name: Install latest version
|
||||
id: setup-uv
|
||||
uses: $/
|
||||
@@ -402,6 +412,8 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
steps:
|
||||
- if: runner.os == 'macOS'
|
||||
uses: astral-sh/github-actions/demudhra@7aa50a3def9f5428c532b0ae972d1e5b357de5a5 # 2026.11.03.0
|
||||
- name: Install latest version
|
||||
id: setup-uv
|
||||
uses: $/
|
||||
@@ -551,6 +563,8 @@ jobs:
|
||||
- os: windows-2025
|
||||
expected-os: "windows-2025"
|
||||
steps:
|
||||
- if: runner.os == 'macOS'
|
||||
uses: astral-sh/github-actions/demudhra@7aa50a3def9f5428c532b0ae972d1e5b357de5a5 # 2026.11.03.0
|
||||
- name: Setup uv
|
||||
id: setup-uv
|
||||
uses: $/
|
||||
@@ -985,14 +999,18 @@ jobs:
|
||||
run: rm -rf "$UV_PYTHON_INSTALL_DIR"
|
||||
|
||||
test-cache-python-installs:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-2022]
|
||||
steps:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Verify Python install dir is not populated
|
||||
shell: bash
|
||||
run: |
|
||||
if [ -d /home/runner/work/_temp/uv-python-dir ]; then
|
||||
if [ -e "$RUNNER_TEMP/uv-python-dir" ]; then
|
||||
echo "Python install dir should not exist"
|
||||
exit 1
|
||||
fi
|
||||
@@ -1005,21 +1023,26 @@ jobs:
|
||||
- run: uv sync --managed-python
|
||||
working-directory: __tests__/fixtures/uv-project
|
||||
- name: Verify Python install dir exists
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /home/runner/work/_temp/uv-python-dir ]; then
|
||||
if [ ! -d "$UV_PYTHON_INSTALL_DIR" ]; then
|
||||
echo "Python install dir should exist"
|
||||
exit 1
|
||||
fi
|
||||
test-restore-python-installs:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: test-cache-python-installs
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-2022]
|
||||
steps:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Verify Python install dir does not exist
|
||||
shell: bash
|
||||
run: |
|
||||
if [ -d /home/runner/work/_temp/uv-python-dir ]; then
|
||||
if [ -e "$RUNNER_TEMP/uv-python-dir" ]; then
|
||||
echo "Python install dir should not exist"
|
||||
exit 1
|
||||
fi
|
||||
@@ -1030,19 +1053,21 @@ jobs:
|
||||
enable-cache: true
|
||||
cache-python: true
|
||||
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-cache-python-installs
|
||||
- name: Verify Python install dir exists
|
||||
run: |
|
||||
if [ ! -d /home/runner/work/_temp/uv-python-dir ]; then
|
||||
echo "Python install dir should exist"
|
||||
exit 1
|
||||
fi
|
||||
- name: Cache was hit
|
||||
run: |
|
||||
if [ "$CACHE_HIT" != "true" ]; then
|
||||
exit 1
|
||||
fi
|
||||
- name: Verify the restored Python minor-version link resolves to the patch directory
|
||||
shell: python
|
||||
env:
|
||||
CACHE_HIT: ${{ steps.restore.outputs.python-cache-hit }}
|
||||
run: |
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
assert os.environ["CACHE_HIT"] == "true", "expected a Python cache hit"
|
||||
installs = Path(os.environ["UV_PYTHON_INSTALL_DIR"]).resolve()
|
||||
assert installs.is_dir(), "Python install dir should exist"
|
||||
patch_dir, = installs.glob("cpython-*.*.*-*")
|
||||
minor_prefix = patch_dir.name.rsplit(".", 1)[0]
|
||||
alias, = installs.glob(f"{minor_prefix}-*")
|
||||
assert alias.resolve(strict=True) == patch_dir, alias
|
||||
- run: uv sync --managed-python
|
||||
working-directory: __tests__/fixtures/uv-project
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
```
|
||||
|
||||
If you do not specify a version, this action will look for a [required-version](https://docs.astral.sh/uv/reference/settings/#required-version)
|
||||
@@ -43,7 +43,7 @@ Have a look under [Advanced Configuration](#advanced-configuration) for detailed
|
||||
|
||||
```yaml
|
||||
- name: Install uv with all available options
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
# The version of uv to install, e.g., "0.5.0", "latest", or "latest-known" (default: searches for version in config files, then latest)
|
||||
version: ""
|
||||
@@ -143,7 +143,7 @@ Have a look under [Advanced Configuration](#advanced-configuration) for detailed
|
||||
- `venv`: Path to the activated venv if activate-environment is true.
|
||||
- `python-version`: The Python version that was set.
|
||||
- `python-runtime-id`: An opaque identifier reported by uv for the activated venv's Python runtime. Empty when `activate-environment` is false.
|
||||
- `python-cache-hit`: A boolean value to indicate the Python cache entry was found.
|
||||
- `python-cache-hit`: A boolean indicating whether the Python cache was restored successfully.
|
||||
|
||||
### Python version
|
||||
|
||||
@@ -161,7 +161,7 @@ python 3.13
|
||||
```
|
||||
|
||||
```yaml
|
||||
- uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
- uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version-file: ".tool-versions"
|
||||
```
|
||||
@@ -172,7 +172,7 @@ a warning.
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv and set the python version to 3.13t
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
python-version: 3.13t
|
||||
- run: uv pip install --python=3.13t pip
|
||||
@@ -190,7 +190,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Install the latest version of uv and set the python version
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Test with python ${{ matrix.python-version }}
|
||||
@@ -226,7 +226,7 @@ It also controls where [the venv gets created](#activate-environment), unless `v
|
||||
|
||||
```yaml
|
||||
- name: Install uv based on the config files in the working-directory
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
working-directory: my/subproject/dir
|
||||
```
|
||||
@@ -268,7 +268,7 @@ For example:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@main
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
- name: Test
|
||||
@@ -280,7 +280,7 @@ To install a specific version of Python, use
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
- name: Install Python 3.12
|
||||
@@ -299,7 +299,7 @@ output:
|
||||
uses: actions/checkout@main
|
||||
- name: Install the default version of uv
|
||||
id: setup-uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
- name: Print the installed version
|
||||
run: echo "Installed uv version is ${{ steps.setup-uv.outputs.uv-version }}"
|
||||
```
|
||||
|
||||
+37
@@ -1,3 +1,4 @@
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { beforeEach, describe, expect, it, jest } from "@jest/globals";
|
||||
import { createSetupInputs } from "../helpers/setup-inputs";
|
||||
|
||||
@@ -48,6 +49,42 @@ beforeEach(() => {
|
||||
});
|
||||
|
||||
describe("restoreCache", () => {
|
||||
it.each([
|
||||
["win32", false],
|
||||
["linux", true],
|
||||
] as const)(
|
||||
"keeps the matched Python cache key on %s when the install directory cannot be read",
|
||||
async (platform, pythonCacheHit) => {
|
||||
const inputs = createSetupInputs({
|
||||
cachePython: true,
|
||||
// A file at the install directory path makes readdir fail.
|
||||
pythonDir: fileURLToPath(import.meta.url),
|
||||
restoreCache: true,
|
||||
});
|
||||
mockRestoreCache
|
||||
.mockReturnValueOnce("uv-key")
|
||||
.mockReturnValueOnce("python-key");
|
||||
|
||||
const originalPlatform = process.platform;
|
||||
Object.defineProperty(process, "platform", { value: platform });
|
||||
try {
|
||||
await restoreCache(inputs);
|
||||
} finally {
|
||||
Object.defineProperty(process, "platform", { value: originalPlatform });
|
||||
}
|
||||
|
||||
expect(mockSetOutput).toHaveBeenCalledWith("cache-hit", true);
|
||||
expect(mockSetOutput).toHaveBeenCalledWith(
|
||||
"python-cache-hit",
|
||||
pythonCacheHit,
|
||||
);
|
||||
expect(mockSaveState).toHaveBeenCalledWith(
|
||||
"python-cache-matched-key",
|
||||
"python-key",
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
it("encodes Python version ranges before adding them to the cache key", async () => {
|
||||
await restoreCache(createSetupInputs(), ">3.10.11,<3.11");
|
||||
|
||||
|
||||
Vendored
+87
@@ -0,0 +1,87 @@
|
||||
import { mkdtempSync, rmSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import {
|
||||
afterAll,
|
||||
beforeEach,
|
||||
describe,
|
||||
expect,
|
||||
it,
|
||||
jest,
|
||||
} from "@jest/globals";
|
||||
import { CacheLocalSource, type SetupInputs } from "../../src/utils/inputs";
|
||||
import { createSetupInputs } from "../helpers/setup-inputs";
|
||||
|
||||
const mockSaveCache = jest.fn<() => Promise<number>>();
|
||||
const mockInfo = jest.fn();
|
||||
const mockLoadInputs = jest.fn<() => SetupInputs>(() =>
|
||||
createSetupInputs({ enableCache: false }),
|
||||
);
|
||||
const state: Record<string, string> = {};
|
||||
|
||||
jest.unstable_mockModule("@actions/cache", () => ({
|
||||
saveCache: mockSaveCache,
|
||||
}));
|
||||
|
||||
jest.unstable_mockModule("@actions/core", () => ({
|
||||
getState: jest.fn((name: string) => state[name] ?? ""),
|
||||
setFailed: jest.fn(),
|
||||
}));
|
||||
|
||||
jest.unstable_mockModule("../../src/utils/inputs", () => ({
|
||||
loadInputs: mockLoadInputs,
|
||||
}));
|
||||
|
||||
jest.unstable_mockModule("../../src/utils/logging", () => ({
|
||||
info: mockInfo,
|
||||
warning: jest.fn(),
|
||||
}));
|
||||
|
||||
jest.spyOn(process, "exit").mockImplementation((() => undefined) as never);
|
||||
|
||||
const { run } = await import("../../src/save-cache");
|
||||
|
||||
const cacheDir = mkdtempSync(join(tmpdir(), "setup-uv-save-cache-"));
|
||||
const cacheKey = "setup-uv-2-x86_64-unknown-linux-gnu-ubuntu-24.04-3.12-hash";
|
||||
|
||||
function infoMessages(): string[] {
|
||||
return mockInfo.mock.calls.map(([msg]) => msg as string);
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
delete process.env.UV_CACHE_DIR;
|
||||
state["cache-key"] = cacheKey;
|
||||
state["cache-matched-key"] = "";
|
||||
mockLoadInputs.mockReturnValue(
|
||||
createSetupInputs({
|
||||
cacheLocalPath: { path: cacheDir, source: CacheLocalSource.Input },
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
rmSync(cacheDir, { force: true, recursive: true });
|
||||
});
|
||||
|
||||
describe("saveCache", () => {
|
||||
it("reports the saved key when the cache is saved", async () => {
|
||||
mockSaveCache.mockResolvedValue(42);
|
||||
|
||||
await run();
|
||||
|
||||
expect(mockSaveCache).toHaveBeenCalledWith([cacheDir], cacheKey);
|
||||
expect(infoMessages()).toContain(`uv cache saved with key: ${cacheKey}`);
|
||||
});
|
||||
|
||||
it("does not report the cache as saved when saving fails", async () => {
|
||||
// @actions/cache logs the failure itself and returns -1
|
||||
mockSaveCache.mockResolvedValue(-1);
|
||||
|
||||
await run();
|
||||
|
||||
expect(mockSaveCache).toHaveBeenCalledWith([cacheDir], cacheKey);
|
||||
expect(infoMessages()).not.toContain(
|
||||
`uv cache saved with key: ${cacheKey}`,
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -146,6 +146,28 @@ describe("download-version", () => {
|
||||
expect(mockGetAllVersions).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("resolves ~= with PEP 440 compatible release semantics", async () => {
|
||||
mockGetFirstMatchingVersion.mockImplementation(
|
||||
(predicate: (version: string) => boolean) =>
|
||||
["1.0.0", "0.10.2", "0.9.26"].find(predicate),
|
||||
);
|
||||
|
||||
const version = await resolveVersion("~=0.9", undefined);
|
||||
|
||||
expect(version).toBe("0.10.2");
|
||||
});
|
||||
|
||||
it("resolves ~= with PEP 440 compatible release semantics from manifest-file", async () => {
|
||||
mockGetAllVersions.mockResolvedValue(["1.0.0", "0.10.2", "0.9.26"]);
|
||||
|
||||
const version = await resolveVersion(
|
||||
"~=0.9",
|
||||
"https://example.com/custom.ndjson",
|
||||
);
|
||||
|
||||
expect(version).toBe("0.10.2");
|
||||
});
|
||||
|
||||
it("treats == exact pins as explicit versions", async () => {
|
||||
const version = await resolveVersion("==0.9.26", undefined);
|
||||
|
||||
@@ -220,7 +242,7 @@ describe("download-version", () => {
|
||||
"token",
|
||||
),
|
||||
).rejects.toThrow(
|
||||
"Could not find artifact for version 0.9.26, arch x86_64, platform unknown-linux-gnu in https://raw.githubusercontent.com/astral-sh/versions/main/v1/uv.ndjson .",
|
||||
"Could not find artifact for version 0.9.26, arch x86_64, platform unknown-linux-gnu in https://releases.astral.sh/github/versions/main/v1/uv.ndjson .",
|
||||
);
|
||||
|
||||
expect(mockDownloadTool).not.toHaveBeenCalled();
|
||||
|
||||
@@ -96,6 +96,78 @@ describe("manifest", () => {
|
||||
expect(versions).toHaveLength(2);
|
||||
expect(versions[0]?.version).toBe("0.9.26");
|
||||
expect(versions[1]?.version).toBe("0.9.25");
|
||||
expect(mockFetch.mock.calls.map(([url]) => url)).toEqual([
|
||||
"https://releases.astral.sh/github/versions/main/v1/uv.ndjson",
|
||||
]);
|
||||
});
|
||||
|
||||
it("falls back to GitHub after mirror network retries are exhausted", async () => {
|
||||
jest.useFakeTimers();
|
||||
mockFetch
|
||||
.mockRejectedValueOnce(new Error("mirror unavailable"))
|
||||
.mockRejectedValueOnce(new Error("mirror unavailable"))
|
||||
.mockRejectedValueOnce(new Error("mirror unavailable"))
|
||||
.mockResolvedValueOnce(
|
||||
createMockResponse(true, 200, "OK", sampleManifestResponse),
|
||||
);
|
||||
|
||||
const result = fetchManifest();
|
||||
await jest.runAllTimersAsync();
|
||||
|
||||
await expect(result).resolves.toEqual([
|
||||
expect.objectContaining({ version: "0.9.26" }),
|
||||
expect.objectContaining({ version: "0.9.25" }),
|
||||
]);
|
||||
expect(mockFetch.mock.calls.map(([url]) => url)).toEqual([
|
||||
"https://releases.astral.sh/github/versions/main/v1/uv.ndjson",
|
||||
"https://releases.astral.sh/github/versions/main/v1/uv.ndjson",
|
||||
"https://releases.astral.sh/github/versions/main/v1/uv.ndjson",
|
||||
"https://raw.githubusercontent.com/astral-sh/versions/main/v1/uv.ndjson",
|
||||
]);
|
||||
|
||||
await expect(getLatestVersion()).resolves.toBe("0.9.26");
|
||||
expect(mockFetch).toHaveBeenCalledTimes(4);
|
||||
});
|
||||
|
||||
it.each([404, 429, 503])(
|
||||
"falls back to a streaming GitHub manifest on mirror HTTP %s",
|
||||
async (status) => {
|
||||
mockFetch
|
||||
.mockResolvedValueOnce(createMockResponse(false, status, "Error", ""))
|
||||
.mockResolvedValueOnce(
|
||||
createStreamingMockResponse([`${sampleManifestResponse}\n`]),
|
||||
);
|
||||
|
||||
await expect(getLatestVersion()).resolves.toBe("0.9.26");
|
||||
await expect(
|
||||
getArtifact("0.9.26", "aarch64", "apple-darwin"),
|
||||
).resolves.toEqual({
|
||||
archiveFormat: "tar.gz",
|
||||
checksum:
|
||||
"fcf0a9ea6599c6ae28a4c854ac6da76f2c889354d7c36ce136ef071f7ab9721f",
|
||||
downloadUrl:
|
||||
"https://github.com/astral-sh/uv/releases/download/0.9.26/uv-aarch64-apple-darwin.tar.gz",
|
||||
});
|
||||
expect(mockFetch.mock.calls.map(([url]) => url)).toEqual([
|
||||
"https://releases.astral.sh/github/versions/main/v1/uv.ndjson",
|
||||
"https://raw.githubusercontent.com/astral-sh/versions/main/v1/uv.ndjson",
|
||||
]);
|
||||
},
|
||||
);
|
||||
|
||||
it("does not fall back from a custom manifest", async () => {
|
||||
mockFetch.mockResolvedValue(
|
||||
createMockResponse(false, 503, "Service Unavailable", ""),
|
||||
);
|
||||
|
||||
await expect(
|
||||
fetchManifest("https://example.com/custom.ndjson"),
|
||||
).rejects.toThrow(
|
||||
"Failed to fetch manifest data: 503 Service Unavailable",
|
||||
);
|
||||
expect(mockFetch.mock.calls.map(([url]) => url)).toEqual([
|
||||
"https://example.com/custom.ndjson",
|
||||
]);
|
||||
});
|
||||
|
||||
it("retries network failures", async () => {
|
||||
@@ -123,7 +195,7 @@ describe("manifest", () => {
|
||||
await jest.runAllTimersAsync();
|
||||
|
||||
await result;
|
||||
expect(mockFetch).toHaveBeenCalledTimes(MANIFEST_FETCH_ATTEMPTS);
|
||||
expect(mockFetch).toHaveBeenCalledTimes(MANIFEST_FETCH_ATTEMPTS * 2);
|
||||
});
|
||||
|
||||
it("throws on a failed fetch", async () => {
|
||||
|
||||
@@ -35,3 +35,14 @@ test("strips PEP 508 markers from requirements dependencies", () => {
|
||||
|
||||
expect(parsedVersion).toBe("==0.11.20");
|
||||
});
|
||||
|
||||
test.each([
|
||||
["uv >= 0.5.0", ">=0.5.0"],
|
||||
["uv == 0.11.20", "==0.11.20"],
|
||||
["uv>=0.5.0, <0.6.0", ">=0.5.0,<0.6.0"],
|
||||
["uv >= 0.5.0 , < 0.6.0", ">=0.5.0,<0.6.0"],
|
||||
["uv==0.11.20 --hash=sha256:abc", "==0.11.20"],
|
||||
["uv==0.11.20 # pinned for CI", "==0.11.20"],
|
||||
])("allows whitespace in the uv specifier %s", (dependency, expected) => {
|
||||
expect(getUvVersionFromRequirementsText(dependency)).toBe(expected);
|
||||
});
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ outputs:
|
||||
python-runtime-id:
|
||||
description: "An opaque identifier reported by uv for the activated venv's Python runtime. Empty when activate-environment is false."
|
||||
python-cache-hit:
|
||||
description: "A boolean value to indicate the Python cache entry was found"
|
||||
description: "A boolean indicating whether the Python cache was restored successfully."
|
||||
runs:
|
||||
using: "node24"
|
||||
main: "dist/setup/index.cjs"
|
||||
|
||||
+4
-2
@@ -66671,8 +66671,10 @@ async function saveCacheToKey(cacheKey, cachePath, stateKey, cacheName) {
|
||||
return;
|
||||
}
|
||||
info2(`Including ${cacheName} path: ${cachePath}`);
|
||||
await saveCache2([cachePath], cacheKey);
|
||||
info2(`${cacheName} saved with key: ${cacheKey}`);
|
||||
const cacheId = await saveCache2([cachePath], cacheKey);
|
||||
if (cacheId !== -1) {
|
||||
info2(`${cacheName} saved with key: ${cacheKey}`);
|
||||
}
|
||||
}
|
||||
__name(saveCacheToKey, "saveCacheToKey");
|
||||
run();
|
||||
|
||||
+135
-34
@@ -93966,6 +93966,53 @@ function getWindowsNameVersion() {
|
||||
return `windows-${match4[1]}`;
|
||||
}
|
||||
|
||||
// src/cache/repair-python-junctions.ts
|
||||
var import_promises = require("node:fs/promises");
|
||||
var import_node_path = __toESM(require("node:path"), 1);
|
||||
async function repairPythonJunctions(pythonDir) {
|
||||
const entries = await (0, import_promises.readdir)(pythonDir, { withFileTypes: true });
|
||||
const directories = new Set(
|
||||
entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name.toLowerCase())
|
||||
);
|
||||
for (const entry of entries) {
|
||||
const name = entry.name.toLowerCase();
|
||||
if (!entry.isSymbolicLink() || !/^cpython-\d+\.\d+[+-].+$/.test(name)) {
|
||||
continue;
|
||||
}
|
||||
const link = import_node_path.default.join(pythonDir, entry.name);
|
||||
let target;
|
||||
try {
|
||||
target = import_node_path.default.resolve(pythonDir, await (0, import_promises.readlink)(link));
|
||||
} catch (err) {
|
||||
if (await resolvesWithAccessDenied(link)) {
|
||||
throw err;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
const sibling = import_node_path.default.relative(pythonDir, target).toLowerCase();
|
||||
const version3 = /^(cpython-\d+\.\d+)\.\d+(?:(?:a|b|rc)\d+)?([+-].+)$/.exec(
|
||||
sibling
|
||||
);
|
||||
if (!version3 || version3[1] + version3[2] !== name || !directories.has(sibling)) {
|
||||
continue;
|
||||
}
|
||||
if (!await resolvesWithAccessDenied(link)) {
|
||||
continue;
|
||||
}
|
||||
await (0, import_promises.realpath)(target);
|
||||
await (0, import_promises.unlink)(link);
|
||||
await (0, import_promises.symlink)(target, link, "junction");
|
||||
}
|
||||
}
|
||||
async function resolvesWithAccessDenied(link) {
|
||||
try {
|
||||
await (0, import_promises.realpath)(link);
|
||||
return false;
|
||||
} catch (err) {
|
||||
return err.code === "EPERM";
|
||||
}
|
||||
}
|
||||
|
||||
// src/cache/restore-cache.ts
|
||||
var STATE_CACHE_KEY = "cache-key";
|
||||
var STATE_CACHE_MATCHED_KEY = "cache-matched-key";
|
||||
@@ -93996,26 +94043,37 @@ async function restoreCache2(inputs, pythonVersion) {
|
||||
`${cacheKey}-python`,
|
||||
inputs.pythonDir,
|
||||
STATE_PYTHON_CACHE_MATCHED_KEY,
|
||||
"python-cache-hit"
|
||||
"python-cache-hit",
|
||||
// TODO: Remove this repair once @actions/cache preserves Windows junctions.
|
||||
// https://github.com/actions/toolkit/issues/2562
|
||||
process.platform === "win32" ? repairPythonJunctions : void 0
|
||||
);
|
||||
} else {
|
||||
setOutput("python-cache-hit", false);
|
||||
}
|
||||
}
|
||||
async function restoreCacheFromKey(cacheKey, cachePath, stateKey, outputKey) {
|
||||
async function restoreCacheFromKey(cacheKey, cachePath, stateKey, outputKey, afterRestore) {
|
||||
info2(
|
||||
`Trying to restore cache from GitHub Actions cache with key: ${cacheKey}`
|
||||
);
|
||||
let matchedKey;
|
||||
try {
|
||||
matchedKey = await restoreCache([cachePath], cacheKey);
|
||||
const matchedKey = await restoreCache([cachePath], cacheKey);
|
||||
if (!matchedKey) {
|
||||
info2(`No GitHub Actions cache found for key: ${cacheKey}`);
|
||||
setOutput(outputKey, false);
|
||||
return;
|
||||
}
|
||||
saveState(stateKey, matchedKey);
|
||||
await afterRestore?.(cachePath);
|
||||
info2(
|
||||
`cache restored from GitHub Actions cache with key: ${matchedKey}`
|
||||
);
|
||||
setOutput(outputKey, true);
|
||||
} catch (err) {
|
||||
const message = err.message;
|
||||
warning2(message);
|
||||
setOutput(outputKey, false);
|
||||
return;
|
||||
}
|
||||
handleMatchResult(matchedKey, cacheKey, stateKey, outputKey);
|
||||
}
|
||||
async function computeKeys(inputs, pythonVersion) {
|
||||
let cacheDependencyPathHash = "-";
|
||||
@@ -94045,16 +94103,6 @@ async function computeKeys(inputs, pythonVersion) {
|
||||
const python = inputs.cachePython ? "-py" : "";
|
||||
return `setup-uv-${CACHE_VERSION}-${getArch()}-${platform2}-${osNameVersion}-${version3}${pythonArchKey}${pruned}${python}${cacheDependencyPathHash}${suffix}`;
|
||||
}
|
||||
function handleMatchResult(matchedKey, primaryKey, stateKey, outputKey) {
|
||||
if (!matchedKey) {
|
||||
info2(`No GitHub Actions cache found for key: ${primaryKey}`);
|
||||
setOutput(outputKey, false);
|
||||
return;
|
||||
}
|
||||
saveState(stateKey, matchedKey);
|
||||
info2(`cache restored from GitHub Actions cache with key: ${matchedKey}`);
|
||||
setOutput(outputKey, true);
|
||||
}
|
||||
|
||||
// src/download/download-version.ts
|
||||
var import_node_fs7 = require("node:fs");
|
||||
@@ -94499,7 +94547,8 @@ function _getGlobal(key, defaultValue) {
|
||||
var TOOL_CACHE_NAME = "uv";
|
||||
var STATE_UV_PATH = "uv-path";
|
||||
var STATE_UV_VERSION = "uv-version";
|
||||
var VERSIONS_MANIFEST_URL = "https://raw.githubusercontent.com/astral-sh/versions/main/v1/uv.ndjson";
|
||||
var VERSIONS_MANIFEST_URL = "https://releases.astral.sh/github/versions/main/v1/uv.ndjson";
|
||||
var GITHUB_VERSIONS_MANIFEST_URL = "https://raw.githubusercontent.com/astral-sh/versions/main/v1/uv.ndjson";
|
||||
var GITHUB_RELEASES_PREFIX = "https://github.com/astral-sh/uv/releases/download/";
|
||||
var ASTRAL_MIRROR_PREFIX = "https://releases.astral.sh/github/uv/releases/download/";
|
||||
|
||||
@@ -94509,6 +94558,42 @@ var fs10 = __toESM(require("node:fs"), 1);
|
||||
|
||||
// src/download/checksum/known-checksums.json
|
||||
var known_checksums_default = {
|
||||
"aarch64-apple-darwin-0.13.7": "81b811b57e4624df7ed3aac148e0359100d9962f3d9dce00aec533dc2e086731",
|
||||
"aarch64-pc-windows-msvc-0.13.7": "505d9e65e7692bac3ddf98c66754aa26c5050c409c184af30a881a0a72cc85e3",
|
||||
"aarch64-unknown-linux-gnu-0.13.7": "71279f8d3c67241e807b9d8db872d1bf541579fb9f08b7d1eb1682196d1e57dc",
|
||||
"aarch64-unknown-linux-musl-0.13.7": "2d3ec076a0c4c0e8250bb6418c44080828b544f1a3be0b6e46adf9fb6923de45",
|
||||
"arm-unknown-linux-musleabihf-0.13.7": "2c029d1eda470c667e46a36fc5e2479c9a3e4af91e0cabcde07711bf40d587a9",
|
||||
"armv7-unknown-linux-gnueabihf-0.13.7": "5e2a1315a1b8b4a25250d536f62fa5c1ab5ed17233e7bf486c3c7849cb663284",
|
||||
"armv7-unknown-linux-musleabihf-0.13.7": "4a1a7dc0b1713bbeac665a2f95e680eea3bb7ecebea226ae3b2de552bc72e88b",
|
||||
"i686-pc-windows-msvc-0.13.7": "fa2abbf16f7d12cb01c9b7f313d843218fbd91a9d3fab487cc06a1d6765b27bf",
|
||||
"i686-unknown-linux-gnu-0.13.7": "cc4f86390f9c99e8f53530e5e7f2cdc6ae7c011c9e805764332a3e3c01a378e4",
|
||||
"i686-unknown-linux-musl-0.13.7": "c2d50f5c64eb81fd1fd1ec5870403c0533fe4b6bf76f940cc5e97824e49ab782",
|
||||
"powerpc64le-unknown-linux-gnu-0.13.7": "e8b65412482f848743e73566808f5bb480e826c9ce25361997891fcf71299080",
|
||||
"riscv64gc-unknown-linux-gnu-0.13.7": "48aff38af87c7c8255beb9b51b3676598045786ac5197de15fea54ebfe6c72e1",
|
||||
"riscv64gc-unknown-linux-musl-0.13.7": "6c2e67417dda9661e67c2591a6226805ef2ed8ebc203baeed411f67d459207b2",
|
||||
"s390x-unknown-linux-gnu-0.13.7": "2b64a479b905b9cdab99c71105e523a0d7aa79581cbd716d40bce26d7b595428",
|
||||
"x86_64-apple-darwin-0.13.7": "20c47e4c1f630b8abaff8c291fa9b9aa300fef92c4fbff95adf198b55287cda7",
|
||||
"x86_64-pc-windows-msvc-0.13.7": "0cdc5b38fe5a8168ed6a25814f5ba43c21d313dd3187314fccb37b7cec46e021",
|
||||
"x86_64-unknown-linux-gnu-0.13.7": "c5221ff41b7892bfc223543883600125f6a47fe845093e0f5bdff4f359196d83",
|
||||
"x86_64-unknown-linux-musl-0.13.7": "287491da03f2a785c70fa75b13e1f849918c2f2b5415fe84876b8214eeb792f9",
|
||||
"aarch64-apple-darwin-0.13.6": "60fbd5c8a1ed681845eea28d9d622fcde03c51e91a43465b64a1e17db1ed3472",
|
||||
"aarch64-pc-windows-msvc-0.13.6": "c2426c0c8e28b53d8c440e47a18d96ad4db51e159866c0e81435b196d7f0081c",
|
||||
"aarch64-unknown-linux-gnu-0.13.6": "229e194255c7958d86d56e8790d969a6f74736592133f0dfd0076f754c642c1d",
|
||||
"aarch64-unknown-linux-musl-0.13.6": "819692e404d23e5aae6bc44c0e260f1f5492fd1910ab4693b2c650f926dbe800",
|
||||
"arm-unknown-linux-musleabihf-0.13.6": "57ac0f7c04deb42c5d686b4eeeef555c442db6ffea16fe4cbd7adb0384403794",
|
||||
"armv7-unknown-linux-gnueabihf-0.13.6": "d00cd4949c4524c934afcfee1aedfa9d337cf4e43be4d6b692ad8d74d0a65562",
|
||||
"armv7-unknown-linux-musleabihf-0.13.6": "b215398c886e8cc2cfa282fe346c02025957f8633b75a3d4fd848e0adda4eddd",
|
||||
"i686-pc-windows-msvc-0.13.6": "32ceb64db231cbedfd499f7654c72e4c0b564f2846f9e76c0a4a7b2d03d7e67c",
|
||||
"i686-unknown-linux-gnu-0.13.6": "665ea831c38d342900950e606beb2ccc37b7ba0fcefc37b814eb4b076305f2b6",
|
||||
"i686-unknown-linux-musl-0.13.6": "de3a015c4b0fce63c178ae4fa95c94c873adfd92fa1e258c6a2a94e529812629",
|
||||
"powerpc64le-unknown-linux-gnu-0.13.6": "3b2847185ec2946fcc928500efef7e3e74c255d3be6f2cb435081a84885d8c6c",
|
||||
"riscv64gc-unknown-linux-gnu-0.13.6": "517052603ed46483b59d8875c9c61a577946b8f493c73e4339e45e7b119171d0",
|
||||
"riscv64gc-unknown-linux-musl-0.13.6": "659a95dc6aee3ecf86742a08d8ca6c6261422121cbd41decc0042f5a71af6305",
|
||||
"s390x-unknown-linux-gnu-0.13.6": "fb56d731308aa5c7718059d71afcb14d9a933a974997cee3d4eb5d06fc462a4b",
|
||||
"x86_64-apple-darwin-0.13.6": "63ba17fdda55ad1a230d4b37fc6017ffa10c23688c83818bd3bfdf914c652a02",
|
||||
"x86_64-pc-windows-msvc-0.13.6": "a2a8820d5eea32f08ef467ef3b7f66883a9b076d5737a2fc2fbb5f458d1bb50f",
|
||||
"x86_64-unknown-linux-gnu-0.13.6": "f29c3e94ffabd7e6f3ba521dba169a9b7ec12100bf3257087f0f24f6123f3645",
|
||||
"x86_64-unknown-linux-musl-0.13.6": "5d61f26b6c7213779eda90edc6971ea6b0b796bfb8d49a574c8ad69b59838548",
|
||||
"aarch64-apple-darwin-0.13.5": "743f85035a1996ecb350659e01cd9faea9709829be09b1b4b03c73eaf3c9cd73",
|
||||
"aarch64-pc-windows-msvc-0.13.5": "09f47edf90726084a70f9426f6e3ca4f46e9bf7cbf23b1716ec64d60b055fae3",
|
||||
"aarch64-unknown-linux-gnu-0.13.5": "4bb69cf95ed13f23713bb7bc09f241896ea0c75b7c557e615a20604b82f9c403",
|
||||
@@ -100287,6 +100372,19 @@ async function getArtifact(version3, arch3, platform2, manifestUrl = VERSIONS_MA
|
||||
};
|
||||
}
|
||||
async function fetchManifestResponse(manifestUrl) {
|
||||
try {
|
||||
return await fetchManifestResponseFromUrl(manifestUrl);
|
||||
} catch (error2) {
|
||||
if (manifestUrl !== VERSIONS_MANIFEST_URL) {
|
||||
throw error2;
|
||||
}
|
||||
info2(
|
||||
`Failed to fetch manifest from Astral mirror, falling back to GitHub: ${error2.message}`
|
||||
);
|
||||
return await fetchManifestResponseFromUrl(GITHUB_VERSIONS_MANIFEST_URL);
|
||||
}
|
||||
}
|
||||
async function fetchManifestResponseFromUrl(manifestUrl) {
|
||||
let response;
|
||||
for (let attempt = 1; attempt <= MANIFEST_FETCH_ATTEMPTS; attempt++) {
|
||||
info2(`Fetching manifest data from ${manifestUrl} ...`);
|
||||
@@ -101579,7 +101677,7 @@ function getUvVersionFromAllDependencies(allDependencies) {
|
||||
}
|
||||
function getUvVersionFromDependency(dependency) {
|
||||
const dependencyWithoutMarker = dependency.split(";", 1)[0]?.trim();
|
||||
return dependencyWithoutMarker?.match(/^uv([=<>~!]+\S*)/)?.[1].trim();
|
||||
return dependencyWithoutMarker?.match(/^uv\s*((?:[=<>~!]+\s*[^\s,]+\s*,?\s*)+)/)?.[1].replace(/\s/g, "");
|
||||
}
|
||||
|
||||
// src/version/tool-versions-file.ts
|
||||
@@ -101937,7 +102035,7 @@ async function resolveVersion(versionInput, manifestUrl, resolutionStrategy = "h
|
||||
throw new Error(`No version found for ${versionInput}`);
|
||||
}
|
||||
async function findHighestSatisfyingVersion(versionSpecifier) {
|
||||
const semverRange = semver5.validRange(versionSpecifier);
|
||||
const semverRange = isCompatibleReleaseSpecifier(versionSpecifier) ? null : semver5.validRange(versionSpecifier);
|
||||
if (semverRange !== null) {
|
||||
const semverMatch = await getFirstMatchingVersion(
|
||||
(version3) => semver5.satisfies(version3, semverRange)
|
||||
@@ -101959,8 +102057,11 @@ async function findHighestSatisfyingVersion(versionSpecifier) {
|
||||
}
|
||||
return pep440Match;
|
||||
}
|
||||
function isCompatibleReleaseSpecifier(versionSpecifier) {
|
||||
return versionSpecifier.includes("~=");
|
||||
}
|
||||
function maxSatisfying2(versions, version3) {
|
||||
const maxSemver = evaluateVersions(versions, version3);
|
||||
const maxSemver = isCompatibleReleaseSpecifier(version3) ? "" : evaluateVersions(versions, version3);
|
||||
if (maxSemver !== "") {
|
||||
debug(`Found a version that satisfies the semver range: ${maxSemver}`);
|
||||
return maxSemver;
|
||||
@@ -101975,7 +102076,7 @@ function maxSatisfying2(versions, version3) {
|
||||
return void 0;
|
||||
}
|
||||
function minSatisfying3(versions, version3) {
|
||||
const minSemver = semver5.minSatisfying(versions, version3);
|
||||
const minSemver = isCompatibleReleaseSpecifier(version3) ? null : semver5.minSatisfying(versions, version3);
|
||||
if (minSemver !== null) {
|
||||
debug(`Found a version that satisfies the semver range: ${minSemver}`);
|
||||
return minSemver;
|
||||
@@ -102111,7 +102212,7 @@ function getExtension(platform2) {
|
||||
|
||||
// src/utils/inputs.ts
|
||||
var import_node_fs8 = __toESM(require("node:fs"), 1);
|
||||
var import_node_path = __toESM(require("node:path"), 1);
|
||||
var import_node_path2 = __toESM(require("node:path"), 1);
|
||||
function loadInputs() {
|
||||
const workingDirectory = getInput("working-directory");
|
||||
const version3 = getInput("version");
|
||||
@@ -102257,7 +102358,7 @@ function getToolBinDir(workingDirectory) {
|
||||
}
|
||||
if (process.platform === "win32") {
|
||||
if (process.env.RUNNER_TEMP !== void 0) {
|
||||
return `${process.env.RUNNER_TEMP}${import_node_path.default.sep}uv-tool-bin-dir`;
|
||||
return `${process.env.RUNNER_TEMP}${import_node_path2.default.sep}uv-tool-bin-dir`;
|
||||
}
|
||||
throw Error(
|
||||
"Could not determine UV_TOOL_BIN_DIR. Please make sure RUNNER_TEMP is set or provide the tool-bin-dir input"
|
||||
@@ -102273,7 +102374,7 @@ function getToolDir(workingDirectory) {
|
||||
}
|
||||
if (process.platform === "win32") {
|
||||
if (process.env.RUNNER_TEMP !== void 0) {
|
||||
return `${process.env.RUNNER_TEMP}${import_node_path.default.sep}uv-tool-dir`;
|
||||
return `${process.env.RUNNER_TEMP}${import_node_path2.default.sep}uv-tool-dir`;
|
||||
}
|
||||
throw Error(
|
||||
"Could not determine UV_TOOL_DIR. Please make sure RUNNER_TEMP is set or provide the tool-dir input"
|
||||
@@ -102305,7 +102406,7 @@ function getCacheLocalPath(workingDirectory, versionFile, enableCache) {
|
||||
if (process.env.RUNNER_ENVIRONMENT === "github-hosted") {
|
||||
if (process.env.RUNNER_TEMP !== void 0) {
|
||||
return {
|
||||
path: `${process.env.RUNNER_TEMP}${import_node_path.default.sep}setup-uv-cache`,
|
||||
path: `${process.env.RUNNER_TEMP}${import_node_path2.default.sep}setup-uv-cache`,
|
||||
source: 3 /* Default */
|
||||
};
|
||||
}
|
||||
@@ -102315,12 +102416,12 @@ function getCacheLocalPath(workingDirectory, versionFile, enableCache) {
|
||||
}
|
||||
if (process.platform === "win32") {
|
||||
return {
|
||||
path: `${process.env.APPDATA}${import_node_path.default.sep}uv${import_node_path.default.sep}cache`,
|
||||
path: `${process.env.APPDATA}${import_node_path2.default.sep}uv${import_node_path2.default.sep}cache`,
|
||||
source: 3 /* Default */
|
||||
};
|
||||
}
|
||||
return {
|
||||
path: `${process.env.HOME}${import_node_path.default.sep}.cache${import_node_path.default.sep}uv`,
|
||||
path: `${process.env.HOME}${import_node_path2.default.sep}.cache${import_node_path2.default.sep}uv`,
|
||||
source: 3 /* Default */
|
||||
};
|
||||
}
|
||||
@@ -102351,12 +102452,12 @@ function getUvPythonDir() {
|
||||
}
|
||||
if (process.env.RUNNER_ENVIRONMENT !== "github-hosted") {
|
||||
if (process.platform === "win32") {
|
||||
return `${process.env.APPDATA}${import_node_path.default.sep}uv${import_node_path.default.sep}python`;
|
||||
return `${process.env.APPDATA}${import_node_path2.default.sep}uv${import_node_path2.default.sep}python`;
|
||||
}
|
||||
return `${process.env.HOME}${import_node_path.default.sep}.local${import_node_path.default.sep}share${import_node_path.default.sep}uv${import_node_path.default.sep}python`;
|
||||
return `${process.env.HOME}${import_node_path2.default.sep}.local${import_node_path2.default.sep}share${import_node_path2.default.sep}uv${import_node_path2.default.sep}python`;
|
||||
}
|
||||
if (process.env.RUNNER_TEMP !== void 0) {
|
||||
return `${process.env.RUNNER_TEMP}${import_node_path.default.sep}uv-python-dir`;
|
||||
return `${process.env.RUNNER_TEMP}${import_node_path2.default.sep}uv-python-dir`;
|
||||
}
|
||||
throw Error(
|
||||
"Could not determine UV_PYTHON_INSTALL_DIR. Please make sure RUNNER_TEMP is set or provide the UV_PYTHON_INSTALL_DIR environment variable"
|
||||
@@ -102376,10 +102477,10 @@ function expandTilde(input) {
|
||||
return input;
|
||||
}
|
||||
function normalizePath(inputPath) {
|
||||
const normalized = import_node_path.default.normalize(inputPath);
|
||||
const root = import_node_path.default.parse(normalized).root;
|
||||
const normalized = import_node_path2.default.normalize(inputPath);
|
||||
const root = import_node_path2.default.parse(normalized).root;
|
||||
let trimmed = normalized;
|
||||
while (trimmed.length > root.length && trimmed.endsWith(import_node_path.default.sep)) {
|
||||
while (trimmed.length > root.length && trimmed.endsWith(import_node_path2.default.sep)) {
|
||||
trimmed = trimmed.slice(0, -1);
|
||||
}
|
||||
return trimmed;
|
||||
@@ -102387,7 +102488,7 @@ function normalizePath(inputPath) {
|
||||
function resolveRelativePath(workingDirectory, inputPath) {
|
||||
const hasNegation = inputPath.startsWith("!");
|
||||
const pathWithoutNegation = hasNegation ? inputPath.substring(1) : inputPath;
|
||||
const resolvedPath = import_node_path.default.resolve(workingDirectory, pathWithoutNegation);
|
||||
const resolvedPath = import_node_path2.default.resolve(workingDirectory, pathWithoutNegation);
|
||||
debug(
|
||||
`Resolving relative path ${inputPath} to ${hasNegation ? "!" : ""}${resolvedPath}`
|
||||
);
|
||||
|
||||
+51
-1
@@ -47182,6 +47182,42 @@ var semver = __toESM(require_semver(), 1);
|
||||
|
||||
// src/download/checksum/known-checksums.json
|
||||
var known_checksums_default = {
|
||||
"aarch64-apple-darwin-0.13.7": "81b811b57e4624df7ed3aac148e0359100d9962f3d9dce00aec533dc2e086731",
|
||||
"aarch64-pc-windows-msvc-0.13.7": "505d9e65e7692bac3ddf98c66754aa26c5050c409c184af30a881a0a72cc85e3",
|
||||
"aarch64-unknown-linux-gnu-0.13.7": "71279f8d3c67241e807b9d8db872d1bf541579fb9f08b7d1eb1682196d1e57dc",
|
||||
"aarch64-unknown-linux-musl-0.13.7": "2d3ec076a0c4c0e8250bb6418c44080828b544f1a3be0b6e46adf9fb6923de45",
|
||||
"arm-unknown-linux-musleabihf-0.13.7": "2c029d1eda470c667e46a36fc5e2479c9a3e4af91e0cabcde07711bf40d587a9",
|
||||
"armv7-unknown-linux-gnueabihf-0.13.7": "5e2a1315a1b8b4a25250d536f62fa5c1ab5ed17233e7bf486c3c7849cb663284",
|
||||
"armv7-unknown-linux-musleabihf-0.13.7": "4a1a7dc0b1713bbeac665a2f95e680eea3bb7ecebea226ae3b2de552bc72e88b",
|
||||
"i686-pc-windows-msvc-0.13.7": "fa2abbf16f7d12cb01c9b7f313d843218fbd91a9d3fab487cc06a1d6765b27bf",
|
||||
"i686-unknown-linux-gnu-0.13.7": "cc4f86390f9c99e8f53530e5e7f2cdc6ae7c011c9e805764332a3e3c01a378e4",
|
||||
"i686-unknown-linux-musl-0.13.7": "c2d50f5c64eb81fd1fd1ec5870403c0533fe4b6bf76f940cc5e97824e49ab782",
|
||||
"powerpc64le-unknown-linux-gnu-0.13.7": "e8b65412482f848743e73566808f5bb480e826c9ce25361997891fcf71299080",
|
||||
"riscv64gc-unknown-linux-gnu-0.13.7": "48aff38af87c7c8255beb9b51b3676598045786ac5197de15fea54ebfe6c72e1",
|
||||
"riscv64gc-unknown-linux-musl-0.13.7": "6c2e67417dda9661e67c2591a6226805ef2ed8ebc203baeed411f67d459207b2",
|
||||
"s390x-unknown-linux-gnu-0.13.7": "2b64a479b905b9cdab99c71105e523a0d7aa79581cbd716d40bce26d7b595428",
|
||||
"x86_64-apple-darwin-0.13.7": "20c47e4c1f630b8abaff8c291fa9b9aa300fef92c4fbff95adf198b55287cda7",
|
||||
"x86_64-pc-windows-msvc-0.13.7": "0cdc5b38fe5a8168ed6a25814f5ba43c21d313dd3187314fccb37b7cec46e021",
|
||||
"x86_64-unknown-linux-gnu-0.13.7": "c5221ff41b7892bfc223543883600125f6a47fe845093e0f5bdff4f359196d83",
|
||||
"x86_64-unknown-linux-musl-0.13.7": "287491da03f2a785c70fa75b13e1f849918c2f2b5415fe84876b8214eeb792f9",
|
||||
"aarch64-apple-darwin-0.13.6": "60fbd5c8a1ed681845eea28d9d622fcde03c51e91a43465b64a1e17db1ed3472",
|
||||
"aarch64-pc-windows-msvc-0.13.6": "c2426c0c8e28b53d8c440e47a18d96ad4db51e159866c0e81435b196d7f0081c",
|
||||
"aarch64-unknown-linux-gnu-0.13.6": "229e194255c7958d86d56e8790d969a6f74736592133f0dfd0076f754c642c1d",
|
||||
"aarch64-unknown-linux-musl-0.13.6": "819692e404d23e5aae6bc44c0e260f1f5492fd1910ab4693b2c650f926dbe800",
|
||||
"arm-unknown-linux-musleabihf-0.13.6": "57ac0f7c04deb42c5d686b4eeeef555c442db6ffea16fe4cbd7adb0384403794",
|
||||
"armv7-unknown-linux-gnueabihf-0.13.6": "d00cd4949c4524c934afcfee1aedfa9d337cf4e43be4d6b692ad8d74d0a65562",
|
||||
"armv7-unknown-linux-musleabihf-0.13.6": "b215398c886e8cc2cfa282fe346c02025957f8633b75a3d4fd848e0adda4eddd",
|
||||
"i686-pc-windows-msvc-0.13.6": "32ceb64db231cbedfd499f7654c72e4c0b564f2846f9e76c0a4a7b2d03d7e67c",
|
||||
"i686-unknown-linux-gnu-0.13.6": "665ea831c38d342900950e606beb2ccc37b7ba0fcefc37b814eb4b076305f2b6",
|
||||
"i686-unknown-linux-musl-0.13.6": "de3a015c4b0fce63c178ae4fa95c94c873adfd92fa1e258c6a2a94e529812629",
|
||||
"powerpc64le-unknown-linux-gnu-0.13.6": "3b2847185ec2946fcc928500efef7e3e74c255d3be6f2cb435081a84885d8c6c",
|
||||
"riscv64gc-unknown-linux-gnu-0.13.6": "517052603ed46483b59d8875c9c61a577946b8f493c73e4339e45e7b119171d0",
|
||||
"riscv64gc-unknown-linux-musl-0.13.6": "659a95dc6aee3ecf86742a08d8ca6c6261422121cbd41decc0042f5a71af6305",
|
||||
"s390x-unknown-linux-gnu-0.13.6": "fb56d731308aa5c7718059d71afcb14d9a933a974997cee3d4eb5d06fc462a4b",
|
||||
"x86_64-apple-darwin-0.13.6": "63ba17fdda55ad1a230d4b37fc6017ffa10c23688c83818bd3bfdf914c652a02",
|
||||
"x86_64-pc-windows-msvc-0.13.6": "a2a8820d5eea32f08ef467ef3b7f66883a9b076d5737a2fc2fbb5f458d1bb50f",
|
||||
"x86_64-unknown-linux-gnu-0.13.6": "f29c3e94ffabd7e6f3ba521dba169a9b7ec12100bf3257087f0f24f6123f3645",
|
||||
"x86_64-unknown-linux-musl-0.13.6": "5d61f26b6c7213779eda90edc6971ea6b0b796bfb8d49a574c8ad69b59838548",
|
||||
"aarch64-apple-darwin-0.13.5": "743f85035a1996ecb350659e01cd9faea9709829be09b1b4b03c73eaf3c9cd73",
|
||||
"aarch64-pc-windows-msvc-0.13.5": "09f47edf90726084a70f9426f6e3ca4f46e9bf7cbf23b1716ec64d60b055fae3",
|
||||
"aarch64-unknown-linux-gnu-0.13.5": "4bb69cf95ed13f23713bb7bc09f241896ea0c75b7c557e615a20604b82f9c403",
|
||||
@@ -52836,7 +52872,8 @@ var import_node_readline = require("node:readline");
|
||||
var import_node_stream = require("node:stream");
|
||||
|
||||
// src/utils/constants.ts
|
||||
var VERSIONS_MANIFEST_URL = "https://raw.githubusercontent.com/astral-sh/versions/main/v1/uv.ndjson";
|
||||
var VERSIONS_MANIFEST_URL = "https://releases.astral.sh/github/versions/main/v1/uv.ndjson";
|
||||
var GITHUB_VERSIONS_MANIFEST_URL = "https://raw.githubusercontent.com/astral-sh/versions/main/v1/uv.ndjson";
|
||||
|
||||
// src/utils/fetch.ts
|
||||
var import_undici2 = __toESM(require_undici2(), 1);
|
||||
@@ -52908,6 +52945,19 @@ async function getLatestVersion(manifestUrl = VERSIONS_MANIFEST_URL) {
|
||||
return latestVersion;
|
||||
}
|
||||
async function fetchManifestResponse(manifestUrl) {
|
||||
try {
|
||||
return await fetchManifestResponseFromUrl(manifestUrl);
|
||||
} catch (error2) {
|
||||
if (manifestUrl !== VERSIONS_MANIFEST_URL) {
|
||||
throw error2;
|
||||
}
|
||||
info2(
|
||||
`Failed to fetch manifest from Astral mirror, falling back to GitHub: ${error2.message}`
|
||||
);
|
||||
return await fetchManifestResponseFromUrl(GITHUB_VERSIONS_MANIFEST_URL);
|
||||
}
|
||||
}
|
||||
async function fetchManifestResponseFromUrl(manifestUrl) {
|
||||
let response;
|
||||
for (let attempt = 1; attempt <= MANIFEST_FETCH_ATTEMPTS; attempt++) {
|
||||
info2(`Fetching manifest data from ${manifestUrl} ...`);
|
||||
|
||||
@@ -6,7 +6,7 @@ This document covers advanced options for configuring which version of uv to ins
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version: "latest"
|
||||
```
|
||||
@@ -19,7 +19,7 @@ When `manifest-file` is set, `latest-known` still selects a version from setup-u
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv known to setup-uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version: "latest-known"
|
||||
```
|
||||
@@ -28,7 +28,7 @@ When `manifest-file` is set, `latest-known` still selects a version from setup-u
|
||||
|
||||
```yaml
|
||||
- name: Install a specific version of uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version: "0.4.4"
|
||||
```
|
||||
@@ -41,21 +41,21 @@ to install the latest version that satisfies the range.
|
||||
|
||||
```yaml
|
||||
- name: Install a semver range of uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version: ">=0.4.0"
|
||||
```
|
||||
|
||||
```yaml
|
||||
- name: Pinning a minor version of uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version: "0.4.x"
|
||||
```
|
||||
|
||||
```yaml
|
||||
- name: Install a pep440-specifier-satisfying version of uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version: ">=0.4.25,<0.5"
|
||||
```
|
||||
@@ -67,7 +67,7 @@ You can change this behavior using the `resolution-strategy` input:
|
||||
|
||||
```yaml
|
||||
- name: Install the lowest compatible version of uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version: ">=0.4.0"
|
||||
resolution-strategy: "lowest"
|
||||
@@ -92,7 +92,7 @@ as `UV_PYTHON`. Only a single Python version is supported; multiple fallback ver
|
||||
|
||||
```yaml
|
||||
- name: Install uv based on the version defined in pyproject.toml
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version-file: "pyproject.toml"
|
||||
```
|
||||
@@ -103,7 +103,7 @@ silently picking up a newer uv until the lockfile is updated.
|
||||
|
||||
```yaml
|
||||
- name: Install uv based on the version locked in uv.lock
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version-file: "uv.lock"
|
||||
```
|
||||
|
||||
+12
-12
@@ -24,7 +24,7 @@ The computed cache key is available as the `cache-key` output:
|
||||
```yaml
|
||||
- name: Setup uv
|
||||
id: setup-uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
- name: Print cache key
|
||||
@@ -54,7 +54,7 @@ You can optionally define a custom cache key suffix.
|
||||
```yaml
|
||||
- name: Enable caching and define a custom cache key suffix
|
||||
id: setup-uv
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-suffix: "optional-suffix"
|
||||
@@ -93,7 +93,7 @@ changes. If you use relative paths, they are relative to the working directory.
|
||||
|
||||
```yaml
|
||||
- name: Define a cache dependency glob
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-dependency-glob: "**/pyproject.toml"
|
||||
@@ -101,7 +101,7 @@ changes. If you use relative paths, they are relative to the working directory.
|
||||
|
||||
```yaml
|
||||
- name: Define a list of cache dependency globs
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-dependency-glob: |
|
||||
@@ -111,7 +111,7 @@ changes. If you use relative paths, they are relative to the working directory.
|
||||
|
||||
```yaml
|
||||
- name: Define an absolute cache dependency glob
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-dependency-glob: "/tmp/my-folder/requirements*.txt"
|
||||
@@ -119,7 +119,7 @@ changes. If you use relative paths, they are relative to the working directory.
|
||||
|
||||
```yaml
|
||||
- name: Never invalidate the cache
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-dependency-glob: ""
|
||||
@@ -132,7 +132,7 @@ By default, the cache will be restored.
|
||||
|
||||
```yaml
|
||||
- name: Don't restore an existing cache
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
restore-cache: false
|
||||
@@ -148,7 +148,7 @@ these events. Set `save-cache: true` to save the cache for all events.
|
||||
|
||||
```yaml
|
||||
- name: Don't save the cache after the run
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
save-cache: false
|
||||
@@ -174,7 +174,7 @@ It defaults to `setup-uv-cache` in the `TMP` dir, `D:\a\_temp\setup-uv-cache` on
|
||||
|
||||
```yaml
|
||||
- name: Define a custom uv cache path
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
cache-local-path: "/path/to/cache"
|
||||
```
|
||||
@@ -191,7 +191,7 @@ If you want to prune the cache before saving it, enable cache pruning with the `
|
||||
|
||||
```yaml
|
||||
- name: Prune the cache before saving it
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
prune-cache: true
|
||||
@@ -210,7 +210,7 @@ To force managed Python installs, set `UV_PYTHON_PREFERENCE=only-managed`.
|
||||
|
||||
```yaml
|
||||
- name: Cache Python installs
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
cache-python: true
|
||||
@@ -228,7 +228,7 @@ If you want to ignore this, set the `ignore-nothing-to-cache` input to `true`.
|
||||
|
||||
```yaml
|
||||
- name: Ignore nothing to cache
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
enable-cache: true
|
||||
ignore-nothing-to-cache: true
|
||||
|
||||
@@ -11,7 +11,7 @@ You can specify a checksum to override those values. The sha256 hashes can also
|
||||
|
||||
```yaml
|
||||
- name: Install a specific version and validate the checksum
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
version: "0.3.1"
|
||||
checksum: "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8"
|
||||
@@ -20,10 +20,12 @@ You can specify a checksum to override those values. The sha256 hashes can also
|
||||
## Manifest file
|
||||
|
||||
By default, setup-uv reads version metadata from
|
||||
[`astral-sh/versions`](https://github.com/astral-sh/versions).
|
||||
the [Astral mirror](https://releases.astral.sh/github/versions/main/v1/uv.ndjson).
|
||||
If the mirror request fails, it falls back to [`astral-sh/versions`](https://github.com/astral-sh/versions).
|
||||
|
||||
The `manifest-file` input lets you override that source with your own URL, for example to test
|
||||
custom uv builds or alternate download locations.
|
||||
custom uv builds or alternate download locations. Custom manifest URLs do not fall back to the
|
||||
default sources.
|
||||
|
||||
### Format
|
||||
|
||||
@@ -40,7 +42,7 @@ The `archive_format` field is currently ignored.
|
||||
|
||||
```yaml
|
||||
- name: Use a custom manifest file
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
manifest-file: "https://example.com/my-custom-manifest.ndjson"
|
||||
```
|
||||
@@ -59,7 +61,7 @@ You can disable this by setting the `add-problem-matchers` input to `false`.
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv without problem matchers
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
add-problem-matchers: false
|
||||
```
|
||||
|
||||
@@ -9,7 +9,7 @@ This allows directly using it in later steps:
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv and activate the environment
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
activate-environment: true
|
||||
- run: uv pip install pip
|
||||
@@ -32,7 +32,7 @@ key: build-${{ runner.os }}-${{ runner.arch }}-${{ steps.setup-uv.outputs.python
|
||||
You can customize the venv location with `venv-path`, for example to place it in the runner temp directory:
|
||||
|
||||
```yaml
|
||||
- uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
- uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
activate-environment: true
|
||||
venv-path: ${{ runner.temp }}/custom-venv
|
||||
@@ -50,12 +50,13 @@ You can customize the venv location with `venv-path`, for example to place it in
|
||||
|
||||
## GitHub authentication token
|
||||
|
||||
By default, this action resolves available uv versions from
|
||||
[`astral-sh/versions`](https://github.com/astral-sh/versions), then downloads uv artifacts from
|
||||
GitHub Releases.
|
||||
By default, this action fetches version metadata and uv archives from the Astral mirror.
|
||||
If a manifest request fails, it falls back to `raw.githubusercontent.com`. If an archive download
|
||||
fails, it falls back to GitHub Releases.
|
||||
|
||||
You can provide a token via `github-token` to authenticate those downloads. By default, the
|
||||
`GITHUB_TOKEN` secret is used, which is automatically provided by GitHub Actions.
|
||||
You can provide a token via `github-token` to authenticate GitHub Releases downloads. The token
|
||||
is not sent to the Astral mirror or used for manifest requests. By default, the `GITHUB_TOKEN`
|
||||
secret is used, which is automatically provided by GitHub Actions.
|
||||
|
||||
If the default
|
||||
[permissions for the GitHub token](https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication#permissions-for-the-github_token)
|
||||
@@ -63,7 +64,7 @@ are not sufficient, you can provide a custom GitHub token with the necessary per
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv with a custom GitHub token
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
github-token: ${{ secrets.CUSTOM_GITHUB_TOKEN }}
|
||||
```
|
||||
@@ -81,7 +82,7 @@ input:
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv with a custom tool dir
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
tool-dir: "/path/to/tool/dir"
|
||||
```
|
||||
@@ -100,7 +101,7 @@ If you want to change this behaviour (especially on self-hosted runners) you can
|
||||
|
||||
```yaml
|
||||
- name: Install the latest version of uv with a custom tool bin dir
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
tool-bin-dir: "/path/to/tool-bin/dir"
|
||||
```
|
||||
@@ -117,7 +118,7 @@ This action supports expanding the `~` character to the user's home directory fo
|
||||
|
||||
```yaml
|
||||
- name: Expand the tilde character
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
cache-local-path: "~/path/to/cache"
|
||||
tool-dir: "~/path/to/tool/dir"
|
||||
@@ -134,7 +135,7 @@ If you want to ignore this, set the `ignore-empty-workdir` input to `true`.
|
||||
|
||||
```yaml
|
||||
- name: Ignore empty workdir
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
ignore-empty-workdir: true
|
||||
```
|
||||
@@ -160,7 +161,7 @@ This action sets several environment variables that influence uv's behavior and
|
||||
|
||||
```yaml
|
||||
- name: Example using environment variables
|
||||
uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
||||
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
||||
with:
|
||||
python-version: "3.12"
|
||||
tool-dir: "/custom/tool/dir"
|
||||
|
||||
Generated
+561
-593
@@ -26,7 +26,7 @@
|
||||
"@types/semver": "^7.8.0",
|
||||
"@vercel/ncc": "^0.45.0",
|
||||
"esbuild": "^0.28.2",
|
||||
"jest": "^30.5.2",
|
||||
"jest": "^30.5.0",
|
||||
"js-yaml": "^5.4.1",
|
||||
"ts-jest": "^29.4.11",
|
||||
"typescript": "^6.0.3"
|
||||
@@ -1704,17 +1704,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/console": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/console/-/console-30.5.2.tgz",
|
||||
"integrity": "sha512-e8sQC4pCMHPBrPX7Hk8TJr+DM5dkUnImSTNag8SEWFAFAF6xIz4AJvCKapnrdHnZxep4bxw4PhG+ZbimYBMyKw==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/console/-/console-30.5.0.tgz",
|
||||
"integrity": "sha512-BI1DpOedrJqbrYVi9yNhDWGjqphR/+gsM4STmg2+VaeXm7851hvpBDyKOZGMXATTrGEnFuEseQvLCtrrRmG0GQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"slash": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1722,18 +1722,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/core": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/core/-/core-30.5.2.tgz",
|
||||
"integrity": "sha512-/jqvFWoJF7LV1a6AUpYMbMm+2yIYsHJfR474H0SCzr9k8tnO/jl9wRg6zSG6lxgf6EozNlCG4amFzWsbZSvvZA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/core/-/core-30.5.0.tgz",
|
||||
"integrity": "sha512-DLjRME+NY//j+UDTSfWnjoP0srrdR3DrJRy7yFZktGIwzpN2iVy2vMo0jziZ5c2Ij7bOwlJRXKVWtxZusazOJg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/console": "30.5.2",
|
||||
"@jest/console": "30.5.0",
|
||||
"@jest/pattern": "30.5.0",
|
||||
"@jest/reporters": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/reporters": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"chalk": "^4.1.2",
|
||||
@@ -1741,20 +1741,20 @@
|
||||
"exit-x": "^0.2.2",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-changed-files": "30.5.1",
|
||||
"jest-config": "30.5.2",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-changed-files": "30.5.0",
|
||||
"jest-config": "30.5.0",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-resolve": "30.5.1",
|
||||
"jest-resolve-dependencies": "30.5.2",
|
||||
"jest-runner": "30.5.2",
|
||||
"jest-runtime": "30.5.2",
|
||||
"jest-snapshot": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-validate": "30.5.1",
|
||||
"jest-watcher": "30.5.2",
|
||||
"pretty-format": "30.5.1",
|
||||
"jest-resolve": "30.5.0",
|
||||
"jest-resolve-dependencies": "30.5.0",
|
||||
"jest-runner": "30.5.0",
|
||||
"jest-runtime": "30.5.0",
|
||||
"jest-snapshot": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-validate": "30.5.0",
|
||||
"jest-watcher": "30.5.0",
|
||||
"pretty-format": "30.5.0",
|
||||
"slash": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1780,39 +1780,39 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/environment": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.5.2.tgz",
|
||||
"integrity": "sha512-nwFPOUMbmsjNNRCpnJpB9HbSZu4C07wDDds++5j+j1MezzPLxMPDdbdUVjr2o4RULDOValnDd70taPFI1EtxAg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.5.0.tgz",
|
||||
"integrity": "sha512-HUaqexIauIh69IQ4NTuPDEUCB8g8T4TOPSIzQOS18mwI/KEHKQk1j013K2o6ra031szZE2t5jGmVx3xbzdjgKA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/fake-timers": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/fake-timers": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "30.5.2"
|
||||
"jest-mock": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/expect": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.5.2.tgz",
|
||||
"integrity": "sha512-2E+1Pg6jJxbRjLNLpciC71iri/3qsKJL222/aXJEFwC0VdUSvfS+JZQQLEVjUYYc8t8pQu2MGE3cF2+bNTYRsg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.5.0.tgz",
|
||||
"integrity": "sha512-jEmgmgJEobJ3zEhDOGp1VAJ6JkoVelpS8uZ1ae1Ul/5lP78UKJKmmU0lciJwd6JdnqOXHaaS/QCKwbf1dHI9MA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"expect": "30.5.2",
|
||||
"jest-snapshot": "30.5.2"
|
||||
"expect": "30.5.0",
|
||||
"jest-snapshot": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/expect-utils": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.5.2.tgz",
|
||||
"integrity": "sha512-d/HOLSrJUlBIl6n3LzOa7cjW3xdePm5H5gQw2lixZ/0h157l9sw3mLblzFqnPcTbhDzhRQdBOX3A3KcG73nm5Q==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.5.0.tgz",
|
||||
"integrity": "sha512-5j0ztPxSy3McUJihjkDdCyCfjvT2hxykFTWsgEBZKB8qsw9ALdCiGTpTRH5gnf/d+qI4SflYUJ0dWNbzjQCWbA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1823,18 +1823,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/fake-timers": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.5.2.tgz",
|
||||
"integrity": "sha512-GKk0h0tKT5SpDPxDhPg3r9mm5s8/YCBzVNMOGdRiQXwUiMsjU10mVPlMaQstH6/cu50vOb8N9oQUMETHuwwxKw==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.5.0.tgz",
|
||||
"integrity": "sha512-sg8xIbYwe5GdB/vT3/0qrDIpO7Ov9mazHi++M95uynmDKEZ70G1r169AWct73H07VrTZhrz1SJEfLtjYv8tE3A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@sinonjs/fake-timers": "^15.4.0",
|
||||
"@types/node": "*",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-mock": "30.5.2",
|
||||
"jest-util": "30.5.1"
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-mock": "30.5.0",
|
||||
"jest-util": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -1851,16 +1851,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/globals": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.5.2.tgz",
|
||||
"integrity": "sha512-62zfS+dL+M5aTNHXCNLyqD+j4oqxTIzDYrZbpqMP8Yn+gvlAGyzC6BSPNb1ZmFOakV1RtFYX/O3FCQXSWmQdgg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.5.0.tgz",
|
||||
"integrity": "sha512-h7eJx534czwL8lQMYB0hwLT4/HquO8EX/RtYL7RNUHyUyWWVciYjoudN4Ns5JmNvn2/jh0Vm9UstZjEzJJ5EsQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/environment": "30.5.2",
|
||||
"@jest/expect": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"jest-mock": "30.5.2"
|
||||
"@jest/environment": "30.5.0",
|
||||
"@jest/expect": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"jest-mock": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -1897,17 +1897,17 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@jest/reporters": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.5.2.tgz",
|
||||
"integrity": "sha512-ev6E9iG73twQcfAfoTnviuYkr3yOrYbzAtMFCimv2fxHXPIp9PBt2u1wNMt0aYWgl8FPwIcS8oqRJg6alnht4Q==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.5.0.tgz",
|
||||
"integrity": "sha512-FEAuusWm+PUOn9ydjaHhpOpyPmS6IbGE04HaKTuUI4zd8eqYZiXiNLoCsdCog/l2XnNj53E9pFy64UltcvfJKg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@bcoe/v8-coverage": "^0.2.3",
|
||||
"@jest/console": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/console": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.31",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
@@ -1920,9 +1920,9 @@
|
||||
"istanbul-lib-report": "^3.0.0",
|
||||
"istanbul-lib-source-maps": "^5.0.0",
|
||||
"istanbul-reports": "^3.1.3",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-worker": "30.5.1",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-worker": "30.5.0",
|
||||
"slash": "^3.0.0",
|
||||
"string-length": "^4.0.2",
|
||||
"v8-to-istanbul": "^9.0.1"
|
||||
@@ -1953,13 +1953,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/snapshot-utils": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.5.1.tgz",
|
||||
"integrity": "sha512-V3wnxNtiVmw5PPVg433Cn3VdXnsOeu/ofLw3KC04Bn2y1wIlU5kozXQn48rhrgj/02LrCVtntTEF1yBha0XSUw==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.5.0.tgz",
|
||||
"integrity": "sha512-iWQtIsi2dRsO2oWzVceOeynuRJiYTW8gsDVp5wFQ02ipHluQsNgBpasWSHiawVxukIlsGLdCtCSbIEK7fPtpvQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"natural-compare": "^1.4.0"
|
||||
@@ -1969,9 +1969,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/source-map": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.5.2.tgz",
|
||||
"integrity": "sha512-c5CehvkbfHX6yyNg7bMn2ylqlp9AHXuZ/3hPH/Lh5bxD/vefd/lV9HBjMqXef9yQNqkdwyZvkLSVSwB38hy8Qw==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.5.0.tgz",
|
||||
"integrity": "sha512-xWpTJP9D0bDFGbPGT8XuWSwwha/iHADyyKzUnMx4UbdgnHugxrDaQFO4RZ8x4ZsFzRP6pNii8uvlgKCDxCIuDg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1985,14 +1985,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/test-result": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.5.2.tgz",
|
||||
"integrity": "sha512-eO6YU5rsLfs60ne694e0IAmRgeBnoA8mu0nlxXDbl/1j5km0o2vO9/VbbUIKIH+WRKKEI+ELgwraRGn2Lhep8g==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.5.0.tgz",
|
||||
"integrity": "sha512-9IlPqUzUMkVDmoDqSSrVVLroVotgN3hTUPWPwq24XWXhh1Zpg915RXZ5pgRJ/7j4YE/kng5nqjSn4p3S68SZJA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/console": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/console": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/istanbul-lib-coverage": "^2.0.6",
|
||||
"collect-v8-coverage": "^1.0.2"
|
||||
},
|
||||
@@ -2001,15 +2001,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/test-sequencer": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.5.2.tgz",
|
||||
"integrity": "sha512-bmij8jZyYAC47ExT2GeP7PcrlwSNS+Bp3KeRuBH88gpcxqDv6fljN8PemS4J/lLZ79xb6mpaennQTTq0zUAVVg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.5.0.tgz",
|
||||
"integrity": "sha512-TXlvSDIVv482b83hD8A8WtxDJEmGF47f60W6jRXOQL0Isfs3hKtk4rZIm9R/jLzAibg8+c56y+Q00BQs8R7Xcg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"slash": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -2017,23 +2017,23 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/transform": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.5.2.tgz",
|
||||
"integrity": "sha512-LBGwmaE886C41jDZ65eqR1YbXM7642MK3ZhTowZd5+xDlrDLuf4ePuDdDmVSvcr8NTVJ3MqxLkMbUCzuigUaoQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.5.0.tgz",
|
||||
"integrity": "sha512-n1cYhoByyULEIXi64wbT4Lq91qeT1E6bwpM//sprFXhw955qaiHTdAmy1c1rNFGB6fCf1J+nxDUSf3RGwgZP5A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.27.4",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.31",
|
||||
"babel-plugin-istanbul": "^8.0.0",
|
||||
"chalk": "^4.1.2",
|
||||
"convert-source-map": "^2.0.0",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"pirates": "^4.0.7",
|
||||
"slash": "^3.0.0",
|
||||
"write-file-atomic": "^5.0.1"
|
||||
@@ -2043,9 +2043,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/types": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-30.5.1.tgz",
|
||||
"integrity": "sha512-LvVYn83nnXPl+Rg98nvcFgjx6nRMTArhSn6RAX/w3ELn54S8A42TYZvsCMdGUqTM8S0wyXbtlQdU6Hi6dykj9g==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-30.5.0.tgz",
|
||||
"integrity": "sha512-s1N+79S4Yp9ZgklCauZXi+YPJdCdtStNYQT32stuD6EeQaIBGHoUfyj2P0YWy8RmuQfaJboO+ulxEvEheR/POQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -2111,9 +2111,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/wasm-runtime": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz",
|
||||
"integrity": "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==",
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.5.tgz",
|
||||
"integrity": "sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
@@ -2766,9 +2766,6 @@
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2783,9 +2780,6 @@
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2800,9 +2794,6 @@
|
||||
"loong64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2817,9 +2808,6 @@
|
||||
"loong64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2834,9 +2822,6 @@
|
||||
"ppc64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2851,9 +2836,6 @@
|
||||
"riscv64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2868,9 +2850,6 @@
|
||||
"riscv64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2885,9 +2864,6 @@
|
||||
"s390x"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2902,9 +2878,6 @@
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2919,9 +2892,6 @@
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -3096,13 +3066,13 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/babel-jest": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.5.2.tgz",
|
||||
"integrity": "sha512-ES8WeJ2fNWPEDunyAtUfJ12nHyaWUloCHdkfK2oW5uSoQSUmjNKdWiGaXJITJwvFEWoD/evHEg/QoCXAvLaQqQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.5.0.tgz",
|
||||
"integrity": "sha512-PrhPHlKC+MsLnuNzgIH/y1dkz1f6cSfKWaQeaG8WxLMuG44dYWQ8E9uRrsBbAGCU/3+BEFYPN4d6G3Zc5Y+waA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@types/babel__core": "^7.20.5",
|
||||
"babel-plugin-istanbul": "^8.0.0",
|
||||
"babel-preset-jest": "30.5.0",
|
||||
@@ -3347,9 +3317,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cjs-module-lexer": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.1.tgz",
|
||||
"integrity": "sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.3.0.tgz",
|
||||
"integrity": "sha512-lmNyBzi6iYiqyrExTctfmjd8tInx+dHu9PBomTfH5RXS53c27JMFJgzNv5TyAnm3PgGf+MLy0+Ws41/HlVxdKQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -3669,18 +3639,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expect": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/expect/-/expect-30.5.2.tgz",
|
||||
"integrity": "sha512-0LNuMvs8/5mRYhnCR4k+lGV7fqPMs6Bnksda4S3zsCUmdxBpAn4zU4NNzXdq1pMKe/H4W5t/zVIDSJ/H3e0vDA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/expect/-/expect-30.5.0.tgz",
|
||||
"integrity": "sha512-8fiMWcEjPU7B9nErC4FtFcCzf2tC6I75Qf7m8wzBAWC2taZmcno3yAFEjIQL34SwoGZNgPf63UDiJLyh4SMPaw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/expect-utils": "30.5.2",
|
||||
"@jest/expect-utils": "30.5.0",
|
||||
"@jest/get-type": "30.5.0",
|
||||
"jest-matcher-utils": "30.5.2",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-mock": "30.5.2",
|
||||
"jest-util": "30.5.1"
|
||||
"jest-matcher-utils": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-mock": "30.5.0",
|
||||
"jest-util": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -4146,16 +4116,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-30.5.2.tgz",
|
||||
"integrity": "sha512-3gnpdBIza8ijCl3iMV9ChE3hSt1+46865qqod863gQtJr1DixOkAU5DoGbi3u+XlRcw++BhZQMu/y4xBdHBvSQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-30.5.0.tgz",
|
||||
"integrity": "sha512-HeFeOUEKh5gjnp1rjuSCse8Dhj0Y3KA8lsZ3azr4Wnq1nCxwMBu35MDc9mp8iblZxmeAz6wV4P241tyUB7J2Ew==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/core": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/core": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"import-local": "^3.2.0",
|
||||
"jest-cli": "30.5.2"
|
||||
"jest-cli": "30.5.0"
|
||||
},
|
||||
"bin": {
|
||||
"jest": "bin/jest.js"
|
||||
@@ -4173,14 +4143,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-changed-files": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.5.1.tgz",
|
||||
"integrity": "sha512-0+bvMM/ENhDI29Z8q1r4HxiDIi4G5tnBmSw4esfPQoj9q8Nik7KIyuxHkTVnnniJQf05SxpGaKDQ+4h28ynGPg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.5.0.tgz",
|
||||
"integrity": "sha512-dq1x8JiEnHkJDxxOrF6UJDivBRAQMwAa5tzr+VX3um0SfyMFseUPQUbe51wLwggfoa5h/EmOtSpdJxxkzSlNRQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"execa": "^5.1.1",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"p-limit": "^3.1.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4188,29 +4158,29 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-circus": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.5.2.tgz",
|
||||
"integrity": "sha512-vffFgjs5JSJ9q4ds1vNW3klKYPJfYfIY61LT/zaZgvTeASJOWZUt8LBfHgIcV4rwxlPBLl/ePBGccHEclS4PlQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.5.0.tgz",
|
||||
"integrity": "sha512-T3v7uM4wwCu+RQicjsAWCgoL3CiyuX3THSKwv2uMb9N2bMUgb+HfwDWEUma85vOGbvQNQ/YfoCXF1OCZot0ZEw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/environment": "30.5.2",
|
||||
"@jest/expect": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/environment": "30.5.0",
|
||||
"@jest/expect": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"co": "^4.6.0",
|
||||
"dedent": "^1.6.0",
|
||||
"is-generator-fn": "^2.1.0",
|
||||
"jest-each": "30.5.2",
|
||||
"jest-matcher-utils": "30.5.2",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-runtime": "30.5.2",
|
||||
"jest-snapshot": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-each": "30.5.0",
|
||||
"jest-matcher-utils": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-runtime": "30.5.0",
|
||||
"jest-snapshot": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"p-limit": "^3.1.0",
|
||||
"pretty-format": "30.5.1",
|
||||
"pretty-format": "30.5.0",
|
||||
"pure-rand": "^7.0.0",
|
||||
"slash": "^3.0.0",
|
||||
"stack-utils": "^2.0.6"
|
||||
@@ -4220,21 +4190,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-cli": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.5.2.tgz",
|
||||
"integrity": "sha512-YYYxUUVjFgPvgEleKNKMaYGIFgR3l3832Cl0kRL/oCiDZ03v7wImUtquHl2OOBCCNgprjZgBN5bczS/JklPBDg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.5.0.tgz",
|
||||
"integrity": "sha512-QHZMiy32x2K+NzJ1AuuoCAVc1Y5co0VXib3R7kD9MWcWFflzsD1eJN0wR+mkNlM+ts7C+Bjz0oOoFE5IiHylCg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/core": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/core": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"exit-x": "^0.2.2",
|
||||
"import-local": "^3.2.0",
|
||||
"jest-config": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-validate": "30.5.1",
|
||||
"jest-config": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-validate": "30.5.0",
|
||||
"yargs": "^17.7.2"
|
||||
},
|
||||
"bin": {
|
||||
@@ -4253,33 +4223,33 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-config": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.5.2.tgz",
|
||||
"integrity": "sha512-U6221OZekabePvGcGPf4raIBKMvYQWFHvhobDJRojOYaFMj2HaGytAdknjDhYc6JTz2fdHW9+6k0wWUDaNeOFQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.5.0.tgz",
|
||||
"integrity": "sha512-gYQl2FqYgiVpyuB7DutBIbJRWaq5VcHdzOXJJ51HNa8J5JrsZehIlzNFW0/9s5uvvcbzM5/LTUizYSbsFErv+w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.27.4",
|
||||
"@jest/get-type": "30.5.0",
|
||||
"@jest/pattern": "30.5.0",
|
||||
"@jest/test-sequencer": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"babel-jest": "30.5.2",
|
||||
"@jest/test-sequencer": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"babel-jest": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"ci-info": "^4.2.0",
|
||||
"deepmerge": "^4.3.1",
|
||||
"glob": "^13.0.6",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-circus": "30.5.2",
|
||||
"jest-circus": "30.5.0",
|
||||
"jest-docblock": "30.5.0",
|
||||
"jest-environment-node": "30.5.2",
|
||||
"jest-environment-node": "30.5.0",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-resolve": "30.5.1",
|
||||
"jest-runner": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-validate": "30.5.1",
|
||||
"jest-resolve": "30.5.0",
|
||||
"jest-runner": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-validate": "30.5.0",
|
||||
"parse-json": "^5.2.0",
|
||||
"pretty-format": "30.5.1",
|
||||
"pretty-format": "30.5.0",
|
||||
"slash": "^3.0.0",
|
||||
"strip-json-comments": "^3.1.1"
|
||||
},
|
||||
@@ -4304,16 +4274,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-diff": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.5.2.tgz",
|
||||
"integrity": "sha512-rBtHnI6BWTiWj3lM7fOLVfChx7R9B0u9VV3PRHawKs79x6ZjW1QoSrKenaigNGWlvhtoi2BqvDbABDie+Os3xQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.5.0.tgz",
|
||||
"integrity": "sha512-QjCfDMwdPFvLxTQmS4/Dswx3PUCiqmSXVLGljMC3SU7YG1qHVoR6b86IH/O2G9k9OMyKXz2vS2Q60VnAozNDwA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/diff-sequences": "30.5.0",
|
||||
"@jest/get-type": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"pretty-format": "30.5.1"
|
||||
"pretty-format": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -4333,50 +4303,49 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-each": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.5.2.tgz",
|
||||
"integrity": "sha512-GRrW+7fmmgmkvyfEBqc1QFdWnF1Ex5yG6Y6AWL4TTxnkWlKIT98dsKh3P3UuWm6v4XsQwVE6DEzXIPMzWJ3ZbA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.5.0.tgz",
|
||||
"integrity": "sha512-NiMFNhRygJEFqYNt8pnkxppUF6CR486GEpt9rSU6lPBf7KeccaOL0zbjxG8fgJgD//6e7zYdssnlt6j+1kI31A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/get-type": "30.5.0",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-util": "30.5.1",
|
||||
"pretty-format": "30.5.1"
|
||||
"jest-util": "30.5.0",
|
||||
"pretty-format": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-environment-node": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.5.2.tgz",
|
||||
"integrity": "sha512-Ciz4KgTGIbojxSKpuFImgWJj5EyqfE8xMq9NxWmOXnQywHHS03H9Mv+vaCB29J5pr3JBrY27WbRV18rBdjh8Dg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.5.0.tgz",
|
||||
"integrity": "sha512-bTc79ywKLz0ogbT3JIYuEhgWV4Ffd/cJe06co4v8CyRtlmju8x5gokMlGFR8ARWhmk5SnbDRxmf50XWnlZVhDg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/environment": "30.5.2",
|
||||
"@jest/fake-timers": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/environment": "30.5.0",
|
||||
"@jest/fake-timers": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-validate": "30.5.1"
|
||||
"jest-mock": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-validate": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-haste-map": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.5.1.tgz",
|
||||
"integrity": "sha512-VIFgt67jW480YDxKfEv9IYQKrFpYt7bOCMn3VsnjK7AK9qo7p6acpnA1DHwsVOULE3dTaYew/6JaTD/d0VDHoQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.5.0.tgz",
|
||||
"integrity": "sha512-0FStogBslBVOEqTOJr4oXMtFitmrWp9WscG6Gbns88i0YAuMXijCT2G5VMfg/HCR4QAnL+OF2C2ednag+HlDuA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@parcel/watcher": "^2.6.0",
|
||||
"@types/node": "*",
|
||||
"anymatch": "^3.1.3",
|
||||
@@ -4384,8 +4353,8 @@
|
||||
"fdir": "^6.5.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-worker": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-worker": "30.5.0",
|
||||
"picomatch": "^4.0.3"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4424,50 +4393,50 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-leak-detector": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.5.1.tgz",
|
||||
"integrity": "sha512-gt4GT2aWgEoCNTcBe4rqS74xTIUJxi+UD9SNSu9aOk5LmTEd6fS5KSTmAKAfitCCktQHNN+upUuL6EkBfFbMDQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.5.0.tgz",
|
||||
"integrity": "sha512-Mq11ceAkNR250Iv45RoOwuG9fb4kYbJ02qoyL7A0nCI8FV5+aG/THmcEUx5uR2dNSa4KOtz+xBKrJ8cZPhPpuQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/get-type": "30.5.0",
|
||||
"pretty-format": "30.5.1"
|
||||
"pretty-format": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-matcher-utils": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.5.2.tgz",
|
||||
"integrity": "sha512-lFkB365PTIHOhPzwrb9T6gvlDnPpOZ7/c3ewOKKB7bzztqjVrtlyRL2MkyfJXpyY2u2SKw001JKrTx14fBUFcQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.5.0.tgz",
|
||||
"integrity": "sha512-EfaYMC9f9ds7fahB/LYFTgd1Z2RS9Vpm2e46gazij0onkpoQG7Daq+MLm8/gQVqWwRVjL/RNDggbFx9MsrJEmQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/get-type": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-diff": "30.5.2",
|
||||
"pretty-format": "30.5.1"
|
||||
"jest-diff": "30.5.0",
|
||||
"pretty-format": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-message-util": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.5.1.tgz",
|
||||
"integrity": "sha512-UdQlLdd9wL/Ys7xRErckqwD6wPlSZYueosSWuHc1r2ztGLwlgPvtSJq2+BPEgaEY13WLvfFbmhTj8pba0Sd1jg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.5.0.tgz",
|
||||
"integrity": "sha512-dBYMhplGfspKaCnVk9TUy1cZnknWubpuPNEputjz0YJk1G/92R45rn45BvbPMPMtC5LVcIdxJGPOaOSQTiuzJw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/stack-utils": "^2.0.3",
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"picomatch": "^4.0.3",
|
||||
"pretty-format": "30.5.1",
|
||||
"pretty-format": "30.5.0",
|
||||
"slash": "^3.0.0",
|
||||
"stack-utils": "^2.0.6"
|
||||
},
|
||||
@@ -4489,16 +4458,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-mock": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.5.2.tgz",
|
||||
"integrity": "sha512-KTHb37Fhj8xY8qPFvTFaFJHcdsumQp+ExsUlgoX232Agmc706gagBs53+CYvulV7MVQo9AgXOUxsqzzVBoJlrA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.5.0.tgz",
|
||||
"integrity": "sha512-bP5MHZpkYrV7xpV+yvhl36DPcXoEmTR57Un5EACcdVpMY7mpkDefCBq+V4mhcjE/3rwUajT6OTrcJTN7EwN1BA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/expect-utils": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/expect-utils": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"jest-util": "30.5.1"
|
||||
"jest-util": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -4515,17 +4484,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-resolve": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.5.1.tgz",
|
||||
"integrity": "sha512-wprhLejRtwN6h8ZgaqC0eYjGJ1uMdGPT/+b3eFncbG4NWuuP9QL+vWwRinu9waw7hkOLcpMJGVJAMgBwsPssMQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.5.0.tgz",
|
||||
"integrity": "sha512-NFvQWJ4G7e2kN5712iG+12Xr325NRFGAIhovrwLfgq5Oqd4bFHITw4CzcFkZGp1GTCqemC4v1l8/yZzedKZkjw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-validate": "30.5.1",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-validate": "30.5.0",
|
||||
"slash": "^3.0.0",
|
||||
"unrs-resolver": "^1.12.1"
|
||||
},
|
||||
@@ -4534,47 +4503,47 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-resolve-dependencies": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.5.2.tgz",
|
||||
"integrity": "sha512-GMI0DP5enX9Z2qW2zFy1bOkrCfWAOPRJQ7qHt0pdfrxBPsgWxglMPrRSK2TX/wRWYxcPRSLFg3Z88qPOzHx7FQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.5.0.tgz",
|
||||
"integrity": "sha512-TnSBAp3wGOnqXBmLT3OXtJkugw6Vj2KU0IPde2EJmbGns/QMoNlkauJ7jZ8KYaxONSpx0o4pUvi+u1Q/LSk3Pg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-snapshot": "30.5.2"
|
||||
"jest-snapshot": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-runner": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.5.2.tgz",
|
||||
"integrity": "sha512-/B6px7hiiNhVSRwuv9AGn0nawYvwsHeQZ3ItTd5Gp2diFd0EOKaWVeWqcbw3L88vx1GfpCKjQkxWItZCTl11Rw==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.5.0.tgz",
|
||||
"integrity": "sha512-Q6Yt+1LvXvEstvru6sQLT7OQYC77VNl6dK0KEvBkeOHgThmXDqNp3Ox9TglDWFHU85pemqTNdKwxfnmO3vgrdA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/console": "30.5.2",
|
||||
"@jest/environment": "30.5.2",
|
||||
"@jest/source-map": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/console": "30.5.0",
|
||||
"@jest/environment": "30.5.0",
|
||||
"@jest/source-map": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"emittery": "^0.13.1",
|
||||
"exit-x": "^0.2.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-docblock": "30.5.0",
|
||||
"jest-environment-node": "30.5.2",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-leak-detector": "30.5.1",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-resolve": "30.5.1",
|
||||
"jest-runtime": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-watcher": "30.5.2",
|
||||
"jest-worker": "30.5.1",
|
||||
"jest-environment-node": "30.5.0",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"jest-leak-detector": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-resolve": "30.5.0",
|
||||
"jest-runtime": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-watcher": "30.5.0",
|
||||
"jest-worker": "30.5.0",
|
||||
"p-limit": "^3.1.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4582,19 +4551,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-runtime": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.5.2.tgz",
|
||||
"integrity": "sha512-0paUAHBlheai10A3XSy9Xh+YBG0IROy+/qzcDPzQ/nbbXrznQzeWy5qniICWK6d3W3scaRQCVAbXdcK0ibBq4w==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.5.0.tgz",
|
||||
"integrity": "sha512-VTRz0sRIw2EISeHigx1O+CMuwoG4+RKJjF8dp8okzFaDNQEcv5Mw0h5QW8VJXgb2CRF4gZIjSEBb2jdzXPagFQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/environment": "30.5.2",
|
||||
"@jest/fake-timers": "30.5.2",
|
||||
"@jest/globals": "30.5.2",
|
||||
"@jest/source-map": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/environment": "30.5.0",
|
||||
"@jest/fake-timers": "30.5.0",
|
||||
"@jest/globals": "30.5.0",
|
||||
"@jest/source-map": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"cjs-module-lexer": "^2.2.0",
|
||||
@@ -4602,13 +4571,13 @@
|
||||
"es-module-lexer": "^2.1.0",
|
||||
"glob": "^13.0.6",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-mock": "30.5.2",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-mock": "30.5.0",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-resolve": "30.5.1",
|
||||
"jest-snapshot": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-resolve": "30.5.0",
|
||||
"jest-snapshot": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"slash": "^3.0.0",
|
||||
"strip-bom": "^4.0.0"
|
||||
},
|
||||
@@ -4617,9 +4586,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-snapshot": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.5.2.tgz",
|
||||
"integrity": "sha512-jKIdes25AnAH73dOCi2qE6J6vHJ6L2vyBS11M89kT50DVJcLTf2AOjvcc+2vVaN8lUbY5v2R83aqXo3Ro9fqYA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.5.0.tgz",
|
||||
"integrity": "sha512-pZWETdcqmKve9MDTE/AX6RaeAbRhzKhhAXGozAW8Pg2FfOSdUrQ/7D+VdwE3fLQsqjpITXJVQvYVZoMEzrUl0Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -4628,20 +4597,20 @@
|
||||
"@babel/plugin-syntax-jsx": "^7.27.1",
|
||||
"@babel/plugin-syntax-typescript": "^7.27.1",
|
||||
"@babel/types": "^7.27.3",
|
||||
"@jest/expect-utils": "30.5.2",
|
||||
"@jest/expect-utils": "30.5.0",
|
||||
"@jest/get-type": "30.5.0",
|
||||
"@jest/snapshot-utils": "30.5.1",
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/snapshot-utils": "30.5.0",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"babel-preset-current-node-syntax": "^1.2.0",
|
||||
"chalk": "^4.1.2",
|
||||
"expect": "30.5.2",
|
||||
"expect": "30.5.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-diff": "30.5.2",
|
||||
"jest-matcher-utils": "30.5.2",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-util": "30.5.1",
|
||||
"pretty-format": "30.5.1",
|
||||
"jest-diff": "30.5.0",
|
||||
"jest-matcher-utils": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"pretty-format": "30.5.0",
|
||||
"semver": "^7.7.2",
|
||||
"synckit": "^0.11.8"
|
||||
},
|
||||
@@ -4663,13 +4632,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-util": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz",
|
||||
"integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.0.tgz",
|
||||
"integrity": "sha512-lzU4aGUWaS+2X/B0CmgheDasfnsVlRfZh/rNQxB9b9s8cSYUq5BcqdQA95ld+KqJXBUVVt1sqnMQ2T3OxIalmg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"ci-info": "^4.2.0",
|
||||
@@ -4694,18 +4663,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-validate": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.5.1.tgz",
|
||||
"integrity": "sha512-i/buJ56wTpxihE93hQYNMfdOThS87+HGvLZzZJmU4xggPcdTYQq051iwALLCHp3q+SkCGH+EFejQZz5EbBSkkg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.5.0.tgz",
|
||||
"integrity": "sha512-N/hsPYKgBSzBeVZ2RHCs3yvBbTZNPX7Be8q33zhyo/yeFneBL1swzly31LYU4LJ3zJM9e8TxSM8IYLo2SDJZYQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/get-type": "30.5.0",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"camelcase": "^6.3.0",
|
||||
"chalk": "^4.1.2",
|
||||
"leven": "^3.1.0",
|
||||
"pretty-format": "30.5.1"
|
||||
"pretty-format": "30.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||
@@ -4725,19 +4694,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-watcher": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.5.2.tgz",
|
||||
"integrity": "sha512-rqRgg4R11GA9m1UsEZwQeixHsgZReCn6TOHAHtIH33yXrIvoX0OGPA20Yzzjkz7X40fZvcRSxEpQppYPcWzmcQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.5.0.tgz",
|
||||
"integrity": "sha512-ujjnEoL4Uu+Swu3WRwYenWMB9JMEiD2T3OypnveMJ64S/1r/5G8eC4OQ1wEOgYWQqMi+mT+buzccflCHr/XJ9Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"chalk": "^4.1.2",
|
||||
"emittery": "^0.13.1",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"string-length": "^4.0.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4745,15 +4714,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-worker": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.5.1.tgz",
|
||||
"integrity": "sha512-Cbxh5v7AoLuFRmFJSM4/aHdQ68rjXvUWr716EE0Dh3I7T+T/3FgFKhOERGXHcU2Meftq9+9zxPM3TSNyI9D+HA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.5.0.tgz",
|
||||
"integrity": "sha512-7kFk/607EoynNHLJa20daivkElM+c9PrCLduYy6AlMkYrXbh5TmVtW1BLXE05Y8baAFsJHMoC3xs2QRRTotwLw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"@ungap/structured-clone": "^1.3.0",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"merge-stream": "^2.0.0",
|
||||
"supports-color": "^8.1.1"
|
||||
},
|
||||
@@ -5246,9 +5215,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/pretty-format": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.5.1.tgz",
|
||||
"integrity": "sha512-byhRAPguVKMQIj4kjJwJ5lAskVhfuiSdiYl/aLTWpgkGEmic2jYhJh1yE9ih8Ox44Xg9ccCT11/S6QrzSJuNrg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.5.0.tgz",
|
||||
"integrity": "sha512-mzNzBErpHwM0zpmWS7ExOv62yhQhvd546nUuFqVR0dmnJB59tfrw9sjDF0DJknwsr59OXP0buwJ7PaKguczHSg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -7075,31 +7044,31 @@
|
||||
"dev": true
|
||||
},
|
||||
"@jest/console": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/console/-/console-30.5.2.tgz",
|
||||
"integrity": "sha512-e8sQC4pCMHPBrPX7Hk8TJr+DM5dkUnImSTNag8SEWFAFAF6xIz4AJvCKapnrdHnZxep4bxw4PhG+ZbimYBMyKw==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/console/-/console-30.5.0.tgz",
|
||||
"integrity": "sha512-BI1DpOedrJqbrYVi9yNhDWGjqphR/+gsM4STmg2+VaeXm7851hvpBDyKOZGMXATTrGEnFuEseQvLCtrrRmG0GQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"slash": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"@jest/core": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/core/-/core-30.5.2.tgz",
|
||||
"integrity": "sha512-/jqvFWoJF7LV1a6AUpYMbMm+2yIYsHJfR474H0SCzr9k8tnO/jl9wRg6zSG6lxgf6EozNlCG4amFzWsbZSvvZA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/core/-/core-30.5.0.tgz",
|
||||
"integrity": "sha512-DLjRME+NY//j+UDTSfWnjoP0srrdR3DrJRy7yFZktGIwzpN2iVy2vMo0jziZ5c2Ij7bOwlJRXKVWtxZusazOJg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/console": "30.5.2",
|
||||
"@jest/console": "30.5.0",
|
||||
"@jest/pattern": "30.5.0",
|
||||
"@jest/reporters": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/reporters": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"chalk": "^4.1.2",
|
||||
@@ -7107,20 +7076,20 @@
|
||||
"exit-x": "^0.2.2",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-changed-files": "30.5.1",
|
||||
"jest-config": "30.5.2",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-changed-files": "30.5.0",
|
||||
"jest-config": "30.5.0",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-resolve": "30.5.1",
|
||||
"jest-resolve-dependencies": "30.5.2",
|
||||
"jest-runner": "30.5.2",
|
||||
"jest-runtime": "30.5.2",
|
||||
"jest-snapshot": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-validate": "30.5.1",
|
||||
"jest-watcher": "30.5.2",
|
||||
"pretty-format": "30.5.1",
|
||||
"jest-resolve": "30.5.0",
|
||||
"jest-resolve-dependencies": "30.5.0",
|
||||
"jest-runner": "30.5.0",
|
||||
"jest-runtime": "30.5.0",
|
||||
"jest-snapshot": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-validate": "30.5.0",
|
||||
"jest-watcher": "30.5.0",
|
||||
"pretty-format": "30.5.0",
|
||||
"slash": "^3.0.0"
|
||||
}
|
||||
},
|
||||
@@ -7131,48 +7100,48 @@
|
||||
"dev": true
|
||||
},
|
||||
"@jest/environment": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.5.2.tgz",
|
||||
"integrity": "sha512-nwFPOUMbmsjNNRCpnJpB9HbSZu4C07wDDds++5j+j1MezzPLxMPDdbdUVjr2o4RULDOValnDd70taPFI1EtxAg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.5.0.tgz",
|
||||
"integrity": "sha512-HUaqexIauIh69IQ4NTuPDEUCB8g8T4TOPSIzQOS18mwI/KEHKQk1j013K2o6ra031szZE2t5jGmVx3xbzdjgKA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/fake-timers": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/fake-timers": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "30.5.2"
|
||||
"jest-mock": "30.5.0"
|
||||
}
|
||||
},
|
||||
"@jest/expect": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.5.2.tgz",
|
||||
"integrity": "sha512-2E+1Pg6jJxbRjLNLpciC71iri/3qsKJL222/aXJEFwC0VdUSvfS+JZQQLEVjUYYc8t8pQu2MGE3cF2+bNTYRsg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.5.0.tgz",
|
||||
"integrity": "sha512-jEmgmgJEobJ3zEhDOGp1VAJ6JkoVelpS8uZ1ae1Ul/5lP78UKJKmmU0lciJwd6JdnqOXHaaS/QCKwbf1dHI9MA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"expect": "30.5.2",
|
||||
"jest-snapshot": "30.5.2"
|
||||
"expect": "30.5.0",
|
||||
"jest-snapshot": "30.5.0"
|
||||
}
|
||||
},
|
||||
"@jest/expect-utils": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.5.2.tgz",
|
||||
"integrity": "sha512-d/HOLSrJUlBIl6n3LzOa7cjW3xdePm5H5gQw2lixZ/0h157l9sw3mLblzFqnPcTbhDzhRQdBOX3A3KcG73nm5Q==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.5.0.tgz",
|
||||
"integrity": "sha512-5j0ztPxSy3McUJihjkDdCyCfjvT2hxykFTWsgEBZKB8qsw9ALdCiGTpTRH5gnf/d+qI4SflYUJ0dWNbzjQCWbA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/get-type": "30.5.0"
|
||||
}
|
||||
},
|
||||
"@jest/fake-timers": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.5.2.tgz",
|
||||
"integrity": "sha512-GKk0h0tKT5SpDPxDhPg3r9mm5s8/YCBzVNMOGdRiQXwUiMsjU10mVPlMaQstH6/cu50vOb8N9oQUMETHuwwxKw==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.5.0.tgz",
|
||||
"integrity": "sha512-sg8xIbYwe5GdB/vT3/0qrDIpO7Ov9mazHi++M95uynmDKEZ70G1r169AWct73H07VrTZhrz1SJEfLtjYv8tE3A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@sinonjs/fake-timers": "^15.4.0",
|
||||
"@types/node": "*",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-mock": "30.5.2",
|
||||
"jest-util": "30.5.1"
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-mock": "30.5.0",
|
||||
"jest-util": "30.5.0"
|
||||
}
|
||||
},
|
||||
"@jest/get-type": {
|
||||
@@ -7182,15 +7151,15 @@
|
||||
"dev": true
|
||||
},
|
||||
"@jest/globals": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.5.2.tgz",
|
||||
"integrity": "sha512-62zfS+dL+M5aTNHXCNLyqD+j4oqxTIzDYrZbpqMP8Yn+gvlAGyzC6BSPNb1ZmFOakV1RtFYX/O3FCQXSWmQdgg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.5.0.tgz",
|
||||
"integrity": "sha512-h7eJx534czwL8lQMYB0hwLT4/HquO8EX/RtYL7RNUHyUyWWVciYjoudN4Ns5JmNvn2/jh0Vm9UstZjEzJJ5EsQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/environment": "30.5.2",
|
||||
"@jest/expect": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"jest-mock": "30.5.2"
|
||||
"@jest/environment": "30.5.0",
|
||||
"@jest/expect": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"jest-mock": "30.5.0"
|
||||
}
|
||||
},
|
||||
"@jest/pattern": {
|
||||
@@ -7216,16 +7185,16 @@
|
||||
"dev": true
|
||||
},
|
||||
"@jest/reporters": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.5.2.tgz",
|
||||
"integrity": "sha512-ev6E9iG73twQcfAfoTnviuYkr3yOrYbzAtMFCimv2fxHXPIp9PBt2u1wNMt0aYWgl8FPwIcS8oqRJg6alnht4Q==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.5.0.tgz",
|
||||
"integrity": "sha512-FEAuusWm+PUOn9ydjaHhpOpyPmS6IbGE04HaKTuUI4zd8eqYZiXiNLoCsdCog/l2XnNj53E9pFy64UltcvfJKg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@bcoe/v8-coverage": "^0.2.3",
|
||||
"@jest/console": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/console": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.31",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
@@ -7238,9 +7207,9 @@
|
||||
"istanbul-lib-report": "^3.0.0",
|
||||
"istanbul-lib-source-maps": "^5.0.0",
|
||||
"istanbul-reports": "^3.1.3",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-worker": "30.5.1",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-worker": "30.5.0",
|
||||
"slash": "^3.0.0",
|
||||
"string-length": "^4.0.2",
|
||||
"v8-to-istanbul": "^9.0.1"
|
||||
@@ -7256,21 +7225,21 @@
|
||||
}
|
||||
},
|
||||
"@jest/snapshot-utils": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.5.1.tgz",
|
||||
"integrity": "sha512-V3wnxNtiVmw5PPVg433Cn3VdXnsOeu/ofLw3KC04Bn2y1wIlU5kozXQn48rhrgj/02LrCVtntTEF1yBha0XSUw==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.5.0.tgz",
|
||||
"integrity": "sha512-iWQtIsi2dRsO2oWzVceOeynuRJiYTW8gsDVp5wFQ02ipHluQsNgBpasWSHiawVxukIlsGLdCtCSbIEK7fPtpvQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"natural-compare": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"@jest/source-map": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.5.2.tgz",
|
||||
"integrity": "sha512-c5CehvkbfHX6yyNg7bMn2ylqlp9AHXuZ/3hPH/Lh5bxD/vefd/lV9HBjMqXef9yQNqkdwyZvkLSVSwB38hy8Qw==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.5.0.tgz",
|
||||
"integrity": "sha512-xWpTJP9D0bDFGbPGT8XuWSwwha/iHADyyKzUnMx4UbdgnHugxrDaQFO4RZ8x4ZsFzRP6pNii8uvlgKCDxCIuDg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/trace-mapping": "^0.3.31",
|
||||
@@ -7280,55 +7249,55 @@
|
||||
}
|
||||
},
|
||||
"@jest/test-result": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.5.2.tgz",
|
||||
"integrity": "sha512-eO6YU5rsLfs60ne694e0IAmRgeBnoA8mu0nlxXDbl/1j5km0o2vO9/VbbUIKIH+WRKKEI+ELgwraRGn2Lhep8g==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.5.0.tgz",
|
||||
"integrity": "sha512-9IlPqUzUMkVDmoDqSSrVVLroVotgN3hTUPWPwq24XWXhh1Zpg915RXZ5pgRJ/7j4YE/kng5nqjSn4p3S68SZJA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/console": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/console": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/istanbul-lib-coverage": "^2.0.6",
|
||||
"collect-v8-coverage": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"@jest/test-sequencer": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.5.2.tgz",
|
||||
"integrity": "sha512-bmij8jZyYAC47ExT2GeP7PcrlwSNS+Bp3KeRuBH88gpcxqDv6fljN8PemS4J/lLZ79xb6mpaennQTTq0zUAVVg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.5.0.tgz",
|
||||
"integrity": "sha512-TXlvSDIVv482b83hD8A8WtxDJEmGF47f60W6jRXOQL0Isfs3hKtk4rZIm9R/jLzAibg8+c56y+Q00BQs8R7Xcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"slash": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"@jest/transform": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.5.2.tgz",
|
||||
"integrity": "sha512-LBGwmaE886C41jDZ65eqR1YbXM7642MK3ZhTowZd5+xDlrDLuf4ePuDdDmVSvcr8NTVJ3MqxLkMbUCzuigUaoQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.5.0.tgz",
|
||||
"integrity": "sha512-n1cYhoByyULEIXi64wbT4Lq91qeT1E6bwpM//sprFXhw955qaiHTdAmy1c1rNFGB6fCf1J+nxDUSf3RGwgZP5A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/core": "^7.27.4",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.31",
|
||||
"babel-plugin-istanbul": "^8.0.0",
|
||||
"chalk": "^4.1.2",
|
||||
"convert-source-map": "^2.0.0",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"pirates": "^4.0.7",
|
||||
"slash": "^3.0.0",
|
||||
"write-file-atomic": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"@jest/types": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-30.5.1.tgz",
|
||||
"integrity": "sha512-LvVYn83nnXPl+Rg98nvcFgjx6nRMTArhSn6RAX/w3ELn54S8A42TYZvsCMdGUqTM8S0wyXbtlQdU6Hi6dykj9g==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-30.5.0.tgz",
|
||||
"integrity": "sha512-s1N+79S4Yp9ZgklCauZXi+YPJdCdtStNYQT32stuD6EeQaIBGHoUfyj2P0YWy8RmuQfaJboO+ulxEvEheR/POQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/pattern": "30.5.0",
|
||||
@@ -7379,9 +7348,9 @@
|
||||
}
|
||||
},
|
||||
"@napi-rs/wasm-runtime": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz",
|
||||
"integrity": "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==",
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.5.tgz",
|
||||
"integrity": "sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
@@ -7911,12 +7880,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"babel-jest": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.5.2.tgz",
|
||||
"integrity": "sha512-ES8WeJ2fNWPEDunyAtUfJ12nHyaWUloCHdkfK2oW5uSoQSUmjNKdWiGaXJITJwvFEWoD/evHEg/QoCXAvLaQqQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.5.0.tgz",
|
||||
"integrity": "sha512-PrhPHlKC+MsLnuNzgIH/y1dkz1f6cSfKWaQeaG8WxLMuG44dYWQ8E9uRrsBbAGCU/3+BEFYPN4d6G3Zc5Y+waA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@types/babel__core": "^7.20.5",
|
||||
"babel-plugin-istanbul": "^8.0.0",
|
||||
"babel-preset-jest": "30.5.0",
|
||||
@@ -8065,9 +8034,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"cjs-module-lexer": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.1.tgz",
|
||||
"integrity": "sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.3.0.tgz",
|
||||
"integrity": "sha512-lmNyBzi6iYiqyrExTctfmjd8tInx+dHu9PBomTfH5RXS53c27JMFJgzNv5TyAnm3PgGf+MLy0+Ws41/HlVxdKQ==",
|
||||
"dev": true
|
||||
},
|
||||
"cliui": {
|
||||
@@ -8291,17 +8260,17 @@
|
||||
"dev": true
|
||||
},
|
||||
"expect": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/expect/-/expect-30.5.2.tgz",
|
||||
"integrity": "sha512-0LNuMvs8/5mRYhnCR4k+lGV7fqPMs6Bnksda4S3zsCUmdxBpAn4zU4NNzXdq1pMKe/H4W5t/zVIDSJ/H3e0vDA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/expect/-/expect-30.5.0.tgz",
|
||||
"integrity": "sha512-8fiMWcEjPU7B9nErC4FtFcCzf2tC6I75Qf7m8wzBAWC2taZmcno3yAFEjIQL34SwoGZNgPf63UDiJLyh4SMPaw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/expect-utils": "30.5.2",
|
||||
"@jest/expect-utils": "30.5.0",
|
||||
"@jest/get-type": "30.5.0",
|
||||
"jest-matcher-utils": "30.5.2",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-mock": "30.5.2",
|
||||
"jest-util": "30.5.1"
|
||||
"jest-matcher-utils": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-mock": "30.5.0",
|
||||
"jest-util": "30.5.0"
|
||||
}
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
@@ -8604,115 +8573,115 @@
|
||||
}
|
||||
},
|
||||
"jest": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-30.5.2.tgz",
|
||||
"integrity": "sha512-3gnpdBIza8ijCl3iMV9ChE3hSt1+46865qqod863gQtJr1DixOkAU5DoGbi3u+XlRcw++BhZQMu/y4xBdHBvSQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-30.5.0.tgz",
|
||||
"integrity": "sha512-HeFeOUEKh5gjnp1rjuSCse8Dhj0Y3KA8lsZ3azr4Wnq1nCxwMBu35MDc9mp8iblZxmeAz6wV4P241tyUB7J2Ew==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/core": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/core": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"import-local": "^3.2.0",
|
||||
"jest-cli": "30.5.2"
|
||||
"jest-cli": "30.5.0"
|
||||
}
|
||||
},
|
||||
"jest-changed-files": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.5.1.tgz",
|
||||
"integrity": "sha512-0+bvMM/ENhDI29Z8q1r4HxiDIi4G5tnBmSw4esfPQoj9q8Nik7KIyuxHkTVnnniJQf05SxpGaKDQ+4h28ynGPg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.5.0.tgz",
|
||||
"integrity": "sha512-dq1x8JiEnHkJDxxOrF6UJDivBRAQMwAa5tzr+VX3um0SfyMFseUPQUbe51wLwggfoa5h/EmOtSpdJxxkzSlNRQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"execa": "^5.1.1",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"p-limit": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"jest-circus": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.5.2.tgz",
|
||||
"integrity": "sha512-vffFgjs5JSJ9q4ds1vNW3klKYPJfYfIY61LT/zaZgvTeASJOWZUt8LBfHgIcV4rwxlPBLl/ePBGccHEclS4PlQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.5.0.tgz",
|
||||
"integrity": "sha512-T3v7uM4wwCu+RQicjsAWCgoL3CiyuX3THSKwv2uMb9N2bMUgb+HfwDWEUma85vOGbvQNQ/YfoCXF1OCZot0ZEw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/environment": "30.5.2",
|
||||
"@jest/expect": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/environment": "30.5.0",
|
||||
"@jest/expect": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"co": "^4.6.0",
|
||||
"dedent": "^1.6.0",
|
||||
"is-generator-fn": "^2.1.0",
|
||||
"jest-each": "30.5.2",
|
||||
"jest-matcher-utils": "30.5.2",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-runtime": "30.5.2",
|
||||
"jest-snapshot": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-each": "30.5.0",
|
||||
"jest-matcher-utils": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-runtime": "30.5.0",
|
||||
"jest-snapshot": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"p-limit": "^3.1.0",
|
||||
"pretty-format": "30.5.1",
|
||||
"pretty-format": "30.5.0",
|
||||
"pure-rand": "^7.0.0",
|
||||
"slash": "^3.0.0",
|
||||
"stack-utils": "^2.0.6"
|
||||
}
|
||||
},
|
||||
"jest-cli": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.5.2.tgz",
|
||||
"integrity": "sha512-YYYxUUVjFgPvgEleKNKMaYGIFgR3l3832Cl0kRL/oCiDZ03v7wImUtquHl2OOBCCNgprjZgBN5bczS/JklPBDg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.5.0.tgz",
|
||||
"integrity": "sha512-QHZMiy32x2K+NzJ1AuuoCAVc1Y5co0VXib3R7kD9MWcWFflzsD1eJN0wR+mkNlM+ts7C+Bjz0oOoFE5IiHylCg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/core": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/core": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"exit-x": "^0.2.2",
|
||||
"import-local": "^3.2.0",
|
||||
"jest-config": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-validate": "30.5.1",
|
||||
"jest-config": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-validate": "30.5.0",
|
||||
"yargs": "^17.7.2"
|
||||
}
|
||||
},
|
||||
"jest-config": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.5.2.tgz",
|
||||
"integrity": "sha512-U6221OZekabePvGcGPf4raIBKMvYQWFHvhobDJRojOYaFMj2HaGytAdknjDhYc6JTz2fdHW9+6k0wWUDaNeOFQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.5.0.tgz",
|
||||
"integrity": "sha512-gYQl2FqYgiVpyuB7DutBIbJRWaq5VcHdzOXJJ51HNa8J5JrsZehIlzNFW0/9s5uvvcbzM5/LTUizYSbsFErv+w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/core": "^7.27.4",
|
||||
"@jest/get-type": "30.5.0",
|
||||
"@jest/pattern": "30.5.0",
|
||||
"@jest/test-sequencer": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"babel-jest": "30.5.2",
|
||||
"@jest/test-sequencer": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"babel-jest": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"ci-info": "^4.2.0",
|
||||
"deepmerge": "^4.3.1",
|
||||
"glob": "^13.0.6",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-circus": "30.5.2",
|
||||
"jest-circus": "30.5.0",
|
||||
"jest-docblock": "30.5.0",
|
||||
"jest-environment-node": "30.5.2",
|
||||
"jest-environment-node": "30.5.0",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-resolve": "30.5.1",
|
||||
"jest-runner": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-validate": "30.5.1",
|
||||
"jest-resolve": "30.5.0",
|
||||
"jest-runner": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-validate": "30.5.0",
|
||||
"parse-json": "^5.2.0",
|
||||
"pretty-format": "30.5.1",
|
||||
"pretty-format": "30.5.0",
|
||||
"slash": "^3.0.0",
|
||||
"strip-json-comments": "^3.1.1"
|
||||
}
|
||||
},
|
||||
"jest-diff": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.5.2.tgz",
|
||||
"integrity": "sha512-rBtHnI6BWTiWj3lM7fOLVfChx7R9B0u9VV3PRHawKs79x6ZjW1QoSrKenaigNGWlvhtoi2BqvDbABDie+Os3xQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.5.0.tgz",
|
||||
"integrity": "sha512-QjCfDMwdPFvLxTQmS4/Dswx3PUCiqmSXVLGljMC3SU7YG1qHVoR6b86IH/O2G9k9OMyKXz2vS2Q60VnAozNDwA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/diff-sequences": "30.5.0",
|
||||
"@jest/get-type": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"pretty-format": "30.5.1"
|
||||
"pretty-format": "30.5.0"
|
||||
}
|
||||
},
|
||||
"jest-docblock": {
|
||||
@@ -8725,41 +8694,40 @@
|
||||
}
|
||||
},
|
||||
"jest-each": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.5.2.tgz",
|
||||
"integrity": "sha512-GRrW+7fmmgmkvyfEBqc1QFdWnF1Ex5yG6Y6AWL4TTxnkWlKIT98dsKh3P3UuWm6v4XsQwVE6DEzXIPMzWJ3ZbA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.5.0.tgz",
|
||||
"integrity": "sha512-NiMFNhRygJEFqYNt8pnkxppUF6CR486GEpt9rSU6lPBf7KeccaOL0zbjxG8fgJgD//6e7zYdssnlt6j+1kI31A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/get-type": "30.5.0",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-util": "30.5.1",
|
||||
"pretty-format": "30.5.1"
|
||||
"jest-util": "30.5.0",
|
||||
"pretty-format": "30.5.0"
|
||||
}
|
||||
},
|
||||
"jest-environment-node": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.5.2.tgz",
|
||||
"integrity": "sha512-Ciz4KgTGIbojxSKpuFImgWJj5EyqfE8xMq9NxWmOXnQywHHS03H9Mv+vaCB29J5pr3JBrY27WbRV18rBdjh8Dg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.5.0.tgz",
|
||||
"integrity": "sha512-bTc79ywKLz0ogbT3JIYuEhgWV4Ffd/cJe06co4v8CyRtlmju8x5gokMlGFR8ARWhmk5SnbDRxmf50XWnlZVhDg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/environment": "30.5.2",
|
||||
"@jest/fake-timers": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/environment": "30.5.0",
|
||||
"@jest/fake-timers": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-validate": "30.5.1"
|
||||
"jest-mock": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-validate": "30.5.0"
|
||||
}
|
||||
},
|
||||
"jest-haste-map": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.5.1.tgz",
|
||||
"integrity": "sha512-VIFgt67jW480YDxKfEv9IYQKrFpYt7bOCMn3VsnjK7AK9qo7p6acpnA1DHwsVOULE3dTaYew/6JaTD/d0VDHoQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.5.0.tgz",
|
||||
"integrity": "sha512-0FStogBslBVOEqTOJr4oXMtFitmrWp9WscG6Gbns88i0YAuMXijCT2G5VMfg/HCR4QAnL+OF2C2ednag+HlDuA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@parcel/watcher": "^2.6.0",
|
||||
"@types/node": "*",
|
||||
"anymatch": "^3.1.3",
|
||||
@@ -8767,8 +8735,8 @@
|
||||
"fdir": "^6.5.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-worker": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-worker": "30.5.0",
|
||||
"picomatch": "^4.0.3"
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -8788,41 +8756,41 @@
|
||||
}
|
||||
},
|
||||
"jest-leak-detector": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.5.1.tgz",
|
||||
"integrity": "sha512-gt4GT2aWgEoCNTcBe4rqS74xTIUJxi+UD9SNSu9aOk5LmTEd6fS5KSTmAKAfitCCktQHNN+upUuL6EkBfFbMDQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.5.0.tgz",
|
||||
"integrity": "sha512-Mq11ceAkNR250Iv45RoOwuG9fb4kYbJ02qoyL7A0nCI8FV5+aG/THmcEUx5uR2dNSa4KOtz+xBKrJ8cZPhPpuQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/get-type": "30.5.0",
|
||||
"pretty-format": "30.5.1"
|
||||
"pretty-format": "30.5.0"
|
||||
}
|
||||
},
|
||||
"jest-matcher-utils": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.5.2.tgz",
|
||||
"integrity": "sha512-lFkB365PTIHOhPzwrb9T6gvlDnPpOZ7/c3ewOKKB7bzztqjVrtlyRL2MkyfJXpyY2u2SKw001JKrTx14fBUFcQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.5.0.tgz",
|
||||
"integrity": "sha512-EfaYMC9f9ds7fahB/LYFTgd1Z2RS9Vpm2e46gazij0onkpoQG7Daq+MLm8/gQVqWwRVjL/RNDggbFx9MsrJEmQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/get-type": "30.5.0",
|
||||
"chalk": "^4.1.2",
|
||||
"jest-diff": "30.5.2",
|
||||
"pretty-format": "30.5.1"
|
||||
"jest-diff": "30.5.0",
|
||||
"pretty-format": "30.5.0"
|
||||
}
|
||||
},
|
||||
"jest-message-util": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.5.1.tgz",
|
||||
"integrity": "sha512-UdQlLdd9wL/Ys7xRErckqwD6wPlSZYueosSWuHc1r2ztGLwlgPvtSJq2+BPEgaEY13WLvfFbmhTj8pba0Sd1jg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.5.0.tgz",
|
||||
"integrity": "sha512-dBYMhplGfspKaCnVk9TUy1cZnknWubpuPNEputjz0YJk1G/92R45rn45BvbPMPMtC5LVcIdxJGPOaOSQTiuzJw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/stack-utils": "^2.0.3",
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"picomatch": "^4.0.3",
|
||||
"pretty-format": "30.5.1",
|
||||
"pretty-format": "30.5.0",
|
||||
"slash": "^3.0.0",
|
||||
"stack-utils": "^2.0.6"
|
||||
},
|
||||
@@ -8836,15 +8804,15 @@
|
||||
}
|
||||
},
|
||||
"jest-mock": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.5.2.tgz",
|
||||
"integrity": "sha512-KTHb37Fhj8xY8qPFvTFaFJHcdsumQp+ExsUlgoX232Agmc706gagBs53+CYvulV7MVQo9AgXOUxsqzzVBoJlrA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.5.0.tgz",
|
||||
"integrity": "sha512-bP5MHZpkYrV7xpV+yvhl36DPcXoEmTR57Un5EACcdVpMY7mpkDefCBq+V4mhcjE/3rwUajT6OTrcJTN7EwN1BA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/expect-utils": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/expect-utils": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"jest-util": "30.5.1"
|
||||
"jest-util": "30.5.0"
|
||||
}
|
||||
},
|
||||
"jest-regex-util": {
|
||||
@@ -8854,73 +8822,73 @@
|
||||
"dev": true
|
||||
},
|
||||
"jest-resolve": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.5.1.tgz",
|
||||
"integrity": "sha512-wprhLejRtwN6h8ZgaqC0eYjGJ1uMdGPT/+b3eFncbG4NWuuP9QL+vWwRinu9waw7hkOLcpMJGVJAMgBwsPssMQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.5.0.tgz",
|
||||
"integrity": "sha512-NFvQWJ4G7e2kN5712iG+12Xr325NRFGAIhovrwLfgq5Oqd4bFHITw4CzcFkZGp1GTCqemC4v1l8/yZzedKZkjw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-validate": "30.5.1",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-validate": "30.5.0",
|
||||
"slash": "^3.0.0",
|
||||
"unrs-resolver": "^1.12.1"
|
||||
}
|
||||
},
|
||||
"jest-resolve-dependencies": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.5.2.tgz",
|
||||
"integrity": "sha512-GMI0DP5enX9Z2qW2zFy1bOkrCfWAOPRJQ7qHt0pdfrxBPsgWxglMPrRSK2TX/wRWYxcPRSLFg3Z88qPOzHx7FQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.5.0.tgz",
|
||||
"integrity": "sha512-TnSBAp3wGOnqXBmLT3OXtJkugw6Vj2KU0IPde2EJmbGns/QMoNlkauJ7jZ8KYaxONSpx0o4pUvi+u1Q/LSk3Pg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-snapshot": "30.5.2"
|
||||
"jest-snapshot": "30.5.0"
|
||||
}
|
||||
},
|
||||
"jest-runner": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.5.2.tgz",
|
||||
"integrity": "sha512-/B6px7hiiNhVSRwuv9AGn0nawYvwsHeQZ3ItTd5Gp2diFd0EOKaWVeWqcbw3L88vx1GfpCKjQkxWItZCTl11Rw==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.5.0.tgz",
|
||||
"integrity": "sha512-Q6Yt+1LvXvEstvru6sQLT7OQYC77VNl6dK0KEvBkeOHgThmXDqNp3Ox9TglDWFHU85pemqTNdKwxfnmO3vgrdA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/console": "30.5.2",
|
||||
"@jest/environment": "30.5.2",
|
||||
"@jest/source-map": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/console": "30.5.0",
|
||||
"@jest/environment": "30.5.0",
|
||||
"@jest/source-map": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"emittery": "^0.13.1",
|
||||
"exit-x": "^0.2.2",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-docblock": "30.5.0",
|
||||
"jest-environment-node": "30.5.2",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-leak-detector": "30.5.1",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-resolve": "30.5.1",
|
||||
"jest-runtime": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-watcher": "30.5.2",
|
||||
"jest-worker": "30.5.1",
|
||||
"jest-environment-node": "30.5.0",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"jest-leak-detector": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-resolve": "30.5.0",
|
||||
"jest-runtime": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"jest-watcher": "30.5.0",
|
||||
"jest-worker": "30.5.0",
|
||||
"p-limit": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"jest-runtime": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.5.2.tgz",
|
||||
"integrity": "sha512-0paUAHBlheai10A3XSy9Xh+YBG0IROy+/qzcDPzQ/nbbXrznQzeWy5qniICWK6d3W3scaRQCVAbXdcK0ibBq4w==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.5.0.tgz",
|
||||
"integrity": "sha512-VTRz0sRIw2EISeHigx1O+CMuwoG4+RKJjF8dp8okzFaDNQEcv5Mw0h5QW8VJXgb2CRF4gZIjSEBb2jdzXPagFQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/environment": "30.5.2",
|
||||
"@jest/fake-timers": "30.5.2",
|
||||
"@jest/globals": "30.5.2",
|
||||
"@jest/source-map": "30.5.2",
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/environment": "30.5.0",
|
||||
"@jest/fake-timers": "30.5.0",
|
||||
"@jest/globals": "30.5.0",
|
||||
"@jest/source-map": "30.5.0",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"cjs-module-lexer": "^2.2.0",
|
||||
@@ -8928,21 +8896,21 @@
|
||||
"es-module-lexer": "^2.1.0",
|
||||
"glob": "^13.0.6",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-haste-map": "30.5.1",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-mock": "30.5.2",
|
||||
"jest-haste-map": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-mock": "30.5.0",
|
||||
"jest-regex-util": "30.5.0",
|
||||
"jest-resolve": "30.5.1",
|
||||
"jest-snapshot": "30.5.2",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-resolve": "30.5.0",
|
||||
"jest-snapshot": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"slash": "^3.0.0",
|
||||
"strip-bom": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"jest-snapshot": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.5.2.tgz",
|
||||
"integrity": "sha512-jKIdes25AnAH73dOCi2qE6J6vHJ6L2vyBS11M89kT50DVJcLTf2AOjvcc+2vVaN8lUbY5v2R83aqXo3Ro9fqYA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.5.0.tgz",
|
||||
"integrity": "sha512-pZWETdcqmKve9MDTE/AX6RaeAbRhzKhhAXGozAW8Pg2FfOSdUrQ/7D+VdwE3fLQsqjpITXJVQvYVZoMEzrUl0Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/core": "^7.27.4",
|
||||
@@ -8950,20 +8918,20 @@
|
||||
"@babel/plugin-syntax-jsx": "^7.27.1",
|
||||
"@babel/plugin-syntax-typescript": "^7.27.1",
|
||||
"@babel/types": "^7.27.3",
|
||||
"@jest/expect-utils": "30.5.2",
|
||||
"@jest/expect-utils": "30.5.0",
|
||||
"@jest/get-type": "30.5.0",
|
||||
"@jest/snapshot-utils": "30.5.1",
|
||||
"@jest/transform": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/snapshot-utils": "30.5.0",
|
||||
"@jest/transform": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"babel-preset-current-node-syntax": "^1.2.0",
|
||||
"chalk": "^4.1.2",
|
||||
"expect": "30.5.2",
|
||||
"expect": "30.5.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"jest-diff": "30.5.2",
|
||||
"jest-matcher-utils": "30.5.2",
|
||||
"jest-message-util": "30.5.1",
|
||||
"jest-util": "30.5.1",
|
||||
"pretty-format": "30.5.1",
|
||||
"jest-diff": "30.5.0",
|
||||
"jest-matcher-utils": "30.5.0",
|
||||
"jest-message-util": "30.5.0",
|
||||
"jest-util": "30.5.0",
|
||||
"pretty-format": "30.5.0",
|
||||
"semver": "^7.7.2",
|
||||
"synckit": "^0.11.8"
|
||||
},
|
||||
@@ -8977,12 +8945,12 @@
|
||||
}
|
||||
},
|
||||
"jest-util": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz",
|
||||
"integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.0.tgz",
|
||||
"integrity": "sha512-lzU4aGUWaS+2X/B0CmgheDasfnsVlRfZh/rNQxB9b9s8cSYUq5BcqdQA95ld+KqJXBUVVt1sqnMQ2T3OxIalmg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.1.2",
|
||||
"ci-info": "^4.2.0",
|
||||
@@ -8999,17 +8967,17 @@
|
||||
}
|
||||
},
|
||||
"jest-validate": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.5.1.tgz",
|
||||
"integrity": "sha512-i/buJ56wTpxihE93hQYNMfdOThS87+HGvLZzZJmU4xggPcdTYQq051iwALLCHp3q+SkCGH+EFejQZz5EbBSkkg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.5.0.tgz",
|
||||
"integrity": "sha512-N/hsPYKgBSzBeVZ2RHCs3yvBbTZNPX7Be8q33zhyo/yeFneBL1swzly31LYU4LJ3zJM9e8TxSM8IYLo2SDJZYQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/get-type": "30.5.0",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/types": "30.5.0",
|
||||
"camelcase": "^6.3.0",
|
||||
"chalk": "^4.1.2",
|
||||
"leven": "^3.1.0",
|
||||
"pretty-format": "30.5.1"
|
||||
"pretty-format": "30.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"camelcase": {
|
||||
@@ -9021,30 +8989,30 @@
|
||||
}
|
||||
},
|
||||
"jest-watcher": {
|
||||
"version": "30.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.5.2.tgz",
|
||||
"integrity": "sha512-rqRgg4R11GA9m1UsEZwQeixHsgZReCn6TOHAHtIH33yXrIvoX0OGPA20Yzzjkz7X40fZvcRSxEpQppYPcWzmcQ==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.5.0.tgz",
|
||||
"integrity": "sha512-ujjnEoL4Uu+Swu3WRwYenWMB9JMEiD2T3OypnveMJ64S/1r/5G8eC4OQ1wEOgYWQqMi+mT+buzccflCHr/XJ9Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/test-result": "30.5.2",
|
||||
"@jest/types": "30.5.1",
|
||||
"@jest/test-result": "30.5.0",
|
||||
"@jest/types": "30.5.0",
|
||||
"@types/node": "*",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"chalk": "^4.1.2",
|
||||
"emittery": "^0.13.1",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"string-length": "^4.0.2"
|
||||
}
|
||||
},
|
||||
"jest-worker": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.5.1.tgz",
|
||||
"integrity": "sha512-Cbxh5v7AoLuFRmFJSM4/aHdQ68rjXvUWr716EE0Dh3I7T+T/3FgFKhOERGXHcU2Meftq9+9zxPM3TSNyI9D+HA==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.5.0.tgz",
|
||||
"integrity": "sha512-7kFk/607EoynNHLJa20daivkElM+c9PrCLduYy6AlMkYrXbh5TmVtW1BLXE05Y8baAFsJHMoC3xs2QRRTotwLw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/node": "*",
|
||||
"@ungap/structured-clone": "^1.3.0",
|
||||
"jest-util": "30.5.1",
|
||||
"jest-util": "30.5.0",
|
||||
"merge-stream": "^2.0.0",
|
||||
"supports-color": "^8.1.1"
|
||||
},
|
||||
@@ -9365,9 +9333,9 @@
|
||||
}
|
||||
},
|
||||
"pretty-format": {
|
||||
"version": "30.5.1",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.5.1.tgz",
|
||||
"integrity": "sha512-byhRAPguVKMQIj4kjJwJ5lAskVhfuiSdiYl/aLTWpgkGEmic2jYhJh1yE9ih8Ox44Xg9ccCT11/S6QrzSJuNrg==",
|
||||
"version": "30.5.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.5.0.tgz",
|
||||
"integrity": "sha512-mzNzBErpHwM0zpmWS7ExOv62yhQhvd546nUuFqVR0dmnJB59tfrw9sjDF0DJknwsr59OXP0buwJ7PaKguczHSg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/react-is-18": "npm:react-is@^18.3.1",
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@
|
||||
"@types/semver": "^7.8.0",
|
||||
"@vercel/ncc": "^0.45.0",
|
||||
"esbuild": "^0.28.2",
|
||||
"jest": "^30.5.2",
|
||||
"jest": "^30.5.0",
|
||||
"js-yaml": "^5.4.1",
|
||||
"ts-jest": "^29.4.11",
|
||||
"typescript": "^6.0.3"
|
||||
|
||||
Vendored
+60
@@ -0,0 +1,60 @@
|
||||
import { readdir, readlink, realpath, symlink, unlink } from "node:fs/promises";
|
||||
import nodePath from "node:path";
|
||||
|
||||
export async function repairPythonJunctions(pythonDir: string): Promise<void> {
|
||||
const entries = await readdir(pythonDir, { withFileTypes: true });
|
||||
const directories = new Set(
|
||||
entries
|
||||
.filter((entry) => entry.isDirectory())
|
||||
.map((entry) => entry.name.toLowerCase()),
|
||||
);
|
||||
|
||||
for (const entry of entries) {
|
||||
const name = entry.name.toLowerCase();
|
||||
if (!entry.isSymbolicLink() || !/^cpython-\d+\.\d+[+-].+$/.test(name)) {
|
||||
continue;
|
||||
}
|
||||
const link = nodePath.join(pythonDir, entry.name);
|
||||
let target: string;
|
||||
try {
|
||||
target = nodePath.resolve(pythonDir, await readlink(link));
|
||||
} catch (err) {
|
||||
// Fail only if the link still has the access error that requires repair.
|
||||
if (await resolvesWithAccessDenied(link)) {
|
||||
throw err;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// uv omits only the patch and prerelease from its minor-version links.
|
||||
const sibling = nodePath.relative(pythonDir, target).toLowerCase();
|
||||
const version = /^(cpython-\d+\.\d+)\.\d+(?:(?:a|b|rc)\d+)?([+-].+)$/.exec(
|
||||
sibling,
|
||||
);
|
||||
if (
|
||||
!version ||
|
||||
version[1] + version[2] !== name ||
|
||||
!directories.has(sibling)
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
// Git for Windows tar can restore a junction as a file symlink when it
|
||||
// extracts the link before its target. Opening it as a directory fails.
|
||||
if (!(await resolvesWithAccessDenied(link))) {
|
||||
continue;
|
||||
}
|
||||
// An inaccessible installation can also cause EPERM through a valid link.
|
||||
await realpath(target);
|
||||
await unlink(link);
|
||||
await symlink(target, link, "junction");
|
||||
}
|
||||
}
|
||||
|
||||
async function resolvesWithAccessDenied(link: string): Promise<boolean> {
|
||||
try {
|
||||
await realpath(link);
|
||||
return false;
|
||||
} catch (err) {
|
||||
return (err as NodeJS.ErrnoException).code === "EPERM";
|
||||
}
|
||||
}
|
||||
Vendored
+21
-22
@@ -4,6 +4,7 @@ import { hashFiles } from "../hash/hash-files";
|
||||
import type { SetupInputs } from "../utils/inputs";
|
||||
import * as log from "../utils/logging";
|
||||
import { getArch, getOSNameVersion, getPlatform } from "../utils/platforms";
|
||||
import { repairPythonJunctions } from "./repair-python-junctions";
|
||||
|
||||
export const STATE_CACHE_KEY = "cache-key";
|
||||
export const STATE_CACHE_MATCHED_KEY = "cache-matched-key";
|
||||
@@ -44,6 +45,9 @@ export async function restoreCache(
|
||||
inputs.pythonDir,
|
||||
STATE_PYTHON_CACHE_MATCHED_KEY,
|
||||
"python-cache-hit",
|
||||
// TODO: Remove this repair once @actions/cache preserves Windows junctions.
|
||||
// https://github.com/actions/toolkit/issues/2562
|
||||
process.platform === "win32" ? repairPythonJunctions : undefined,
|
||||
);
|
||||
} else {
|
||||
core.setOutput("python-cache-hit", false);
|
||||
@@ -55,21 +59,33 @@ async function restoreCacheFromKey(
|
||||
cachePath: string,
|
||||
stateKey: string,
|
||||
outputKey: string,
|
||||
afterRestore?: (cachePath: string) => Promise<void>,
|
||||
): Promise<void> {
|
||||
log.info(
|
||||
`Trying to restore cache from GitHub Actions cache with key: ${cacheKey}`,
|
||||
);
|
||||
let matchedKey: string | undefined;
|
||||
try {
|
||||
matchedKey = await cache.restoreCache([cachePath], cacheKey);
|
||||
const matchedKey = await cache.restoreCache([cachePath], cacheKey);
|
||||
if (!matchedKey) {
|
||||
log.info(`No GitHub Actions cache found for key: ${cacheKey}`);
|
||||
core.setOutput(outputKey, false);
|
||||
return;
|
||||
}
|
||||
|
||||
// Record the match before the post-restore hook so the post step can skip
|
||||
// archiving the directory again even if the hook fails. A PR that restored
|
||||
// from its base branch could otherwise save the broken copy in its own cache.
|
||||
core.saveState(stateKey, matchedKey);
|
||||
await afterRestore?.(cachePath);
|
||||
log.info(
|
||||
`cache restored from GitHub Actions cache with key: ${matchedKey}`,
|
||||
);
|
||||
core.setOutput(outputKey, true);
|
||||
} catch (err) {
|
||||
const message = (err as Error).message;
|
||||
log.warning(message);
|
||||
core.setOutput(outputKey, false);
|
||||
return;
|
||||
}
|
||||
|
||||
handleMatchResult(matchedKey, cacheKey, stateKey, outputKey);
|
||||
}
|
||||
|
||||
async function computeKeys(
|
||||
@@ -107,20 +123,3 @@ async function computeKeys(
|
||||
const python = inputs.cachePython ? "-py" : "";
|
||||
return `setup-uv-${CACHE_VERSION}-${getArch()}-${platform}-${osNameVersion}-${version}${pythonArchKey}${pruned}${python}${cacheDependencyPathHash}${suffix}`;
|
||||
}
|
||||
|
||||
function handleMatchResult(
|
||||
matchedKey: string | undefined,
|
||||
primaryKey: string,
|
||||
stateKey: string,
|
||||
outputKey: string,
|
||||
): void {
|
||||
if (!matchedKey) {
|
||||
log.info(`No GitHub Actions cache found for key: ${primaryKey}`);
|
||||
core.setOutput(outputKey, false);
|
||||
return;
|
||||
}
|
||||
|
||||
core.saveState(stateKey, matchedKey);
|
||||
log.info(`cache restored from GitHub Actions cache with key: ${matchedKey}`);
|
||||
core.setOutput(outputKey, true);
|
||||
}
|
||||
|
||||
+36
@@ -1,4 +1,40 @@
|
||||
{
|
||||
"aarch64-apple-darwin-0.13.7": "81b811b57e4624df7ed3aac148e0359100d9962f3d9dce00aec533dc2e086731",
|
||||
"aarch64-pc-windows-msvc-0.13.7": "505d9e65e7692bac3ddf98c66754aa26c5050c409c184af30a881a0a72cc85e3",
|
||||
"aarch64-unknown-linux-gnu-0.13.7": "71279f8d3c67241e807b9d8db872d1bf541579fb9f08b7d1eb1682196d1e57dc",
|
||||
"aarch64-unknown-linux-musl-0.13.7": "2d3ec076a0c4c0e8250bb6418c44080828b544f1a3be0b6e46adf9fb6923de45",
|
||||
"arm-unknown-linux-musleabihf-0.13.7": "2c029d1eda470c667e46a36fc5e2479c9a3e4af91e0cabcde07711bf40d587a9",
|
||||
"armv7-unknown-linux-gnueabihf-0.13.7": "5e2a1315a1b8b4a25250d536f62fa5c1ab5ed17233e7bf486c3c7849cb663284",
|
||||
"armv7-unknown-linux-musleabihf-0.13.7": "4a1a7dc0b1713bbeac665a2f95e680eea3bb7ecebea226ae3b2de552bc72e88b",
|
||||
"i686-pc-windows-msvc-0.13.7": "fa2abbf16f7d12cb01c9b7f313d843218fbd91a9d3fab487cc06a1d6765b27bf",
|
||||
"i686-unknown-linux-gnu-0.13.7": "cc4f86390f9c99e8f53530e5e7f2cdc6ae7c011c9e805764332a3e3c01a378e4",
|
||||
"i686-unknown-linux-musl-0.13.7": "c2d50f5c64eb81fd1fd1ec5870403c0533fe4b6bf76f940cc5e97824e49ab782",
|
||||
"powerpc64le-unknown-linux-gnu-0.13.7": "e8b65412482f848743e73566808f5bb480e826c9ce25361997891fcf71299080",
|
||||
"riscv64gc-unknown-linux-gnu-0.13.7": "48aff38af87c7c8255beb9b51b3676598045786ac5197de15fea54ebfe6c72e1",
|
||||
"riscv64gc-unknown-linux-musl-0.13.7": "6c2e67417dda9661e67c2591a6226805ef2ed8ebc203baeed411f67d459207b2",
|
||||
"s390x-unknown-linux-gnu-0.13.7": "2b64a479b905b9cdab99c71105e523a0d7aa79581cbd716d40bce26d7b595428",
|
||||
"x86_64-apple-darwin-0.13.7": "20c47e4c1f630b8abaff8c291fa9b9aa300fef92c4fbff95adf198b55287cda7",
|
||||
"x86_64-pc-windows-msvc-0.13.7": "0cdc5b38fe5a8168ed6a25814f5ba43c21d313dd3187314fccb37b7cec46e021",
|
||||
"x86_64-unknown-linux-gnu-0.13.7": "c5221ff41b7892bfc223543883600125f6a47fe845093e0f5bdff4f359196d83",
|
||||
"x86_64-unknown-linux-musl-0.13.7": "287491da03f2a785c70fa75b13e1f849918c2f2b5415fe84876b8214eeb792f9",
|
||||
"aarch64-apple-darwin-0.13.6": "60fbd5c8a1ed681845eea28d9d622fcde03c51e91a43465b64a1e17db1ed3472",
|
||||
"aarch64-pc-windows-msvc-0.13.6": "c2426c0c8e28b53d8c440e47a18d96ad4db51e159866c0e81435b196d7f0081c",
|
||||
"aarch64-unknown-linux-gnu-0.13.6": "229e194255c7958d86d56e8790d969a6f74736592133f0dfd0076f754c642c1d",
|
||||
"aarch64-unknown-linux-musl-0.13.6": "819692e404d23e5aae6bc44c0e260f1f5492fd1910ab4693b2c650f926dbe800",
|
||||
"arm-unknown-linux-musleabihf-0.13.6": "57ac0f7c04deb42c5d686b4eeeef555c442db6ffea16fe4cbd7adb0384403794",
|
||||
"armv7-unknown-linux-gnueabihf-0.13.6": "d00cd4949c4524c934afcfee1aedfa9d337cf4e43be4d6b692ad8d74d0a65562",
|
||||
"armv7-unknown-linux-musleabihf-0.13.6": "b215398c886e8cc2cfa282fe346c02025957f8633b75a3d4fd848e0adda4eddd",
|
||||
"i686-pc-windows-msvc-0.13.6": "32ceb64db231cbedfd499f7654c72e4c0b564f2846f9e76c0a4a7b2d03d7e67c",
|
||||
"i686-unknown-linux-gnu-0.13.6": "665ea831c38d342900950e606beb2ccc37b7ba0fcefc37b814eb4b076305f2b6",
|
||||
"i686-unknown-linux-musl-0.13.6": "de3a015c4b0fce63c178ae4fa95c94c873adfd92fa1e258c6a2a94e529812629",
|
||||
"powerpc64le-unknown-linux-gnu-0.13.6": "3b2847185ec2946fcc928500efef7e3e74c255d3be6f2cb435081a84885d8c6c",
|
||||
"riscv64gc-unknown-linux-gnu-0.13.6": "517052603ed46483b59d8875c9c61a577946b8f493c73e4339e45e7b119171d0",
|
||||
"riscv64gc-unknown-linux-musl-0.13.6": "659a95dc6aee3ecf86742a08d8ca6c6261422121cbd41decc0042f5a71af6305",
|
||||
"s390x-unknown-linux-gnu-0.13.6": "fb56d731308aa5c7718059d71afcb14d9a933a974997cee3d4eb5d06fc462a4b",
|
||||
"x86_64-apple-darwin-0.13.6": "63ba17fdda55ad1a230d4b37fc6017ffa10c23688c83818bd3bfdf914c652a02",
|
||||
"x86_64-pc-windows-msvc-0.13.6": "a2a8820d5eea32f08ef467ef3b7f66883a9b076d5737a2fc2fbb5f458d1bb50f",
|
||||
"x86_64-unknown-linux-gnu-0.13.6": "f29c3e94ffabd7e6f3ba521dba169a9b7ec12100bf3257087f0f24f6123f3645",
|
||||
"x86_64-unknown-linux-musl-0.13.6": "5d61f26b6c7213779eda90edc6971ea6b0b796bfb8d49a574c8ad69b59838548",
|
||||
"aarch64-apple-darwin-0.13.5": "743f85035a1996ecb350659e01cd9faea9709829be09b1b4b03c73eaf3c9cd73",
|
||||
"aarch64-pc-windows-msvc-0.13.5": "09f47edf90726084a70f9426f6e3ca4f46e9bf7cbf23b1716ec64d60b055fae3",
|
||||
"aarch64-unknown-linux-gnu-0.13.5": "4bb69cf95ed13f23713bb7bc09f241896ea0c75b7c557e615a20604b82f9c403",
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import { createInterface } from "node:readline";
|
||||
import { Readable } from "node:stream";
|
||||
import * as core from "@actions/core";
|
||||
import { VERSIONS_MANIFEST_URL } from "../utils/constants";
|
||||
import {
|
||||
GITHUB_VERSIONS_MANIFEST_URL,
|
||||
VERSIONS_MANIFEST_URL,
|
||||
} from "../utils/constants";
|
||||
import { fetch } from "../utils/fetch";
|
||||
import * as log from "../utils/logging";
|
||||
import { selectDefaultVariant } from "./variant-selection";
|
||||
@@ -167,6 +170,20 @@ export function clearManifestCache(manifestUrl?: string): void {
|
||||
}
|
||||
|
||||
async function fetchManifestResponse(manifestUrl: string) {
|
||||
try {
|
||||
return await fetchManifestResponseFromUrl(manifestUrl);
|
||||
} catch (error) {
|
||||
if (manifestUrl !== VERSIONS_MANIFEST_URL) {
|
||||
throw error;
|
||||
}
|
||||
log.info(
|
||||
`Failed to fetch manifest from Astral mirror, falling back to GitHub: ${(error as Error).message}`,
|
||||
);
|
||||
return await fetchManifestResponseFromUrl(GITHUB_VERSIONS_MANIFEST_URL);
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchManifestResponseFromUrl(manifestUrl: string) {
|
||||
let response: Awaited<ReturnType<typeof fetch>> | undefined;
|
||||
for (let attempt = 1; attempt <= MANIFEST_FETCH_ATTEMPTS; attempt++) {
|
||||
log.info(`Fetching manifest data from ${manifestUrl} ...`);
|
||||
|
||||
+4
-2
@@ -159,8 +159,10 @@ async function saveCacheToKey(
|
||||
}
|
||||
|
||||
log.info(`Including ${cacheName} path: ${cachePath}`);
|
||||
await cache.saveCache([cachePath], cacheKey);
|
||||
log.info(`${cacheName} saved with key: ${cacheKey}`);
|
||||
const cacheId = await cache.saveCache([cachePath], cacheKey);
|
||||
if (cacheId !== -1) {
|
||||
log.info(`${cacheName} saved with key: ${cacheKey}`);
|
||||
}
|
||||
}
|
||||
|
||||
run();
|
||||
|
||||
@@ -2,6 +2,8 @@ export const TOOL_CACHE_NAME = "uv";
|
||||
export const STATE_UV_PATH = "uv-path";
|
||||
export const STATE_UV_VERSION = "uv-version";
|
||||
export const VERSIONS_MANIFEST_URL =
|
||||
"https://releases.astral.sh/github/versions/main/v1/uv.ndjson";
|
||||
export const GITHUB_VERSIONS_MANIFEST_URL =
|
||||
"https://raw.githubusercontent.com/astral-sh/versions/main/v1/uv.ndjson";
|
||||
|
||||
/** GitHub Releases URL prefix for uv artifacts. */
|
||||
|
||||
@@ -69,5 +69,7 @@ function getUvVersionFromAllDependencies(
|
||||
|
||||
function getUvVersionFromDependency(dependency: string): string | undefined {
|
||||
const dependencyWithoutMarker = dependency.split(";", 1)[0]?.trim();
|
||||
return dependencyWithoutMarker?.match(/^uv([=<>~!]+\S*)/)?.[1].trim();
|
||||
return dependencyWithoutMarker
|
||||
?.match(/^uv\s*((?:[=<>~!]+\s*[^\s,]+\s*,?\s*)+)/)?.[1]
|
||||
.replace(/\s/g, "");
|
||||
}
|
||||
|
||||
+18
-3
@@ -169,7 +169,9 @@ async function findHighestSatisfyingVersion(
|
||||
): Promise<string | undefined> {
|
||||
// This fast path assumes uv releases are semver-monotonic: newer manifest
|
||||
// entries always have higher versions, with no lower-version backports.
|
||||
const semverRange = semver.validRange(versionSpecifier);
|
||||
const semverRange = isCompatibleReleaseSpecifier(versionSpecifier)
|
||||
? null
|
||||
: semver.validRange(versionSpecifier);
|
||||
if (semverRange !== null) {
|
||||
const semverMatch = await getFirstMatchingVersion((version) =>
|
||||
semver.satisfies(version, semverRange),
|
||||
@@ -193,11 +195,22 @@ async function findHighestSatisfyingVersion(
|
||||
return pep440Match;
|
||||
}
|
||||
|
||||
/**
|
||||
* `~=` is the PEP 440 compatible release operator. semver accepts it as a
|
||||
* tilde range with a narrower upper bound (`~=0.5` as `<0.6.0` instead of
|
||||
* `<1.0`), so it must only be evaluated as PEP 440.
|
||||
*/
|
||||
function isCompatibleReleaseSpecifier(versionSpecifier: string): boolean {
|
||||
return versionSpecifier.includes("~=");
|
||||
}
|
||||
|
||||
function maxSatisfying(
|
||||
versions: string[],
|
||||
version: string,
|
||||
): string | undefined {
|
||||
const maxSemver = tc.evaluateVersions(versions, version);
|
||||
const maxSemver = isCompatibleReleaseSpecifier(version)
|
||||
? ""
|
||||
: tc.evaluateVersions(versions, version);
|
||||
if (maxSemver !== "") {
|
||||
core.debug(`Found a version that satisfies the semver range: ${maxSemver}`);
|
||||
return maxSemver;
|
||||
@@ -218,7 +231,9 @@ function minSatisfying(
|
||||
versions: string[],
|
||||
version: string,
|
||||
): string | undefined {
|
||||
const minSemver = semver.minSatisfying(versions, version);
|
||||
const minSemver = isCompatibleReleaseSpecifier(version)
|
||||
? null
|
||||
: semver.minSatisfying(versions, version);
|
||||
if (minSemver !== null) {
|
||||
core.debug(`Found a version that satisfies the semver range: ${minSemver}`);
|
||||
return minSemver;
|
||||
|
||||
Reference in New Issue
Block a user