diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a9af594..8625c67 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,12 +1,14 @@
name: CI
on:
push:
- branches-ignore:
- - 'generated'
- - 'codegen/**'
- - 'integrated/**'
- - 'stl-preview-head/**'
- - 'stl-preview-base/**'
+ branches:
+ - '**'
+ - '!integrated/**'
+ - '!stl-preview-head/**'
+ - '!stl-preview-base/**'
+ - '!generated'
+ - '!codegen/**'
+ - 'codegen/stl/**'
pull_request:
branches-ignore:
- 'stl-preview-head/**'
@@ -17,12 +19,12 @@ jobs:
timeout-minutes: 10
name: lint
runs-on: ${{ github.repository == 'stainless-sdks/sfc-nodes-typescript' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
- if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
+ if: (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata')
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '20'
@@ -36,15 +38,15 @@ jobs:
timeout-minutes: 5
name: build
runs-on: ${{ github.repository == 'stainless-sdks/sfc-nodes-typescript' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
- if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
+ if: (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata')
permissions:
contents: read
id-token: write
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '20'
@@ -55,14 +57,18 @@ jobs:
run: ./scripts/build
- name: Get GitHub OIDC Token
- if: github.repository == 'stainless-sdks/sfc-nodes-typescript'
+ if: |-
+ github.repository == 'stainless-sdks/sfc-nodes-typescript' &&
+ !startsWith(github.ref, 'refs/heads/stl/')
id: github-oidc
- uses: actions/github-script@v6
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: core.setOutput('github_token', await core.getIDToken());
- name: Upload tarball
- if: github.repository == 'stainless-sdks/sfc-nodes-typescript'
+ if: |-
+ github.repository == 'stainless-sdks/sfc-nodes-typescript' &&
+ !startsWith(github.ref, 'refs/heads/stl/')
env:
URL: https://pkg.stainless.com/s
AUTH: ${{ steps.github-oidc.outputs.github_token }}
@@ -74,10 +80,10 @@ jobs:
runs-on: ${{ github.repository == 'stainless-sdks/sfc-nodes-typescript' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '20'
diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml
index c8950c7..0f6dd3c 100644
--- a/.github/workflows/publish-npm.yml
+++ b/.github/workflows/publish-npm.yml
@@ -14,10 +14,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Node
- uses: actions/setup-node@v3
+ uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3.9.1
with:
node-version: '20'
diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml
index e364c63..ce2f526 100644
--- a/.github/workflows/release-doctor.yml
+++ b/.github/workflows/release-doctor.yml
@@ -12,11 +12,10 @@ jobs:
if: github.repository == 'sfcompute/nodes-typescript' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Check release environment
run: |
bash ./bin/check-release-environment
env:
NPM_TOKEN: ${{ secrets.SFC_NODES_NPM_TOKEN || secrets.NPM_TOKEN }}
-
diff --git a/.gitignore b/.gitignore
index 2412bb7..c85fe68 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
.prism.log
+.stdy.log
node_modules
yarn-error.log
codegen.log
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index a0c24c3..5a12c39 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.1.0-alpha.27"
+ ".": "0.1.0-alpha.28"
}
diff --git a/.stats.yml b/.stats.yml
index a4da285..aba4ed0 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 15
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/the-san-francisco-compute-company%2Fsfc-nodes-7284b205c8d1bc77799405fdd08ca68120426b87031cbc22718da68e22ed5a4c.yml
-openapi_spec_hash: b0248957ae5bcf9896f6d74d5c05351b
+configured_endpoints: 13
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/the-san-francisco-compute-company/sfc-nodes-92c25ef5a0eefcd88287edd4de0589c948908f558a03a0aa15ffa961a1415845.yml
+openapi_spec_hash: e5d9664ddfbca394030b9a9e24246dc7
config_hash: a187153315a646ecf95709ee4a223df5
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 88a188d..0301686 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,69 @@
# Changelog
+## 0.1.0-alpha.28 (2026-05-17)
+
+Full Changelog: [v0.1.0-alpha.27...v0.1.0-alpha.28](https://github.com/sfcompute/nodes-typescript/compare/v0.1.0-alpha.27...v0.1.0-alpha.28)
+
+### Features
+
+* **api:** api update ([73e25e6](https://github.com/sfcompute/nodes-typescript/commit/73e25e641761662a2ad462cc785572daaa20872c))
+* **api:** api update ([91cda6d](https://github.com/sfcompute/nodes-typescript/commit/91cda6d88594118446249d4a8b3792932cbf2a35))
+* **api:** api update ([bbe3dc6](https://github.com/sfcompute/nodes-typescript/commit/bbe3dc66127afe52d873191fc7c73af1e9d4bd10))
+* **api:** api update ([8d42413](https://github.com/sfcompute/nodes-typescript/commit/8d42413dbed30ce854bb64631954b878b98c127f))
+* **api:** api update ([19a65d7](https://github.com/sfcompute/nodes-typescript/commit/19a65d74432438206bd3c8606af656ed28b9496a))
+* **api:** api update ([f01343c](https://github.com/sfcompute/nodes-typescript/commit/f01343c9704771e3852d0c6a0c75dc239021967a))
+* **api:** api update ([d77a39f](https://github.com/sfcompute/nodes-typescript/commit/d77a39f76881955d9e3231aef26d63fe3309b6dd))
+* **api:** api update ([4df6efb](https://github.com/sfcompute/nodes-typescript/commit/4df6efb7e1e4d00a8a7eaf41c67363771adcc56f))
+* **api:** api update ([58aa0a6](https://github.com/sfcompute/nodes-typescript/commit/58aa0a6527b383deb0612308a6d6639af8488aaa))
+* **api:** api update ([01abc61](https://github.com/sfcompute/nodes-typescript/commit/01abc6189822a16326fddfe3c772fc5747024699))
+* **api:** api update ([d8ddd0a](https://github.com/sfcompute/nodes-typescript/commit/d8ddd0a62ea2c7cc12de16b2c3198e84e62c867d))
+* **api:** api update ([a93a07c](https://github.com/sfcompute/nodes-typescript/commit/a93a07c6ac7774864fc54059a3ce6c02002f298e))
+* **api:** api update ([bbebe4a](https://github.com/sfcompute/nodes-typescript/commit/bbebe4afcdcae6e389e7f25a15ed924d7dbd25b3))
+* **api:** api update ([fe83e26](https://github.com/sfcompute/nodes-typescript/commit/fe83e263cf3bef0a4d231172b231b126d4bc81da))
+* support setting headers via env ([de64330](https://github.com/sfcompute/nodes-typescript/commit/de643305d6c5feb709b6c9ff4cb372d874061999))
+
+
+### Bug Fixes
+
+* **client:** avoid memory leak with abort signals ([a1c5d0e](https://github.com/sfcompute/nodes-typescript/commit/a1c5d0e09b6c77eb7b982a82ef87f5d0e3150268))
+* **client:** avoid removing abort listener too early ([7088589](https://github.com/sfcompute/nodes-typescript/commit/7088589b8f94f2f5d1200ccbf44f21856789fdea))
+* **client:** preserve URL params already embedded in path ([09b226d](https://github.com/sfcompute/nodes-typescript/commit/09b226d6abb3f8cac3d710f86f95051abe19392b))
+* **docs/contributing:** correct pnpm link command ([5eb6efd](https://github.com/sfcompute/nodes-typescript/commit/5eb6efd6fc49531f1e49b6d47cd01dea1264f22d))
+* **mcp:** correct code tool API endpoint ([e1d8df1](https://github.com/sfcompute/nodes-typescript/commit/e1d8df157f5bd1c9922ff4689a6ff69288ea31c0))
+* **mcp:** return correct lines on typescript errors ([9e23e52](https://github.com/sfcompute/nodes-typescript/commit/9e23e52f4e9e18876ea7454bf2dc1f3e393ba9b4))
+
+
+### Chores
+
+* break long lines in snippets into multiline ([2a92dd1](https://github.com/sfcompute/nodes-typescript/commit/2a92dd1fadce15736de21aef47c6a09053fcfdbe))
+* **ci:** skip lint on metadata-only changes ([fd03774](https://github.com/sfcompute/nodes-typescript/commit/fd037745f0e362ed452a117c52497bae84dc82c7))
+* **ci:** skip uploading artifacts on stainless-internal branches ([a625c49](https://github.com/sfcompute/nodes-typescript/commit/a625c49dddab4d1a0cf283ae95cf7806f5fa2347))
+* **ci:** upgrade `actions/github-script` ([16bd5ac](https://github.com/sfcompute/nodes-typescript/commit/16bd5ac8c6a4ca5370c03e4105abd1b5f9f3bcf1))
+* **client:** do not parse responses with empty content-length ([b9f61a8](https://github.com/sfcompute/nodes-typescript/commit/b9f61a83ea06509354396c66604bc811f90d18b5))
+* **client:** restructure abort controller binding ([9acb0f7](https://github.com/sfcompute/nodes-typescript/commit/9acb0f7b00ca428a1e0681214c41fa59146d41fc))
+* **format:** run eslint and prettier separately ([1c6ad47](https://github.com/sfcompute/nodes-typescript/commit/1c6ad47c92f5e477b9bdcf76158c71bb6b5b5fe8))
+* **internal/client:** fix form-urlencoded requests ([8b100f7](https://github.com/sfcompute/nodes-typescript/commit/8b100f79af31c3bf7c5e3b27f1efe7acbaaf5a3d))
+* **internal:** avoid type checking errors with ts-reset ([ef3a2a6](https://github.com/sfcompute/nodes-typescript/commit/ef3a2a6dd52aad23d937e5a81ff759e8e4c60937))
+* **internal:** codegen related update ([e47248a](https://github.com/sfcompute/nodes-typescript/commit/e47248acce665677ee7f7085a7bb3ec92e624def))
+* **internal:** codegen related update ([3612bfe](https://github.com/sfcompute/nodes-typescript/commit/3612bfe965ca145223772940fb053e1edbd1f9db))
+* **internal:** codegen related update ([dd4c53a](https://github.com/sfcompute/nodes-typescript/commit/dd4c53a2fd4b5976388e6f90b3331f3a86afcdcd))
+* **internal:** codegen related update ([6bd6cf5](https://github.com/sfcompute/nodes-typescript/commit/6bd6cf524eca9aa45f1b6d0b27fcfc5a105c7367))
+* **internal:** codegen related update ([e7ed04e](https://github.com/sfcompute/nodes-typescript/commit/e7ed04e0b5d9f40119b6ee7a22c42cdb37c0f776))
+* **internal:** codegen related update ([310d3ea](https://github.com/sfcompute/nodes-typescript/commit/310d3ea1ec882b97d2fb5ef9438df2ba565669df))
+* **internal:** codegen related update ([e7ffd0c](https://github.com/sfcompute/nodes-typescript/commit/e7ffd0c274c456917d2ef7dcd7b78d2b12370bd9))
+* **internal:** codegen related update ([efcc324](https://github.com/sfcompute/nodes-typescript/commit/efcc3241aab120b1e10d771c14f0fa97763c38c5))
+* **internal:** codegen related update ([43c1b91](https://github.com/sfcompute/nodes-typescript/commit/43c1b91d4522c19e7000542db9b26d0ba5b96b32))
+* **internal:** more robust bootstrap script ([ef26967](https://github.com/sfcompute/nodes-typescript/commit/ef269678ac5cb436a2e25c7ddedf550bc1f081a6))
+* **internal:** move stringifyQuery implementation to internal function ([39c2313](https://github.com/sfcompute/nodes-typescript/commit/39c2313d785cd4769e5da7c084204eee3815cfaa))
+* **internal:** remove mock server code ([94dbc6d](https://github.com/sfcompute/nodes-typescript/commit/94dbc6de3d7b9fe23be9f0ea99cc0a77422c6afb))
+* **internal:** tweak CI branches ([381ddca](https://github.com/sfcompute/nodes-typescript/commit/381ddcae15825a3c73d8a2655e533f199af45c87))
+* **internal:** update `actions/checkout` version ([0a620ee](https://github.com/sfcompute/nodes-typescript/commit/0a620ee1a5685cf84a5a05d471c12bbc3713aab6))
+* **internal:** update dependencies to address dependabot vulnerabilities ([5e4e80a](https://github.com/sfcompute/nodes-typescript/commit/5e4e80a249e5be81859ebbdf2e50f44cd37fa208))
+* **internal:** update gitignore ([0445e9c](https://github.com/sfcompute/nodes-typescript/commit/0445e9c9c9b860fdd66ba509a2ecc8c788c61409))
+* **internal:** upgrade babel, qs, js-yaml ([fe821a3](https://github.com/sfcompute/nodes-typescript/commit/fe821a3fa77954f51049813e63d58342795f65e3))
+* redact api-key headers in debug logs ([0e0c227](https://github.com/sfcompute/nodes-typescript/commit/0e0c227ea5bb99dff4bc946e7eb57059a69beea7))
+* update mock server docs ([214b3fb](https://github.com/sfcompute/nodes-typescript/commit/214b3fb0d450acb4a33f1fdd8854ba9ed40c8b2b))
+
## 0.1.0-alpha.27 (2025-12-06)
Full Changelog: [v0.1.0-alpha.26...v0.1.0-alpha.27](https://github.com/sfcompute/nodes-typescript/compare/v0.1.0-alpha.26...v0.1.0-alpha.27)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 7983667..012e56f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -60,17 +60,11 @@ $ yarn link @sfcompute/nodes-sdk-alpha
# With pnpm
$ pnpm link --global
$ cd ../my-package
-$ pnpm link -—global @sfcompute/nodes-sdk-alpha
+$ pnpm link --global @sfcompute/nodes-sdk-alpha
```
## Running tests
-Most tests require you to [set up a mock server](https://github.com/stoplightio/prism) against the OpenAPI spec to run the tests.
-
-```sh
-$ npx prism mock path/to/your/openapi.yml
-```
-
```sh
$ yarn run test
```
diff --git a/LICENSE b/LICENSE
index 30db98a..46b2b7e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
- Copyright 2025 SFC Nodes
+ Copyright 2026 SFC Nodes
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/api.md b/api.md
index 89ce07e..a66b81e 100644
--- a/api.md
+++ b/api.md
@@ -25,16 +25,6 @@ Methods:
## Images
-Types:
-
-- ImageListResponse
-- ImageGetResponse
-
-Methods:
-
-- client.vms.images.list() -> ImageListResponse
-- client.vms.images.get(imageID) -> ImageGetResponse
-
# Nodes
Types:
@@ -43,7 +33,6 @@ Types:
- CreateNodesRequest
- ErrorContent
- ErrorDetail
-- ErrorObject
- ErrorType
- ExtendNodeRequest
- ListResponseNode
diff --git a/eslint.config.mjs b/eslint.config.mjs
index a8adaa0..96b3ee0 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -1,7 +1,6 @@
// @ts-check
import tseslint from 'typescript-eslint';
import unusedImports from 'eslint-plugin-unused-imports';
-import prettier from 'eslint-plugin-prettier';
export default tseslint.config(
{
@@ -14,11 +13,9 @@ export default tseslint.config(
plugins: {
'@typescript-eslint': tseslint.plugin,
'unused-imports': unusedImports,
- prettier,
},
rules: {
'no-unused-vars': 'off',
- 'prettier/prettier': 'error',
'unused-imports/no-unused-imports': 'error',
'no-restricted-imports': [
'error',
diff --git a/package.json b/package.json
index 332b90c..1cbca5f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@sfcompute/nodes-sdk-alpha",
- "version": "0.1.0-alpha.27",
+ "version": "0.1.0-alpha.28",
"description": "The official TypeScript library for the SFC Nodes API",
"author": "SFC Nodes ",
"types": "dist/index.d.ts",
@@ -36,7 +36,6 @@
"@typescript-eslint/eslint-plugin": "8.31.1",
"@typescript-eslint/parser": "8.31.1",
"eslint": "^9.39.1",
- "eslint-plugin-prettier": "^5.4.1",
"eslint-plugin-unused-imports": "^4.1.4",
"iconv-lite": "^0.6.3",
"jest": "^29.4.0",
@@ -50,6 +49,17 @@
"typescript": "5.8.3",
"typescript-eslint": "8.31.1"
},
+ "overrides": {
+ "minimatch": "^9.0.5"
+ },
+ "pnpm": {
+ "overrides": {
+ "minimatch": "^9.0.5"
+ }
+ },
+ "resolutions": {
+ "minimatch": "^9.0.5"
+ },
"exports": {
".": {
"import": "./dist/index.mjs",
diff --git a/scripts/bootstrap b/scripts/bootstrap
index a8b69ff..2e315f5 100755
--- a/scripts/bootstrap
+++ b/scripts/bootstrap
@@ -4,7 +4,7 @@ set -e
cd "$(dirname "$0")/.."
-if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ] && [ -t 0 ]; then
+if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "${SKIP_BREW:-}" != "1" ] && [ -t 0 ]; then
brew bundle check >/dev/null 2>&1 || {
echo -n "==> Install Homebrew dependencies? (y/N): "
read -r response
diff --git a/scripts/fast-format b/scripts/fast-format
index 53721ac..f1873ae 100755
--- a/scripts/fast-format
+++ b/scripts/fast-format
@@ -31,10 +31,7 @@ if ! [ -z "$ESLINT_FILES" ]; then
fi
echo "==> Running prettier --write"
-# format things eslint didn't
-PRETTIER_FILES="$(grep '\.\(js\|json\)$' "$FILE_LIST" || true)"
-if ! [ -z "$PRETTIER_FILES" ]; then
- echo "$PRETTIER_FILES" | xargs ./node_modules/.bin/prettier \
- --write --cache --cache-strategy metadata --no-error-on-unmatched-pattern \
- '!**/dist' '!**/*.ts' '!**/*.mts' '!**/*.cts' '!**/*.js' '!**/*.mjs' '!**/*.cjs'
+if ! [ -z "$FILE_LIST" ]; then
+ cat "$FILE_LIST" | xargs ./node_modules/.bin/prettier \
+ --write --cache --cache-strategy metadata --no-error-on-unmatched-pattern --ignore-unknown
fi
diff --git a/scripts/format b/scripts/format
index 7a75640..b1b2c17 100755
--- a/scripts/format
+++ b/scripts/format
@@ -8,5 +8,4 @@ echo "==> Running eslint --fix"
./node_modules/.bin/eslint --fix .
echo "==> Running prettier --write"
-# format things eslint didn't
-./node_modules/.bin/prettier --write --cache --cache-strategy metadata . '!**/dist' '!**/*.ts' '!**/*.mts' '!**/*.cts' '!**/*.js' '!**/*.mjs' '!**/*.cjs'
+./node_modules/.bin/prettier --write --cache --cache-strategy metadata .
diff --git a/scripts/lint b/scripts/lint
index 3ffb78a..1f53254 100755
--- a/scripts/lint
+++ b/scripts/lint
@@ -4,6 +4,9 @@ set -e
cd "$(dirname "$0")/.."
+echo "==> Running prettier --check"
+./node_modules/.bin/prettier --check .
+
echo "==> Running eslint"
./node_modules/.bin/eslint .
diff --git a/scripts/mock b/scripts/mock
deleted file mode 100755
index 0b28f6e..0000000
--- a/scripts/mock
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-cd "$(dirname "$0")/.."
-
-if [[ -n "$1" && "$1" != '--'* ]]; then
- URL="$1"
- shift
-else
- URL="$(grep 'openapi_spec_url' .stats.yml | cut -d' ' -f2)"
-fi
-
-# Check if the URL is empty
-if [ -z "$URL" ]; then
- echo "Error: No OpenAPI spec path/url provided or found in .stats.yml"
- exit 1
-fi
-
-echo "==> Starting mock server with URL ${URL}"
-
-# Run prism mock on the given spec
-if [ "$1" == "--daemon" ]; then
- npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock "$URL" &> .prism.log &
-
- # Wait for server to come online
- echo -n "Waiting for server"
- while ! grep -q "✖ fatal\|Prism is listening" ".prism.log" ; do
- echo -n "."
- sleep 0.1
- done
-
- if grep -q "✖ fatal" ".prism.log"; then
- cat .prism.log
- exit 1
- fi
-
- echo
-else
- npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock "$URL"
-fi
diff --git a/scripts/test b/scripts/test
index 7bce051..548da9b 100755
--- a/scripts/test
+++ b/scripts/test
@@ -4,53 +4,7 @@ set -e
cd "$(dirname "$0")/.."
-RED='\033[0;31m'
-GREEN='\033[0;32m'
-YELLOW='\033[0;33m'
-NC='\033[0m' # No Color
-function prism_is_running() {
- curl --silent "http://localhost:4010" >/dev/null 2>&1
-}
-
-kill_server_on_port() {
- pids=$(lsof -t -i tcp:"$1" || echo "")
- if [ "$pids" != "" ]; then
- kill "$pids"
- echo "Stopped $pids."
- fi
-}
-
-function is_overriding_api_base_url() {
- [ -n "$TEST_API_BASE_URL" ]
-}
-
-if ! is_overriding_api_base_url && ! prism_is_running ; then
- # When we exit this script, make sure to kill the background mock server process
- trap 'kill_server_on_port 4010' EXIT
-
- # Start the dev server
- ./scripts/mock --daemon
-fi
-
-if is_overriding_api_base_url ; then
- echo -e "${GREEN}✔ Running tests against ${TEST_API_BASE_URL}${NC}"
- echo
-elif ! prism_is_running ; then
- echo -e "${RED}ERROR:${NC} The test suite will not run without a mock Prism server"
- echo -e "running against your OpenAPI spec."
- echo
- echo -e "To run the server, pass in the path or url of your OpenAPI"
- echo -e "spec to the prism command:"
- echo
- echo -e " \$ ${YELLOW}npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock path/to/your.openapi.yml${NC}"
- echo
-
- exit 1
-else
- echo -e "${GREEN}✔ Mock prism server is running with your OpenAPI spec${NC}"
- echo
-fi
echo "==> Running tests"
./node_modules/.bin/jest "$@"
diff --git a/scripts/utils/postprocess-files.cjs b/scripts/utils/postprocess-files.cjs
index deae575..a8cdeb7 100644
--- a/scripts/utils/postprocess-files.cjs
+++ b/scripts/utils/postprocess-files.cjs
@@ -23,12 +23,19 @@ async function postprocess() {
// strip out lib="dom", types="node", and types="react" references; these
// are needed at build time, but would pollute the user's TS environment
- const transformed = code.replace(
+ let transformed = code.replace(
/^ *\/\/\/ * ' '.repeat(match.length - 1) + '\n',
);
+ // TypeScript's declaration emitter collapses /** @ts-ignore */ onto the same
+ // line as the type declaration, which doesn't work. So we convert to // @ts-ignore
+ // on its own line to properly suppresses errors.
+ if (file.endsWith('.d.ts') || file.endsWith('.d.mts') || file.endsWith('.d.cts')) {
+ transformed = transformed.replace(/\/\*\* @ts-ignore\b[^*]*\*\/ /gm, '// @ts-ignore\n');
+ }
+
if (transformed !== code) {
console.error(`wrote ${path.relative(process.cwd(), file)}`);
await fs.promises.writeFile(file, transformed, 'utf8');
diff --git a/src/client.ts b/src/client.ts
index 0c85cd4..bf4babd 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -11,7 +11,7 @@ import type { APIResponseProps } from './internal/parse';
import { getPlatformHeaders } from './internal/detect-platform';
import * as Shims from './internal/shims';
import * as Opts from './internal/request-options';
-import * as qs from './internal/qs';
+import { stringifyQuery } from './internal/utils/query';
import { VERSION } from './version';
import * as Errors from './core/error';
import * as Uploads from './core/uploads';
@@ -22,7 +22,6 @@ import {
CreateNodesRequest,
ErrorContent,
ErrorDetail,
- ErrorObject,
ErrorType,
ExtendNodeRequest,
ListResponseNode,
@@ -181,6 +180,18 @@ export class SFCNodes {
this.fetch = options.fetch ?? Shims.getDefaultFetch();
this.#encoder = Opts.FallbackEncoder;
+ const customHeadersEnv = readEnv('SFC_NODES_CUSTOM_HEADERS');
+ if (customHeadersEnv) {
+ const parsed: Record = {};
+ for (const line of customHeadersEnv.split('\n')) {
+ const colon = line.indexOf(':');
+ if (colon >= 0) {
+ parsed[line.substring(0, colon).trim()] = line.substring(colon + 1).trim();
+ }
+ }
+ options.defaultHeaders = { ...parsed, ...options.defaultHeaders };
+ }
+
this._options = options;
this.bearerToken = bearerToken;
@@ -236,8 +247,8 @@ export class SFCNodes {
return buildHeaders([{ Authorization: `Bearer ${this.bearerToken}` }]);
}
- protected stringifyQuery(query: Record): string {
- return qs.stringify(query, { arrayFormat: 'repeat' });
+ protected stringifyQuery(query: object | Record): string {
+ return stringifyQuery(query);
}
private getUserAgent(): string {
@@ -269,12 +280,13 @@ export class SFCNodes {
: new URL(baseURL + (baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));
const defaultQuery = this.defaultQuery();
- if (!isEmptyObj(defaultQuery)) {
- query = { ...defaultQuery, ...query };
+ const pathQuery = Object.fromEntries(url.searchParams);
+ if (!isEmptyObj(defaultQuery) || !isEmptyObj(pathQuery)) {
+ query = { ...pathQuery, ...defaultQuery, ...query };
}
if (typeof query === 'object' && query && !Array.isArray(query)) {
- url.search = this.stringifyQuery(query as Record);
+ url.search = this.stringifyQuery(query);
}
return url.toString();
@@ -458,7 +470,7 @@ export class SFCNodes {
loggerFor(this).info(`${responseInfo} - ${retryMessage}`);
const errText = await response.text().catch((err: any) => castToError(err).message);
- const errJSON = safeJSON(errText);
+ const errJSON = safeJSON(errText) as any;
const errMessage = errJSON ? undefined : errText;
loggerFor(this).debug(
@@ -499,9 +511,10 @@ export class SFCNodes {
controller: AbortController,
): Promise {
const { signal, method, ...options } = init || {};
- if (signal) signal.addEventListener('abort', () => controller.abort());
+ const abort = this._makeAbort(controller);
+ if (signal) signal.addEventListener('abort', abort, { once: true });
- const timeout = setTimeout(() => controller.abort(), ms);
+ const timeout = setTimeout(abort, ms);
const isReadableBody =
((globalThis as any).ReadableStream && options.body instanceof (globalThis as any).ReadableStream) ||
@@ -578,9 +591,9 @@ export class SFCNodes {
}
}
- // If the API asks us to wait a certain amount of time (and it's a reasonable amount),
- // just do what it says, but otherwise calculate a default
- if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {
+ // If the API asks us to wait a certain amount of time, just do what it
+ // says, but otherwise calculate a default
+ if (timeoutMillis === undefined) {
const maxRetries = options.maxRetries ?? this.maxRetries;
timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);
}
@@ -668,6 +681,12 @@ export class SFCNodes {
return headers.values;
}
+ private _makeAbort(controller: AbortController) {
+ // note: we can't just inline this method inside `fetchWithTimeout()` because then the closure
+ // would capture all request options, and cause a memory leak.
+ return () => controller.abort();
+ }
+
private buildBody({ options: { body, headers: rawHeaders } }: { options: FinalRequestOptions }): {
bodyHeaders: HeadersLike;
body: BodyInit | undefined;
@@ -700,6 +719,14 @@ export class SFCNodes {
(Symbol.iterator in body && 'next' in body && typeof body.next === 'function'))
) {
return { bodyHeaders: undefined, body: Shims.ReadableStreamFrom(body as AsyncIterable) };
+ } else if (
+ typeof body === 'object' &&
+ headers.values.get('content-type') === 'application/x-www-form-urlencoded'
+ ) {
+ return {
+ bodyHeaders: { 'content-type': 'application/x-www-form-urlencoded' },
+ body: this.stringifyQuery(body),
+ };
} else {
return this.#encoder({ body, headers });
}
@@ -724,8 +751,19 @@ export class SFCNodes {
static toFile = Uploads.toFile;
+ /**
+ * Manage your Virtual Machines.
+ */
vms: API.VMs = new API.VMs(this);
+ /**
+ * Manage compute nodes. Create, list, extend, and release nodes for your workloads.
+ */
nodes: API.Nodes = new API.Nodes(this);
+ /**
+ * Zones represent physically colocated datacenters.
+ * Use these endpoints to discover available zones and their capacity,
+ * hardware specifications, and regional information.
+ */
zones: API.Zones = new API.Zones(this);
}
@@ -750,7 +788,6 @@ export declare namespace SFCNodes {
type CreateNodesRequest as CreateNodesRequest,
type ErrorContent as ErrorContent,
type ErrorDetail as ErrorDetail,
- type ErrorObject as ErrorObject,
type ErrorType as ErrorType,
type ExtendNodeRequest as ExtendNodeRequest,
type ListResponseNode as ListResponseNode,
diff --git a/src/internal/parse.ts b/src/internal/parse.ts
index c9fa396..5bf6998 100644
--- a/src/internal/parse.ts
+++ b/src/internal/parse.ts
@@ -29,6 +29,12 @@ export async function defaultParseResponse(client: SFCNodes, props: APIRespon
const mediaType = contentType?.split(';')[0]?.trim();
const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');
if (isJSON) {
+ const contentLength = response.headers.get('content-length');
+ if (contentLength === '0') {
+ // if there is no content we can't do anything
+ return undefined as T;
+ }
+
const json = await response.json();
return json as T;
}
diff --git a/src/internal/types.ts b/src/internal/types.ts
index b668dfc..a050513 100644
--- a/src/internal/types.ts
+++ b/src/internal/types.ts
@@ -40,7 +40,6 @@ type OverloadedParameters =
: T extends (...args: infer A) => unknown ? A
: never;
-/* eslint-disable */
/**
* These imports attempt to get types from a parent package's dependencies.
* Unresolved bare specifiers can trigger [automatic type acquisition][1] in some projects, which
@@ -63,19 +62,18 @@ type OverloadedParameters =
*
* [1]: https://www.typescriptlang.org/tsconfig/#typeAcquisition
*/
-/** @ts-ignore For users with \@types/node */
+/** @ts-ignore For users with \@types/node */ /* prettier-ignore */
type UndiciTypesRequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny;
-/** @ts-ignore For users with undici */
+/** @ts-ignore For users with undici */ /* prettier-ignore */
type UndiciRequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny;
-/** @ts-ignore For users with \@types/bun */
+/** @ts-ignore For users with \@types/bun */ /* prettier-ignore */
type BunRequestInit = globalThis.FetchRequestInit;
-/** @ts-ignore For users with node-fetch@2 */
+/** @ts-ignore For users with node-fetch@2 */ /* prettier-ignore */
type NodeFetch2RequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny;
-/** @ts-ignore For users with node-fetch@3, doesn't need file extension because types are at ./@types/index.d.ts */
+/** @ts-ignore For users with node-fetch@3, doesn't need file extension because types are at ./@types/index.d.ts */ /* prettier-ignore */
type NodeFetch3RequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny;
-/** @ts-ignore For users who use Deno */
+/** @ts-ignore For users who use Deno */ /* prettier-ignore */
type FetchRequestInit = NonNullable[1]>;
-/* eslint-enable */
type RequestInits =
| NotAny
diff --git a/src/internal/utils.ts b/src/internal/utils.ts
index 3cbfacc..c591353 100644
--- a/src/internal/utils.ts
+++ b/src/internal/utils.ts
@@ -6,3 +6,4 @@ export * from './utils/env';
export * from './utils/log';
export * from './utils/uuid';
export * from './utils/sleep';
+export * from './utils/query';
diff --git a/src/internal/utils/env.ts b/src/internal/utils/env.ts
index 2d84800..cc5fa0f 100644
--- a/src/internal/utils/env.ts
+++ b/src/internal/utils/env.ts
@@ -9,10 +9,10 @@
*/
export const readEnv = (env: string): string | undefined => {
if (typeof (globalThis as any).process !== 'undefined') {
- return (globalThis as any).process.env?.[env]?.trim() ?? undefined;
+ return (globalThis as any).process.env?.[env]?.trim() || undefined;
}
if (typeof (globalThis as any).Deno !== 'undefined') {
- return (globalThis as any).Deno.env?.get?.(env)?.trim();
+ return (globalThis as any).Deno.env?.get?.(env)?.trim() || undefined;
}
return undefined;
};
diff --git a/src/internal/utils/log.ts b/src/internal/utils/log.ts
index 0ce915a..1af6c49 100644
--- a/src/internal/utils/log.ts
+++ b/src/internal/utils/log.ts
@@ -107,6 +107,8 @@ export const formatRequestDetails = (details: {
name,
(
name.toLowerCase() === 'authorization' ||
+ name.toLowerCase() === 'api-key' ||
+ name.toLowerCase() === 'x-api-key' ||
name.toLowerCase() === 'cookie' ||
name.toLowerCase() === 'set-cookie'
) ?
diff --git a/src/internal/utils/query.ts b/src/internal/utils/query.ts
new file mode 100644
index 0000000..68554da
--- /dev/null
+++ b/src/internal/utils/query.ts
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import * as qs from '../qs/stringify';
+
+export function stringifyQuery(query: object | Record) {
+ return qs.stringify(query, { arrayFormat: 'repeat' });
+}
diff --git a/src/resources/index.ts b/src/resources/index.ts
index a82544b..30616f8 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -6,7 +6,6 @@ export {
type CreateNodesRequest,
type ErrorContent,
type ErrorDetail,
- type ErrorObject,
type ErrorType,
type ExtendNodeRequest,
type ListResponseNode,
diff --git a/src/resources/nodes.ts b/src/resources/nodes.ts
index b01aa14..993bb52 100644
--- a/src/resources/nodes.ts
+++ b/src/resources/nodes.ts
@@ -7,6 +7,9 @@ import { buildHeaders } from '../internal/headers';
import { RequestOptions } from '../internal/request-options';
import { path } from '../internal/utils/path';
+/**
+ * Manage compute nodes. Create, list, extend, and release nodes for your workloads.
+ */
export class Nodes extends APIResource {
/**
* Create VM nodes
@@ -15,7 +18,7 @@ export class Nodes extends APIResource {
* ```ts
* const listResponseNode = await client.nodes.create({
* desired_count: 1,
- * max_price_per_node_hour: 1000,
+ * max_price_per_node_hour: 1600,
* });
* ```
*/
@@ -117,6 +120,12 @@ export interface CreateNodesRequest {
*/
max_price_per_node_hour: number;
+ /**
+ * **Experimental — subject to change or removal without notice.** Enables
+ * InfiniBand. Requires hardware in the chosen zone that supports InfiniBand.
+ */
+ _preview_enable_infiniband?: boolean;
+
/**
* Allow auto reserved nodes to be created in any zone that meets the requirements
*/
@@ -134,6 +143,11 @@ export interface CreateNodesRequest {
*/
end_at?: number | null;
+ /**
+ * (Optional) If set, enables forwarding to the VM on port 443.
+ */
+ forward_443?: boolean;
+
/**
* Custom image ID to use for the VM instances
*/
@@ -141,7 +155,7 @@ export interface CreateNodesRequest {
/**
* Custom node names Names cannot begin with 'vm*' or 'n*' as this is reserved for
- * system-generated IDs Names cannot be numeric strings Names cannot exceed 128
+ * system-generated IDs Names cannot be numeric strings Names cannot exceed 256
* characters
*/
names?: Array;
@@ -176,7 +190,7 @@ export interface ErrorDetail {
code: string;
/**
- * Detailed error message
+ * Human-readable error message
*/
message: string;
@@ -186,10 +200,6 @@ export interface ErrorDetail {
field?: string | null;
}
-export interface ErrorObject {
- error: ErrorContent;
-}
-
export type ErrorType =
| 'api_error'
| 'invalid_request_error'
@@ -203,7 +213,8 @@ export type ErrorType =
| 'upgrade_required'
| 'payment_required'
| 'service_unavailable'
- | 'unprocessable_entity';
+ | 'unprocessable_entity'
+ | 'gone';
export interface ExtendNodeRequest {
/**
@@ -463,6 +474,12 @@ export interface NodeCreateParams {
*/
max_price_per_node_hour: number;
+ /**
+ * **Experimental — subject to change or removal without notice.** Enables
+ * InfiniBand. Requires hardware in the chosen zone that supports InfiniBand.
+ */
+ _preview_enable_infiniband?: boolean;
+
/**
* Allow auto reserved nodes to be created in any zone that meets the requirements
*/
@@ -480,6 +497,11 @@ export interface NodeCreateParams {
*/
end_at?: number | null;
+ /**
+ * (Optional) If set, enables forwarding to the VM on port 443.
+ */
+ forward_443?: boolean;
+
/**
* Custom image ID to use for the VM instances
*/
@@ -487,7 +509,7 @@ export interface NodeCreateParams {
/**
* Custom node names Names cannot begin with 'vm*' or 'n*' as this is reserved for
- * system-generated IDs Names cannot be numeric strings Names cannot exceed 128
+ * system-generated IDs Names cannot be numeric strings Names cannot exceed 256
* characters
*/
names?: Array;
@@ -568,7 +590,6 @@ export declare namespace Nodes {
type CreateNodesRequest as CreateNodesRequest,
type ErrorContent as ErrorContent,
type ErrorDetail as ErrorDetail,
- type ErrorObject as ErrorObject,
type ErrorType as ErrorType,
type ExtendNodeRequest as ExtendNodeRequest,
type ListResponseNode as ListResponseNode,
diff --git a/src/resources/vms/images.ts b/src/resources/vms/images.ts
index 3278638..f8d7a5b 100644
--- a/src/resources/vms/images.ts
+++ b/src/resources/vms/images.ts
@@ -1,108 +1,5 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from '../../core/resource';
-import { APIPromise } from '../../core/api-promise';
-import { RequestOptions } from '../../internal/request-options';
-import { path } from '../../internal/utils/path';
-export class Images extends APIResource {
- /**
- * List all VM Images for the authenticated account
- */
- list(options?: RequestOptions): APIPromise {
- return this._client.get('/v1/vms/images', options);
- }
-
- /**
- * Get the download URL for a VM image by ID
- */
- get(imageID: string, options?: RequestOptions): APIPromise {
- return this._client.get(path`/v1/vms/images/${imageID}`, options);
- }
-}
-
-/**
- * Response body for listing images
- */
-export interface ImageListResponse {
- data: Array;
-
- has_more: boolean;
-
- object: 'list';
-}
-
-export namespace ImageListResponse {
- /**
- * Response body for individual image info (used in lists)
- */
- export interface Data {
- /**
- * Creation timestamp as Unix timestamp in seconds
- */
- created_at: number;
-
- /**
- * The image ID
- */
- image_id: string;
-
- /**
- * Client given name of the image. Must be unique per account.
- */
- name: string;
-
- object: 'image';
-
- /**
- * Upload status of the image
- */
- upload_status: string;
-
- /**
- * SHA256 hash of the image file for integrity verification
- */
- sha256_hash?: string | null;
- }
-}
-
-/**
- * Response body for image download presigned URL generation
- */
-export interface ImageGetResponse {
- /**
- * The presigned URL that can be used to download the image
- */
- download_url: string;
-
- /**
- * Timestamp when the presigned URL expires (RFC 3339 format)
- */
- expires_at: string;
-
- /**
- * The image ID
- */
- image_id: string;
-
- /**
- * Human readable name of the image. Must be unique per account.
- */
- name: string;
-
- object: 'image';
-
- /**
- * Size of the image file in bytes
- */
- object_size: number;
-
- /**
- * SHA256 hash of the image file for integrity verification
- */
- sha256_hash: string;
-}
-
-export declare namespace Images {
- export { type ImageListResponse as ImageListResponse, type ImageGetResponse as ImageGetResponse };
-}
+export class Images extends APIResource {}
diff --git a/src/resources/vms/index.ts b/src/resources/vms/index.ts
index 1ef9554..745d541 100644
--- a/src/resources/vms/index.ts
+++ b/src/resources/vms/index.ts
@@ -1,6 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-export { Images, type ImageListResponse, type ImageGetResponse } from './images';
+export { Images } from './images';
export {
Script,
type UserData,
diff --git a/src/resources/vms/script.ts b/src/resources/vms/script.ts
index bd6cc92..e70af7b 100644
--- a/src/resources/vms/script.ts
+++ b/src/resources/vms/script.ts
@@ -4,6 +4,9 @@ import { APIResource } from '../../core/resource';
import { APIPromise } from '../../core/api-promise';
import { RequestOptions } from '../../internal/request-options';
+/**
+ * Manage your Virtual Machines.
+ */
export class Script extends APIResource {
create(body: ScriptCreateParams, options?: RequestOptions): APIPromise {
return this._client.post('/v0/vms/script', { body, ...options });
diff --git a/src/resources/vms/vms.ts b/src/resources/vms/vms.ts
index 2d0564d..5e8abbc 100644
--- a/src/resources/vms/vms.ts
+++ b/src/resources/vms/vms.ts
@@ -2,12 +2,15 @@
import { APIResource } from '../../core/resource';
import * as ImagesAPI from './images';
-import { ImageGetResponse, ImageListResponse, Images } from './images';
+import { Images } from './images';
import * as ScriptAPI from './script';
import { Script, ScriptCreateParams, ScriptCreateResponse, ScriptRetrieveResponse, UserData } from './script';
import { APIPromise } from '../../core/api-promise';
import { RequestOptions } from '../../internal/request-options';
+/**
+ * Manage your Virtual Machines.
+ */
export class VMs extends APIResource {
script: ScriptAPI.Script = new ScriptAPI.Script(this._client);
images: ImagesAPI.Images = new ImagesAPI.Images(this._client);
@@ -50,12 +53,12 @@ export interface VMSSHResponse {
ssh_port: number;
/**
- * Unix timestamp in seconds since epoch
+ * Unix timestamp.
*/
last_attempted_key_update?: number | null;
/**
- * Unix timestamp in seconds since epoch
+ * Unix timestamp.
*/
last_successful_key_update?: number | null;
@@ -109,9 +112,5 @@ export declare namespace VMs {
type ScriptCreateParams as ScriptCreateParams,
};
- export {
- Images as Images,
- type ImageListResponse as ImageListResponse,
- type ImageGetResponse as ImageGetResponse,
- };
+ export { Images as Images };
}
diff --git a/src/resources/zones.ts b/src/resources/zones.ts
index 58bbbcd..c083de3 100644
--- a/src/resources/zones.ts
+++ b/src/resources/zones.ts
@@ -6,6 +6,11 @@ import { APIPromise } from '../core/api-promise';
import { RequestOptions } from '../internal/request-options';
import { path } from '../internal/utils/path';
+/**
+ * Zones represent physically colocated datacenters.
+ * Use these endpoints to discover available zones and their capacity,
+ * hardware specifications, and regional information.
+ */
export class Zones extends APIResource {
/**
* List all available zones
@@ -47,12 +52,17 @@ export namespace ZoneListResponse {
object: string;
region: 'NorthAmerica' | 'AsiaPacific' | 'EuropeMiddleEastAfrica';
+
+ /**
+ * User-facing zone name (e.g., "Hayes Valley", "Land's End")
+ */
+ display_name?: string | null;
}
export namespace Data {
export interface AvailableCapacity {
/**
- * Unix timestamp in seconds since epoch
+ * Unix timestamp.
*/
end_timestamp: number;
@@ -62,7 +72,7 @@ export namespace ZoneListResponse {
quantity: number;
/**
- * Unix timestamp in seconds since epoch
+ * Unix timestamp.
*/
start_timestamp: number;
}
@@ -87,12 +97,17 @@ export interface ZoneGetResponse {
object: string;
region: 'NorthAmerica' | 'AsiaPacific' | 'EuropeMiddleEastAfrica';
+
+ /**
+ * User-facing zone name (e.g., "Hayes Valley", "Land's End")
+ */
+ display_name?: string | null;
}
export namespace ZoneGetResponse {
export interface AvailableCapacity {
/**
- * Unix timestamp in seconds since epoch
+ * Unix timestamp.
*/
end_timestamp: number;
@@ -102,7 +117,7 @@ export namespace ZoneGetResponse {
quantity: number;
/**
- * Unix timestamp in seconds since epoch
+ * Unix timestamp.
*/
start_timestamp: number;
}
diff --git a/src/version.ts b/src/version.ts
index 3287b08..522a9fb 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.1.0-alpha.27'; // x-release-please-version
+export const VERSION = '0.1.0-alpha.28'; // x-release-please-version
diff --git a/tests/api-resources/nodes.test.ts b/tests/api-resources/nodes.test.ts
index 5de9eaf..76a6992 100644
--- a/tests/api-resources/nodes.test.ts
+++ b/tests/api-resources/nodes.test.ts
@@ -8,9 +8,9 @@ const client = new SFCNodes({
});
describe('resource nodes', () => {
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('create: only required params', async () => {
- const responsePromise = client.nodes.create({ desired_count: 1, max_price_per_node_hour: 1000 });
+ const responsePromise = client.nodes.create({ desired_count: 1, max_price_per_node_hour: 1600 });
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
@@ -20,15 +20,17 @@ describe('resource nodes', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('create: required and optional params', async () => {
const response = await client.nodes.create({
desired_count: 1,
- max_price_per_node_hour: 1000,
+ max_price_per_node_hour: 1600,
+ _preview_enable_infiniband: false,
any_zone: false,
cloud_init_user_data: 'aGVsbG8gd29ybGQ=',
end_at: 0,
- image_id: 'vmi_1234567890abcdef',
+ forward_443: false,
+ image_id: 'image_1234567890abcdef',
names: ['cuda-crunch'],
node_type: 'autoreserved',
start_at: 1640995200,
@@ -36,7 +38,7 @@ describe('resource nodes', () => {
});
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('list', async () => {
const responsePromise = client.nodes.list();
const rawResponse = await responsePromise.asResponse();
@@ -48,18 +50,22 @@ describe('resource nodes', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('list: request options and params are passed correctly', async () => {
// ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
await expect(
client.nodes.list(
- { id: ['string'], name: ['string'], type: 'autoreserved' },
+ {
+ id: ['string'],
+ name: ['string'],
+ type: 'autoreserved',
+ },
{ path: '/_stainless_unknown_path' },
),
).rejects.toThrow(SFCNodes.NotFoundError);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('delete', async () => {
const responsePromise = client.nodes.delete('id');
const rawResponse = await responsePromise.asResponse();
@@ -71,7 +77,7 @@ describe('resource nodes', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('extend: only required params', async () => {
const responsePromise = client.nodes.extend('id', {
duration_seconds: 7200,
@@ -86,7 +92,7 @@ describe('resource nodes', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('extend: required and optional params', async () => {
const response = await client.nodes.extend('id', {
duration_seconds: 7200,
@@ -94,7 +100,7 @@ describe('resource nodes', () => {
});
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('get', async () => {
const responsePromise = client.nodes.get('id');
const rawResponse = await responsePromise.asResponse();
@@ -106,7 +112,7 @@ describe('resource nodes', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('redeploy', async () => {
const responsePromise = client.nodes.redeploy('id', {});
const rawResponse = await responsePromise.asResponse();
@@ -118,7 +124,7 @@ describe('resource nodes', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('release', async () => {
const responsePromise = client.nodes.release('id');
const rawResponse = await responsePromise.asResponse();
diff --git a/tests/api-resources/vms/images.test.ts b/tests/api-resources/vms/images.test.ts
deleted file mode 100644
index 11d1d83..0000000
--- a/tests/api-resources/vms/images.test.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-import SFCNodes from '@sfcompute/nodes-sdk-alpha';
-
-const client = new SFCNodes({
- bearerToken: 'My Bearer Token',
- baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
-});
-
-describe('resource images', () => {
- // Prism tests are disabled
- test.skip('list', async () => {
- const responsePromise = client.vms.images.list();
- const rawResponse = await responsePromise.asResponse();
- expect(rawResponse).toBeInstanceOf(Response);
- const response = await responsePromise;
- expect(response).not.toBeInstanceOf(Response);
- const dataAndResponse = await responsePromise.withResponse();
- expect(dataAndResponse.data).toBe(response);
- expect(dataAndResponse.response).toBe(rawResponse);
- });
-
- // Prism tests are disabled
- test.skip('get', async () => {
- const responsePromise = client.vms.images.get('image_id');
- const rawResponse = await responsePromise.asResponse();
- expect(rawResponse).toBeInstanceOf(Response);
- const response = await responsePromise;
- expect(response).not.toBeInstanceOf(Response);
- const dataAndResponse = await responsePromise.withResponse();
- expect(dataAndResponse.data).toBe(response);
- expect(dataAndResponse.response).toBe(rawResponse);
- });
-});
diff --git a/tests/api-resources/vms/script.test.ts b/tests/api-resources/vms/script.test.ts
index e337f3a..cbf87a4 100644
--- a/tests/api-resources/vms/script.test.ts
+++ b/tests/api-resources/vms/script.test.ts
@@ -8,7 +8,7 @@ const client = new SFCNodes({
});
describe('resource script', () => {
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('create: only required params', async () => {
const responsePromise = client.vms.script.create({ script: 'string' });
const rawResponse = await responsePromise.asResponse();
@@ -20,12 +20,12 @@ describe('resource script', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('create: required and optional params', async () => {
const response = await client.vms.script.create({ script: 'string' });
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('retrieve', async () => {
const responsePromise = client.vms.script.retrieve();
const rawResponse = await responsePromise.asResponse();
diff --git a/tests/api-resources/vms/vms.test.ts b/tests/api-resources/vms/vms.test.ts
index 208e7d8..9f4b608 100644
--- a/tests/api-resources/vms/vms.test.ts
+++ b/tests/api-resources/vms/vms.test.ts
@@ -8,7 +8,7 @@ const client = new SFCNodes({
});
describe('resource vms', () => {
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('logs: only required params', async () => {
const responsePromise = client.vms.logs({ instance_id: 'instance_id', order_by: 'seqnum_asc' });
const rawResponse = await responsePromise.asResponse();
@@ -20,7 +20,7 @@ describe('resource vms', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('logs: required and optional params', async () => {
const response = await client.vms.logs({
instance_id: 'instance_id',
@@ -33,7 +33,7 @@ describe('resource vms', () => {
});
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('ssh: only required params', async () => {
const responsePromise = client.vms.ssh({ vm_id: 'vm_id' });
const rawResponse = await responsePromise.asResponse();
@@ -45,7 +45,7 @@ describe('resource vms', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('ssh: required and optional params', async () => {
const response = await client.vms.ssh({ vm_id: 'vm_id' });
});
diff --git a/tests/api-resources/zones.test.ts b/tests/api-resources/zones.test.ts
index 4a521e9..63b26a7 100644
--- a/tests/api-resources/zones.test.ts
+++ b/tests/api-resources/zones.test.ts
@@ -8,7 +8,7 @@ const client = new SFCNodes({
});
describe('resource zones', () => {
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('list', async () => {
const responsePromise = client.zones.list();
const rawResponse = await responsePromise.asResponse();
@@ -20,7 +20,7 @@ describe('resource zones', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
- // Prism tests are disabled
+ // Mock server tests are disabled
test.skip('get', async () => {
const responsePromise = client.zones.get('id');
const rawResponse = await responsePromise.asResponse();
diff --git a/tests/index.test.ts b/tests/index.test.ts
index 20682d1..0166796 100644
--- a/tests/index.test.ts
+++ b/tests/index.test.ts
@@ -87,7 +87,11 @@ describe('instantiate client', () => {
error: jest.fn(),
};
- const client = new SFCNodes({ logger: logger, logLevel: 'debug', bearerToken: 'My Bearer Token' });
+ const client = new SFCNodes({
+ logger: logger,
+ logLevel: 'debug',
+ bearerToken: 'My Bearer Token',
+ });
await forceAPIResponseForClient(client);
expect(debugMock).toHaveBeenCalled();
@@ -107,7 +111,11 @@ describe('instantiate client', () => {
error: jest.fn(),
};
- const client = new SFCNodes({ logger: logger, logLevel: 'info', bearerToken: 'My Bearer Token' });
+ const client = new SFCNodes({
+ logger: logger,
+ logLevel: 'info',
+ bearerToken: 'My Bearer Token',
+ });
await forceAPIResponseForClient(client);
expect(debugMock).not.toHaveBeenCalled();
@@ -157,7 +165,11 @@ describe('instantiate client', () => {
};
process.env['SFC_NODES_LOG'] = 'debug';
- const client = new SFCNodes({ logger: logger, logLevel: 'off', bearerToken: 'My Bearer Token' });
+ const client = new SFCNodes({
+ logger: logger,
+ logLevel: 'off',
+ bearerToken: 'My Bearer Token',
+ });
await forceAPIResponseForClient(client);
expect(debugMock).not.toHaveBeenCalled();
@@ -173,7 +185,11 @@ describe('instantiate client', () => {
};
process.env['SFC_NODES_LOG'] = 'not a log level';
- const client = new SFCNodes({ logger: logger, logLevel: 'debug', bearerToken: 'My Bearer Token' });
+ const client = new SFCNodes({
+ logger: logger,
+ logLevel: 'debug',
+ bearerToken: 'My Bearer Token',
+ });
expect(client.logLevel).toBe('debug');
expect(warnMock).not.toHaveBeenCalled();
});
@@ -555,7 +571,11 @@ describe('retries', () => {
return new Response(JSON.stringify({ a: 1 }), { headers: { 'Content-Type': 'application/json' } });
};
- const client = new SFCNodes({ bearerToken: 'My Bearer Token', fetch: testFetch, maxRetries: 4 });
+ const client = new SFCNodes({
+ bearerToken: 'My Bearer Token',
+ fetch: testFetch,
+ maxRetries: 4,
+ });
expect(await client.request({ path: '/foo', method: 'get' })).toEqual({ a: 1 });
@@ -579,7 +599,11 @@ describe('retries', () => {
capturedRequest = init;
return new Response(JSON.stringify({ a: 1 }), { headers: { 'Content-Type': 'application/json' } });
};
- const client = new SFCNodes({ bearerToken: 'My Bearer Token', fetch: testFetch, maxRetries: 4 });
+ const client = new SFCNodes({
+ bearerToken: 'My Bearer Token',
+ fetch: testFetch,
+ maxRetries: 4,
+ });
expect(
await client.request({
@@ -641,7 +665,11 @@ describe('retries', () => {
capturedRequest = init;
return new Response(JSON.stringify({ a: 1 }), { headers: { 'Content-Type': 'application/json' } });
};
- const client = new SFCNodes({ bearerToken: 'My Bearer Token', fetch: testFetch, maxRetries: 4 });
+ const client = new SFCNodes({
+ bearerToken: 'My Bearer Token',
+ fetch: testFetch,
+ maxRetries: 4,
+ });
expect(
await client.request({
@@ -671,7 +699,11 @@ describe('retries', () => {
return new Response(JSON.stringify({ a: 1 }), { headers: { 'Content-Type': 'application/json' } });
};
- const client = new SFCNodes({ bearerToken: 'My Bearer Token', fetch: testFetch, maxRetries: 3 });
+ const client = new SFCNodes({
+ bearerToken: 'My Bearer Token',
+ fetch: testFetch,
+ maxRetries: 3,
+ });
expect(await client.request({ path: '/foo', method: 'get' })).toEqual({ a: 1 });
expect(count).toEqual(2);
@@ -701,7 +733,11 @@ describe('retries', () => {
return new Response(JSON.stringify({ a: 1 }), { headers: { 'Content-Type': 'application/json' } });
};
- const client = new SFCNodes({ bearerToken: 'My Bearer Token', fetch: testFetch, maxRetries: 3 });
+ const client = new SFCNodes({
+ bearerToken: 'My Bearer Token',
+ fetch: testFetch,
+ maxRetries: 3,
+ });
expect(await client.request({ path: '/foo', method: 'get' })).toEqual({ a: 1 });
expect(count).toEqual(2);
diff --git a/tests/stringifyQuery.test.ts b/tests/stringifyQuery.test.ts
index 3eafca1..96b5c60 100644
--- a/tests/stringifyQuery.test.ts
+++ b/tests/stringifyQuery.test.ts
@@ -1,8 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-import { SFCNodes } from '@sfcompute/nodes-sdk-alpha';
-
-const { stringifyQuery } = SFCNodes.prototype as any;
+import { stringifyQuery } from '@sfcompute/nodes-sdk-alpha/internal/utils/query';
describe(stringifyQuery, () => {
for (const [input, expected] of [
@@ -15,7 +13,7 @@ describe(stringifyQuery, () => {
'e=f',
)}=${encodeURIComponent('g&h')}`,
],
- ]) {
+ ] as const) {
it(`${JSON.stringify(input)} -> ${expected}`, () => {
expect(stringifyQuery(input)).toEqual(expected);
});
diff --git a/yarn.lock b/yarn.lock
index 5f56a20..18e7cbd 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7,14 +7,6 @@
resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
-"@ampproject/remapping@^2.2.0":
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
- integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
- dependencies:
- "@jridgewell/gen-mapping" "^0.3.0"
- "@jridgewell/trace-mapping" "^0.3.9"
-
"@andrewbranch/untar.js@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@andrewbranch/untar.js/-/untar.js-1.0.3.tgz#ba9494f85eb83017c5c855763969caf1d0adea00"
@@ -46,155 +38,119 @@
typescript "5.6.1-rc"
validate-npm-package-name "^5.0.0"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5":
- version "7.23.5"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244"
- integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7"
+ integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==
dependencies:
- "@babel/highlight" "^7.23.4"
- chalk "^2.4.2"
+ "@babel/helper-validator-identifier" "^7.28.5"
+ js-tokens "^4.0.0"
+ picocolors "^1.1.1"
-"@babel/compat-data@^7.23.5":
- version "7.23.5"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98"
- integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==
+"@babel/compat-data@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.6.tgz#103f466803fa0f059e82ccac271475470570d74c"
+ integrity sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==
"@babel/core@^7.11.6", "@babel/core@^7.12.3":
- version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.6.tgz#8be77cd77c55baadcc1eae1c33df90ab6d2151d4"
- integrity sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==
- dependencies:
- "@ampproject/remapping" "^2.2.0"
- "@babel/code-frame" "^7.23.5"
- "@babel/generator" "^7.23.6"
- "@babel/helper-compilation-targets" "^7.23.6"
- "@babel/helper-module-transforms" "^7.23.3"
- "@babel/helpers" "^7.23.6"
- "@babel/parser" "^7.23.6"
- "@babel/template" "^7.22.15"
- "@babel/traverse" "^7.23.6"
- "@babel/types" "^7.23.6"
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.6.tgz#531bf883a1126e53501ba46eb3bb414047af507f"
+ integrity sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==
+ dependencies:
+ "@babel/code-frame" "^7.28.6"
+ "@babel/generator" "^7.28.6"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-module-transforms" "^7.28.6"
+ "@babel/helpers" "^7.28.6"
+ "@babel/parser" "^7.28.6"
+ "@babel/template" "^7.28.6"
+ "@babel/traverse" "^7.28.6"
+ "@babel/types" "^7.28.6"
+ "@jridgewell/remapping" "^2.3.5"
convert-source-map "^2.0.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.3"
semver "^6.3.1"
-"@babel/generator@^7.23.6", "@babel/generator@^7.7.2":
- version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e"
- integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==
+"@babel/generator@^7.28.6", "@babel/generator@^7.7.2":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.6.tgz#48dcc65d98fcc8626a48f72b62e263d25fc3c3f1"
+ integrity sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==
+ dependencies:
+ "@babel/parser" "^7.28.6"
+ "@babel/types" "^7.28.6"
+ "@jridgewell/gen-mapping" "^0.3.12"
+ "@jridgewell/trace-mapping" "^0.3.28"
+ jsesc "^3.0.2"
+
+"@babel/helper-compilation-targets@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25"
+ integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==
+ dependencies:
+ "@babel/compat-data" "^7.28.6"
+ "@babel/helper-validator-option" "^7.27.1"
+ browserslist "^4.24.0"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
+"@babel/helper-globals@^7.28.0":
+ version "7.28.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674"
+ integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==
+
+"@babel/helper-module-imports@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c"
+ integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==
dependencies:
- "@babel/types" "^7.23.6"
- "@jridgewell/gen-mapping" "^0.3.2"
- "@jridgewell/trace-mapping" "^0.3.17"
- jsesc "^2.5.1"
+ "@babel/traverse" "^7.28.6"
+ "@babel/types" "^7.28.6"
-"@babel/helper-compilation-targets@^7.23.6":
- version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991"
- integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==
+"@babel/helper-module-transforms@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e"
+ integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==
dependencies:
- "@babel/compat-data" "^7.23.5"
- "@babel/helper-validator-option" "^7.23.5"
- browserslist "^4.22.2"
- lru-cache "^5.1.1"
- semver "^6.3.1"
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-validator-identifier" "^7.28.5"
+ "@babel/traverse" "^7.28.6"
-"@babel/helper-environment-visitor@^7.22.20":
- version "7.22.20"
- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
- integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
-
-"@babel/helper-function-name@^7.23.0":
- version "7.23.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759"
- integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
- dependencies:
- "@babel/template" "^7.22.15"
- "@babel/types" "^7.23.0"
-
-"@babel/helper-hoist-variables@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
- integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
- dependencies:
- "@babel/types" "^7.22.5"
-
-"@babel/helper-module-imports@^7.22.15":
- version "7.22.15"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0"
- integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
- dependencies:
- "@babel/types" "^7.22.15"
-
-"@babel/helper-module-transforms@^7.23.3":
- version "7.23.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1"
- integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==
- dependencies:
- "@babel/helper-environment-visitor" "^7.22.20"
- "@babel/helper-module-imports" "^7.22.15"
- "@babel/helper-simple-access" "^7.22.5"
- "@babel/helper-split-export-declaration" "^7.22.6"
- "@babel/helper-validator-identifier" "^7.22.20"
-
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
- integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
-
-"@babel/helper-simple-access@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
- integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
- dependencies:
- "@babel/types" "^7.22.5"
-
-"@babel/helper-split-export-declaration@^7.22.6":
- version "7.22.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
- integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
- dependencies:
- "@babel/types" "^7.22.5"
-
-"@babel/helper-string-parser@^7.23.4":
- version "7.23.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83"
- integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==
-
-"@babel/helper-validator-identifier@^7.22.20":
- version "7.22.20"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
- integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
-
-"@babel/helper-validator-option@^7.23.5":
- version "7.23.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307"
- integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
-
-"@babel/helpers@^7.23.6":
- version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.6.tgz#d03af2ee5fb34691eec0cda90f5ecbb4d4da145a"
- integrity sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==
- dependencies:
- "@babel/template" "^7.22.15"
- "@babel/traverse" "^7.23.6"
- "@babel/types" "^7.23.6"
-
-"@babel/highlight@^7.23.4":
- version "7.23.4"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b"
- integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==
- dependencies:
- "@babel/helper-validator-identifier" "^7.22.20"
- chalk "^2.4.2"
- js-tokens "^4.0.0"
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.8.0":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8"
+ integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==
+
+"@babel/helper-string-parser@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
+ integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
+
+"@babel/helper-validator-identifier@^7.28.5":
+ version "7.28.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4"
+ integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==
+
+"@babel/helper-validator-option@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f"
+ integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
+
+"@babel/helpers@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7"
+ integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==
+ dependencies:
+ "@babel/template" "^7.28.6"
+ "@babel/types" "^7.28.6"
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6":
- version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b"
- integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd"
+ integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==
+ dependencies:
+ "@babel/types" "^7.28.6"
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
@@ -210,14 +166,28 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-class-properties@^7.8.3":
+"@babel/plugin-syntax-class-properties@^7.12.13":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-syntax-import-meta@^7.8.3":
+"@babel/plugin-syntax-class-static-block@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-import-attributes@^7.24.7":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503"
+ integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.28.6"
+
+"@babel/plugin-syntax-import-meta@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
@@ -232,13 +202,13 @@
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-jsx@^7.7.2":
- version "7.23.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473"
- integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz#f8ca28bbd84883b5fea0e447c635b81ba73997ee"
+ integrity sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==
dependencies:
- "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
@@ -252,7 +222,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-numeric-separator@^7.8.3":
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
@@ -280,7 +250,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-top-level-await@^7.8.3":
+"@babel/plugin-syntax-private-property-in-object@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-top-level-await@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
@@ -288,45 +265,41 @@
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-typescript@^7.7.2":
- version "7.23.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f"
- integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.22.5"
-
-"@babel/template@^7.22.15", "@babel/template@^7.3.3":
- version "7.22.15"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
- integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==
- dependencies:
- "@babel/code-frame" "^7.22.13"
- "@babel/parser" "^7.22.15"
- "@babel/types" "^7.22.15"
-
-"@babel/traverse@^7.23.6":
- version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.6.tgz#b53526a2367a0dd6edc423637f3d2d0f2521abc5"
- integrity sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==
- dependencies:
- "@babel/code-frame" "^7.23.5"
- "@babel/generator" "^7.23.6"
- "@babel/helper-environment-visitor" "^7.22.20"
- "@babel/helper-function-name" "^7.23.0"
- "@babel/helper-hoist-variables" "^7.22.5"
- "@babel/helper-split-export-declaration" "^7.22.6"
- "@babel/parser" "^7.23.6"
- "@babel/types" "^7.23.6"
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz#c7b2ddf1d0a811145b1de800d1abd146af92e3a2"
+ integrity sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.28.6"
+
+"@babel/template@^7.28.6", "@babel/template@^7.3.3":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57"
+ integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==
+ dependencies:
+ "@babel/code-frame" "^7.28.6"
+ "@babel/parser" "^7.28.6"
+ "@babel/types" "^7.28.6"
+
+"@babel/traverse@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.6.tgz#871ddc79a80599a5030c53b1cc48cbe3a5583c2e"
+ integrity sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==
+ dependencies:
+ "@babel/code-frame" "^7.28.6"
+ "@babel/generator" "^7.28.6"
+ "@babel/helper-globals" "^7.28.0"
+ "@babel/parser" "^7.28.6"
+ "@babel/template" "^7.28.6"
+ "@babel/types" "^7.28.6"
debug "^4.3.1"
- globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.3.3":
- version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd"
- integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==
+"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.28.6", "@babel/types@^7.3.3":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df"
+ integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==
dependencies:
- "@babel/helper-string-parser" "^7.23.4"
- "@babel/helper-validator-identifier" "^7.22.20"
- to-fast-properties "^2.0.0"
+ "@babel/helper-string-parser" "^7.27.1"
+ "@babel/helper-validator-identifier" "^7.28.5"
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
@@ -668,31 +641,38 @@
"@types/yargs" "^17.0.8"
chalk "^4.0.0"
-"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
- integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
+"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.13"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f"
+ integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==
dependencies:
- "@jridgewell/set-array" "^1.0.1"
- "@jridgewell/sourcemap-codec" "^1.4.10"
- "@jridgewell/trace-mapping" "^0.3.9"
+ "@jridgewell/sourcemap-codec" "^1.5.0"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@jridgewell/remapping@^2.3.5":
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1"
+ integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.24"
"@jridgewell/resolve-uri@^3.1.0":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
-"@jridgewell/set-array@^1.0.1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
- integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
-
-"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
+"@jridgewell/sourcemap-codec@^1.4.14":
version "1.4.15"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
-"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9":
+"@jridgewell/sourcemap-codec@^1.5.0":
+ version "1.5.5"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba"
+ integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==
+
+"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18":
version "0.3.20"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f"
integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==
@@ -700,6 +680,14 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
+"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28":
+ version "0.3.31"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0"
+ integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -721,11 +709,6 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@pkgr/core@^0.2.4":
- version "0.2.4"
- resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.4.tgz#d897170a2b0ba51f78a099edccd968f7b103387c"
- integrity sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==
-
"@sinclair/typebox@^0.27.8":
version "0.27.8"
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
@@ -1116,13 +1099,6 @@ ansi-regex@^6.1.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654"
integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
-ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
- dependencies:
- color-convert "^1.9.0"
-
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
@@ -1200,22 +1176,25 @@ babel-plugin-jest-hoist@^29.6.3:
"@types/babel__traverse" "^7.0.6"
babel-preset-current-node-syntax@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
- integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz#20730d6cdc7dda5d89401cab10ac6a32067acde6"
+ integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==
dependencies:
"@babel/plugin-syntax-async-generators" "^7.8.4"
"@babel/plugin-syntax-bigint" "^7.8.3"
- "@babel/plugin-syntax-class-properties" "^7.8.3"
- "@babel/plugin-syntax-import-meta" "^7.8.3"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+ "@babel/plugin-syntax-import-attributes" "^7.24.7"
+ "@babel/plugin-syntax-import-meta" "^7.10.4"
"@babel/plugin-syntax-json-strings" "^7.8.3"
- "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
- "@babel/plugin-syntax-numeric-separator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
- "@babel/plugin-syntax-top-level-await" "^7.8.3"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+ "@babel/plugin-syntax-top-level-await" "^7.14.5"
babel-preset-jest@^29.6.3:
version "29.6.3"
@@ -1230,18 +1209,15 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
+baseline-browser-mapping@^2.9.0:
+ version "2.9.14"
+ resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz#3b6af0bc032445bca04de58caa9a87cfe921cbb3"
+ integrity sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==
-brace-expansion@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
- integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+brace-expansion@^2.0.2:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.1.0.tgz#4f41a41190216ee36067ec381526fe9539c4f0ae"
+ integrity sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==
dependencies:
balanced-match "^1.0.0"
@@ -1252,15 +1228,16 @@ braces@^3.0.3:
dependencies:
fill-range "^7.1.1"
-browserslist@^4.22.2:
- version "4.22.2"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b"
- integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==
+browserslist@^4.24.0:
+ version "4.28.1"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95"
+ integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
dependencies:
- caniuse-lite "^1.0.30001565"
- electron-to-chromium "^1.4.601"
- node-releases "^2.0.14"
- update-browserslist-db "^1.0.13"
+ baseline-browser-mapping "^2.9.0"
+ caniuse-lite "^1.0.30001759"
+ electron-to-chromium "^1.5.263"
+ node-releases "^2.0.27"
+ update-browserslist-db "^1.2.0"
bs-logger@0.x:
version "0.2.6"
@@ -1296,19 +1273,10 @@ camelcase@^6.2.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
-caniuse-lite@^1.0.30001565:
- version "1.0.30001570"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz#b4e5c1fa786f733ab78fc70f592df6b3f23244ca"
- integrity sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==
-
-chalk@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
+caniuse-lite@^1.0.30001759:
+ version "1.0.30001764"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz#03206c56469f236103b90f9ae10bcb8b9e1f6005"
+ integrity sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==
chalk@^4.0.0, chalk@^4.1.2:
version "4.1.2"
@@ -1397,13 +1365,6 @@ collect-v8-coverage@^1.0.0:
resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9"
integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==
-color-convert@^1.9.0:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
@@ -1411,11 +1372,6 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
@@ -1426,11 +1382,6 @@ commander@^10.0.1:
resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-
convert-source-map@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
@@ -1507,10 +1458,10 @@ diff@^4.0.1:
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
-electron-to-chromium@^1.4.601:
- version "1.4.614"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.614.tgz#2fe789d61fa09cb875569f37c309d0c2701f91c0"
- integrity sha512-X4ze/9Sc3QWs6h92yerwqv7aB/uU8vCjZcrMjA8N9R1pjMFRe44dLsck5FzLilOYvcXuDn93B+bpGYyufc70gQ==
+electron-to-chromium@^1.5.263:
+ version "1.5.267"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz#5d84f2df8cdb6bfe7e873706bb21bd4bfb574dc7"
+ integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==
emittery@^0.13.1:
version "0.13.1"
@@ -1544,10 +1495,10 @@ escalade@^3.1.1:
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
-escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+escalade@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+ integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
escape-string-regexp@^2.0.0:
version "2.0.0"
@@ -1559,14 +1510,6 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-eslint-plugin-prettier@^5.4.1:
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.1.tgz#99b55d7dd70047886b2222fdd853665f180b36af"
- integrity sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg==
- dependencies:
- prettier-linter-helpers "^1.0.0"
- synckit "^0.11.7"
-
eslint-plugin-unused-imports@^4.1.4:
version "4.1.4"
resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz#62ddc7446ccbf9aa7b6f1f0b00a980423cda2738"
@@ -1718,11 +1661,6 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-diff@^1.1.2:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
- integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
-
fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
@@ -1883,11 +1821,6 @@ glob@^8.0.1:
minimatch "^5.0.1"
once "^1.3.0"
-globals@^11.1.0:
- version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
globals@^14.0.0:
version "14.0.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
@@ -1903,11 +1836,6 @@ graphemer@^1.4.0:
resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
-
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
@@ -2459,9 +2387,9 @@ js-tokens@^4.0.0:
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
js-yaml@^3.13.1:
- version "3.14.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
- integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ version "3.14.2"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.2.tgz#77485ce1dd7f33c061fd1b16ecea23b55fcb04b0"
+ integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
@@ -2473,10 +2401,10 @@ js-yaml@^4.1.1:
dependencies:
argparse "^2.0.1"
-jsesc@^2.5.1:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
- integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+jsesc@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d"
+ integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==
json-buffer@3.0.1:
version "3.0.1"
@@ -2641,26 +2569,12 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimatch@^5.0.1:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
- integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
- dependencies:
- brace-expansion "^2.0.1"
-
-minimatch@^9.0.4:
- version "9.0.5"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
- integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2, minimatch@^5.0.1, minimatch@^9.0.4, minimatch@^9.0.5:
+ version "9.0.9"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e"
+ integrity sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==
dependencies:
- brace-expansion "^2.0.1"
+ brace-expansion "^2.0.2"
minimist@^1.2.6:
version "1.2.6"
@@ -2711,10 +2625,10 @@ node-int64@^0.4.0:
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
-node-releases@^2.0.14:
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
- integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
+node-releases@^2.0.27:
+ version "2.0.27"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e"
+ integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==
normalize-path@^3.0.0:
version "3.0.0"
@@ -2882,11 +2796,6 @@ path-parse@^1.0.7:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-picocolors@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
- integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
-
picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
@@ -2914,13 +2823,6 @@ prelude-ls@^1.2.1:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-prettier-linter-helpers@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
- integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
- dependencies:
- fast-diff "^1.1.2"
-
prettier@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848"
@@ -3190,13 +3092,6 @@ superstruct@^1.0.4:
resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.4.tgz#0adb99a7578bd2f1c526220da6571b2d485d91ca"
integrity sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==
-supports-color@^5.3.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
supports-color@^7.0.0, supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
@@ -3224,13 +3119,6 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-synckit@^0.11.7:
- version "0.11.8"
- resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.8.tgz#b2aaae998a4ef47ded60773ad06e7cb821f55457"
- integrity sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==
- dependencies:
- "@pkgr/core" "^0.2.4"
-
test-exclude@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
@@ -3259,11 +3147,6 @@ tmpl@1.0.5:
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
-to-fast-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
- integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
-
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@@ -3389,13 +3272,13 @@ unicode-emoji-modifier-base@^1.0.0:
resolved "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459"
integrity sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==
-update-browserslist-db@^1.0.13:
- version "1.0.13"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
- integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
+update-browserslist-db@^1.2.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d"
+ integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==
dependencies:
- escalade "^3.1.1"
- picocolors "^1.0.0"
+ escalade "^3.2.0"
+ picocolors "^1.1.1"
uri-js@^4.2.2:
version "4.4.1"