diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index 52ada30..f3d211a 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -1,8 +1,10 @@
name: Pull Requests
on:
- pull_request:
- types: [opened, synchronize, reopened, edited]
+ workflow_dispatch:
+ # TODO Enable once v2 ready
+ # pull_request:
+ # types: [opened, synchronize, reopened, edited]
jobs:
check-branch:
diff --git a/README.md b/README.md
index 9aad4a1..1f76b46 100644
--- a/README.md
+++ b/README.md
@@ -32,8 +32,12 @@ There are three kinds of version labels you can use.
- `@latest` - This will give you the latest release.
- `@v#` - Major only will give you the latest release for that major version only (e.g. `v1`).
- Branch
- - `@main-v2` - Most recent manual and automated tested code. Possibly unstable since it is pre-release.
- - `@staging-v2` - Most recent automated tested code and can sometimes contain experimental features. Is pulled from dev stable code.
+ - version 1.x
+ - `@master` - Most recent manual and automated tested code. Possibly unstable since it is pre-release (publishes as `1.x.x`).
+ - `@staging` - Most recent automated tested code and can sometimes contain experimental features (no publish).
+ - version 2.x
+ - `@main-2` - Live and stable version, pre-production before action release (publishes as `2.x.x`).
+ - `@staging-2` - Possibly unstable and can sometimes contain experimental features (publishes as `2.x.x-rc#`).
### Inputs
diff --git a/V2_FAQ.MD b/V2_FAQ.MD
index b64ddd0..76f13f4 100644
--- a/V2_FAQ.MD
+++ b/V2_FAQ.MD
@@ -1,27 +1,55 @@
-# cache-apt-pkgs-action - Version 2 FAQ
+
Cache APT Packages Action v2 :: FAQ
-## Why did you create a new version
+## Why did you create a new version?
### Bash Scripts
-Bash shell scripting grew in complexity and became very unreadable. The action needed higher level language idioms like array and map handling, complex pattern matching, and complex text processing.
+Bash shell scripting grew in complexity and became very unreadable. The action needed higher level language
+idioms like:
+
+- arrays, map handling, complex pattern matching, and complex text processing;
+- robust logging, debugging, other instrumentations; and
+- avoiding cryptic shell and system environment considerations.
+
+The lack of these
### Language Choice
-Languages like Python, Go, Rust, etc. have performance and writeability trade offs that would greatly improve this action, but ultimately Typescript was chosen because:
+Languages like Python, Go, Rust, etc. have performance and writeability trade offs that would also meet these
+requirements, but ultimately Typescript was chosen because it:
-- it is the most performant and well supported for GitHub actions;
-- native strongly types libraries for action args and actions like caching;
-- provides a balance of code comprehension for contributors and performance; and
-- allows for better integration, CI, regression testing, and release workflows.
+- is the most performant and well supported for GitHub actions;
+- has native strongly typed libraries for actions maintained by GitHub like
+ - [`@actions/core`](https://github.com/actions/toolkit/tree/main/packages/core) for runtime environment, and
+ - other common services like [`@actions/cache`](https://github.com/actions/toolkit/tree/main/packages/cache)
+ and [`@actions/artifact`](https://github.com/actions/toolkit/tree/main/packages/artifact);
+- requires no binary compilation;
+- provides a balance of code comprehension and performance for contributors; and
+- allows for better continuous integration, release workflow, hermetic unit testing, and smoke testing.
## Where did all the APT functionality go?
-Since this has been a complex part of the codebase, I decided to separate the concern as its own library. This can now be found in [npm/ts-apt](https://www.npmjs.com/package/ts-apt). For ease of use there is an option to bring in the workspace for inline source so it can be debugged and then committed to the [ts-apt](http://github.com/awalsh128/ts-apt) repository.
+Since this has been a complex part of the codebase, I decided to separate the concern as its own library. This
+can now be found at [`npm/ts-apt`](https://www.npmjs.com/package/ts-apt) with the sourcecode in the
+[`awalsh128/ts-apt`](http://github.com/awalsh128/ts-apt) repository.
+
+For ease of use there is an option to bring in the workspace for inline source via `npm run dev:tsapt:[un]link`
+so it can be debugged and then PR'd to the [awalsh128/ts-apt](http://github.com/awalsh128/ts-apt)
+repository.
## How do I start using this?
> [!IMPORTANT]
-> This is still in beta so use at your own risk!
+> This is in the early phase of development. Use at your own risk!
-For now you can use the `v2.*` release tags (pinning also supported). Once this version has had time to soak it will be released as the latest. `v1.*` will still get updates but in maintenance mode.
+**No change is needed and the action signatures are backwards compatible.**
+
+- Just change to the latest `v2.*` in your GitHub workflow.
+- `v1.*` will still get patch updates but is in maintenance mode.
+
+## Some internal changes
+
+- Logging uses native GitHub calls that will result in run annotations.
+- Output will tend to be more verbose but this will be tuned as this version matures.
+- All the metadata generated like manifests, the cache key, and logs are now stored as artifacts.
+- Debug mode can either be specified via an input parameter `debug` or [as part of the repository settings](https://docs.github.com/en/actions/how-tos/monitor-workflows/enable-debug-logging).
diff --git a/package-lock.json b/package-lock.json
index f927def..074623c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -28,6 +28,7 @@
"@semantic-release/npm": "^13.1.5",
"@semantic-release/release-notes-generator": "^14.1.1",
"@types/node": "^24.1.0",
+ "@types/tar": "^6.1.13",
"@typescript-eslint/eslint-plugin": "^8.62.1",
"@typescript-eslint/parser": "^8.62.1",
"@vitest/coverage-v8": "^4.1.9",
@@ -39,7 +40,7 @@
"typedoc": "^0.28.19",
"typedoc-plugin-markdown": "^4.12.0",
"typescript": "^6.0.3",
- "vitest": "^4.1.9",
+ "vitest": "^4.1.10",
"zod": "^4.4.3"
},
"engines": {
@@ -74,7 +75,6 @@
"@typescript-eslint/parser": "^8.64.0",
"@vitest/coverage-v8": "^4.1.9",
"eslint": "^10.6.0",
- "internet-message": "^1.0.0",
"npm-run-all": "^4.1.5",
"semantic-release": "^25.0.5",
"type-coverage": "^2.29.7",
@@ -175,21 +175,6 @@
"undici": "^6.23.0"
}
},
- "node_modules/@actions/github/node_modules/@octokit/plugin-paginate-rest": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz",
- "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^16.0.0"
- },
- "engines": {
- "node": ">= 20"
- },
- "peerDependencies": {
- "@octokit/core": ">=6"
- }
- },
"node_modules/@actions/glob": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.6.1.tgz",
@@ -200,34 +185,6 @@
"minimatch": "^3.0.4"
}
},
- "node_modules/@actions/glob/node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "license": "MIT"
- },
- "node_modules/@actions/glob/node_modules/brace-expansion": {
- "version": "1.1.16",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
- "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@actions/glob/node_modules/minimatch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
- "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/@actions/http-client": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.1.tgz",
@@ -529,18 +486,18 @@
}
},
"node_modules/@bufbuild/protobuf": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.12.1.tgz",
- "integrity": "sha512-BvAMfS6LrgZiryOAZ4pBYucu4wG/Ei/9o9DZ9akbREnMLbPJiom2i8b9C8IsKErQoiKqVhrerzt3kOT/RrzLHg==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.13.0.tgz",
+ "integrity": "sha512-acq7c49vxfm1ggJ95P70TX7ABDM0vxr1SYD3BB0o0jnBLB4OAqeHyKuN+cD3w80gXEDQ2zxHpR6CUeA+O/aU9g==",
"license": "(Apache-2.0 AND BSD-3-Clause)"
},
"node_modules/@bufbuild/protoplugin": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/@bufbuild/protoplugin/-/protoplugin-2.12.1.tgz",
- "integrity": "sha512-PY58KxQVAD1BnnKtStOctsMoegEVGfBnY5AOqVQOIu711nA13oYtTqJM8df5lUQg2J1DR3XxUXptE+fWX5oLdA==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/@bufbuild/protoplugin/-/protoplugin-2.13.0.tgz",
+ "integrity": "sha512-32eMChKaL/A8Hh5AfMmXSdnuyznN85uoEjoyWiWeRrvtQOtpqX/v1R9PDe0g9vMIgzznK9inMT3CUaal0kjLUQ==",
"license": "Apache-2.0",
"dependencies": {
- "@bufbuild/protobuf": "2.12.1",
+ "@bufbuild/protobuf": "2.13.0",
"@typescript/vfs": "^1.6.2",
"typescript": "5.4.5"
}
@@ -671,6 +628,45 @@
"node": "^20.19.0 || ^22.13.0 || >=24"
}
},
+ "node_modules/@eslint/config-array/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/brace-expansion": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz",
+ "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/minimatch": {
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.5"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@eslint/config-helpers": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz",
@@ -818,44 +814,6 @@
"node": ">=12"
}
},
- "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "license": "MIT"
- },
- "node_modules/@isaacs/cliui/node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "license": "MIT",
- "dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
- "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.2.2"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
"node_modules/@isaacs/fs-minipass": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
@@ -868,6 +826,15 @@
"node": ">=18.0.0"
}
},
+ "node_modules/@isaacs/fs-minipass/node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
@@ -916,9 +883,9 @@
}
},
"node_modules/@nodable/entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-3.0.0.tgz",
+ "integrity": "sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==",
"funding": [
{
"type": "github",
@@ -1026,13 +993,12 @@
"license": "MIT"
},
"node_modules/@octokit/plugin-paginate-rest": {
- "version": "13.2.1",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-13.2.1.tgz",
- "integrity": "sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==",
- "dev": true,
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz",
+ "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==",
"license": "MIT",
"dependencies": {
- "@octokit/types": "^15.0.1"
+ "@octokit/types": "^16.0.0"
},
"engines": {
"node": ">= 20"
@@ -1041,23 +1007,6 @@
"@octokit/core": ">=6"
}
},
- "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz",
- "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
- "version": "15.0.2",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.2.tgz",
- "integrity": "sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^26.0.0"
- }
- },
"node_modules/@octokit/plugin-request-log": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz",
@@ -1158,9 +1107,9 @@
}
},
"node_modules/@oxc-project/types": {
- "version": "0.138.0",
- "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.138.0.tgz",
- "integrity": "sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==",
+ "version": "0.139.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz",
+ "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==",
"dev": true,
"license": "MIT",
"funding": {
@@ -1294,9 +1243,9 @@
}
},
"node_modules/@rolldown/binding-android-arm64": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.4.tgz",
- "integrity": "sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz",
+ "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==",
"cpu": [
"arm64"
],
@@ -1311,9 +1260,9 @@
}
},
"node_modules/@rolldown/binding-darwin-arm64": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.4.tgz",
- "integrity": "sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz",
+ "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==",
"cpu": [
"arm64"
],
@@ -1328,9 +1277,9 @@
}
},
"node_modules/@rolldown/binding-darwin-x64": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.4.tgz",
- "integrity": "sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz",
+ "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==",
"cpu": [
"x64"
],
@@ -1345,9 +1294,9 @@
}
},
"node_modules/@rolldown/binding-freebsd-x64": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.4.tgz",
- "integrity": "sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz",
+ "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==",
"cpu": [
"x64"
],
@@ -1362,9 +1311,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm-gnueabihf": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.4.tgz",
- "integrity": "sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz",
+ "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==",
"cpu": [
"arm"
],
@@ -1379,13 +1328,16 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-gnu": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.4.tgz",
- "integrity": "sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz",
+ "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1396,13 +1348,16 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-musl": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.4.tgz",
- "integrity": "sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz",
+ "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1413,13 +1368,16 @@
}
},
"node_modules/@rolldown/binding-linux-ppc64-gnu": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.4.tgz",
- "integrity": "sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz",
+ "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==",
"cpu": [
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1430,13 +1388,16 @@
}
},
"node_modules/@rolldown/binding-linux-s390x-gnu": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.4.tgz",
- "integrity": "sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz",
+ "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==",
"cpu": [
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1447,13 +1408,16 @@
}
},
"node_modules/@rolldown/binding-linux-x64-gnu": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.4.tgz",
- "integrity": "sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz",
+ "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1464,13 +1428,16 @@
}
},
"node_modules/@rolldown/binding-linux-x64-musl": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.4.tgz",
- "integrity": "sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz",
+ "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1481,9 +1448,9 @@
}
},
"node_modules/@rolldown/binding-openharmony-arm64": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.4.tgz",
- "integrity": "sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz",
+ "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==",
"cpu": [
"arm64"
],
@@ -1498,9 +1465,9 @@
}
},
"node_modules/@rolldown/binding-wasm32-wasi": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.4.tgz",
- "integrity": "sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz",
+ "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==",
"cpu": [
"wasm32"
],
@@ -1517,9 +1484,9 @@
}
},
"node_modules/@rolldown/binding-win32-arm64-msvc": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.4.tgz",
- "integrity": "sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz",
+ "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==",
"cpu": [
"arm64"
],
@@ -1534,9 +1501,9 @@
}
},
"node_modules/@rolldown/binding-win32-x64-msvc": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.4.tgz",
- "integrity": "sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz",
+ "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==",
"cpu": [
"x64"
],
@@ -2034,6 +2001,39 @@
"semantic-release": ">=24.1.0"
}
},
+ "node_modules/@semantic-release/github/node_modules/@octokit/openapi-types": {
+ "version": "26.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz",
+ "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@semantic-release/github/node_modules/@octokit/plugin-paginate-rest": {
+ "version": "13.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-13.2.1.tgz",
+ "integrity": "sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^15.0.1"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/@semantic-release/github/node_modules/@octokit/types": {
+ "version": "15.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.2.tgz",
+ "integrity": "sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/openapi-types": "^26.0.0"
+ }
+ },
"node_modules/@semantic-release/github/node_modules/@semantic-release/error": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
@@ -2233,19 +2233,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@semantic-release/npm/node_modules/hosted-git-info": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz",
- "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^11.1.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/@semantic-release/npm/node_modules/human-signals": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz",
@@ -2282,31 +2269,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@semantic-release/npm/node_modules/lru-cache": {
- "version": "11.5.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz",
- "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/@semantic-release/npm/node_modules/normalize-package-data": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-8.0.0.tgz",
- "integrity": "sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^9.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/@semantic-release/npm/node_modules/npm-run-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
@@ -2337,39 +2299,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@semantic-release/npm/node_modules/read-pkg": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.1.0.tgz",
- "integrity": "sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/normalize-package-data": "^2.4.4",
- "normalize-package-data": "^8.0.0",
- "parse-json": "^8.3.0",
- "type-fest": "^5.4.4",
- "unicorn-magic": "^0.4.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@semantic-release/npm/node_modules/read-pkg/node_modules/unicorn-magic": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz",
- "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/@semantic-release/npm/node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
@@ -2396,22 +2325,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@semantic-release/npm/node_modules/type-fest": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.7.0.tgz",
- "integrity": "sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "dependencies": {
- "tagged-tag": "^1.0.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/@semantic-release/npm/node_modules/unicorn-magic": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
@@ -2596,9 +2509,9 @@
"license": "MIT"
},
"node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2613,9 +2526,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "24.13.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.2.tgz",
- "integrity": "sha512-fRa09kZTgu8o71KFcDjUFuc7F+dEbZYZmkI0mg5YBTRs0yMKjYHsq/c0urDKeDb+D5qVgXOdFcuu+DZPKOITwA==",
+ "version": "24.13.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz",
+ "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2629,6 +2542,17 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/tar": {
+ "version": "6.1.13",
+ "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.13.tgz",
+ "integrity": "sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "minipass": "^4.0.0"
+ }
+ },
"node_modules/@types/triple-beam": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz",
@@ -2643,17 +2567,17 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.62.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.62.1.tgz",
- "integrity": "sha512-4EQM77WgVNxj7OkL/5b/D/xZsw00G577+UriYTC7JF5opcF3T2AuoeY7ueLaZgSVjSgCS6yOAJB5bRGLPSJUzA==",
+ "version": "8.65.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.65.0.tgz",
+ "integrity": "sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.12.2",
- "@typescript-eslint/scope-manager": "8.62.1",
- "@typescript-eslint/type-utils": "8.62.1",
- "@typescript-eslint/utils": "8.62.1",
- "@typescript-eslint/visitor-keys": "8.62.1",
+ "@typescript-eslint/scope-manager": "8.65.0",
+ "@typescript-eslint/type-utils": "8.65.0",
+ "@typescript-eslint/utils": "8.65.0",
+ "@typescript-eslint/visitor-keys": "8.65.0",
"ignore": "^7.0.5",
"natural-compare": "^1.4.0",
"ts-api-utils": "^2.5.0"
@@ -2666,22 +2590,22 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.62.1",
+ "@typescript-eslint/parser": "^8.65.0",
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
"typescript": ">=4.8.4 <6.1.0"
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.62.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.62.1.tgz",
- "integrity": "sha512-sPhE4iHuJDSvoAiec+Ro8JyXw8f0ql13HFR82P99nCm9GwTEKG0KYLvDe6REk8BCXuit6vJAv/Yxg5ABaNS2rA==",
+ "version": "8.65.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.65.0.tgz",
+ "integrity": "sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.62.1",
- "@typescript-eslint/types": "8.62.1",
- "@typescript-eslint/typescript-estree": "8.62.1",
- "@typescript-eslint/visitor-keys": "8.62.1",
+ "@typescript-eslint/scope-manager": "8.65.0",
+ "@typescript-eslint/types": "8.65.0",
+ "@typescript-eslint/typescript-estree": "8.65.0",
+ "@typescript-eslint/visitor-keys": "8.65.0",
"debug": "^4.4.3"
},
"engines": {
@@ -2697,14 +2621,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.62.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.62.1.tgz",
- "integrity": "sha512-yQ3RgY5RkSBpsNS1Bx/JQEcA24FOSdfGktoyprAr5u18390UQdtVcfnEv4nIrIshNnavlVyZBKxQwT1fIAE6cg==",
+ "version": "8.65.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.65.0.tgz",
+ "integrity": "sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.62.1",
- "@typescript-eslint/types": "^8.62.1",
+ "@typescript-eslint/tsconfig-utils": "^8.65.0",
+ "@typescript-eslint/types": "^8.65.0",
"debug": "^4.4.3"
},
"engines": {
@@ -2719,14 +2643,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.62.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.62.1.tgz",
- "integrity": "sha512-r4d249KbQ1SFdpeStvob8Ih6aPPIzfqllPVOtvhve6ZcpuVcYo5/7zUWckKpHE7StASX4kTKZTLf0WQm/wPkcg==",
+ "version": "8.65.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.65.0.tgz",
+ "integrity": "sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.62.1",
- "@typescript-eslint/visitor-keys": "8.62.1"
+ "@typescript-eslint/types": "8.65.0",
+ "@typescript-eslint/visitor-keys": "8.65.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2737,9 +2661,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.62.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.62.1.tgz",
- "integrity": "sha512-xadytJqX9vJVQ2fdQjkcIVigwaOJNWkpjdLt6cEQ+xPnrI1fkp+/jZE/I97k9KUjqtpd25i0HeyZf3T6dutv2g==",
+ "version": "8.65.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.65.0.tgz",
+ "integrity": "sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2754,15 +2678,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.62.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.62.1.tgz",
- "integrity": "sha512-aXM5xlqXiTxPibXB93cLAURfT3rlizf7uMXISCXy66Isr/9hISJx3yDsKl0L7lKa51b8JpFuNKby0/O0pEm9jg==",
+ "version": "8.65.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.65.0.tgz",
+ "integrity": "sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.62.1",
- "@typescript-eslint/typescript-estree": "8.62.1",
- "@typescript-eslint/utils": "8.62.1",
+ "@typescript-eslint/types": "8.65.0",
+ "@typescript-eslint/typescript-estree": "8.65.0",
+ "@typescript-eslint/utils": "8.65.0",
"debug": "^4.4.3",
"ts-api-utils": "^2.5.0"
},
@@ -2779,9 +2703,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.62.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.62.1.tgz",
- "integrity": "sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q==",
+ "version": "8.65.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.65.0.tgz",
+ "integrity": "sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2793,16 +2717,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.62.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.62.1.tgz",
- "integrity": "sha512-xMcW9oP9u7fAMXYs9A65CVmtLQe2r//oXINHfi8HV+oiqhih17sbLdhXr4540YWlgpDKQdY854OL5ZrdCiQsAA==",
+ "version": "8.65.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.65.0.tgz",
+ "integrity": "sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.62.1",
- "@typescript-eslint/tsconfig-utils": "8.62.1",
- "@typescript-eslint/types": "8.62.1",
- "@typescript-eslint/visitor-keys": "8.62.1",
+ "@typescript-eslint/project-service": "8.65.0",
+ "@typescript-eslint/tsconfig-utils": "8.65.0",
+ "@typescript-eslint/types": "8.65.0",
+ "@typescript-eslint/visitor-keys": "8.65.0",
"debug": "^4.4.3",
"minimatch": "^10.2.2",
"semver": "^7.7.3",
@@ -2820,17 +2744,56 @@
"typescript": ">=4.8.4 <6.1.0"
}
},
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz",
+ "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.5"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@typescript-eslint/utils": {
- "version": "8.62.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.62.1.tgz",
- "integrity": "sha512-sHtbPfuKNZCG+ih8SyjjucqRntSVmp8XgL5u6o9mAhiSn8ds5o/M/XdM0abweme2Tln3szOstOrZ9OXitvPh0g==",
+ "version": "8.65.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.65.0.tgz",
+ "integrity": "sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.9.1",
- "@typescript-eslint/scope-manager": "8.62.1",
- "@typescript-eslint/types": "8.62.1",
- "@typescript-eslint/typescript-estree": "8.62.1"
+ "@typescript-eslint/scope-manager": "8.65.0",
+ "@typescript-eslint/types": "8.65.0",
+ "@typescript-eslint/typescript-estree": "8.65.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2845,13 +2808,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.62.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.62.1.tgz",
- "integrity": "sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g==",
+ "version": "8.65.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.65.0.tgz",
+ "integrity": "sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.62.1",
+ "@typescript-eslint/types": "8.65.0",
"eslint-visitor-keys": "^5.0.0"
},
"engines": {
@@ -2902,14 +2865,14 @@
}
},
"node_modules/@vitest/coverage-v8": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.9.tgz",
- "integrity": "sha512-G9/lgqibheLVBDRuya45EbsEXTYcWoSG+TLg7i2axuzx0Eq62eXn+aWXyaVdV5vKvFSWd6ywcX8hA7la9Pvu8g==",
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.10.tgz",
+ "integrity": "sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@bcoe/v8-coverage": "^1.0.2",
- "@vitest/utils": "4.1.9",
+ "@vitest/utils": "4.1.10",
"ast-v8-to-istanbul": "^1.0.0",
"istanbul-lib-coverage": "^3.2.2",
"istanbul-lib-report": "^3.0.1",
@@ -2923,8 +2886,8 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "@vitest/browser": "4.1.9",
- "vitest": "4.1.9"
+ "@vitest/browser": "4.1.10",
+ "vitest": "4.1.10"
},
"peerDependenciesMeta": {
"@vitest/browser": {
@@ -2933,16 +2896,16 @@
}
},
"node_modules/@vitest/expect": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.9.tgz",
- "integrity": "sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==",
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz",
+ "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@standard-schema/spec": "^1.1.0",
"@types/chai": "^5.2.2",
- "@vitest/spy": "4.1.9",
- "@vitest/utils": "4.1.9",
+ "@vitest/spy": "4.1.10",
+ "@vitest/utils": "4.1.10",
"chai": "^6.2.2",
"tinyrainbow": "^3.1.0"
},
@@ -2951,13 +2914,13 @@
}
},
"node_modules/@vitest/mocker": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.9.tgz",
- "integrity": "sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==",
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz",
+ "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "4.1.9",
+ "@vitest/spy": "4.1.10",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.21"
},
@@ -2978,9 +2941,9 @@
}
},
"node_modules/@vitest/pretty-format": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.9.tgz",
- "integrity": "sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==",
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz",
+ "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2991,13 +2954,13 @@
}
},
"node_modules/@vitest/runner": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.9.tgz",
- "integrity": "sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==",
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz",
+ "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "4.1.9",
+ "@vitest/utils": "4.1.10",
"pathe": "^2.0.3"
},
"funding": {
@@ -3005,14 +2968,14 @@
}
},
"node_modules/@vitest/snapshot": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.9.tgz",
- "integrity": "sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==",
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz",
+ "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.1.9",
- "@vitest/utils": "4.1.9",
+ "@vitest/pretty-format": "4.1.10",
+ "@vitest/utils": "4.1.10",
"magic-string": "^0.30.21",
"pathe": "^2.0.3"
},
@@ -3021,9 +2984,9 @@
}
},
"node_modules/@vitest/spy": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.9.tgz",
- "integrity": "sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==",
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz",
+ "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==",
"dev": true,
"license": "MIT",
"funding": {
@@ -3031,13 +2994,13 @@
}
},
"node_modules/@vitest/utils": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.9.tgz",
- "integrity": "sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==",
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz",
+ "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.1.9",
+ "@vitest/pretty-format": "4.1.10",
"convert-source-map": "^2.0.0",
"tinyrainbow": "^3.1.0"
},
@@ -3149,15 +3112,16 @@
}
},
"node_modules/ansi-styles": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
- "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
"license": "MIT",
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "color-convert": "^1.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/any-promise": {
@@ -3215,96 +3179,6 @@
"node": ">= 14"
}
},
- "node_modules/archiver-utils/node_modules/readable-stream": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
- "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
- "license": "MIT",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "buffer": "^6.0.3",
- "events": "^3.3.0",
- "process": "^0.11.10",
- "string_decoder": "^1.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/archiver-utils/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/archiver-utils/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/archiver/node_modules/readable-stream": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
- "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
- "license": "MIT",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "buffer": "^6.0.3",
- "events": "^3.3.0",
- "process": "^0.11.10",
- "string_decoder": "^1.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/archiver/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/archiver/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -3376,9 +3250,9 @@
}
},
"node_modules/ast-v8-to-istanbul": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.4.tgz",
- "integrity": "sha512-0bC0/4bTSrnwdhU3IsZDwEdojvuPrSg59OYZfKsLRtJZ0u8VBx9DebfqqG8bRdCC0I7vjgxmPi41P0lpkhJHtA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.5.tgz",
+ "integrity": "sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3434,14 +3308,10 @@
}
},
"node_modules/balanced-match": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "18 || 20 || >=22"
- }
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
},
"node_modules/bare-events": {
"version": "2.9.1",
@@ -3515,9 +3385,9 @@
}
},
"node_modules/bare-url": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.5.tgz",
- "integrity": "sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==",
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.6.tgz",
+ "integrity": "sha512-iQxPClE07hETVpbRoX7JXX3v/ZQViCxe/SYCxylRLzdEx1xJAufPptfiOqR8tqiCtmbtMDANKWszzjLu1PMAZQ==",
"license": "Apache-2.0",
"dependencies": {
"bare-path": "^3.0.0"
@@ -3569,16 +3439,13 @@
"license": "MIT"
},
"node_modules/brace-expansion": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz",
- "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==",
- "dev": true,
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
+ "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"license": "MIT",
"dependencies": {
- "balanced-match": "^4.0.2"
- },
- "engines": {
- "node": "18 || 20 || >=22"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
"node_modules/braces": {
@@ -3727,16 +3594,51 @@
}
},
"node_modules/chalk": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
- "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chalk/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/chalk/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/char-regex": {
@@ -3796,6 +3698,16 @@
"npm": ">=5.0.0"
}
},
+ "node_modules/cli-highlight/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/cli-highlight/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -3861,6 +3773,41 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/cli-highlight/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cli-highlight/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/cli-highlight/node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -3924,12 +3871,57 @@
"@colors/colors": "1.5.0"
}
},
+ "node_modules/cli-table3/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-table3/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cli-table3/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-table3/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/cliui": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
"integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
"dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
"string-width": "^7.2.0",
"strip-ansi": "^7.1.0",
@@ -3939,6 +3931,19 @@
"node": ">=20"
}
},
+ "node_modules/cliui/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/cliui/node_modules/emoji-regex": {
"version": "10.6.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
@@ -3964,22 +3969,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cliui/node_modules/strip-ansi": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
- "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.2.2"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
"node_modules/cliui/node_modules/wrap-ansi": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
@@ -4012,25 +4001,21 @@
}
},
"node_modules/color-convert": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz",
- "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==",
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "color-name": "^2.0.0"
- },
- "engines": {
- "node": ">=14.6"
+ "color-name": "1.1.3"
}
},
"node_modules/color-name": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz",
- "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==",
- "license": "MIT",
- "engines": {
- "node": ">=12.20"
- }
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/color-string": {
"version": "2.1.4",
@@ -4044,6 +4029,36 @@
"node": ">=18"
}
},
+ "node_modules/color-string/node_modules/color-name": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz",
+ "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/color/node_modules/color-convert": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz",
+ "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.6"
+ }
+ },
+ "node_modules/color/node_modules/color-name": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz",
+ "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
"node_modules/compare-func": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
@@ -4071,51 +4086,6 @@
"node": ">= 14"
}
},
- "node_modules/compress-commons/node_modules/readable-stream": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
- "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
- "license": "MIT",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "buffer": "^6.0.3",
- "events": "^3.3.0",
- "process": "^0.11.10",
- "string_decoder": "^1.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/compress-commons/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/compress-commons/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -4303,51 +4273,6 @@
"node": ">= 14"
}
},
- "node_modules/crc32-stream/node_modules/readable-stream": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
- "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
- "license": "MIT",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "buffer": "^6.0.3",
- "events": "^3.3.0",
- "process": "^0.11.10",
- "string_decoder": "^1.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/crc32-stream/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/crc32-stream/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -4576,6 +4501,46 @@
"readable-stream": "^2.0.2"
}
},
+ "node_modules/duplexer2/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/duplexer2/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/duplexer2/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/duplexer2/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -4583,9 +4548,9 @@
"license": "MIT"
},
"node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"license": "MIT"
},
"node_modules/emojilib": {
@@ -4914,9 +4879,9 @@
}
},
"node_modules/es-module-lexer": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.0.tgz",
- "integrity": "sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz",
+ "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==",
"dev": true,
"license": "MIT"
},
@@ -4994,9 +4959,9 @@
}
},
"node_modules/eslint": {
- "version": "10.6.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.6.0.tgz",
- "integrity": "sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==",
+ "version": "10.7.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.7.0.tgz",
+ "integrity": "sha512-GVTD7s1vdIl6UYvAfriOPeY1Df8LIZjfofLvHwde+erDHGGuHyuM6xoxRxmHiebhYuD2p1vN4wWh0XzPARSGDQ==",
"dev": true,
"license": "MIT",
"workspaces": [
@@ -5084,6 +5049,29 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz",
+ "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
"node_modules/eslint/node_modules/eslint-visitor-keys": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
@@ -5107,6 +5095,22 @@
"node": ">= 4"
}
},
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.5"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/espree": {
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
@@ -5329,9 +5333,9 @@
}
},
"node_modules/fast-xml-parser": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.10.0.tgz",
- "integrity": "sha512-SLhnTEqE5QpJHq/6zl9bsmImEP2adv+y6Wy+cJa7nVTRzQh1OZfCe9k29M5xN74LWnu0xa1zrUrq3KnOKl92Fg==",
+ "version": "5.10.1",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.10.1.tgz",
+ "integrity": "sha512-IEMIf7298kXuZSRFoGfMYrl7is8LpavODgbNz1cwIudv7KwVFnuU+UsMporfq6PD6aXSlawZlARiA3UywCTfMw==",
"funding": [
{
"type": "github",
@@ -5340,7 +5344,7 @@
],
"license": "MIT",
"dependencies": {
- "@nodable/entities": "^2.2.0",
+ "@nodable/entities": "^3.0.0",
"fast-xml-builder": "^1.2.0",
"is-unsafe": "^2.0.0",
"path-expression-matcher": "^1.6.2",
@@ -5765,12 +5769,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/glob/node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "license": "MIT"
- },
"node_modules/glob/node_modules/brace-expansion": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
@@ -5795,6 +5793,15 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/glob/node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/globalthis": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
@@ -5971,11 +5978,27 @@
}
},
"node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz",
+ "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==",
"dev": true,
- "license": "ISC"
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^11.1.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "11.5.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
},
"node_modules/html-escaper": {
"version": "2.0.2",
@@ -6041,9 +6064,9 @@
"license": "BSD-3-Clause"
},
"node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz",
+ "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6654,9 +6677,10 @@
}
},
"node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
"license": "MIT"
},
"node_modules/isexe": {
@@ -6812,9 +6836,9 @@
"license": "MIT"
},
"node_modules/json-with-bigint": {
- "version": "3.5.8",
- "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.8.tgz",
- "integrity": "sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==",
+ "version": "3.5.10",
+ "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.10.tgz",
+ "integrity": "sha512-Vcx+JVNEBts/xfcoCS69sKrOhOk/3TVlvlT+XzUOefVKnnrbYSCKpDCm10pohsJFtsJVYnwa/cXRZ4eElzaM6w==",
"license": "MIT"
},
"node_modules/jsonfile": {
@@ -6867,6 +6891,42 @@
"node": ">= 0.6.3"
}
},
+ "node_modules/lazystream/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
+ "node_modules/lazystream/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/lazystream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "node_modules/lazystream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -6882,9 +6942,9 @@
}
},
"node_modules/lightningcss": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
- "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz",
+ "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
@@ -6898,23 +6958,23 @@
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
- "lightningcss-android-arm64": "1.32.0",
- "lightningcss-darwin-arm64": "1.32.0",
- "lightningcss-darwin-x64": "1.32.0",
- "lightningcss-freebsd-x64": "1.32.0",
- "lightningcss-linux-arm-gnueabihf": "1.32.0",
- "lightningcss-linux-arm64-gnu": "1.32.0",
- "lightningcss-linux-arm64-musl": "1.32.0",
- "lightningcss-linux-x64-gnu": "1.32.0",
- "lightningcss-linux-x64-musl": "1.32.0",
- "lightningcss-win32-arm64-msvc": "1.32.0",
- "lightningcss-win32-x64-msvc": "1.32.0"
+ "lightningcss-android-arm64": "1.33.0",
+ "lightningcss-darwin-arm64": "1.33.0",
+ "lightningcss-darwin-x64": "1.33.0",
+ "lightningcss-freebsd-x64": "1.33.0",
+ "lightningcss-linux-arm-gnueabihf": "1.33.0",
+ "lightningcss-linux-arm64-gnu": "1.33.0",
+ "lightningcss-linux-arm64-musl": "1.33.0",
+ "lightningcss-linux-x64-gnu": "1.33.0",
+ "lightningcss-linux-x64-musl": "1.33.0",
+ "lightningcss-win32-arm64-msvc": "1.33.0",
+ "lightningcss-win32-x64-msvc": "1.33.0"
}
},
"node_modules/lightningcss-android-arm64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
- "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz",
+ "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==",
"cpu": [
"arm64"
],
@@ -6933,9 +6993,9 @@
}
},
"node_modules/lightningcss-darwin-arm64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
- "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz",
+ "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==",
"cpu": [
"arm64"
],
@@ -6954,9 +7014,9 @@
}
},
"node_modules/lightningcss-darwin-x64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
- "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz",
+ "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==",
"cpu": [
"x64"
],
@@ -6975,9 +7035,9 @@
}
},
"node_modules/lightningcss-freebsd-x64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
- "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz",
+ "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==",
"cpu": [
"x64"
],
@@ -6996,9 +7056,9 @@
}
},
"node_modules/lightningcss-linux-arm-gnueabihf": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
- "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz",
+ "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==",
"cpu": [
"arm"
],
@@ -7017,13 +7077,16 @@
}
},
"node_modules/lightningcss-linux-arm64-gnu": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
- "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz",
+ "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MPL-2.0",
"optional": true,
"os": [
@@ -7038,13 +7101,16 @@
}
},
"node_modules/lightningcss-linux-arm64-musl": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
- "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz",
+ "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MPL-2.0",
"optional": true,
"os": [
@@ -7059,13 +7125,16 @@
}
},
"node_modules/lightningcss-linux-x64-gnu": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
- "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz",
+ "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MPL-2.0",
"optional": true,
"os": [
@@ -7080,13 +7149,16 @@
}
},
"node_modules/lightningcss-linux-x64-musl": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
- "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz",
+ "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MPL-2.0",
"optional": true,
"os": [
@@ -7101,9 +7173,9 @@
}
},
"node_modules/lightningcss-win32-arm64-msvc": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
- "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz",
+ "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==",
"cpu": [
"arm64"
],
@@ -7122,9 +7194,9 @@
}
},
"node_modules/lightningcss-win32-x64-msvc": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
- "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz",
+ "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==",
"cpu": [
"x64"
],
@@ -7421,6 +7493,19 @@
"marked": ">=1 <16"
}
},
+ "node_modules/marked-terminal/node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -7518,19 +7603,15 @@
}
},
"node_modules/minimatch": {
- "version": "10.2.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
- "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
- "dev": true,
- "license": "BlueOak-1.0.0",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "license": "ISC",
"dependencies": {
- "brace-expansion": "^5.0.5"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": "18 || 20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": "*"
}
},
"node_modules/minimist": {
@@ -7543,12 +7624,13 @@
}
},
"node_modules/minipass": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
- "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
- "license": "BlueOak-1.0.0",
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
+ "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
+ "dev": true,
+ "license": "ISC",
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=8"
}
},
"node_modules/minizlib": {
@@ -7563,6 +7645,15 @@
"node": ">= 18"
}
},
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
@@ -7594,9 +7685,9 @@
}
},
"node_modules/nanoid": {
- "version": "3.3.15",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz",
- "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==",
+ "version": "3.3.16",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz",
+ "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==",
"dev": true,
"funding": [
{
@@ -7657,26 +7748,18 @@
}
},
"node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-8.0.0.tgz",
+ "integrity": "sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
+ "hosted-git-info": "^9.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/normalize-path": {
@@ -7882,69 +7965,6 @@
"node": ">= 4"
}
},
- "node_modules/npm-run-all/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-run-all/node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/npm-run-all/node_modules/brace-expansion": {
- "version": "1.1.16",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
- "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/npm-run-all/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-run-all/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/npm-run-all/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/npm-run-all/node_modules/cross-spawn": {
"version": "6.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz",
@@ -7962,37 +7982,24 @@
"node": ">=4.8"
}
},
- "node_modules/npm-run-all/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "node_modules/npm-run-all/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
+ "license": "ISC"
},
- "node_modules/npm-run-all/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "node_modules/npm-run-all/node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-run-all/node_modules/minimatch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
- "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
- "dev": true,
- "license": "ISC",
+ "license": "BSD-2-Clause",
"dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
}
},
"node_modules/npm-run-all/node_modules/path-key": {
@@ -8005,17 +8012,32 @@
"node": ">=4"
}
},
- "node_modules/npm-run-all/node_modules/pidtree": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
- "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
+ "node_modules/npm-run-all/node_modules/path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
"dev": true,
"license": "MIT",
- "bin": {
- "pidtree": "bin/pidtree.js"
+ "dependencies": {
+ "pify": "^3.0.0"
},
"engines": {
- "node": ">=0.10"
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/npm-run-all/node_modules/semver": {
@@ -8051,19 +8073,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/npm-run-all/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/npm-run-all/node_modules/which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -9897,9 +9906,9 @@
}
},
"node_modules/obug": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz",
- "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.4.tgz",
+ "integrity": "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==",
"dev": true,
"funding": [
"https://github.com/sponsors/sxzz",
@@ -9954,13 +9963,14 @@
}
},
"node_modules/own-keys": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
- "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.2.tgz",
+ "integrity": "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.2.6",
+ "call-bound": "^1.0.4",
+ "get-intrinsic": "^1.3.0",
"object-keys": "^1.1.1",
"safe-push-apply": "^1.0.0"
},
@@ -10049,9 +10059,9 @@
}
},
"node_modules/p-map": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.5.tgz",
- "integrity": "sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.6.tgz",
+ "integrity": "sha512-I4Prw6ivkd6p8PiYR1tXASOAOBzIJwu0TB7fqaX0c/8c3QAehNYmX57EijyGGGBt3c/BIowGwV03RVBtXvHEVg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10225,6 +10235,15 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/path-scurry/node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -10262,6 +10281,19 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/pidtree": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
+ "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
@@ -10360,9 +10392,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.16",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz",
- "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==",
+ "version": "8.5.21",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.21.tgz",
+ "integrity": "sha512-v4sDNP3fdNiWMfabO7OwOQdOX8TiQSztKyT1Wj0w+j7LDallJThJRBBBmzVGyYj0crMh7jlV4zepPkiNu9UwDQ==",
"dev": true,
"funding": [
{
@@ -10380,7 +10412,7 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.12",
+ "nanoid": "^3.3.16",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@@ -10591,46 +10623,55 @@
}
},
"node_modules/read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.1.0.tgz",
+ "integrity": "sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
+ "@types/normalize-package-data": "^2.4.4",
+ "normalize-package-data": "^8.0.0",
+ "parse-json": "^8.3.0",
+ "type-fest": "^5.4.4",
+ "unicorn-magic": "^0.4.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/read-pkg/node_modules/path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "node_modules/read-pkg/node_modules/type-fest": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.8.0.tgz",
+ "integrity": "sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==",
"dev": true,
- "license": "MIT",
+ "license": "(MIT OR CC0-1.0)",
"dependencies": {
- "pify": "^3.0.0"
+ "tagged-tag": "^1.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
"license": "MIT",
"dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/readdir-glob": {
@@ -10642,12 +10683,6 @@
"minimatch": "^5.1.0"
}
},
- "node_modules/readdir-glob/node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "license": "MIT"
- },
"node_modules/readdir-glob/node_modules/brace-expansion": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
@@ -10780,13 +10815,13 @@
}
},
"node_modules/rolldown": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.4.tgz",
- "integrity": "sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz",
+ "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@oxc-project/types": "=0.138.0",
+ "@oxc-project/types": "=0.139.0",
"@rolldown/pluginutils": "^1.0.0"
},
"bin": {
@@ -10796,21 +10831,21 @@
"node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
- "@rolldown/binding-android-arm64": "1.1.4",
- "@rolldown/binding-darwin-arm64": "1.1.4",
- "@rolldown/binding-darwin-x64": "1.1.4",
- "@rolldown/binding-freebsd-x64": "1.1.4",
- "@rolldown/binding-linux-arm-gnueabihf": "1.1.4",
- "@rolldown/binding-linux-arm64-gnu": "1.1.4",
- "@rolldown/binding-linux-arm64-musl": "1.1.4",
- "@rolldown/binding-linux-ppc64-gnu": "1.1.4",
- "@rolldown/binding-linux-s390x-gnu": "1.1.4",
- "@rolldown/binding-linux-x64-gnu": "1.1.4",
- "@rolldown/binding-linux-x64-musl": "1.1.4",
- "@rolldown/binding-openharmony-arm64": "1.1.4",
- "@rolldown/binding-wasm32-wasi": "1.1.4",
- "@rolldown/binding-win32-arm64-msvc": "1.1.4",
- "@rolldown/binding-win32-x64-msvc": "1.1.4"
+ "@rolldown/binding-android-arm64": "1.1.5",
+ "@rolldown/binding-darwin-arm64": "1.1.5",
+ "@rolldown/binding-darwin-x64": "1.1.5",
+ "@rolldown/binding-freebsd-x64": "1.1.5",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.1.5",
+ "@rolldown/binding-linux-arm64-gnu": "1.1.5",
+ "@rolldown/binding-linux-arm64-musl": "1.1.5",
+ "@rolldown/binding-linux-ppc64-gnu": "1.1.5",
+ "@rolldown/binding-linux-s390x-gnu": "1.1.5",
+ "@rolldown/binding-linux-x64-gnu": "1.1.5",
+ "@rolldown/binding-linux-x64-musl": "1.1.5",
+ "@rolldown/binding-openharmony-arm64": "1.1.5",
+ "@rolldown/binding-wasm32-wasi": "1.1.5",
+ "@rolldown/binding-win32-arm64-msvc": "1.1.5",
+ "@rolldown/binding-win32-x64-msvc": "1.1.5"
}
},
"node_modules/rollup": {
@@ -10901,17 +10936,24 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/safe-array-concat/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
"license": "MIT"
},
"node_modules/safe-push-apply": {
@@ -10931,13 +10973,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/safe-push-apply/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/safe-regex-test": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
@@ -10966,9 +11001,9 @@
}
},
"node_modules/semantic-release": {
- "version": "25.0.5",
- "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-25.0.5.tgz",
- "integrity": "sha512-mn61SUJwtM8ThrWn2WmgLVpwVJeG/hPSupua1psdMoufmwRIPyvRLkRkL0JDXkP67OntlLWUYnBnfVc8EDO3/g==",
+ "version": "25.0.8",
+ "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-25.0.8.tgz",
+ "integrity": "sha512-w/iZ0bur36rKffXZYmIUmy068eoBY3Ij1DCCddx2JwWEM5Tg+eU9ld/E9qSInVvPASyyR2Ln/XGfQ9OZrMlhtw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11008,22 +11043,6 @@
"node": "^22.14.0 || >= 24.10.0"
}
},
- "node_modules/semantic-release/node_modules/@octokit/plugin-paginate-rest": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz",
- "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^16.0.0"
- },
- "engines": {
- "node": ">= 20"
- },
- "peerDependencies": {
- "@octokit/core": ">=6"
- }
- },
"node_modules/semantic-release/node_modules/@semantic-release/error": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
@@ -11035,9 +11054,9 @@
}
},
"node_modules/semantic-release/node_modules/@semantic-release/github": {
- "version": "12.0.8",
- "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-12.0.8.tgz",
- "integrity": "sha512-tej5AAgK5X9wHRoDmYhecMXEHEkFeGOY1XsEblKxu8pIQwahzf1STYyr7iPU6Lpbg6C5I3N2w/ocXrBo+L7jhw==",
+ "version": "12.0.9",
+ "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-12.0.9.tgz",
+ "integrity": "sha512-ODIqb0V3QqndipryEEiaBxUQCFjvv7Oese5Dt4omMGa60YRNEW0Sx3K+zri0uac2Y6S9nOlMehciWIzvvRCTGQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11166,19 +11185,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/semantic-release/node_modules/hosted-git-info": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz",
- "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^11.1.0"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/semantic-release/node_modules/http-proxy-agent": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-9.1.0.tgz",
@@ -11245,31 +11251,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/semantic-release/node_modules/lru-cache": {
- "version": "11.5.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz",
- "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/semantic-release/node_modules/normalize-package-data": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-8.0.0.tgz",
- "integrity": "sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^9.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/semantic-release/node_modules/npm-run-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
@@ -11331,39 +11312,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/semantic-release/node_modules/read-pkg": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.1.0.tgz",
- "integrity": "sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/normalize-package-data": "^2.4.4",
- "normalize-package-data": "^8.0.0",
- "parse-json": "^8.3.0",
- "type-fest": "^5.4.4",
- "unicorn-magic": "^0.4.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/semantic-release/node_modules/read-pkg/node_modules/unicorn-magic": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz",
- "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/semantic-release/node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
@@ -11391,9 +11339,9 @@
}
},
"node_modules/semantic-release/node_modules/type-fest": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.7.0.tgz",
- "integrity": "sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.8.0.tgz",
+ "integrity": "sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"dependencies": {
@@ -11525,9 +11473,9 @@
}
},
"node_modules/shell-quote": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.9.0.tgz",
- "integrity": "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.10.0.tgz",
+ "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11642,51 +11590,6 @@
"node": ">=6"
}
},
- "node_modules/signale/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/signale/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/signale/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/signale/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/signale/node_modules/escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -11710,29 +11613,6 @@
"node": ">=4"
}
},
- "node_modules/signale/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/signale/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/skin-tone": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz",
@@ -11836,9 +11716,9 @@
"license": "MIT"
},
"node_modules/std-env": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz",
- "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz",
+ "integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==",
"dev": true,
"license": "MIT"
},
@@ -11867,6 +11747,46 @@
"readable-stream": "^2.0.2"
}
},
+ "node_modules/stream-combiner2/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/stream-combiner2/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/stream-combiner2/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/stream-combiner2/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/streamx": {
"version": "2.28.0",
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.0.tgz",
@@ -11879,15 +11799,33 @@
}
},
"node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"license": "MIT",
"dependencies": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "~5.2.0"
}
},
"node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
@@ -11901,16 +11839,28 @@
"node": ">=8"
}
},
- "node_modules/string-width-cjs": {
- "name": "string-width",
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"license": "MIT",
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
@@ -11996,15 +11946,18 @@
}
},
"node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
"license": "MIT",
"dependencies": {
- "ansi-regex": "^5.0.1"
+ "ansi-regex": "^6.2.2"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/strip-ansi-cjs": {
@@ -12029,15 +11982,6 @@
"node": ">=8"
}
},
- "node_modules/strip-ansi/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/strip-bom": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
@@ -12158,9 +12102,9 @@
}
},
"node_modules/tar": {
- "version": "7.5.20",
- "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.20.tgz",
- "integrity": "sha512-9FcyK4PA6+WbzlTM9WhQm6vB5W7cP7dUiPsv1g7YDwEQnQ1CGpK3MGlKk/ITVWMk05kHZuBhmVhiv8LZoy/PFQ==",
+ "version": "7.5.21",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.21.tgz",
+ "integrity": "sha512-XdhtCvlMywwxpCW8YEq3lOXBJpUPTR2OHHcwLPO3HwsJqOHa2Ok/oJ7ruGzp+JrKoRPVCzJwAdEjqLW/vNRPHA==",
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/fs-minipass": "^4.0.0",
@@ -12185,6 +12129,15 @@
"streamx": "^2.15.0"
}
},
+ "node_modules/tar/node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/teex": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz",
@@ -12298,6 +12251,46 @@
"xtend": "~4.0.1"
}
},
+ "node_modules/through2/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/through2/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/through2/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/through2/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/time-span": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz",
@@ -12523,6 +12516,29 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/type-coverage/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/type-coverage/node_modules/brace-expansion": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz",
+ "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
"node_modules/type-coverage/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -12560,6 +12576,22 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/type-coverage/node_modules/minimatch": {
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.5"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/type-coverage/node_modules/type-coverage-core": {
"version": "2.29.7",
"resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.29.7.tgz",
@@ -12684,17 +12716,17 @@
}
},
"node_modules/typedoc": {
- "version": "0.28.19",
- "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.19.tgz",
- "integrity": "sha512-wKh+lhdmMFivMlc6vRRcMGXeGEHGU2g8a2CkPTJjJlwRf1iXbimWIPcFolCqe4E0d/FRtGszpIrsp3WLpDB8Pw==",
+ "version": "0.28.20",
+ "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.20.tgz",
+ "integrity": "sha512-uSKqkh8Cr48vllnEy+jdaAgOeR6Y+QCBW7usgUsKj7gJEfR7stw9U/fE49LBnj2tPRKPY0c0EBJSWe9Appmplg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@gerrit0/mini-shiki": "^3.23.0",
"lunr": "^2.3.9",
- "markdown-it": "^14.1.1",
+ "markdown-it": "^14.3.0",
"minimatch": "^10.2.5",
- "yaml": "^2.8.3"
+ "yaml": "^2.9.0"
},
"bin": {
"typedoc": "bin/typedoc"
@@ -12720,6 +12752,45 @@
"typedoc": "0.28.x"
}
},
+ "node_modules/typedoc/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/typedoc/node_modules/brace-expansion": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz",
+ "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/typedoc/node_modules/minimatch": {
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.5"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/typescript": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
@@ -12799,6 +12870,19 @@
"node": ">=4"
}
},
+ "node_modules/unicorn-magic": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz",
+ "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/unique-string": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
@@ -12879,16 +12963,16 @@
}
},
"node_modules/vite": {
- "version": "8.1.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.3.tgz",
- "integrity": "sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA==",
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.5.tgz",
+ "integrity": "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==",
"dev": true,
"license": "MIT",
"dependencies": {
"lightningcss": "^1.32.0",
- "picomatch": "^4.0.4",
- "postcss": "^8.5.16",
- "rolldown": "~1.1.3",
+ "picomatch": "^4.0.5",
+ "postcss": "^8.5.17",
+ "rolldown": "~1.1.5",
"tinyglobby": "^0.2.17"
},
"bin": {
@@ -12970,19 +13054,19 @@
}
},
"node_modules/vitest": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.9.tgz",
- "integrity": "sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==",
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz",
+ "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/expect": "4.1.9",
- "@vitest/mocker": "4.1.9",
- "@vitest/pretty-format": "4.1.9",
- "@vitest/runner": "4.1.9",
- "@vitest/snapshot": "4.1.9",
- "@vitest/spy": "4.1.9",
- "@vitest/utils": "4.1.9",
+ "@vitest/expect": "4.1.10",
+ "@vitest/mocker": "4.1.10",
+ "@vitest/pretty-format": "4.1.10",
+ "@vitest/runner": "4.1.10",
+ "@vitest/snapshot": "4.1.10",
+ "@vitest/spy": "4.1.10",
+ "@vitest/utils": "4.1.10",
"es-module-lexer": "^2.0.0",
"expect-type": "^1.3.0",
"magic-string": "^0.30.21",
@@ -13010,12 +13094,12 @@
"@edge-runtime/vm": "*",
"@opentelemetry/api": "^1.9.0",
"@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
- "@vitest/browser-playwright": "4.1.9",
- "@vitest/browser-preview": "4.1.9",
- "@vitest/browser-webdriverio": "4.1.9",
- "@vitest/coverage-istanbul": "4.1.9",
- "@vitest/coverage-v8": "4.1.9",
- "@vitest/ui": "4.1.9",
+ "@vitest/browser-playwright": "4.1.10",
+ "@vitest/browser-preview": "4.1.10",
+ "@vitest/browser-webdriverio": "4.1.10",
+ "@vitest/coverage-istanbul": "4.1.10",
+ "@vitest/coverage-v8": "4.1.10",
+ "@vitest/ui": "4.1.10",
"happy-dom": "*",
"jsdom": "*",
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
@@ -13142,13 +13226,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/which-builtin-type/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/which-collection": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
@@ -13332,6 +13409,15 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -13365,42 +13451,48 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"license": "MIT"
},
- "node_modules/wrap-ansi/node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"license": "MIT"
},
- "node_modules/wrap-ansi/node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"license": "MIT",
"dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
- "node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
- "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"license": "MIT",
"dependencies": {
- "ansi-regex": "^6.2.2"
+ "ansi-regex": "^5.0.1"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/xml-naming": {
@@ -13516,22 +13608,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/yargs/node_modules/strip-ansi": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
- "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.2.2"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
@@ -13572,51 +13648,6 @@
"node": ">= 14"
}
},
- "node_modules/zip-stream/node_modules/readable-stream": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
- "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
- "license": "MIT",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "buffer": "^6.0.3",
- "events": "^3.3.0",
- "process": "^0.11.10",
- "string_decoder": "^1.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/zip-stream/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/zip-stream/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
"node_modules/zod": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
diff --git a/package.json b/package.json
index 209f5cb..f394129 100644
--- a/package.json
+++ b/package.json
@@ -98,6 +98,7 @@
"@semantic-release/npm": "^13.1.5",
"@semantic-release/release-notes-generator": "^14.1.1",
"@types/node": "^24.1.0",
+ "@types/tar": "^6.1.13",
"@typescript-eslint/eslint-plugin": "^8.62.1",
"@typescript-eslint/parser": "^8.62.1",
"@vitest/coverage-v8": "^4.1.9",
@@ -109,7 +110,7 @@
"typedoc": "^0.28.19",
"typedoc-plugin-markdown": "^4.12.0",
"typescript": "^6.0.3",
- "vitest": "^4.1.9",
+ "vitest": "^4.1.10",
"zod": "^4.4.3"
}
}
diff --git a/src/action.ts b/src/action.ts
index 8a6beda..ba4b96a 100644
--- a/src/action.ts
+++ b/src/action.ts
@@ -1,5 +1,9 @@
-import { createPackageManager, type CommandRunner } from "ts-apt";
-import { Cache, CacheKey } from "./cache.ts";
+import {
+ createPackageManager,
+ type CommandRunner,
+ type PackageName,
+} from "ts-apt";
+import { Cache, CacheKey } from "./cache.js";
import { Manifest } from "./manifest.js";
import { ActionPackageNames } from "./packages.js";
import winston from "winston";
@@ -40,34 +44,6 @@ export class ActionRunner {
this.logger = logger;
}
- /**
- * Applies configured behavior when package input resolves to an empty set.
- *
- * @param behavior Empty-package handling strategy.
- * @param packages Normalized package list.
- * @returns Nothing.
- * @throws Error when behavior is error and packages is empty.
- */
- validateEmptyPackages(
- behavior: EmptyPackageBehavior,
- packages: ActionPackageNames,
- ): void {
- if (packages.length > 0) {
- return;
- }
-
- if (behavior === "ignore") {
- return;
- }
-
- if (behavior === "warn") {
- process.stdout.write("::warning::Packages argument is empty.\n");
- return;
- }
-
- throw new Error("Packages argument is empty.");
- }
-
/**
* Converts manifest entries into the action output CSV format.
*
@@ -108,6 +84,7 @@ export class ActionRunner {
this.logger,
);
const packageInfos = await installManager.install(packageNames.toArray());
+ manifest = Manifest.from(new Date(), cacheKey, packageInfos);
await this.cache.archiveAndSave(cacheKey, packageInfos);
}
diff --git a/src/cache.ts b/src/cache.ts
index 1bedf4a..9344e9e 100644
--- a/src/cache.ts
+++ b/src/cache.ts
@@ -5,10 +5,14 @@ import * as crypto from "node:crypto";
import { promises as fs } from "node:fs";
import * as os from "node:os";
import * as path from "node:path";
-import { ActionPackageNames, findInstallScript } from "./packages.ts";
-import { Manifest, ManifestEntry } from "./manifest.ts";
-import { CommandRunner, PackageInfo, PackageName } from "ts-apt/types.js";
-import { deserializePackageName } from "ts-apt/package.ts";
+import { ActionPackageNames, findInstallScript } from "./packages.js";
+import { Manifest, ManifestEntry } from "./manifest.js";
+import {
+ deserializePackageName,
+ CommandRunner,
+ PackageInfo,
+ PackageName,
+} from "ts-apt";
export const CACHE_DEFAULT_DIRNAME = "cache-apt-pkgs";
export const CACHE_KEY_FILENAME = "cache_key.md5";
@@ -41,7 +45,10 @@ export class CacheKey {
this.forceUpdateIncrement = forceUpdateIncrement;
this.arch = arch;
this.packageNames = packageNames;
- this.hash = crypto.createHash("md5").update(this.toJSON()).digest("hex");
+ this.hash = crypto
+ .createHash("md5")
+ .update(this.toJSON(false))
+ .digest("hex");
}
/**
@@ -64,14 +71,28 @@ export class CacheKey {
/**
* Serializes cache key fields to a stable, human-readable format.
*
+ * NOTE: Object is always stable JSON stringification for consistent hashing.
+ *
+ * @param readable Whether to pretty-print the JSON output. Defaults to false.
* @returns Serialized cache key components.
*/
- toJSON(): string {
- return JSON.stringify(this, null, 2);
+ toJSON(readable: boolean = false): string {
+ // Helper to sort keys recursively
+ const sortObj = (o: any): any => {
+ if (o === null || typeof o !== "object") return o;
+ if (Array.isArray(o)) return o.map(sortObj);
+ return Object.keys(o)
+ .sort()
+ .reduce((acc, key) => {
+ acc[key] = sortObj(o[key]);
+ return acc;
+ }, {} as any);
+ };
+ return JSON.stringify(sortObj(this), null, readable ? 2 : 0);
}
toString(): string {
- return `${this.hash} (key input: ${JSON.stringify(this)})`;
+ return `${this.hash} (key input: ${this.toJSON(true)})`;
}
}
@@ -97,7 +118,7 @@ export class Cache {
private async runInstallScripts(archiveFilename: string): Promise {
const serializePackageName = archiveFilename.replace(/\.tar$/, "");
- const packageName = deserializePackageName(serializePackageName);
+ const packageName = deserializePackageName(serializePackageName)!;
const runScript = async (
packageName: PackageName,
@@ -140,31 +161,29 @@ export class Cache {
return undefined;
}
- const logFileError = (prefixMessage: string) => {
+ const logFileError = async (prefixMessage: string) => {
+ const contents = await fs
+ .readdir(this.path)
+ .then((entries) => entries.join("\n"))
+ .catch(
+ (reason: any) => `Unable to read cache directory contents: ${reason}`,
+ );
this.logger.error(
`${prefixMessage}, skipping cache restore.\n` +
`This may indicate a cache corruption or an unexpected cache hit for a different package set.\n` +
- fs
- .readdir(this.path)
- .then(
- (entries) => `Cache directory contents:\n${entries.join("\n")}`,
- )
- .catch(
- (reason: any) =>
- `Unable to read cache directory contents: ${reason}`,
- ),
+ `Cache directory contents:\n${contents}`,
);
};
this.logger.info(`Cache hit for key ${key.hash}, restoring...`);
const manifestPath = path.join(this.path, MANIFEST_MAIN_FILENAME);
if (
- !fs
+ !(await fs
.access(manifestPath, fs.constants.R_OK)
.then(() => true)
- .catch(() => false)
+ .catch(() => false))
) {
- logFileError(`Manifest file not found at ${manifestPath}`);
+ await logFileError(`Manifest file not found at ${manifestPath}`);
return undefined;
}
const archives = await fs
@@ -175,7 +194,9 @@ export class Cache {
.then((entries: string[]) => entries.sort());
if (archives.length === 0) {
- logFileError(`No archive files found in cache directory ${this.path}`);
+ await logFileError(
+ `No archive files found in cache directory ${this.path}`,
+ );
return undefined;
}
@@ -191,6 +212,8 @@ export class Cache {
await this.runInstallScripts(archiveFilename);
}
}
+
+ return await Manifest.readFromFile(manifestPath);
}
private async createArchive(manifestEntry: ManifestEntry): Promise {
@@ -232,10 +255,10 @@ export class Cache {
const allEntries = manifest.entries;
const packages = manifest.cacheKey.packageNames;
const entriesByName = new Map(
- allEntries.map((entry) => [entry.packageName, entry]),
+ allEntries.map((entry) => [entry.packageName.serialize(), entry]),
);
const mainEntries = packages.toArray().map((pkg) => {
- const installed = entriesByName.get(pkg);
+ const installed = entriesByName.get(pkg.serialize());
return new ManifestEntry(pkg, installed?.filepaths ?? []);
});
@@ -295,7 +318,7 @@ export class Cache {
try {
const cacheId = await ghcache.saveCache(
- manifest.entries.flatMap((entry) => entry.filepaths),
+ [this.path],
manifest.cacheKey.hash,
);
if (cacheId === undefined) {
diff --git a/src/index.ts b/src/index.ts
index 71c20b3..49100cc 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,7 +1,7 @@
import * as core from "@actions/core";
import { runAction, type ActionInputs } from "./action.js";
import { DefaultCommandRunner } from "ts-apt";
-import { Cache, CACHE_DEFAULT_DIRNAME } from "./cache.ts";
+import { Cache, CACHE_DEFAULT_DIRNAME } from "./cache.js";
import { Instruments } from "./instrumentation.js";
/**
@@ -59,7 +59,7 @@ async function main(): Promise {
const outputs = await runAction(
inputs,
commandRunner,
- new Cache(commandRunner, instruments.appLogger, cacheDir),
+ new Cache(commandRunner, instruments.appLogger, instruments.cacheDir),
instruments.appLogger,
);
diff --git a/src/instrumentation.ts b/src/instrumentation.ts
index 350d017..ee49703 100644
--- a/src/instrumentation.ts
+++ b/src/instrumentation.ts
@@ -8,7 +8,7 @@ import {
CACHE_KEY_FILENAME,
MANIFEST_ALL_FILENAME,
MANIFEST_MAIN_FILENAME,
-} from "./cache.ts";
+} from "./cache.js";
const APP_LOG_FILENAME = "capa_app.log";
const EXEC_LOG_FILENAME = "capa_exec.log";
@@ -23,15 +23,23 @@ function createStream(
});
}
+/**
+ * Manages artifact creation and upload.
+ */
export class Artifacts {
constructor(
+ /** Directory that all the artifacts are stored. */
readonly dir: string,
+ /** Filenames of monitored artifacts. */
readonly artifactFilenames: string[],
+ /** Whether debug is enabled which affects artifacts otherwise not. */
readonly debug: boolean = false,
+ /** Unique runner ID of the GitHub Action workflow run. */
readonly runId: string = process.env.GITHUB_RUN_ID ??
`ghrunid-notfound-${crypto.randomUUID()}`,
) {}
+ /** Upload artifacts to GitHub Actions via [@actions/artifact]. */
upload(): string {
const client = new DefaultArtifactClient();
client.uploadArtifact(
@@ -48,6 +56,7 @@ export class Artifacts {
}
}
+/** Create the logger used for command line execution */
function createExecLogger(debug: boolean, filepath: string): winston.Logger {
const logger = winston.createLogger({
level: debug ? "debug" : "info",
@@ -60,6 +69,7 @@ function createExecLogger(debug: boolean, filepath: string): winston.Logger {
return logger;
}
+/** Create the logger used for GitHub Actions integration. */
function createGitHubLogger(debug: boolean, filepath: string): winston.Logger {
const logger = winston.createLogger({
level: debug ? "debug" : "info",
@@ -87,11 +97,17 @@ function createGitHubLogger(debug: boolean, filepath: string): winston.Logger {
return logger;
}
+/** Container for all instrumentation: telemetry, logging, and artifacts generated */
export class Instruments {
+ /** Cache directory where all artifacts are stored, including cached packages. */
readonly cacheDir: string;
+ /** Whether debug is enabled which affects artifacts otherwise not. */
readonly debug: boolean;
+ /** Manages artifact creation and upload. */
readonly artifacts: Artifacts;
+ /** Logger used for GitHub Actions integration. */
readonly appLogger: winston.Logger;
+ /** Logger used for command line execution. */
readonly execLogger: winston.Logger;
constructor(cacheDir: string, debug: boolean, artifacts?: Artifacts) {
diff --git a/src/manifest.ts b/src/manifest.ts
index 945e51d..a2b121e 100644
--- a/src/manifest.ts
+++ b/src/manifest.ts
@@ -1,7 +1,6 @@
import fs from "node:fs";
-import { CacheKey } from "./cache.ts";
-import { createPackageName, packageNameFromJSON } from "ts-apt/package.ts";
-import { PackageInfo, PackageName } from "ts-apt/types.ts";
+import { CacheKey } from "./cache.js";
+import { packageNameFromJSON, PackageInfo, PackageName } from "ts-apt";
export class ManifestEntry {
readonly packageName: PackageName;
@@ -42,22 +41,22 @@ export class Manifest {
);
}
+ static async readFromFile(filePath: string): Promise {
+ const content = await fs.promises.readFile(filePath, "utf-8");
+ return Manifest.fromJSON(JSON.parse(content));
+ }
+
static from(
date: Date,
cacheKey: CacheKey,
packageInfos: PackageInfo[],
): Manifest {
const entries = packageInfos.map(
- (info) =>
- new ManifestEntry(createPackageName(info.name, info.version), []),
+ (info: PackageInfo) => new ManifestEntry(info.name, []),
);
return new Manifest(date, entries, cacheKey);
}
- async readFromFile(filePath: string): Promise {
- return Manifest.fromJSON(await fs.promises.readFile(filePath, "utf-8"));
- }
-
async writeToFile(filePath: string): Promise {
await fs.promises.writeFile(
filePath,
diff --git a/src/packages.ts b/src/packages.ts
index cb30089..4730c25 100644
--- a/src/packages.ts
+++ b/src/packages.ts
@@ -1,7 +1,11 @@
import * as fs from "fs";
-import type { PackageName, PackageManager } from "ts-apt/types.ts";
import path from "path";
-import { createPackageName, deserializePackageName } from "ts-apt/package.ts";
+import {
+ createPackageName,
+ deserializePackageName,
+ type PackageName,
+ type PackageManager,
+} from "ts-apt";
import winston from "winston";
/**
@@ -14,6 +18,7 @@ import winston from "winston";
export async function buildFileList(
packageName: PackageName,
packageManager: PackageManager,
+ root: string = "/",
): Promise {
// Converts absolute paths to tar-relative paths.
const tarRelativePath = (filePath: string) =>
@@ -30,8 +35,8 @@ export async function buildFileList(
})
.map((filePath) => tarRelativePath(filePath));
- const preinst = await findInstallScript(packageName, "preinst", "/");
- const postinst = await findInstallScript(packageName, "postinst", "/");
+ const preinst = await findInstallScript(packageName, "preinst", root);
+ const postinst = await findInstallScript(packageName, "postinst", root);
if (preinst) {
files.push(tarRelativePath(preinst));
@@ -40,7 +45,7 @@ export async function buildFileList(
files.push(tarRelativePath(postinst));
}
- return files.sort((a, b) => a.localeCompare(b));
+ return [...new Set(files)].sort((a, b) => a.localeCompare(b));
}
/**
@@ -61,9 +66,7 @@ export async function findInstallScript(
return undefined;
}
- const pattern = new RegExp(
- `^${packageName.serialize()}(:.*)?\\.${extension}$`,
- );
+ const pattern = new RegExp(`^${packageName.name}(:.*)?\\.${extension}$`);
const matches = fs
.readdirSync(scriptsDir)
.filter((entry) => pattern.test(entry))
@@ -76,49 +79,87 @@ export async function findInstallScript(
return path.join(scriptsDir, candidate);
}
-/**
- * Resolves a concrete version for an unpinned package name.
- *
- * @param packageManager ts-apt package manager instance used for metadata lookup.
- * @param packageName Package name with or without a version pin.
- * @returns Resolved package version.
- * @throws Error when no version can be resolved.
- */
-export async function resolvePackageVersion(
- packageManager: PackageManager,
- packageName: PackageName,
-): Promise {
- const packageInfo = await packageManager.getPackageInfo([packageName]);
- const version = packageInfo[0]?.version;
- if (!version) {
- throw new Error(
- `Unable to resolve package version for '${packageName.serialize()}'.`,
- );
- }
-
- return version;
-}
-
export class ActionPackageNames {
private readonly items: PackageName[];
private constructor(items: PackageName[]) {
- this.items = items.sort();
+ this.items = items.sort((a, b) => a.compareTo(b));
}
static fromInput(serializedPackageNames: string): ActionPackageNames {
- const names = serializedPackageNames
- .replace(/[,\\]/g, " ")
+ const tokens = serializedPackageNames
+ .replace(/[,\\\n]/g, " ")
.replace(/\s+/g, " ")
.trim()
.split(" ")
- .map((part) => deserializePackageName(part.trim()));
+ .map((part) => part.trim())
+ .filter((part) => part.length > 0);
+
+ const names: PackageName[] = [];
+
+ for (let index = 0; index < tokens.length; ) {
+ const current = tokens[index]!;
+ const next = tokens[index + 1];
+
+ const splitNameArch = (namePart: string) => {
+ const [name = "", arch] = namePart.split(":", 2);
+ return { name, arch };
+ };
+
+ try {
+ if (current.includes("=")) {
+ const [namePart, ...versionParts] = current.split("=");
+ const version = versionParts.join("=").trim();
+ if (namePart === undefined || namePart.trim() === "") {
+ index += 1;
+ continue;
+ }
+
+ const split = splitNameArch(namePart.trim());
+ let arch = split.arch;
+
+ if (
+ arch === undefined &&
+ next !== undefined &&
+ !next.includes("=") &&
+ next.trim() !== ""
+ ) {
+ arch = next.trim();
+ index += 1;
+ }
+
+ names.push(
+ createPackageName(
+ split.name,
+ version === "" ? undefined : version,
+ arch,
+ ),
+ );
+ index += 1;
+ continue;
+ }
+
+ const split = splitNameArch(current);
+ names.push(createPackageName(split.name, undefined, split.arch));
+ } catch {
+ // Ignore invalid package tokens.
+ }
+
+ index += 1;
+ }
+
return new ActionPackageNames(names);
}
static fromJSON(json: any): ActionPackageNames {
- const items = (json as any[]).map((item: any) =>
- createPackageName(item.name, item.version, item.rc),
+ const sourceItems = Array.isArray(json)
+ ? json
+ : Array.isArray(json?.items)
+ ? json.items
+ : [];
+
+ const items = sourceItems.map((item: any) =>
+ createPackageName(item.name, item.version, item.arch),
);
return new ActionPackageNames(items);
}
@@ -127,7 +168,7 @@ export class ActionPackageNames {
return this.items.length;
}
- toArray(): ReadonlyArray {
+ toArray(): readonly PackageName[] {
return this.items;
}
}
@@ -141,8 +182,8 @@ export class ActionPackageNames {
export async function updateAptLists(
packageManager: PackageManager,
logger: winston.Logger,
+ aptListsPath: string = "/var/lib/apt/lists",
): Promise {
- const aptListsPath = "/var/lib/apt/lists";
const maxDepth = 5;
const search = async (
diff --git a/test/action-runner-coverage.test.ts b/test/action-runner-coverage.test.ts
deleted file mode 100644
index 0543794..0000000
--- a/test/action-runner-coverage.test.ts
+++ /dev/null
@@ -1,380 +0,0 @@
-import fs from "node:fs";
-import os from "node:os";
-import path from "node:path";
-import { afterEach, describe, expect, it, vi } from "vitest";
-import winston from "winston";
-
-vi.mock("@actions/cache", () => ({
- restoreCache: vi.fn(),
- saveCache: vi.fn(),
-}));
-
-vi.mock("ts-apt", () => ({
- createPackageManager: vi.fn(),
- DefaultCommandRunner: vi.fn().mockImplementation(() => ({
- run: vi.fn(),
- })),
-}));
-
-import * as cacheMod from "@actions/cache";
-import { createPackageManager, DefaultCommandRunner } from "ts-apt";
-import { Manifest } from "../src/manifest.js";
-import { CacheKey } from "../src/cache.ts";
-import {
- ActionPackageName,
- ActionRunner,
- runAction as runActionEntry,
-} from "../src/action.js";
-
-describe("ActionRunner coverage", () => {
- afterEach(() => {
- vi.restoreAllMocks();
- });
-
- function createRunner() {
- const commandRunner = {
- run: vi.fn(),
- };
-
- const logger = winston.createLogger({ silent: true });
- const tarModule = {
- create: vi.fn(),
- extract: vi.fn(),
- };
-
- return {
- runner: new ActionRunner(
- commandRunner as never,
- tarModule as never,
- logger,
- ),
- commandRunner,
- tarModule,
- logger,
- };
- }
-
- it("parseBoolean invalid value expected throw", () => {
- const { runner } = createRunner();
-
- expect(() => runner.parseBoolean("invalid", "debug")).toThrow(
- /must be either true or false/,
- );
- });
-
- it("normalizeInputPackages escaped separators expected sorted output", () => {
- const { runner } = createRunner();
-
- expect(runner.normalizeInputPackages(" z, a \\ b ")).toEqual([
- "a",
- "b",
- "z",
- ]);
- });
-
- it("validateEmptyPackages ignore empty expected no throw", () => {
- const { runner } = createRunner();
-
- expect(() => runner.validateEmptyPackages("ignore", [])).not.toThrow();
- });
-
- it("findInstallScript missing directory expected undefined", () => {
- const { runner } = createRunner();
- vi.spyOn(fs, "existsSync").mockReturnValue(false);
-
- expect(runner.findInstallScript("curl", "preinst", "/tmp")).toBeUndefined();
- });
-
- it("findInstallScript matching scripts expected first sorted path", () => {
- const { runner } = createRunner();
- vi.spyOn(fs, "existsSync").mockReturnValue(true);
- vi.spyOn(fs, "readdirSync").mockReturnValue([
- "curl:amd64.preinst",
- "curl.preinst",
- "curl.postinst",
- ] as never);
-
- expect(runner.findInstallScript("curl", "preinst", "/tmp")).toBe(
- "/tmp/var/lib/dpkg/info/curl:amd64.preinst",
- );
- });
-
- it("buildFileListForPackage mixed files and scripts expected unique sorted tar paths", async () => {
- const { runner } = createRunner();
- const packageManager = {
- listInstalledFiles: vi
- .fn()
- .mockResolvedValue(["/a", "/b", "/missing", "/a"]),
- };
-
- vi.spyOn(fs, "existsSync").mockImplementation((p) => p !== "/missing");
- vi.spyOn(fs, "lstatSync").mockImplementation(
- (p) =>
- ({
- isFile: () => p === "/a",
- isSymbolicLink: () => p === "/b",
- }) as fs.Stats,
- );
- vi.spyOn(runner, "findInstallScript")
- .mockReturnValueOnce("/var/lib/dpkg/info/curl.preinst")
- .mockReturnValueOnce("/var/lib/dpkg/info/curl.postinst");
-
- await expect(
- runner.buildFileListForPackage(
- packageManager as never,
- new ActionPackageName("curl"),
- ),
- ).resolves.toEqual([
- "a",
- "b",
- "var/lib/dpkg/info/curl.postinst",
- "var/lib/dpkg/info/curl.preinst",
- ]);
- });
-
- it("installAndCachePackages new archives expected tar create and manifests", async () => {
- const { runner, tarModule } = createRunner();
- const packageManager = {
- install: vi.fn().mockResolvedValue([{ name: "curl", version: "1.0" }]),
- update: vi.fn().mockResolvedValue(undefined),
- };
-
- vi.spyOn(runner, "updateAptLists").mockResolvedValue(undefined);
- vi.spyOn(runner, "buildFileListForPackage").mockResolvedValue([
- "usr/bin/curl",
- ]);
- vi.spyOn(fs, "existsSync").mockReturnValue(false);
-
- await runner.installAndCachePackages(
- "/cache",
- [new ActionPackageName("curl")],
- packageManager as never,
- new CacheKey("", "4", "x86_64", ["curl"]),
- );
-
- expect(tarModule.create).toHaveBeenCalledOnce();
- expect(fs.existsSync("/cache/manifest_main.json")).toBe(true);
- expect(fs.existsSync("/cache/manifest_all.json")).toBe(true);
- });
-
- it("restorePackages install scripts enabled expected extract and script runs", async () => {
- const { runner, commandRunner, tarModule } = createRunner();
-
- vi.spyOn(fs, "readdirSync").mockReturnValue([
- "curl=1.0.tar",
- "notes.txt",
- ] as never);
- vi.spyOn(runner, "findInstallScript")
- .mockReturnValueOnce("/preinst")
- .mockReturnValueOnce("/postinst");
-
- await runner.restorePackages("/cache", true);
-
- expect(tarModule.extract).toHaveBeenCalledWith({
- cwd: "/",
- file: "/cache/curl=1.0.tar",
- preservePaths: true,
- });
- expect(commandRunner.run).toHaveBeenNthCalledWith(1, "sudo", [
- "sh",
- "-x",
- "/preinst",
- "install",
- ]);
- expect(commandRunner.run).toHaveBeenNthCalledWith(2, "sudo", [
- "sh",
- "-x",
- "/postinst",
- "configure",
- ]);
- });
-
- it("runAction version contains spaces expected throw", async () => {
- const { runner } = createRunner();
-
- await expect(
- runner.runAction({
- packages: "curl",
- version: "bad version",
- executeInstallScripts: false,
- emptyPackagesBehavior: "error",
- debug: false,
- }),
- ).rejects.toThrow(/cannot contain spaces/);
- });
-
- it("runAction empty normalized packages expected empty outputs and manifests", async () => {
- const { runner } = createRunner();
- const cacheDir = path.join(os.tmpdir(), "action-empty-cache");
-
- vi.mocked(createPackageManager).mockResolvedValue({} as never);
- vi.spyOn(runner, "normalizePackagesWithVersions").mockResolvedValue([]);
- vi.spyOn(runner, "getCacheRoot").mockReturnValue(cacheDir);
-
- await expect(
- runner.runAction({
- packages: "",
- version: "",
- executeInstallScripts: false,
- emptyPackagesBehavior: "ignore",
- debug: false,
- }),
- ).resolves.toEqual({
- cacheHit: false,
- packageVersionList: "",
- allPackageVersionList: "",
- });
-
- expect(fs.existsSync(path.join(cacheDir, "manifest_main.json"))).toBe(true);
- expect(fs.existsSync(path.join(cacheDir, "manifest_all.json"))).toBe(true);
- });
-
- it("runAction cache miss expected install and save cache", async () => {
- const { runner } = createRunner();
- const cacheDir = path.join(os.tmpdir(), "action-cache-miss");
-
- vi.mocked(createPackageManager)
- .mockResolvedValueOnce({} as never)
- .mockResolvedValueOnce({ install: vi.fn() } as never);
- vi.spyOn(runner, "normalizePackagesWithVersions").mockResolvedValue([
- new ActionPackageName("curl", "1.0"),
- ]);
- vi.spyOn(runner, "getCacheRoot").mockReturnValue(cacheDir);
- vi.spyOn(runner, "getCacheKey").mockResolvedValue("cache-apt-pkgs_key");
- vi.spyOn(runner, "installAndCachePackages").mockResolvedValue(undefined);
- vi.mocked(cacheMod.restoreCache).mockResolvedValue(undefined);
- vi.mocked(cacheMod.saveCache).mockResolvedValue(1);
- vi.spyOn(Manifest, "readFromFile")
- .mockReturnValueOnce(
- Manifest.deserialize(
- JSON.stringify({
- entries: [{ name: "curl", version: "1.0", filepaths: [] }],
- cacheKeyInput: "",
- cacheKey: "",
- forceUpdateIncrement: "4",
- arch: "x86_64",
- }),
- ),
- )
- .mockReturnValueOnce(
- Manifest.deserialize(
- JSON.stringify({
- entries: [
- { name: "curl", version: "1.0", filepaths: [] },
- { name: "dep", version: "1.0", filepaths: [] },
- ],
- cacheKeyInput: "",
- cacheKey: "",
- forceUpdateIncrement: "4",
- arch: "x86_64",
- }),
- ),
- );
-
- await expect(
- runner.runAction({
- packages: "curl",
- version: "v1",
- executeInstallScripts: false,
- emptyPackagesBehavior: "error",
- debug: false,
- }),
- ).resolves.toEqual({
- cacheHit: false,
- packageVersionList: "curl=1.0",
- allPackageVersionList: "curl=1.0,dep=1.0",
- });
-
- expect(runner.installAndCachePackages).toHaveBeenCalledOnce();
- expect(cacheMod.saveCache).toHaveBeenCalledWith(
- [cacheDir],
- "cache-apt-pkgs_key",
- );
- });
-
- it("runAction cache hit expected restore packages", async () => {
- const { runner } = createRunner();
- const cacheDir = path.join(os.tmpdir(), "action-cache-hit");
-
- vi.mocked(createPackageManager).mockResolvedValue({} as never);
- vi.spyOn(runner, "normalizePackagesWithVersions").mockResolvedValue([
- new ActionPackageName("curl", "1.0"),
- ]);
- vi.spyOn(runner, "getCacheRoot").mockReturnValue(cacheDir);
- vi.spyOn(runner, "getCacheKey").mockResolvedValue("cache-apt-pkgs_key");
- vi.spyOn(runner, "restorePackages").mockResolvedValue(undefined);
- vi.mocked(cacheMod.restoreCache).mockResolvedValue("cache-apt-pkgs_key");
- vi.spyOn(Manifest, "readFromFile")
- .mockReturnValueOnce(
- Manifest.deserialize(
- JSON.stringify({
- entries: [{ name: "curl", version: "1.0", filepaths: [] }],
- cacheKeyInput: "",
- cacheKey: "",
- forceUpdateIncrement: "4",
- arch: "x86_64",
- }),
- ),
- )
- .mockReturnValueOnce(
- Manifest.deserialize(
- JSON.stringify({
- entries: [
- { name: "curl", version: "1.0", filepaths: [] },
- { name: "dep", version: "1.0", filepaths: [] },
- ],
- cacheKeyInput: "",
- cacheKey: "",
- forceUpdateIncrement: "4",
- arch: "x86_64",
- }),
- ),
- );
-
- await expect(
- runner.runAction({
- packages: "curl",
- version: "v1",
- executeInstallScripts: true,
- emptyPackagesBehavior: "error",
- debug: false,
- }),
- ).resolves.toEqual({
- cacheHit: true,
- packageVersionList: "curl=1.0",
- allPackageVersionList: "curl=1.0,dep=1.0",
- });
-
- expect(runner.restorePackages).toHaveBeenCalledWith(cacheDir, true);
- });
-
- it("runAction wrapper valid inputs expected delegated runner output", async () => {
- const logger = winston.createLogger({ silent: true });
- const delegated = {
- cacheHit: false,
- packageVersionList: "curl=1.0",
- allPackageVersionList: "curl=1.0,dep=1.0",
- };
-
- const runSpy = vi
- .spyOn(ActionRunner.prototype, "runAction")
- .mockResolvedValue(delegated);
-
- await expect(
- runActionEntry(
- {
- packages: "curl",
- version: "v1",
- executeInstallScripts: false,
- emptyPackagesBehavior: "error",
- debug: false,
- },
- { run: vi.fn() } as never,
- logger,
- ),
- ).resolves.toEqual(delegated);
-
- expect(DefaultCommandRunner).toHaveBeenCalledWith(logger, logger);
- expect(runSpy).toHaveBeenCalledOnce();
- });
-});
diff --git a/test/action-runner.test.ts b/test/action-runner.test.ts
index 174759e..a5648e2 100644
--- a/test/action-runner.test.ts
+++ b/test/action-runner.test.ts
@@ -1,119 +1,84 @@
-import os from "node:os";
-import path from "node:path";
import { afterEach, describe, expect, it, vi } from "vitest";
import winston from "winston";
+import { Manifest } from "../src/manifest.js";
+import { CacheKey } from "../src/cache.js";
+import { ActionPackageNames } from "../src/packages.js";
+import { createPackageManager } from "ts-apt";
import { ActionRunner } from "../src/action.js";
+vi.mock("ts-apt", async (importOriginal) => {
+ const actual = await importOriginal();
+ return {
+ ...actual,
+ createPackageManager: vi.fn(),
+ };
+});
+
describe("ActionRunner", () => {
afterEach(() => {
vi.restoreAllMocks();
+ vi.mocked(createPackageManager).mockReset();
});
function createRunner() {
+ const cache = {
+ loadAndRestore: vi.fn(),
+ archiveAndSave: vi.fn(),
+ };
+
const commandRunner = {
run: vi.fn(),
};
const logger = winston.createLogger({ silent: true });
- const tarModule = {
- create: vi.fn(),
- extract: vi.fn(),
- };
-
return {
- runner: new ActionRunner(
- commandRunner as never,
- tarModule as never,
- logger,
- ),
+ runner: new ActionRunner(cache as never, commandRunner as never, logger),
+ cache,
commandRunner,
};
}
- it("resolves package versions from package manager metadata", async () => {
- const { runner } = createRunner();
- const packageManager = {
- getPackageInfo: vi.fn().mockResolvedValue([{ version: "1.2.3" }]),
- };
+ it("returns cache-hit outputs when manifest is restored", async () => {
+ const { runner, cache } = createRunner();
+ const packageNames = ActionPackageNames.fromInput("curl git");
+ const cacheKey = new CacheKey("v1", "0", process.arch, packageNames);
+ const restored = new Manifest(new Date(), [], cacheKey);
+ cache.loadAndRestore.mockResolvedValue(restored);
- await expect(
- runner.resolvePackageVersion(packageManager as never, "git"),
- ).resolves.toBe("1.2.3");
+ const result = await runner.runAction({
+ packages: "curl git",
+ version: "v1",
+ executeInstallScripts: false,
+ emptyPackagesBehavior: "error",
+ debug: false,
+ });
+
+ expect(result.cacheHit).toBe(true);
+ expect(cache.archiveAndSave).not.toHaveBeenCalled();
});
- it("fails when package metadata does not contain a version", async () => {
- const { runner } = createRunner();
- const packageManager = {
- getPackageInfo: vi.fn().mockResolvedValue([{}]),
- };
+ it("archives installed packages on cache miss", async () => {
+ const { runner, cache } = createRunner();
+ cache.loadAndRestore.mockResolvedValue(undefined);
+ vi.mocked(createPackageManager).mockResolvedValue({
+ install: vi.fn().mockResolvedValue([
+ {
+ name: {
+ serialize: () => "curl=1.0.0",
+ },
+ },
+ ]),
+ } as never);
- await expect(
- runner.resolvePackageVersion(packageManager as never, "git"),
- ).rejects.toThrow(/Unable to resolve package version/);
- });
+ await runner.runAction({
+ packages: "curl",
+ version: "v1",
+ executeInstallScripts: false,
+ emptyPackagesBehavior: "error",
+ debug: false,
+ });
- it("normalizes packages and fills in missing versions", async () => {
- const { runner } = createRunner();
- vi.spyOn(runner, "resolvePackageVersion")
- .mockResolvedValueOnce("8.0")
- .mockResolvedValueOnce("2.39");
-
- await expect(
- runner.normalizePackagesWithVersions({} as never, "git curl=8.1"),
- ).resolves.toEqual(["curl=8.1", "git=8.0"]);
- });
-
- it("warns instead of throwing for empty packages when behavior is warn", () => {
- const { runner } = createRunner();
- const writeSpy = vi
- .spyOn(process.stdout, "write")
- .mockImplementation(() => true);
-
- expect(() => runner.validateEmptyPackages("warn", [])).not.toThrow();
- expect(writeSpy).toHaveBeenCalledWith(
- "::warning::Packages argument is empty.\n",
- );
- });
-
- it("throws for empty packages when behavior is error", () => {
- const { runner } = createRunner();
-
- expect(() => runner.validateEmptyPackages("error", [])).toThrow(
- /Packages argument is empty/,
- );
- });
-
- it("returns the cache root under the current home directory", () => {
- const { runner } = createRunner();
-
- expect(runner.getCacheRoot()).toBe(
- path.join(os.homedir(), "cache-apt-pkgs"),
- );
- });
-
- it("hashes runner cache keys using the current architecture", async () => {
- const { runner, commandRunner } = createRunner();
- commandRunner.run.mockResolvedValue({ stdout: "arm64\n" });
-
- await expect(runner.getCacheKey(["curl=1", "git=2"], "v1")).resolves.toBe(
- "cache-apt-pkgs_36cfe31d08e34e7bd87b39c0e0145ece",
- );
- });
-
- it("removes versions from package specifiers", () => {
- const { runner } = createRunner();
-
- expect(runner.packageSpecifierToName("curl=8.1")).toBe("curl");
- expect(runner.packageSpecifierToName("git")).toBe("git");
- });
-
- it("strips leading slashes from tar paths", () => {
- const { runner } = createRunner();
-
- expect(runner.tarRelativePath("/var/cache/apt/pkg.tar")).toBe(
- "var/cache/apt/pkg.tar",
- );
- expect(runner.tarRelativePath("relative/file")).toBe("relative/file");
+ expect(cache.archiveAndSave).toHaveBeenCalledTimes(1);
});
});
diff --git a/test/action.test.ts b/test/action.test.ts
index 2a67d47..7524fc5 100644
--- a/test/action.test.ts
+++ b/test/action.test.ts
@@ -1,48 +1,74 @@
import { describe, expect, it } from "vitest";
import {
- ActionPackageName,
- normalizeInputPackages,
- parseBoolean,
+ runAction,
+ type ActionInputs,
+ type ActionOutputs,
} from "../src/action.js";
+import { Manifest, ManifestEntry } from "../src/manifest.js";
+import { CacheKey } from "../src/cache.js";
+import { createPackageName } from "ts-apt";
+import { ActionPackageNames } from "../src/packages.js";
-describe("non runner functions", () => {
+describe("runAction", () => {
const PKG_NAME = "curl";
const PKG_VER = "1.2.3";
- const PKG_DISTRO = "focal";
const PKG2_NAME = "git";
const PKG3_NAME = "jq";
- it("normalizes package list syntax", () => {
- const input = ` ${PKG2_NAME}, ${PKG_NAME} \\\n ${PKG3_NAME} `;
- expect(normalizeInputPackages(input)).toEqual([
- PKG_NAME,
- PKG2_NAME,
- PKG3_NAME,
- ]);
- });
+ it("returns expected outputs for cache hit", async () => {
+ const inputs: ActionInputs = {
+ packages: `${PKG_NAME},${PKG2_NAME},${PKG3_NAME}`,
+ version: PKG_VER,
+ executeInstallScripts: false,
+ emptyPackagesBehavior: "error",
+ debug: false,
+ };
- it("parses true/false values", () => {
- expect(parseBoolean("true", "debug")).toBe(true);
- expect(parseBoolean("false", "debug")).toBe(false);
- });
+ const packageNames = ActionPackageNames.fromInput(inputs.packages);
+ const cacheKey = new CacheKey(
+ inputs.version,
+ "0",
+ process.arch,
+ packageNames,
+ );
+ const manifest = new Manifest(
+ new Date(),
+ [
+ new ManifestEntry(createPackageName(PKG_NAME, PKG_VER, undefined), []),
+ new ManifestEntry(createPackageName(PKG2_NAME, PKG_VER, undefined), []),
+ new ManifestEntry(createPackageName(PKG3_NAME, PKG_VER, undefined), []),
+ ],
+ cacheKey,
+ );
- it("fails for invalid booleans", () => {
- expect(() => parseBoolean("TRUE", "debug")).toThrow();
- });
+ const mockCache = {
+ loadAndRestore: async () => manifest,
+ archiveAndSave: async () => {},
+ };
- it("serializes ActionPackageName with no version", () => {
- expect(new ActionPackageName(PKG_NAME).serialize()).toEqual(PKG_NAME);
- });
+ const mockCommandRunner = {
+ run: async () => {},
+ };
- it("serializes ActionPackageName with version", () => {
- expect(new ActionPackageName(PKG_NAME, PKG_VER).serialize()).toEqual(
- `${PKG_NAME}=${PKG_VER}`,
+ const mockLogger = {
+ info: () => {},
+ error: () => {},
+ debug: () => {},
+ };
+
+ const outputs: ActionOutputs = await runAction(
+ inputs,
+ mockCommandRunner as never,
+ mockCache as never,
+ mockLogger as never,
+ );
+
+ expect(outputs.cacheHit).toBe(true);
+ expect(outputs.packageVersionList).toBe(
+ `${PKG_NAME}=${PKG_VER},${PKG2_NAME}=${PKG_VER},${PKG3_NAME}=${PKG_VER}`,
+ );
+ expect(outputs.allPackageVersionList).toBe(
+ `${PKG_NAME}=${PKG_VER},${PKG2_NAME}=${PKG_VER},${PKG3_NAME}=${PKG_VER}`,
);
});
-
- it("serializes ActionPackageName with version and distro", () => {
- expect(
- new ActionPackageName(PKG_NAME, PKG_VER, PKG_DISTRO).serialize(),
- ).toEqual(`${PKG_NAME}=${PKG_VER}`);
- });
});
diff --git a/test/cache.test.ts b/test/cache.test.ts
new file mode 100644
index 0000000..b84d5ef
--- /dev/null
+++ b/test/cache.test.ts
@@ -0,0 +1,121 @@
+import crypto from "node:crypto";
+import fs from "node:fs";
+import os from "node:os";
+import path from "node:path";
+import { afterEach, describe, expect, it, vi } from "vitest";
+
+import { Cache, CacheKey } from "../src/cache.js";
+import { ActionPackageNames } from "../src/packages.js";
+
+const ARCH = "arm64";
+const CACHE_VER = "v1";
+const FORCE_UPDATE_INCREMENT = "4";
+const INPUT_PACKAGE_NAMES = ["curl=1", "git=2"];
+const SERIALIZED_INPUT_PACKAGE_NAMES = INPUT_PACKAGE_NAMES.join(" ");
+const HASH = "6753d4609b4f220748c84ac0893bd97d";
+const CACHE_KEY_JSON =
+ '{"arch":"arm64","forceUpdateIncrement":"4","hash":"6753d4609b4f220748c84ac0893bd97d","packageNames":{"items":[{"name":"curl","version":"1"},{"name":"git","version":"2"}]},"version":"v1"}';
+
+describe("cache", () => {
+ afterEach(() => {
+ vi.restoreAllMocks();
+ });
+
+ describe("CacheKey", () => {
+ it("creates a cache key with the expected hash", () => {
+ const key = new CacheKey(
+ CACHE_VER,
+ FORCE_UPDATE_INCREMENT,
+ ARCH,
+ ActionPackageNames.fromInput(SERIALIZED_INPUT_PACKAGE_NAMES),
+ );
+ expect(key.hash).toBe(HASH);
+ });
+
+ it("creates a cache key of unordered package names with the expected hash", () => {
+ const key = new CacheKey(
+ CACHE_VER,
+ FORCE_UPDATE_INCREMENT,
+ ARCH,
+ ActionPackageNames.fromInput(INPUT_PACKAGE_NAMES.reverse().join(" ")),
+ );
+ expect(key.hash).toBe(HASH);
+ });
+
+ it("creates a cache key with the expected hash", () => {
+ const key = new CacheKey(
+ CACHE_VER,
+ FORCE_UPDATE_INCREMENT,
+ ARCH,
+ ActionPackageNames.fromInput(SERIALIZED_INPUT_PACKAGE_NAMES),
+ );
+ expect(key.hash).toBe(HASH);
+ });
+
+ it("JSON roundtrips cache keys", () => {
+ const key = new CacheKey(
+ CACHE_VER,
+ FORCE_UPDATE_INCREMENT,
+ ARCH,
+ ActionPackageNames.fromInput(SERIALIZED_INPUT_PACKAGE_NAMES),
+ );
+
+ expect(key.toJSON()).toBe(CACHE_KEY_JSON);
+
+ expect(CacheKey.fromJSON(key.toJSON())).toEqual(
+ new CacheKey(
+ CACHE_VER,
+ FORCE_UPDATE_INCREMENT,
+ ARCH,
+ ActionPackageNames.fromInput(SERIALIZED_INPUT_PACKAGE_NAMES),
+ ),
+ );
+ });
+ });
+
+ // it("rejects invalid serialized cache keys", () => {
+ // expect(() => CacheKey.fromJSON("invalid")).toThrow(
+ // /Invalid serialized cache key/,
+ // );
+ // });
+
+ // it("builds cache paths under the current home directory", () => {
+ // const cache = new Cache({
+ // run: vi.fn(),
+ // } as never);
+
+ // expect(cache.path).toBe(path.join(os.homedir(), "custom-cache"));
+ // });
+
+ // it("hashes cache keys without appending the default x86_64 architecture", async () => {
+ // const commandRunner = {
+ // run: vi.fn().mockResolvedValue({ stdout: "x86_64\n" }),
+ // };
+ // const cache = new Cache("cache-apt-pkgs", commandRunner as never);
+
+ // const expectedHash = crypto
+ // .createHash("md5")
+ // .update("curl=1 git=2 @ 'v1' 4")
+ // .digest("hex");
+
+ // await expect(cache.getKey(["curl=1", "git=2"], "v1")).resolves.toBe(
+ // `cache-apt-pkgs_${expectedHash}`,
+ // );
+ // });
+
+ // it("hashes cache keys with non-default architectures", async () => {
+ // const commandRunner = {
+ // run: vi.fn().mockResolvedValue({ stdout: "arm64\n" }),
+ // };
+ // const cache = new Cache("cache-apt-pkgs", commandRunner as never);
+
+ // const expectedHash = crypto
+ // .createHash("md5")
+ // .update("curl=1 git=2 @ 'v1' 4 arm64")
+ // .digest("hex");
+
+ // await expect(cache.key(["curl=1", "git=2"], "v1")).resolves.toBe(
+ // `cache-apt-pkgs_${expectedHash}`,
+ // );
+ // });
+});
diff --git a/test/instrumentation.test.ts b/test/instrumentation.test.ts
new file mode 100644
index 0000000..f678cb4
--- /dev/null
+++ b/test/instrumentation.test.ts
@@ -0,0 +1,75 @@
+import { Artifacts, Instruments } from "../src/instrumentation.ts";
+import { afterEach, describe, expect, it, vi } from "vitest";
+
+describe("instrumentation", () => {
+ afterEach(() => {
+ vi.restoreAllMocks();
+ });
+
+ const ARTIFACT_FILENAMES = [
+ "capa_app.log",
+ "capa_exec.log",
+ "cache_key.json",
+ "manifest_main.json",
+ "manifest_all.json",
+ ];
+
+ describe("Artifacts", () => {
+ it("constructor initializes properties correctly", () => {
+ const dir = "/path/to/artifacts";
+ const debug = true;
+ const runId = "test-run-id";
+
+ const artifacts = new Artifacts(dir, ARTIFACT_FILENAMES, debug, runId);
+ expect(artifacts).toEqual({
+ dir: dir,
+ artifactFilenames: ARTIFACT_FILENAMES,
+ debug: debug,
+ runId: runId,
+ });
+ });
+
+ it("constructor generates a random runId when not provided", () => {
+ const dir = "/path/to/artifacts";
+ const debug = false;
+
+ const artifacts = new Artifacts(dir, ARTIFACT_FILENAMES, debug);
+ expect(artifacts.runId).toMatch(/^ghrunid-notfound-/);
+ });
+ });
+
+ // describe("Instruments", () => {
+ // it("constructor initializes properties correctly", () => {
+ // const cacheDir = "/path/to/cache";
+ // const debug = true;
+ // const artifacts = new Artifacts(
+ // "/path/to/cache",
+ // ARTIFACT_FILENAMES,
+ // debug,
+ // );
+
+ // const instruments = new Instruments(cacheDir, debug, artifacts);
+ // expect(instruments).toEqual({
+ // cacheDir: cacheDir,
+ // debug: debug,
+ // artifacts: artifacts,
+ // appLogger: expect.toBeTypeOf("object"),
+ // execLogger: expect.toBeTypeOf("object"),
+ // });
+ // });
+
+ // it("constructor initializes artifacts when not provided", () => {
+ // const cacheDir = "/path/to/cache";
+ // const debug = false;
+
+ // const instruments = new Instruments(cacheDir, debug);
+ // expect(instruments).toEqual({
+ // cacheDir: cacheDir,
+ // debug: debug,
+ // artifacts: expect.toBeTypeOf("object"),
+ // appLogger: expect.toBeTypeOf("object"),
+ // execLogger: expect.toBeTypeOf("object"),
+ // });
+ // });
+ // });
+});
diff --git a/test/io.test.ts b/test/io.test.ts
deleted file mode 100644
index e96353c..0000000
--- a/test/io.test.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-import crypto from "node:crypto";
-import fs from "node:fs";
-import os from "node:os";
-import path from "node:path";
-import { afterEach, describe, expect, it, vi } from "vitest";
-
-import { Cache, CacheKey, isAptListsFresh } from "../src/cache.ts";
-import { ActionPackageName } from "../src/action.ts";
-
-describe("io", () => {
- afterEach(() => {
- vi.restoreAllMocks();
- });
-
- it("detects fresh apt lists when a file exists within search depth", () => {
- vi.spyOn(fs, "statSync").mockImplementation(
- (currentPath: fs.PathLike) =>
- ({
- isDirectory: () =>
- String(currentPath) !== "/var/lib/apt/lists/partial/pkg.idx",
- }) as fs.Stats,
- );
-
- vi.spyOn(fs, "readdirSync")
- .mockImplementationOnce(() => ["partial"] as never)
- .mockImplementationOnce(() => ["pkg.idx"] as never);
-
- expect(isAptListsFresh()).toBe(true);
- });
-
- it("returns a boolean for the current system apt list state", () => {
- expect(typeof isAptListsFresh()).toBe("boolean");
- });
-
- it("serializes package values", () => {
- expect(new ActionPackageName("git", "1.2.3").serialize()).toBe("git@1.2.3");
- });
-
- it("serializes and deserializes cache keys", () => {
- const key = new CacheKey("v1", "4", "arm64", ["curl=1", "git=2"]);
- expect(key.serialize()).toBe("v1 | 4 | arm64 | curl=1,git=2");
-
- expect(CacheKey.deserialize(key.serialize())).toEqual(
- new CacheKey("v1", "4", "arm64", ["curl=1", "git=2"]),
- );
- });
-
- it("rejects invalid serialized cache keys", () => {
- expect(() => CacheKey.deserialize("invalid")).toThrow(
- /Invalid serialized cache key/,
- );
- });
-
- it("builds cache paths under the current home directory", () => {
- const cache = new Cache("custom-cache", {
- run: vi.fn(),
- } as never);
-
- expect(cache.path).toBe(path.join(os.homedir(), "custom-cache"));
- });
-
- it("hashes cache keys without appending the default x86_64 architecture", async () => {
- const commandRunner = {
- run: vi.fn().mockResolvedValue({ stdout: "x86_64\n" }),
- };
- const cache = new Cache("cache-apt-pkgs", commandRunner as never);
-
- const expectedHash = crypto
- .createHash("md5")
- .update("curl=1 git=2 @ 'v1' 4")
- .digest("hex");
-
- await expect(cache.getKey(["curl=1", "git=2"], "v1")).resolves.toBe(
- `cache-apt-pkgs_${expectedHash}`,
- );
- });
-
- it("hashes cache keys with non-default architectures", async () => {
- const commandRunner = {
- run: vi.fn().mockResolvedValue({ stdout: "arm64\n" }),
- };
- const cache = new Cache("cache-apt-pkgs", commandRunner as never);
-
- const expectedHash = crypto
- .createHash("md5")
- .update("curl=1 git=2 @ 'v1' 4 arm64")
- .digest("hex");
-
- await expect(cache.getKey(["curl=1", "git=2"], "v1")).resolves.toBe(
- `cache-apt-pkgs_${expectedHash}`,
- );
- });
-});
diff --git a/test/manifest.test.ts b/test/manifest.test.ts
index 6a09d5b..a4dabd7 100644
--- a/test/manifest.test.ts
+++ b/test/manifest.test.ts
@@ -3,46 +3,57 @@ import path from "node:path";
import fs from "node:fs";
import { describe, expect, it } from "vitest";
import { Manifest, ManifestEntry } from "../src/manifest.js";
+import { CacheKey } from "../src/cache.js";
+import { createPackageName } from "ts-apt";
+import { ActionPackageNames } from "../src/packages.js";
describe("manifest", () => {
it("serializes and deserializes manifest entries", () => {
- const manifest = new Manifest(
- [
- new ManifestEntry("z", "2", undefined, ["/b", "/a"]),
- new ManifestEntry("a", "1", undefined, []),
- ],
- "input",
- "cache-key",
+ const cacheKey = new CacheKey(
+ "v1",
"4",
- "x86_64",
+ "amd64",
+ ActionPackageNames.fromInput("curl git"),
+ );
+ const manifest = new Manifest(
+ new Date("2026-01-01T00:00:00.000Z"),
+ [
+ new ManifestEntry(createPackageName("curl", "8.1.0", "amd64"), [
+ "/b",
+ "/a",
+ ]),
+ ],
+ cacheKey,
);
- const parsed = Manifest.deserialize(manifest.serialize());
- expect(parsed.entries[0]?.name).toBe("z");
- expect(parsed.cacheKey).toBe("cache-key");
+ const parsed = Manifest.fromJSON(JSON.parse(JSON.stringify(manifest)));
+ expect(parsed.entries).toHaveLength(1);
+ expect(parsed.entries[0]?.packageName.serialize()).toBe("curl:amd64=8.1.0");
+ expect(parsed.entries[0]?.filepaths).toEqual(["/a", "/b"]);
});
- it("writes and reads manifest files", () => {
+ it("writes and reads manifest files", async () => {
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "manifest-test-"));
const filePath = path.join(tempDir, "manifest.json");
- const manifest = new Manifest(
- [new ManifestEntry("curl", "8.1", undefined, ["usr/bin/curl"])],
- "input",
- "cache-key",
+ const cacheKey = new CacheKey(
+ "v1",
"4",
- "x86_64",
+ "amd64",
+ ActionPackageNames.fromInput("curl"),
+ );
+ const manifest = new Manifest(
+ new Date("2026-01-01T00:00:00.000Z"),
+ [
+ new ManifestEntry(createPackageName("curl", "8.1.0", "amd64"), [
+ "usr/bin/curl",
+ ]),
+ ],
+ cacheKey,
);
- manifest.writeToFile(filePath);
- const parsed = Manifest.readFromFile(filePath);
+ await manifest.writeToFile(filePath);
+ const parsed = await Manifest.readFromFile(filePath);
expect(parsed.entries).toHaveLength(1);
- expect(parsed.entries[0]?.name).toBe("curl");
- });
-
- it("throws for missing files", () => {
- const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "manifest-missing-"));
- expect(() =>
- Manifest.readFromFile(path.join(tempDir, "none.json")),
- ).toThrow(/Manifest file not found/);
+ expect(parsed.entries[0]?.packageName.serialize()).toBe("curl:amd64=8.1.0");
});
});
diff --git a/test/packages.test.ts b/test/packages.test.ts
new file mode 100644
index 0000000..168594f
--- /dev/null
+++ b/test/packages.test.ts
@@ -0,0 +1,174 @@
+import fs from "node:fs";
+import os from "node:os";
+import path from "node:path";
+import { createPackageName } from "ts-apt";
+import {
+ ActionPackageNames,
+ updateAptLists,
+ buildFileList,
+ findInstallScript,
+} from "../src/packages.js";
+import { describe, expect, it, vi } from "vitest";
+
+const PACKAGE_NAME = createPackageName("test-package", "1.0.0", "amd64");
+
+function makeTempRoot(prefix: string): string {
+ return fs.mkdtempSync(path.join(os.tmpdir(), prefix));
+}
+
+function ensureScriptsDir(root: string): string {
+ const scriptsDir = path.join(root, "var", "lib", "dpkg", "info");
+ fs.mkdirSync(scriptsDir, { recursive: true });
+ return scriptsDir;
+}
+
+describe("packages", () => {
+ it("buildFileList returns an array of package files", async () => {
+ const root = makeTempRoot("pkg-files-");
+ const scriptsDir = ensureScriptsDir(root);
+ const packageFiles = [
+ path.join(scriptsDir, "test-package.list"),
+ path.join(scriptsDir, "test-package.md5sums"),
+ path.join(scriptsDir, "test-package.postinst"),
+ path.join(scriptsDir, "test-package.preinst"),
+ ];
+ for (const filePath of packageFiles) {
+ fs.writeFileSync(filePath, "", "utf8");
+ }
+
+ const manager = {
+ listInstalledFiles: vi.fn().mockResolvedValue(packageFiles),
+ };
+ const result = await buildFileList(PACKAGE_NAME, manager as any, root);
+
+ expect(result).toEqual(packageFiles.map((item) => item.slice(1)).sort());
+ });
+
+ it("buildFileList returns an empty array when no files are found", async () => {
+ const root = makeTempRoot("pkg-empty-");
+
+ const manager = {
+ listInstalledFiles: vi.fn().mockResolvedValue([]),
+ };
+
+ const result = await buildFileList(PACKAGE_NAME, manager as any, root);
+ expect(result).toEqual([]);
+ });
+
+ it("findInstallScript returns undefined when scripts directory does not exist", async () => {
+ const missingRoot = makeTempRoot("pkg-missing-");
+
+ const result = await findInstallScript(
+ PACKAGE_NAME,
+ "preinst",
+ missingRoot,
+ );
+ expect(result).toBeUndefined();
+ });
+
+ it("findInstallScript returns undefined when no matching scripts are found", async () => {
+ const root = makeTempRoot("pkg-no-match-");
+ const scriptsDir = ensureScriptsDir(root);
+ fs.writeFileSync(
+ path.join(scriptsDir, "other-package.preinst"),
+ "",
+ "utf8",
+ );
+
+ const result = await findInstallScript(PACKAGE_NAME, "preinst", root);
+ expect(result).toBeUndefined();
+ });
+
+ it("findInstallScript returns the first matching script when multiple are found", async () => {
+ const root = makeTempRoot("pkg-match-");
+ const scriptsDir = ensureScriptsDir(root);
+ fs.writeFileSync(
+ path.join(scriptsDir, "test-package.postinst"),
+ "",
+ "utf8",
+ );
+ fs.writeFileSync(path.join(scriptsDir, "test-package.preinst"), "", "utf8");
+ fs.writeFileSync(
+ path.join(scriptsDir, "test-package.preinst.backup"),
+ "",
+ "utf8",
+ );
+
+ const result = await findInstallScript(PACKAGE_NAME, "preinst", root);
+ expect(result).toBe(path.join(scriptsDir, "test-package.preinst"));
+ });
+
+ it("updateAptLists calls the package manager's update method", async () => {
+ const aptListsPath = makeTempRoot("apt-lists-");
+
+ const mockUpdate = vi.fn().mockResolvedValue(undefined);
+ const mockLogger = {
+ info: vi.fn(),
+ error: vi.fn(),
+ };
+ const packageManager = {
+ update: mockUpdate,
+ };
+
+ await updateAptLists(
+ packageManager as any,
+ mockLogger as any,
+ aptListsPath,
+ );
+
+ expect(mockUpdate).toHaveBeenCalledTimes(1);
+ });
+
+ describe("ActionPackageNames", () => {
+ it("fromInput parses APT serialized input", () => {
+ const input = "test-package=1.0.0 amd64 other-package=2.0.0 i386";
+ const result = ActionPackageNames.fromInput(input);
+ expect(result.toArray()).toEqual([
+ createPackageName("other-package", "2.0.0", "i386"),
+ createPackageName("test-package", "1.0.0", "amd64"),
+ ]);
+ });
+
+ it("fromInput returns an empty list when input is empty", () => {
+ const result = ActionPackageNames.fromInput("");
+ expect(result.toArray()).toEqual([]);
+ });
+
+ it("fromInput returns an empty list when input is whitespace", () => {
+ const result = ActionPackageNames.fromInput(" ");
+ expect(result.toArray()).toEqual([]);
+ });
+
+ it("fromJSON parses an array of serialized package names", () => {
+ const json = [
+ { name: "test-package", version: "1.0.0", arch: "amd64" },
+ { name: "other-package", version: "2.0.0", arch: "i386" },
+ ];
+ const result = ActionPackageNames.fromJSON(json);
+ expect(result.toArray()).toEqual([
+ createPackageName("other-package", "2.0.0", "i386"),
+ createPackageName("test-package", "1.0.0", "amd64"),
+ ]);
+ });
+
+ it("fromJSON returns an empty list when input is empty", () => {
+ const result = ActionPackageNames.fromJSON([]);
+ expect(result.toArray()).toEqual([]);
+ });
+
+ it("length returns the number of package names", () => {
+ const input = "test-package=1.0.0 amd64 other-package=2.0.0 i386";
+ const result = ActionPackageNames.fromInput(input);
+ expect(result.length).toBe(2);
+ });
+
+ it("toArray returns a sorted array of package names", () => {
+ const input = "test-package=1.0.0 amd64 other-package=2.0.0 i386";
+ const result = ActionPackageNames.fromInput(input);
+ expect(result.toArray()).toEqual([
+ createPackageName("other-package", "2.0.0", "i386"),
+ createPackageName("test-package", "1.0.0", "amd64"),
+ ]);
+ });
+ });
+});
diff --git a/tsconfig.base.json b/tsconfig.base.json
index b4a94cf..9a2cd62 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -1,8 +1,8 @@
{
"compilerOptions": {
"target": "ES2023",
- "module": "NodeNext",
- "moduleResolution": "NodeNext",
+ "module": "nodenext",
+ "moduleResolution": "nodenext",
"paths": {
"ts-apt": [
"./node_modules/ts-apt/src/index.ts"
diff --git a/tsconfig.json b/tsconfig.json
index 39bea86..d842aab 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -12,8 +12,7 @@
],
"compilerOptions": {
"types": [
- "node",
- "vitest/globals"
+ "node"
],
"allowImportingTsExtensions": true,
"noEmit": true
diff --git a/tsconfig.scripts.json b/tsconfig.scripts.json
index 54ae4eb..a2c05ab 100644
--- a/tsconfig.scripts.json
+++ b/tsconfig.scripts.json
@@ -13,8 +13,6 @@
"types": [
"node"
],
- "module": "NodeNext",
- "moduleResolution": "NodeNext",
"allowImportingTsExtensions": true,
"verbatimModuleSyntax": true
}