diff --git a/.eslintignore b/.eslintignore
index ea62efdf1f..ff10944af7 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,4 +1,2 @@
**/node_modules/**
-**/out/**
-server/aws-lsp-codewhisperer/src/client/sigv4/codewhisperersigv4client.d.ts
-server/aws-lsp-codewhisperer/src/client/token/codewhispererbearertokenclient.d.ts
\ No newline at end of file
+**/out/**
\ No newline at end of file
diff --git a/.github/workflows/create-agent-standalone.yml b/.github/workflows/create-agent-standalone.yml
index f50b5b43b0..12a8fdfb12 100644
--- a/.github/workflows/create-agent-standalone.yml
+++ b/.github/workflows/create-agent-standalone.yml
@@ -8,7 +8,6 @@ on:
jobs:
build:
runs-on: ubuntu-latest
- if: github.event_name == 'push' || github.actor_id == github.repository_owner_id
steps:
- name: Checkout repository
@@ -20,7 +19,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
- node-version: '20'
+ node-version: '24'
cache: 'npm'
- name: Install dependencies
diff --git a/.github/workflows/create-agentic-github-prerelease.yml b/.github/workflows/create-agentic-github-prerelease.yml
index e5f98178dc..48873b7503 100644
--- a/.github/workflows/create-agentic-github-prerelease.yml
+++ b/.github/workflows/create-agentic-github-prerelease.yml
@@ -101,7 +101,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
- node-version: '20'
+ node-version: '24'
cache: 'npm'
# To run a ts script to create the manifest
diff --git a/.github/workflows/create-release-candidate-branch.yml b/.github/workflows/create-release-candidate-branch.yml
index b447f11803..7c6b449a94 100644
--- a/.github/workflows/create-release-candidate-branch.yml
+++ b/.github/workflows/create-release-candidate-branch.yml
@@ -42,7 +42,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
- node-version: '20'
+ node-version: '24'
cache: 'npm'
# Needed to format the json file being checked in
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 3226ca9fde..48da971401 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -37,7 +37,7 @@ jobs:
- name: Set up Node
uses: actions/setup-node@v4
with:
- node-version: 18
+ node-version: 24
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
diff --git a/.github/workflows/lsp-ci.yaml b/.github/workflows/lsp-ci.yaml
index 15f87d2428..814c198f05 100644
--- a/.github/workflows/lsp-ci.yaml
+++ b/.github/workflows/lsp-ci.yaml
@@ -15,7 +15,7 @@ jobs:
- name: Set up Node
uses: actions/setup-node@v3
with:
- node-version: 18
+ node-version: 24
- name: Build
run: |
npm ci
@@ -38,7 +38,7 @@ jobs:
- name: Set up Node
uses: actions/setup-node@v3
with:
- node-version: 18
+ node-version: 24
- name: Build
run: |
npm ci
@@ -63,7 +63,7 @@ jobs:
- name: Set up Node
uses: actions/setup-node@v3
with:
- node-version: 18
+ node-version: 24
- name: Build
run: |
npm ci
@@ -79,7 +79,7 @@ jobs:
- name: Set up Node
uses: actions/setup-node@v3
with:
- node-version: 18
+ node-version: 24
- name: Build
run: |
npm ci
diff --git a/.github/workflows/npm-packaging.yaml b/.github/workflows/npm-packaging.yaml
index d4ce77e07c..4b509d9294 100644
--- a/.github/workflows/npm-packaging.yaml
+++ b/.github/workflows/npm-packaging.yaml
@@ -15,7 +15,7 @@ jobs:
- name: Set up Node
uses: actions/setup-node@v3
with:
- node-version: 18
+ node-version: 24
- name: Install dependencies
run: npm ci
- name: Build all monorepo packages
diff --git a/.github/workflows/release-please.yaml b/.github/workflows/release-please.yaml
index a8574c045c..4d28d449b0 100644
--- a/.github/workflows/release-please.yaml
+++ b/.github/workflows/release-please.yaml
@@ -6,7 +6,7 @@ on:
- main
permissions:
- id-token: write # This is required for requesting the JWT (aws-actions/configure-aws-credentials)
+ id-token: write # Required for OIDC authentication with npm
contents: write # to create release commit (google-github-actions/release-please-action)
pull-requests: write # to create release PR (google-github-actions/release-please-action)
@@ -31,34 +31,14 @@ jobs:
persist-credentials: false
if: ${{ fromJson(steps.release.outputs.releases_created) }}
- - name: Configure AWS Credentials
- uses: aws-actions/configure-aws-credentials@v4
- with:
- role-to-assume: arn:aws:iam::935785792371:role/GithubNpmPublishAction
- role-session-name: language-servers-github
- aws-region: us-east-1
- if: ${{ fromJson(steps.release.outputs.releases_created) }}
-
- - name: Get npm access token
- uses: aws-actions/aws-secretsmanager-get-secrets@v2
- with:
- secret-ids: |
- npmjs/github_automation
- parse-json-secrets: true
- if: ${{ fromJson(steps.release.outputs.releases_created) }}
-
- name: Setup Nodejs
uses: actions/setup-node@v4
with:
- node-version: '20.x'
+ node-version: '24.x'
registry-url: 'https://registry.npmjs.org'
scope: '@aws'
if: ${{ fromJson(steps.release.outputs.releases_created) }}
- - name: Set token
- run: echo "NODE_AUTH_TOKEN=${{ env.NPMJS_GITHUB_AUTOMATION_TOKEN }}" >> $GITHUB_ENV
- if: ${{ fromJson(steps.release.outputs.releases_created) }}
-
- name: Compile and test packages
run: |
npm clean-install
diff --git a/.gitignore b/.gitignore
index fbdc246265..8f3af70b45 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,8 @@ build
**/*.tgz
!core/codewhisperer-streaming/amzn-codewhisperer-streaming-*.tgz
!core/q-developer-streaming-client/amzn-amazon-q-developer-streaming-client-*.tgz
+!core/codewhisperer-runtime/amzn-codewhisperer-runtime-*.tgz
+!core/codewhisperer/amzn-codewhisperer-*.tgz
!server/aws-lsp-codewhisperer/types/types-local-indexing-*.tgz
.testresults/**
diff --git a/.prettierignore b/.prettierignore
index d115549b16..89ecd86fb3 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -4,7 +4,5 @@ node_modules/
out/
**/bin/
**/obj/
-server/aws-lsp-codewhisperer/src/client/sigv4/codewhisperersigv4client.d.ts
-server/aws-lsp-codewhisperer/src/client/token/codewhispererbearertokenclient.d.ts
**/*.md
**/antlr-generated/
\ No newline at end of file
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 49f118f219..bc93e9f8a7 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,9 +1,9 @@
{
- "chat-client": "0.1.33",
- "core/aws-lsp-core": "0.0.14",
- "server/aws-lsp-antlr4": "0.1.18",
- "server/aws-lsp-codewhisperer": "0.0.75",
- "server/aws-lsp-json": "0.1.18",
- "server/aws-lsp-partiql": "0.0.17",
- "server/aws-lsp-yaml": "0.1.18"
+ "chat-client": "0.1.42",
+ "core/aws-lsp-core": "0.0.17",
+ "server/aws-lsp-antlr4": "0.1.21",
+ "server/aws-lsp-codewhisperer": "0.0.93",
+ "server/aws-lsp-json": "0.1.22",
+ "server/aws-lsp-partiql": "0.0.19",
+ "server/aws-lsp-yaml": "0.1.22"
}
diff --git a/app/aws-lsp-antlr4-runtimes/package.json b/app/aws-lsp-antlr4-runtimes/package.json
index 89fa95dcb3..49c60085ad 100644
--- a/app/aws-lsp-antlr4-runtimes/package.json
+++ b/app/aws-lsp-antlr4-runtimes/package.json
@@ -12,10 +12,10 @@
"webpack": "webpack"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-antlr4": "*",
- "antlr4-c3": "^3.4.1",
- "antlr4ng": "^3.0.4"
+ "antlr4-c3": "^3.4.2",
+ "antlr4ng": "^3.0.14"
},
"devDependencies": {
"@types/chai": "^4.3.5",
@@ -26,7 +26,7 @@
"chai-as-promised": "^7.1.1",
"mocha": "^11.0.1",
"ts-loader": "^9.4.4",
- "ts-lsp-client": "^1.0.3",
+ "ts-lsp-client": "1.0.3",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
}
diff --git a/app/aws-lsp-buildspec-runtimes/package.json b/app/aws-lsp-buildspec-runtimes/package.json
index 0ad07ddb8f..d9cd2cefaf 100644
--- a/app/aws-lsp-buildspec-runtimes/package.json
+++ b/app/aws-lsp-buildspec-runtimes/package.json
@@ -7,7 +7,7 @@
"compile": "tsc --build"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-buildspec": "^0.0.1"
}
}
diff --git a/app/aws-lsp-buildspec-runtimes/src/index.ts b/app/aws-lsp-buildspec-runtimes/src/index.ts
index 26ae30fb17..e083578a4a 100644
--- a/app/aws-lsp-buildspec-runtimes/src/index.ts
+++ b/app/aws-lsp-buildspec-runtimes/src/index.ts
@@ -23,7 +23,8 @@ const props: BuildspecServerProps = {
}
async function getFileAsync(url: string): Promise {
- return await httpsUtils.requestContent(url)
+ const response = await httpsUtils.requestContent(url)
+ return response.content
}
export const server = new BuildspecServer(props)
diff --git a/app/aws-lsp-cloudformation-runtimes/package.json b/app/aws-lsp-cloudformation-runtimes/package.json
index d211149d0d..7b2cc87389 100644
--- a/app/aws-lsp-cloudformation-runtimes/package.json
+++ b/app/aws-lsp-cloudformation-runtimes/package.json
@@ -7,7 +7,7 @@
"compile": "tsc --build"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-cloudformation": "^0.0.1"
}
}
diff --git a/app/aws-lsp-cloudformation-runtimes/src/index.ts b/app/aws-lsp-cloudformation-runtimes/src/index.ts
index bfe18fbcdc..b1f9952e11 100644
--- a/app/aws-lsp-cloudformation-runtimes/src/index.ts
+++ b/app/aws-lsp-cloudformation-runtimes/src/index.ts
@@ -49,7 +49,8 @@ const props: CloudFormationServerProps = {
}
async function getFileAsync(url: string): Promise {
- return await httpsUtils.requestContent(url)
+ const response = await httpsUtils.requestContent(url)
+ return response.content
}
export const server = new CloudFormationServer(props)
diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip
index 24fbdb712c..afcffcf996 100644
--- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip
+++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5f651f5364b2417df24d40cbd2d34d69f8b338f3f00aca9c5afd5b4f9ea3d22d
-size 96647490
+oid sha256:a249b68b93d013aba780f5a6ff07b38ce2fe97aae88368293db75da464e5f617
+size 96645801
diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip
index 14d5e51377..3bffd7519b 100644
--- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip
+++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:03ef43ac80e2a16e8c842e92a3f3285d5424f2ea99bba167b9cbb9dabb751262
-size 98328127
+oid sha256:22e8b95cb7819fc1581013c31e2a1f025ba023dd67bd83896d90a465a0cd93e7
+size 98326438
diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip
index af6aae68c3..eb07f4b10c 100644
--- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip
+++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:33bf50f87b67a330b3dc28f9a2fb1678f5c9cd6eb33beb964b6b068790b05b6c
-size 102589811
+oid sha256:3ba6ec53a9e47363b68f280b0abc2a8701ea36337fc210f3a0c9cc1bc5e7b320
+size 102588122
diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip
index 4923a60a7f..6485875861 100644
--- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip
+++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ec71aea47b7cb08c13e94fe4ca284b3656d23266bcdd728a3525abd7939730f0
-size 114552140
+oid sha256:84e3b9810bee7b747fb055fcb3928bb1d278e52299819972c5e560a308459649
+size 114550451
diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip
index fe962b88c0..151da7c1c0 100644
--- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip
+++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cd8190acad1f1c2b37a818fcf606cc3d2fa4e1929c82ef967ac360b7345864b4
-size 113890248
+oid sha256:fa088c41b5bdcf8f93e6b77bee8befa687d44e51667f94bcd15f0feb24b48255
+size 113888559
diff --git a/app/aws-lsp-codewhisperer-runtimes/package.json b/app/aws-lsp-codewhisperer-runtimes/package.json
index b890c01a78..4ef8c94120 100644
--- a/app/aws-lsp-codewhisperer-runtimes/package.json
+++ b/app/aws-lsp-codewhisperer-runtimes/package.json
@@ -23,7 +23,7 @@
"local-build": "node scripts/local-build.js"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-codewhisperer": "*",
"copyfiles": "^2.4.1",
"cross-env": "^7.0.3",
@@ -35,6 +35,7 @@
"process": "^0.11.10",
"stream-browserify": "^3.0.0",
"stream-http": "^3.2.0",
+ "url": "^0.11.4",
"vscode-languageserver": "^9.0.1",
"wdio": "^6.0.1",
"webpack-dev-server": "^5.2.0"
diff --git a/app/aws-lsp-codewhisperer-runtimes/scripts/download-node.sh b/app/aws-lsp-codewhisperer-runtimes/scripts/download-node.sh
index f0635fd8ff..35322d871b 100755
--- a/app/aws-lsp-codewhisperer-runtimes/scripts/download-node.sh
+++ b/app/aws-lsp-codewhisperer-runtimes/scripts/download-node.sh
@@ -4,17 +4,20 @@
# build/node-assets, which is picked up
# by src/scripts/copy-node-assets.ts, to produce the final bundle.
-set -e
-NODE_VERSION="18"
-BASE_URL="https://nodejs.org/download/release/latest-v${NODE_VERSION}.x"
+set -eo pipefail
+NODE_VERSION="24"
+BASE_URL="https://nodejs.org/download/release/v24.9.0"
SHASUMS_FILE="SHASUMS256.txt"
ASSETS_DIR="build/node-assets"
# Download SHASUMS256.txt
-wget -q "$BASE_URL/$SHASUMS_FILE" -O "$SHASUMS_FILE"
+curl -s "$BASE_URL/$SHASUMS_FILE" -o "$SHASUMS_FILE"
# Extract exact Node.js version from any entry in SHASUMS256.txt
-NODE_SEMVER=$(grep -o 'node-v[0-9]*\.[0-9]*\.[0-9]*' SHASUMS256.txt | head -1 | cut -d'v' -f2)
+# NODE_SEMVER=$(grep -o 'node-v[0-9]*\.[0-9]*\.[0-9]*' SHASUMS256.txt | head -1 | cut -d'v' -f2)
+
+# temporarily lock node.js version to 24.9.0 due to https://github.com/nodejs/node/issues/60176
+NODE_SEMVER="24.9.0"
if [ -z "$NODE_SEMVER" ]; then
echo "Failed to extract Node.js version from SHASUMS256.txt"
@@ -47,7 +50,7 @@ for actual_file in "${EXPECTED_FILES[@]}"; do
echo "Updating $actual_file"
mkdir -p "$(dirname "$filepath")"
- wget -q "$BASE_URL/$actual_file" -O $filepath
+ curl -s "$BASE_URL/$actual_file" -o "$filepath"
else
echo "Warning: $actual_file not found in SHASUMS256.txt"
fi
@@ -58,7 +61,7 @@ LICENSE_URL="https://raw.githubusercontent.com/nodejs/node/v${NODE_SEMVER}/LICEN
LICENSE_FILE="$ASSETS_DIR/LICENSE"
echo "Fetching Node.js license from $LICENSE_URL"
-wget -q "$LICENSE_URL" -O "$LICENSE_FILE"
+curl -s "$LICENSE_URL" -o "$LICENSE_FILE"
# Verify the license file was downloaded successfully
if [ ! -s "$LICENSE_FILE" ]; then
@@ -69,9 +72,6 @@ fi
echo "License file has been updated in $LICENSE_FILE"
-# Read the escaped license text
-LICENSE_TEXT=$(cat "$LICENSE_FILE")
-
# Update the attribution overrides file
ATTRIBUTION_FILE="../../attribution/overrides.json"
@@ -86,12 +86,14 @@ fi
jq --indent 4 \
--arg name "Node.js" \
--arg version "$NODE_SEMVER" \
- --arg licenseText "$LICENSE_TEXT" \
+ --rawfile licenseText "$LICENSE_FILE" \
--arg url "https://github.com/nodejs/node" \
--arg license "MIT" \
'.node.name = $name | .node.version = $version | .node.url = $url | .node.license = $license | .node.licenseText = $licenseText' \
- "$ATTRIBUTION_FILE" > "$ATTRIBUTION_FILE.tmp" && mv "$ATTRIBUTION_FILE.tmp" "$ATTRIBUTION_FILE"
+ "$ATTRIBUTION_FILE" > "$ATTRIBUTION_FILE.tmp"
+
+mv "$ATTRIBUTION_FILE.tmp" "$ATTRIBUTION_FILE"
echo "Successfully updated Node.js version and license in $ATTRIBUTION_FILE"
# Cleanup
-rm -f "$SHASUMS_FILE"
\ No newline at end of file
+rm -f "$SHASUMS_FILE"
diff --git a/app/aws-lsp-codewhisperer-runtimes/scripts/dummy-package.json b/app/aws-lsp-codewhisperer-runtimes/scripts/dummy-package.json
new file mode 100644
index 0000000000..e99a45a547
--- /dev/null
+++ b/app/aws-lsp-codewhisperer-runtimes/scripts/dummy-package.json
@@ -0,0 +1,8 @@
+{
+ "//": [
+ "https://nodejs.org/api/packages.html#determining-module-system",
+ "This file is included with the Flare distribution to serve as the 'nearest parent package.json file' to force Node.js to treat Flare as CommonJS.",
+ "Otherwise, startup may fail when Node.js incorrectly decides to use the ES module loader instead of CJS due to user's home directory structure"
+ ],
+ "type": "commonjs"
+}
diff --git a/app/aws-lsp-codewhisperer-runtimes/scripts/package.sh b/app/aws-lsp-codewhisperer-runtimes/scripts/package.sh
index 021b4b8080..2148a7de30 100755
--- a/app/aws-lsp-codewhisperer-runtimes/scripts/package.sh
+++ b/app/aws-lsp-codewhisperer-runtimes/scripts/package.sh
@@ -18,6 +18,18 @@ TARGET_BUILD_DIR=./build/private/bundle/client
mkdir -p $TARGET_BUILD_DIR
cp -r $CHAT_CLIENT_BUNDLE_DIR/* $TARGET_BUILD_DIR
+# Add benign files to avoid single-file archive flagging
+echo "Amazon Q Developer UI Bundle - $(date)" > $TARGET_BUILD_DIR/README.txt
+echo "This archive contains UI assets for Amazon Q Developer." >> $TARGET_BUILD_DIR/README.txt
+cat > $TARGET_BUILD_DIR/client-metadata.json << EOF
+{
+ "name": "amazonq-ui-bundle",
+ "description": "UI assets for Amazon Q Developer",
+ "main": "amazonq-ui.js",
+ "dateCreated": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
+}
+EOF
+
# ZIP client files
ARCHIVES_DIR=./build/archives
mkdir -p $ARCHIVES_DIR/shared
@@ -105,6 +117,7 @@ done
cd ./build/private/bundle
for config in "${configs[@]}"; do
cd ${config}
+ cp -r ../../../../scripts/dummy-package.json ./package.json
zip -r ../../../../$ARCHIVES_DIR/${config}/win-x64/servers.zip .
zip -r ../../../../$ARCHIVES_DIR/${config}/linux-x64/servers.zip .
zip -r ../../../../$ARCHIVES_DIR/${config}/mac-x64/servers.zip .
diff --git a/app/aws-lsp-codewhisperer-runtimes/src/agent-standalone.ts b/app/aws-lsp-codewhisperer-runtimes/src/agent-standalone.ts
index 7996472ada..49600a91b8 100644
--- a/app/aws-lsp-codewhisperer-runtimes/src/agent-standalone.ts
+++ b/app/aws-lsp-codewhisperer-runtimes/src/agent-standalone.ts
@@ -3,7 +3,7 @@ import {
AmazonQServiceServerIAM,
AmazonQServiceServerToken,
CodeWhispererSecurityScanServerTokenProxy,
- CodeWhispererServerTokenProxy,
+ CodeWhispererServer,
QAgenticChatServerProxy,
QConfigurationServerTokenProxy,
QLocalProjectContextServerProxy,
@@ -25,7 +25,7 @@ const version = versionJson.agenticChat
const props = {
version: version,
servers: [
- CodeWhispererServerTokenProxy,
+ CodeWhispererServer,
CodeWhispererSecurityScanServerTokenProxy,
QConfigurationServerTokenProxy,
QNetTransformServerTokenProxy,
diff --git a/app/aws-lsp-codewhisperer-runtimes/src/version.json b/app/aws-lsp-codewhisperer-runtimes/src/version.json
index 93401eb637..0bc3e55b05 100644
--- a/app/aws-lsp-codewhisperer-runtimes/src/version.json
+++ b/app/aws-lsp-codewhisperer-runtimes/src/version.json
@@ -1,3 +1,3 @@
{
- "agenticChat": "1.29.0"
+ "agenticChat": "1.47.1"
}
diff --git a/app/aws-lsp-codewhisperer-runtimes/webpack.config.js b/app/aws-lsp-codewhisperer-runtimes/webpack.config.js
index 2882ae8ac9..f10f3d0202 100644
--- a/app/aws-lsp-codewhisperer-runtimes/webpack.config.js
+++ b/app/aws-lsp-codewhisperer-runtimes/webpack.config.js
@@ -80,6 +80,7 @@ const webworkerConfig = {
http: 'stream-http',
crypto: 'crypto-browserify',
stream: 'stream-browserify',
+ url: require.resolve('url/'),
fs: path.resolve(__dirname, 'src/mock-fs.js'),
child_process: false,
vm: false,
diff --git a/app/aws-lsp-identity-runtimes/package.json b/app/aws-lsp-identity-runtimes/package.json
index f33fa80da4..f24156f2a6 100644
--- a/app/aws-lsp-identity-runtimes/package.json
+++ b/app/aws-lsp-identity-runtimes/package.json
@@ -7,7 +7,7 @@
"compile": "tsc --build"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-identity": "^0.0.1"
}
}
diff --git a/app/aws-lsp-json-runtimes/package.json b/app/aws-lsp-json-runtimes/package.json
index db1949f54b..1073894a41 100644
--- a/app/aws-lsp-json-runtimes/package.json
+++ b/app/aws-lsp-json-runtimes/package.json
@@ -11,7 +11,7 @@
"webpack": "webpack"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-json": "*"
},
"devDependencies": {
@@ -22,7 +22,7 @@
"chai-as-promised": "^7.1.1",
"mocha": "^11.0.1",
"ts-loader": "^9.4.4",
- "ts-lsp-client": "^1.0.3",
+ "ts-lsp-client": "1.0.3",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
}
diff --git a/app/aws-lsp-notification-runtimes/package.json b/app/aws-lsp-notification-runtimes/package.json
index a5eeecae49..3ec6f10249 100644
--- a/app/aws-lsp-notification-runtimes/package.json
+++ b/app/aws-lsp-notification-runtimes/package.json
@@ -7,7 +7,7 @@
"compile": "tsc --build"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-notification": "^0.0.1"
}
}
diff --git a/app/aws-lsp-partiql-runtimes/package.json b/app/aws-lsp-partiql-runtimes/package.json
index d483f3d0ce..ebf9473883 100644
--- a/app/aws-lsp-partiql-runtimes/package.json
+++ b/app/aws-lsp-partiql-runtimes/package.json
@@ -11,12 +11,12 @@
"package": "npm run compile && npm run compile:webpack"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.125",
- "@aws/lsp-partiql": "^0.0.5"
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-partiql": "0.0.19"
},
"devDependencies": {
"ts-loader": "^9.4.4",
- "ts-lsp-client": "^1.0.3",
+ "ts-lsp-client": "1.0.3",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
}
diff --git a/app/aws-lsp-s3-runtimes/package.json b/app/aws-lsp-s3-runtimes/package.json
index 9feb4f7ddc..b347462a73 100644
--- a/app/aws-lsp-s3-runtimes/package.json
+++ b/app/aws-lsp-s3-runtimes/package.json
@@ -10,7 +10,7 @@
"compile": "tsc --build"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-s3": "^0.0.1"
}
}
diff --git a/app/aws-lsp-yaml-json-webworker/package.json b/app/aws-lsp-yaml-json-webworker/package.json
index fc524cabdc..6516bde888 100644
--- a/app/aws-lsp-yaml-json-webworker/package.json
+++ b/app/aws-lsp-yaml-json-webworker/package.json
@@ -11,7 +11,7 @@
"serve:webpack": "NODE_ENV=development webpack serve"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-json": "*",
"@aws/lsp-yaml": "*"
},
diff --git a/app/aws-lsp-yaml-runtimes/package.json b/app/aws-lsp-yaml-runtimes/package.json
index 09bb93ee9a..e849429bbd 100644
--- a/app/aws-lsp-yaml-runtimes/package.json
+++ b/app/aws-lsp-yaml-runtimes/package.json
@@ -11,7 +11,7 @@
"webpack": "webpack"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-yaml": "*"
},
"devDependencies": {
@@ -22,7 +22,7 @@
"chai-as-promised": "^7.1.1",
"mocha": "^11.0.1",
"ts-loader": "^9.4.4",
- "ts-lsp-client": "^1.0.3",
+ "ts-lsp-client": "1.0.3",
"umd-compat-loader": "^2.1.2",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
diff --git a/app/hello-world-lsp-runtimes/package.json b/app/hello-world-lsp-runtimes/package.json
index bff976d9b3..7bced44254 100644
--- a/app/hello-world-lsp-runtimes/package.json
+++ b/app/hello-world-lsp-runtimes/package.json
@@ -15,7 +15,7 @@
},
"dependencies": {
"@aws/hello-world-lsp": "^0.0.1",
- "@aws/language-server-runtimes": "^0.2.127"
+ "@aws/language-server-runtimes": "0.3.6"
},
"devDependencies": {
"@types/chai": "^4.3.5",
@@ -25,7 +25,7 @@
"chai-as-promised": "^7.1.1",
"mocha": "^11.0.1",
"ts-loader": "^9.4.4",
- "ts-lsp-client": "^1.0.3",
+ "ts-lsp-client": "1.0.3",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
}
diff --git a/chat-client/CHANGELOG.md b/chat-client/CHANGELOG.md
index 995ddc8ae6..822d74659b 100644
--- a/chat-client/CHANGELOG.md
+++ b/chat-client/CHANGELOG.md
@@ -1,5 +1,75 @@
# Changelog
+## [0.1.42](https://github.com/aws/language-servers/compare/chat-client/v0.1.41...chat-client/v0.1.42) (2025-11-21)
+
+
+### Features
+
+* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811))
+
+## [0.1.41](https://github.com/aws/language-servers/compare/chat-client/v0.1.40...chat-client/v0.1.41) (2025-11-04)
+
+
+### Bug Fixes
+
+* **amazonq:** mcp tool panel blocks amazon q chat interface when using right-click context menu ([#2442](https://github.com/aws/language-servers/issues/2442)) ([11900ca](https://github.com/aws/language-servers/commit/11900ca371adee2611698427dbec7c9323ef8e01))
+
+## [0.1.40](https://github.com/aws/language-servers/compare/chat-client/v0.1.39...chat-client/v0.1.40) (2025-10-21)
+
+
+### Features
+
+* send pinned context button immediately with pending state ([#2353](https://github.com/aws/language-servers/issues/2353)) ([bee5cad](https://github.com/aws/language-servers/commit/bee5cadeaf8840a8af08acfe8b58442aac7ad567))
+
+## [0.1.39](https://github.com/aws/language-servers/compare/chat-client/v0.1.38...chat-client/v0.1.39) (2025-10-09)
+
+
+### Features
+
+* add model description to dropdown ([#2374](https://github.com/aws/language-servers/issues/2374)) ([ed8c6dd](https://github.com/aws/language-servers/commit/ed8c6dda1312f728e9ee7472f7ca447196ad9d84))
+
+## [0.1.38](https://github.com/aws/language-servers/compare/chat-client/v0.1.37...chat-client/v0.1.38) (2025-10-01)
+
+
+### Bug Fixes
+
+* **amazonq:** Fix mock fs clean; Node version upgrade ([#2324](https://github.com/aws/language-servers/issues/2324)) ([1d9afd4](https://github.com/aws/language-servers/commit/1d9afd410e19624223e300ca06ea7d08a112cc82))
+* optimize memory bank token usage and add new tab support ([#2366](https://github.com/aws/language-servers/issues/2366)) ([3057d56](https://github.com/aws/language-servers/commit/3057d56e4a3047d1715d6e3560e9f934d1de469c))
+
+## [0.1.37](https://github.com/aws/language-servers/compare/chat-client/v0.1.36...chat-client/v0.1.37) (2025-09-24)
+
+
+### Features
+
+* memory bank support ([#2314](https://github.com/aws/language-servers/issues/2314)) ([0e215fc](https://github.com/aws/language-servers/commit/0e215fc0e475b4c40a8237492371716982d4d532))
+
+## [0.1.36](https://github.com/aws/language-servers/compare/chat-client/v0.1.35...chat-client/v0.1.36) (2025-09-16)
+
+
+### Bug Fixes
+
+* migration from /agents ux ([#2248](https://github.com/aws/language-servers/issues/2248)) ([debeb41](https://github.com/aws/language-servers/commit/debeb414fd0d4d873af2f36cde0ebbeab16d16a4))
+
+## [0.1.35](https://github.com/aws/language-servers/compare/chat-client/v0.1.34...chat-client/v0.1.35) (2025-09-09)
+
+
+### Features
+
+* add support for getSupplementalContext LSP API ([#2212](https://github.com/aws/language-servers/issues/2212)) ([2ddcae7](https://github.com/aws/language-servers/commit/2ddcae7a4fac6b89cbc9784911959743ea0a6d11))
+* **amazonq:** default to diff-based scans ([#2195](https://github.com/aws/language-servers/issues/2195)) ([da4c3db](https://github.com/aws/language-servers/commit/da4c3db5329bd50cfe249bf8c1d59afa9bcb0157))
+
+## [0.1.34](https://github.com/aws/language-servers/compare/chat-client/v0.1.33...chat-client/v0.1.34) (2025-08-27)
+
+
+### Features
+
+* Auto fetch models from listAvailableModels API ([#2171](https://github.com/aws/language-servers/issues/2171)) ([8600c52](https://github.com/aws/language-servers/commit/8600c524877abb459e9338399352446c0dcff6f0))
+
+
+### Bug Fixes
+
+* **amazonq:** disable typewriter animation ([#2160](https://github.com/aws/language-servers/issues/2160)) ([db45d01](https://github.com/aws/language-servers/commit/db45d01adba10e8a04d868e1062f899df4f5b7e4))
+
## [0.1.33](https://github.com/aws/language-servers/compare/chat-client/v0.1.32...chat-client/v0.1.33) (2025-08-19)
@@ -447,8 +517,8 @@
### Changed
-- Update `@aws/chat-client-ui-types` to 0.1.35
-- Update `@aws/language-server-runtimes-types` to 0.1.29
+- Update `@aws/chat-client-ui-types` to 0.1.63
+- Update `@aws/language-server-runtimes-types` to 0.1.57
- Shortened legal text in the footer
## [0.0.9] - 2024-11-20
@@ -472,8 +542,8 @@
### Changed
- Changed legal text in the footer
-- Update `@aws/chat-client-ui-types` to 0.1.35
-- Update `@aws/language-server-runtimes-types` to 0.1.29
+- Update `@aws/chat-client-ui-types` to 0.1.63
+- Update `@aws/language-server-runtimes-types` to 0.1.57
- Upgraded dependency: `@aws/mynah-ui` from 4.15.11 to 4.18.0:
- Inline code elements now wrap onto new lines
- Send button no longer shifts out of the window when horizontally filling the prompt input without spaces (now it wraps)
diff --git a/chat-client/package.json b/chat-client/package.json
index e4250d42a1..ac7194974b 100644
--- a/chat-client/package.json
+++ b/chat-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@aws/chat-client",
- "version": "0.1.33",
+ "version": "0.1.42",
"description": "AWS Chat Client",
"main": "out/index.js",
"repository": {
@@ -24,10 +24,10 @@
"package": "webpack"
},
"dependencies": {
- "@aws/chat-client-ui-types": "^0.1.56",
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/language-server-runtimes-types": "^0.1.50",
- "@aws/mynah-ui": "^4.36.5"
+ "@aws/chat-client-ui-types": "0.1.68",
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/language-server-runtimes-types": "0.1.62",
+ "@aws/mynah-ui": "^4.38.0"
},
"devDependencies": {
"@types/jsdom": "^21.1.6",
diff --git a/chat-client/src/client/chat.ts b/chat-client/src/client/chat.ts
index d090a33f70..58519d96ef 100644
--- a/chat-client/src/client/chat.ts
+++ b/chat-client/src/client/chat.ts
@@ -116,7 +116,6 @@ import { InboundChatApi, createMynahUi } from './mynahUi'
import { TabFactory } from './tabs/tabFactory'
import { ChatClientAdapter } from '../contracts/chatClientAdapter'
import { toMynahContextCommand, toMynahIcon } from './utils'
-import { modelSelectionForRegion } from './texts/modelSelection'
const getDefaultTabConfig = (agenticMode?: boolean) => {
return {
@@ -264,20 +263,6 @@ export const createChat = (
return option
}),
})
- } else if (message.params.region) {
- // TODO: This can be removed after all clients support aws/chat/listAvailableModels
- // get all tabs and update region
- const allExistingTabs: MynahUITabStoreModel = mynahUi.getAllTabs()
- for (const tabId in allExistingTabs) {
- const options = mynahUi.getTabData(tabId).getStore()?.promptInputOptions
- mynahUi.updateStore(tabId, {
- promptInputOptions: options?.map(option =>
- option.id === 'model-selection'
- ? modelSelectionForRegion[message.params.region]
- : option
- ),
- })
- }
} else {
tabFactory.setInfoMessages((message.params as ChatOptionsUpdateParams).chatNotifications)
}
diff --git a/chat-client/src/client/features/rules.test.ts b/chat-client/src/client/features/rules.test.ts
index c8f93ed4eb..e37be8cdb8 100644
--- a/chat-client/src/client/features/rules.test.ts
+++ b/chat-client/src/client/features/rules.test.ts
@@ -16,12 +16,17 @@ describe('rules', () => {
mynahUi = {
openTopBarButtonOverlay: sinon.stub(),
showCustomForm: sinon.stub(),
+ getAllTabs: sinon.stub().returns({}),
+ updateStore: sinon.stub().returns('new-tab-id'),
+ notify: sinon.stub(),
} as unknown as MynahUI
openTopBarButtonOverlayStub = mynahUi.openTopBarButtonOverlay as sinon.SinonStub
showCustomFormStub = mynahUi.showCustomForm as sinon.SinonStub
messager = {
onRuleClick: sinon.stub(),
+ onChatPrompt: sinon.stub(),
+ onTabAdd: sinon.stub(),
} as unknown as Messager
rulesList = new RulesList(mynahUi, messager)
@@ -142,6 +147,27 @@ describe('rules', () => {
assert.equal(formArgs[2][1].id, ContextRule.SubmitButtonId)
})
+ it('calls messager when create memory bank is clicked', () => {
+ const createMemoryBankItem: DetailedListItem = {
+ id: ContextRule.CreateMemoryBankId,
+ description: 'Generate Memory Bank',
+ }
+
+ onItemClick(createMemoryBankItem)
+
+ // Should create new tab and send chat prompt
+ sinon.assert.calledOnce(messager.onTabAdd as sinon.SinonStub)
+ sinon.assert.calledOnce(messager.onChatPrompt as sinon.SinonStub)
+
+ const tabAddArgs = (messager.onTabAdd as sinon.SinonStub).getCall(0).args[0]
+ assert.equal(tabAddArgs, 'new-tab-id')
+
+ const chatPromptArgs = (messager.onChatPrompt as sinon.SinonStub).getCall(0).args[0]
+ assert.equal(chatPromptArgs.prompt.prompt, 'Generate a Memory Bank for this project')
+ assert.equal(chatPromptArgs.prompt.escapedPrompt, 'Generate a Memory Bank for this project')
+ assert.equal(chatPromptArgs.tabId, 'new-tab-id')
+ })
+
it('calls messager when regular rule is clicked', () => {
const ruleItem: DetailedListItem = {
id: 'test-rule-id',
@@ -267,21 +293,27 @@ describe('rules', () => {
const result = convertRulesListToDetailedListGroup(rulesFolder)
- assert.equal(result.length, 3) // 2 folders + create rule group
+ assert.equal(result.length, 3) // 2 folders + actions group
assert.equal(result[0].groupName, 'test-folder')
assert.equal(result[0].children?.length, 2)
assert.equal(result[0].children?.[0].id, 'rule-1')
assert.equal(result[0].children?.[0].description, 'Test Rule 1')
assert.equal(result[1].groupName, 'inactive-folder')
assert.equal(result[1].children?.length, 0)
- assert.equal(result[2].children?.[0].id, ContextRule.CreateRuleId)
+ assert.equal(result[2].groupName, 'Actions')
+ assert.equal(result[2].children?.length, 2) // Memory Bank + Create Rule
+ assert.equal(result[2].children?.[0].id, ContextRule.CreateMemoryBankId)
+ assert.equal(result[2].children?.[1].id, ContextRule.CreateRuleId)
})
it('handles empty rules array', () => {
const result = convertRulesListToDetailedListGroup([])
- assert.equal(result.length, 1) // Only create rule group
- assert.equal(result[0].children?.[0].id, ContextRule.CreateRuleId)
+ assert.equal(result.length, 1) // Only actions group
+ assert.equal(result[0].groupName, 'Actions')
+ assert.equal(result[0].children?.length, 2) // Memory Bank + Create Rule
+ assert.equal(result[0].children?.[0].id, ContextRule.CreateMemoryBankId)
+ assert.equal(result[0].children?.[1].id, ContextRule.CreateRuleId)
})
})
})
diff --git a/chat-client/src/client/features/rules.ts b/chat-client/src/client/features/rules.ts
index f5ea2cca22..585b33144c 100644
--- a/chat-client/src/client/features/rules.ts
+++ b/chat-client/src/client/features/rules.ts
@@ -1,4 +1,11 @@
-import { MynahIconsType, MynahUI, DetailedListItem, DetailedListItemGroup, MynahIcons } from '@aws/mynah-ui'
+import {
+ MynahIconsType,
+ MynahUI,
+ DetailedListItem,
+ DetailedListItemGroup,
+ MynahIcons,
+ NotificationType,
+} from '@aws/mynah-ui'
import { Messager } from '../messager'
import { ListRulesResult } from '@aws/language-server-runtimes-types'
import { RulesFolder } from '@aws/language-server-runtimes-types'
@@ -6,6 +13,7 @@ import { MynahDetailedList } from './history'
export const ContextRule = {
CreateRuleId: 'create-rule',
+ CreateMemoryBankId: 'create-memory-bank',
CancelButtonId: 'cancel-create-rule',
SubmitButtonId: 'submit-create-rule',
RuleNameFieldId: 'rule-name',
@@ -68,12 +76,53 @@ export class RulesList {
],
`Create a rule`
)
+ } else if (item.id === ContextRule.CreateMemoryBankId) {
+ this.rulesList?.close()
+ this.handleMemoryBankCreation()
} else {
this.messager.onRuleClick({ tabId: this.tabId, type: 'rule', id: item.id })
}
}
}
+ private handleMemoryBankCreation = () => {
+ // Close the rules list first
+ this.rulesList?.close()
+
+ // Check if we're at the tab limit (10 tabs max)
+ const currentTabCount = Object.keys(this.mynahUi.getAllTabs()).length
+ if (currentTabCount >= 10) {
+ // Show notification that max tabs reached
+ this.mynahUi.notify({
+ content: 'You can only open ten conversation tabs at a time.',
+ type: NotificationType.WARNING,
+ })
+ return
+ }
+
+ // Create a new tab for the memory bank generation
+ const newTabId = this.mynahUi.updateStore('', { tabTitle: 'Memory Bank' })
+ if (newTabId) {
+ // Add the new tab and switch to it
+ this.messager.onTabAdd(newTabId)
+
+ // Send the chat prompt to the new tab
+ this.messager.onChatPrompt({
+ prompt: {
+ prompt: 'Generate a Memory Bank for this project',
+ escapedPrompt: 'Generate a Memory Bank for this project',
+ },
+ tabId: newTabId,
+ })
+ } else {
+ // Show error notification if tab creation failed
+ this.mynahUi.notify({
+ content: 'Failed to create new tab for Memory Bank generation.',
+ type: NotificationType.ERROR,
+ })
+ }
+ }
+
showLoading(tabId: string) {
this.tabId = tabId
const rulesList = this.mynahUi.openTopBarButtonOverlay({
@@ -156,6 +205,24 @@ const createRuleListItem: DetailedListItem = {
id: ContextRule.CreateRuleId,
}
+function createMemoryBankListItem(rules: RulesFolder[]): DetailedListItem {
+ // Handles button text changes between "Generation" and "Regenerate"
+ const memoryBankFiles = ['product', 'structure', 'tech', 'guidelines']
+
+ const memoryBankFolder = rules.find(folder => folder.folderName === 'memory-bank')
+
+ const hasMemoryBankFiles =
+ memoryBankFolder && memoryBankFolder.rules.some(rule => memoryBankFiles.includes(rule.name))
+
+ const buttonText = hasMemoryBankFiles ? 'Regenerate Memory Bank' : 'Generate Memory Bank'
+
+ return {
+ description: buttonText,
+ icon: MynahIcons.FOLDER,
+ id: ContextRule.CreateMemoryBankId,
+ }
+}
+
export function convertRulesListToDetailedListGroup(rules: RulesFolder[]): DetailedListItemGroup[] {
return rules
.map(
@@ -179,7 +246,10 @@ export function convertRulesListToDetailedListGroup(rules: RulesFolder[]): Detai
})),
}) as DetailedListItemGroup
)
- .concat({ children: [createRuleListItem] })
+ .concat({
+ groupName: 'Actions',
+ children: [createMemoryBankListItem(rules), createRuleListItem],
+ })
}
function convertRuleStatusToIcon(status: boolean | 'indeterminate'): MynahIcons | undefined {
diff --git a/chat-client/src/client/mcpMynahUi.ts b/chat-client/src/client/mcpMynahUi.ts
index 5cdae85da1..ffc21ef772 100644
--- a/chat-client/src/client/mcpMynahUi.ts
+++ b/chat-client/src/client/mcpMynahUi.ts
@@ -57,6 +57,8 @@ export type McpFilterOption = {
export type McpListItem = {
title: string
description?: string
+ icon?: string
+ actions?: any[]
groupActions?: any
}
@@ -81,12 +83,17 @@ export class McpMynahUi {
private mynahUi: MynahUI
private messager: Messager
private isMcpServersListActive = false
+ private mcpDetailedList: { close: () => void } | undefined
constructor(mynahUi: MynahUI, messager: Messager) {
this.mynahUi = mynahUi
this.messager = messager
}
+ close() {
+ this.mcpDetailedList?.close()
+ }
+
/**
* Processes filter options by converting icons to Mynah icons
*/
@@ -127,6 +134,8 @@ export class McpMynahUi {
return {
title: item.title,
description: item.description,
+ icon: item.icon ? toMynahIcon(item.icon) : undefined,
+ actions: item.groupActions,
}
})
@@ -200,7 +209,7 @@ export class McpMynahUi {
/**
* Creates a detailed list configuration for viewing an MCP server
*/
- private createViewMcpServerDetailedList(params: McpServerParams) {
+ private createViewMcpServerDetailedList(params: McpServerParams, isMcpRegistry: boolean = false) {
const detailedList = {
selectable: false,
textDirection: 'row',
@@ -220,10 +229,14 @@ export class McpMynahUi {
...(action.id === MCP_IDS.DETAILS_MENU
? {
items: [
- {
- id: MCP_IDS.DISABLE_SERVER,
- text: `Disable MCP server`,
- },
+ ...(!isMcpRegistry
+ ? [
+ {
+ id: MCP_IDS.DISABLE_SERVER,
+ text: `Disable MCP server`,
+ },
+ ]
+ : []),
{
id: MCP_IDS.DELETE_SERVER,
confirmation: {
@@ -397,7 +410,7 @@ export class McpMynahUi {
;(detailedList.filterOptions[0] as any).autoFocus = true
}
- const mcpSheet = this.mynahUi.openDetailedList({
+ this.mcpDetailedList = this.mynahUi.openDetailedList({
detailedList: detailedList,
events: {
onFilterValueChange: (filterValues: Record) => {
@@ -405,7 +418,7 @@ export class McpMynahUi {
},
onKeyPress: (e: KeyboardEvent) => {
if (e.key === 'Escape') {
- mcpSheet.close()
+ this.mcpDetailedList?.close()
}
},
onItemSelect: (item: DetailedListItem) => {
@@ -426,6 +439,7 @@ export class McpMynahUi {
},
onClose: () => {
this.isMcpServersListActive = false
+ this.mcpDetailedList = undefined
},
onTitleActionClick: button => {
this.messager.onMcpServerClick(button.id)
@@ -435,96 +449,220 @@ export class McpMynahUi {
}
/**
- * Handles MCP server click events
+ * Creates a detailed list for registry server view
*/
- public mcpServerClick(params: McpServerClickResult) {
- const typedParams = params as McpServerParams
- if (params.id === MCP_IDS.ADD_NEW || params.id === MCP_IDS.EDIT || params.id === MCP_IDS.FIX_SERVER) {
- this.mynahUi.toggleSplashLoader(false)
+ private createRegistryServerDetailedList(params: McpServerParams): any {
+ return {
+ selectable: false,
+ textDirection: 'column' as const,
+ header: {
+ title: params.header?.title || 'Add MCP Server',
+ description: params.header?.description || '',
+ status: params.header?.status,
+ actions: params.header?.actions?.map(action => ({
+ ...action,
+ icon: action.icon ? toMynahIcon(action.icon) : undefined,
+ ...(action.id === MCP_IDS.DETAILS_MENU
+ ? {
+ items: [
+ {
+ id: MCP_IDS.DELETE_SERVER,
+ confirmation: {
+ cancelButtonText: 'Cancel',
+ confirmButtonText: 'Delete',
+ title: `Delete ${
+ params.header?.title &&
+ params.header.title.length > MCP_UI_CONSTANTS.MAX_SERVER_NAME_LENGTH
+ ? params.header.title.slice(
+ 0,
+ MCP_UI_CONSTANTS.MAX_SERVER_NAME_LENGTH
+ ) + '...'
+ : params.header?.title
+ } MCP server`,
+ description:
+ 'This configuration will be deleted and no longer available in Q. \n\n This cannot be undone.',
+ },
+ text: `Delete MCP server`,
+ },
+ ],
+ }
+ : {}),
+ })),
+ },
+ filterOptions: this.processFilterOptions(params.filterOptions),
+ filterActions: params.filterActions,
+ list: params.list?.map(group => ({
+ groupName: group.groupName,
+ children: group.children?.map((item: any) => ({
+ title: item.title,
+ description: item.description,
+ icon: toMynahIcon(item.icon || 'folder'),
+ actions: (item.actions || []).map((action: any) => ({
+ id: action.id,
+ text: action.text,
+ status: action.status,
+ disabled: action.disabled,
+ })),
+ groupActions: item.groupActions,
+ })),
+ })),
+ }
+ }
- const uiFilters = (typedParams.filterOptions ?? []) as McpFilterOption[]
- const initial = uiFilters.find(f => f.id === 'transport')
- let _lastTransport = initial?.value as unknown as string
+ /**
+ * Creates events for registry server view
+ */
+ private createRegistryServerEvents(isEditMode: boolean = false, serverName?: string) {
+ return {
+ onBackClick: () => this.messager.onListMcpServers(),
+ onActionClick: (action: ChatItemButton, item?: DetailedListItem) => {
+ if (action.id === 'install-registry-server') {
+ this.mynahUi.toggleSplashLoader(true, '**Installing MCP Server**')
+ this.messager.onMcpServerClick(action.id, item?.title)
+ }
+ },
+ onFilterActionClick: (actionParams: McpServerClickResult, filterValues?: Record) => {
+ if (actionParams.id === MCP_IDS.CANCEL) {
+ this.messager.onListMcpServers()
+ return
+ }
- const detailedList = this.createAddMcpServerDetailedList(typedParams)
+ if (actionParams.id === MCP_IDS.SAVE) {
+ this.mynahUi.toggleSplashLoader(true, '**Installing MCP Server**')
+ this.messager.onMcpServerClick(actionParams.id, serverName, filterValues)
+ }
+ },
+ onTitleActionClick: (action: ChatItemButton) => {
+ const actionServerName = (action as any).data?.serverName || serverName
+ this.messager.onMcpServerClick(action.id, actionServerName)
+ },
+ }
+ }
- const events = {
- onBackClick: () => {
+ /**
+ * Creates events for manual MCP server form
+ */
+ private createManualServerEvents(lastTransport: string) {
+ let _lastTransport = lastTransport
+ return {
+ onBackClick: () => {
+ this.messager.onListMcpServers()
+ },
+ onFilterValueChange: (filterValues: Record) => {
+ const newTransport = filterValues?.transport
+ if (!newTransport || newTransport === _lastTransport) {
+ return
+ }
+
+ _lastTransport = newTransport
+ this.messager.onMcpServerClick(MCP_IDS.CHANGE_TRANSPORT, filterValues.name, filterValues)
+ },
+ onFilterActionClick: (
+ actionParams: McpServerClickResult,
+ filterValues?: Record,
+ isValid?: boolean
+ ) => {
+ if (actionParams.id === MCP_IDS.CANCEL) {
this.messager.onListMcpServers()
- },
- onFilterValueChange: (filterValues: Record) => {
- const newTransport = filterValues?.transport
- if (!newTransport || newTransport === _lastTransport) {
- return
- }
+ return
+ }
- _lastTransport = newTransport
- this.messager.onMcpServerClick(MCP_IDS.CHANGE_TRANSPORT, filterValues.name, filterValues)
- },
- onFilterActionClick: (
- actionParams: McpServerClickResult,
- filterValues?: Record,
- isValid?: boolean
- ) => {
- if (actionParams.id === MCP_IDS.CANCEL) {
- this.messager.onListMcpServers()
- return
- }
+ // new and update will share the same save-mcp
+ if (actionParams.id === MCP_IDS.SAVE) {
+ this.mynahUi.toggleSplashLoader(true, '**Activating MCP Server**')
+ this.messager.onMcpServerClick(actionParams.id, 'Save configuration', filterValues)
+ }
+ },
+ onTitleActionClick: (action: ChatItemButton) => {
+ const serverName = (action as any).data?.serverName
+ this.messager.onMcpServerClick(action.id, serverName)
+ },
+ }
+ }
- // new and update will share the same save-mcp
- if (actionParams.id === MCP_IDS.SAVE) {
- this.mynahUi.toggleSplashLoader(true, '**Activating MCP Server**')
- this.messager.onMcpServerClick(actionParams.id, 'Save configuration', filterValues)
- }
- },
- onTitleActionClick: (action: ChatItemButton) => {
- const serverName = (action as any).data?.serverName
- this.messager.onMcpServerClick(action.id, serverName)
- },
- }
+ /**
+ * Handles adding/editing MCP server (registry or manual)
+ */
+ private handleAddOrEditServer(params: McpServerClickResult) {
+ const typedParams = params as McpServerParams
+ this.mynahUi.toggleSplashLoader(false)
+
+ const isMcpRegistry = (params as any).isMcpRegistry === true
+ const isEditMode = typedParams.header?.title === 'Edit MCP Server'
+
+ if (isMcpRegistry) {
+ const detailedList = this.createRegistryServerDetailedList(typedParams)
+ const serverName = (typedParams.filterOptions?.find(f => f.id === 'name') as any)?.value as string
+ const events = this.createRegistryServerEvents(isEditMode, serverName)
this.mynahUi.openDetailedList({ detailedList, events }, true)
- } else if (params.id === MCP_IDS.OPEN_SERVER) {
- //turning off splash loader in case of being on when new server is added
- this.mynahUi.toggleSplashLoader(false)
- const detailedList = this.createViewMcpServerDetailedList(typedParams)
+ } else {
+ const uiFilters = (typedParams.filterOptions ?? []) as McpFilterOption[]
+ const initial = uiFilters.find(f => f.id === 'transport')
+ const lastTransport = initial?.value as unknown as string
- const mcpServerSheet = this.mynahUi.openDetailedList(
- {
- detailedList: detailedList,
- events: {
- onFilterValueChange: (filterValues: Record) => {
- // Handle filter value changes for tool permissions
- this.messager.onMcpServerClick(
- MCP_IDS.PERMISSION_CHANGE,
- detailedList.header?.title,
- filterValues
- )
- },
- onFilterActionClick: () => {},
- onTitleActionClick: (action: ChatItemButton) => {
- this.messager.onMcpServerClick(action.id, detailedList.header?.title)
- },
- onKeyPress: (e: KeyboardEvent) => {
- if (e.key === 'Escape') {
- mcpServerSheet.close()
- }
- },
- onActionClick: (action: ChatItemButton) => {
- // Handle action clicks (save, cancel, etc.)
- this.messager.onMcpServerClick(action.id)
- },
- onClose: () => {
- this.messager.onMcpServerClick(MCP_IDS.SAVE_PERMISSION_CHANGE)
- this.isMcpServersListActive = false
- },
- onBackClick: () => {
- this.messager.onMcpServerClick(MCP_IDS.SAVE_PERMISSION_CHANGE)
- this.messager.onListMcpServers()
- },
+ const detailedList = this.createAddMcpServerDetailedList(typedParams)
+ const events = this.createManualServerEvents(lastTransport)
+ this.mynahUi.openDetailedList({ detailedList, events }, true)
+ }
+ }
+
+ /**
+ * Handles opening MCP server details
+ */
+ private handleOpenServer(params: McpServerClickResult) {
+ const typedParams = params as McpServerParams
+ this.mynahUi.toggleSplashLoader(false)
+
+ const isMcpRegistry = (params as any).isMcpRegistry === true
+ const detailedList = this.createViewMcpServerDetailedList(typedParams, isMcpRegistry)
+
+ const mcpServerSheet = this.mynahUi.openDetailedList(
+ {
+ detailedList: detailedList,
+ events: {
+ onFilterValueChange: (filterValues: Record) => {
+ // Handle filter value changes for tool permissions
+ this.messager.onMcpServerClick(
+ MCP_IDS.PERMISSION_CHANGE,
+ detailedList.header?.title,
+ filterValues
+ )
+ },
+ onFilterActionClick: () => {},
+ onTitleActionClick: (action: ChatItemButton) => {
+ this.messager.onMcpServerClick(action.id, detailedList.header?.title)
+ },
+ onKeyPress: (e: KeyboardEvent) => {
+ if (e.key === 'Escape') {
+ mcpServerSheet.close()
+ }
+ },
+ onActionClick: (action: ChatItemButton) => {
+ // Handle action clicks (save, cancel, etc.)
+ this.messager.onMcpServerClick(action.id)
+ },
+ onClose: () => {
+ this.messager.onMcpServerClick(MCP_IDS.SAVE_PERMISSION_CHANGE)
+ this.isMcpServersListActive = false
+ },
+ onBackClick: () => {
+ this.messager.onMcpServerClick(MCP_IDS.SAVE_PERMISSION_CHANGE)
+ this.messager.onListMcpServers()
},
},
- true
- )
+ },
+ true
+ )
+ }
+
+ /**
+ * Handles MCP server click events
+ */
+ public mcpServerClick(params: McpServerClickResult) {
+ if (params.id === MCP_IDS.ADD_NEW || params.id === MCP_IDS.EDIT || params.id === MCP_IDS.FIX_SERVER) {
+ this.handleAddOrEditServer(params)
+ } else if (params.id === MCP_IDS.OPEN_SERVER) {
+ this.handleOpenServer(params)
} else if ([MCP_IDS.DISABLE_SERVER, MCP_IDS.DELETE_SERVER, MCP_IDS.ENABLE_SERVER].includes(params.id)) {
this.messager.onListMcpServers()
} else if (params.id === MCP_IDS.UPDATE_LIST) {
diff --git a/chat-client/src/client/mynahUi.test.ts b/chat-client/src/client/mynahUi.test.ts
index 31e64f0e76..1f9f6c4e57 100644
--- a/chat-client/src/client/mynahUi.test.ts
+++ b/chat-client/src/client/mynahUi.test.ts
@@ -246,9 +246,16 @@ describe('MynahUI', () => {
})
describe('sendGenericCommand', () => {
- it('should create a new tab if none exits', () => {
+ it('should create a new tab if none exits', function () {
+ this.timeout(10000) // Increase timeout to 10 seconds
// clear create tab stub since set up process calls it twice
createTabStub.resetHistory()
+ // Stub setTimeout to execute immediately
+ const setTimeoutStub = sinon.stub(global, 'setTimeout').callsFake((fn: Function) => {
+ fn()
+ return {} as any
+ })
+
const genericCommand = 'Explain'
const selection = 'const x = 5;'
const tabId = ''
@@ -258,11 +265,18 @@ describe('MynahUI', () => {
sinon.assert.calledOnceWithExactly(createTabStub, false)
sinon.assert.calledThrice(updateStoreSpy)
+ setTimeoutStub.restore()
})
- it('should create a new tab if current tab is loading', () => {
+ it('should create a new tab if current tab is loading', function () {
+ this.timeout(10000)
// clear create tab stub since set up process calls it twice
createTabStub.resetHistory()
+ // Stub setTimeout to execute immediately
+ const setTimeoutStub = sinon.stub(global, 'setTimeout').callsFake((fn: Function) => {
+ fn()
+ return {} as any
+ })
getAllTabsStub.returns({ 'tab-1': { store: { loadingChat: true } } })
const genericCommand = 'Explain'
@@ -274,10 +288,16 @@ describe('MynahUI', () => {
sinon.assert.calledOnceWithExactly(createTabStub, false)
sinon.assert.calledThrice(updateStoreSpy)
+ setTimeoutStub.restore()
})
it('should not create a new tab if one exists already', () => {
createTabStub.resetHistory()
+ // Stub setTimeout to execute immediately
+ const setTimeoutStub = sinon.stub(global, 'setTimeout').callsFake((fn: Function) => {
+ fn()
+ return {} as any
+ })
const genericCommand = 'Explain'
const selection = 'const x = 5;'
const tabId = 'tab-1'
@@ -287,9 +307,15 @@ describe('MynahUI', () => {
sinon.assert.notCalled(createTabStub)
sinon.assert.calledOnce(updateStoreSpy)
+ setTimeoutStub.restore()
})
it('should call handleChatPrompt when sendGenericCommand is called', () => {
+ // Stub setTimeout to execute immediately
+ const setTimeoutStub = sinon.stub(global, 'setTimeout').callsFake((fn: Function) => {
+ fn()
+ return {} as any
+ })
const genericCommand = 'Explain'
const selection = 'const x = 5;'
const tabId = 'tab-1'
@@ -319,6 +345,7 @@ describe('MynahUI', () => {
loadingChat: true,
promptInputDisabledState: false,
})
+ setTimeoutStub.restore()
})
})
@@ -544,7 +571,7 @@ describe('MynahUI', () => {
// Simulate the response from the server
const models = [
{ id: 'CLAUDE_3_7_SONNET_20250219_V1_0', name: 'Claude Sonnet 3.7' },
- { id: 'CLAUDE_SONNET_4_20250514_V1_0', name: 'Claude Sonnet 4' },
+ { id: 'CLAUDE_SONNET_4_20250514_V1_0', name: 'Claude Sonnet 4', description: 'Test description' },
]
const result: ListAvailableModelsResult = {
@@ -562,8 +589,12 @@ describe('MynahUI', () => {
{
id: 'model-selection',
options: [
- { value: 'CLAUDE_3_7_SONNET_20250219_V1_0', label: 'Claude Sonnet 3.7' },
- { value: 'CLAUDE_SONNET_4_20250514_V1_0', label: 'Claude Sonnet 4' },
+ { value: 'CLAUDE_3_7_SONNET_20250219_V1_0', label: 'Claude Sonnet 3.7', description: '' },
+ {
+ value: 'CLAUDE_SONNET_4_20250514_V1_0',
+ label: 'Claude Sonnet 4',
+ description: 'Test description',
+ },
],
type: 'select',
value: 'CLAUDE_3_7_SONNET_20250219_V1_0',
@@ -603,6 +634,7 @@ describe('MynahUI', () => {
route: ['/workspace', 'src/file1.ts'],
icon: 'file',
children: undefined,
+ disabled: false,
},
],
promptTopBarTitle: '@',
@@ -659,6 +691,7 @@ describe('MynahUI', () => {
...activeEditorCommand,
description: 'file:///workspace/src/active.ts',
children: undefined,
+ disabled: false,
},
],
promptTopBarTitle: '@Pin Context',
@@ -698,7 +731,7 @@ describe('MynahUI', () => {
// Verify updateStore was called with empty context items
// Active editor should be removed since no textDocument was provided
sinon.assert.calledWith(updateStoreSpy, tabId, {
- promptTopBarContextItems: [{ ...fileCommand, children: undefined }],
+ promptTopBarContextItems: [{ ...fileCommand, children: undefined, disabled: false }],
promptTopBarTitle: '@',
promptTopBarButton: null,
})
diff --git a/chat-client/src/client/mynahUi.ts b/chat-client/src/client/mynahUi.ts
index d07d0ab291..90b0e1a8d2 100644
--- a/chat-client/src/client/mynahUi.ts
+++ b/chat-client/src/client/mynahUi.ts
@@ -69,12 +69,7 @@ import {
toMynahIcon,
} from './utils'
import { ChatHistory, ChatHistoryList } from './features/history'
-import {
- pairProgrammingModeOff,
- pairProgrammingModeOn,
- programmerModeCard,
- createRerouteCard,
-} from './texts/pairProgramming'
+import { pairProgrammingModeOff, pairProgrammingModeOn, programmerModeCard } from './texts/pairProgramming'
import { ContextRule, RulesList } from './features/rules'
import { getModelSelectionChatItem, modelUnavailableBanner, modelThrottledBanner } from './texts/modelSelection'
import {
@@ -151,11 +146,20 @@ export const handlePromptInputChange = (mynahUi: MynahUI, tabId: string, options
}
}
+ const updatedPromptInputOptions = promptInputOptions?.map(option => {
+ option.value = optionsValues[option.id]
+ return option
+ })
+
mynahUi.updateStore(tabId, {
- promptInputOptions: promptInputOptions?.map(option => {
- option.value = optionsValues[option.id]
- return option
- }),
+ promptInputOptions: updatedPromptInputOptions,
+ })
+
+ // Store the updated values in tab defaults for new tabs
+ mynahUi.updateTabDefaults({
+ store: {
+ promptInputOptions: updatedPromptInputOptions,
+ },
})
}
@@ -276,11 +280,6 @@ export const handleChatPrompt = (
// For /doc command, don't show any prompt in UI
const displayPrompt = isReroutedCommand && prompt.command === '/doc' ? '' : userPrompt
initializeChatResponse(mynahUi, tabId, displayPrompt, agenticMode)
-
- // If this is a rerouted command AND reroute feature is enabled, show the reroute card after the prompt
- if (isReroutedCommand && tabFactory?.isRerouteEnabled() && prompt.command) {
- mynahUi.addChatItem(tabId, createRerouteCard(prompt.command))
- }
}
const initializeChatResponse = (mynahUi: MynahUI, tabId: string, userPrompt?: string, agenticMode?: boolean) => {
@@ -395,9 +394,6 @@ export const createMynahUi = (
const defaultTabBarData = tabFactory.getDefaultTabData()
const defaultTabConfig: Partial = {
quickActionCommands: defaultTabBarData.quickActionCommands,
- ...(tabFactory.isRerouteEnabled()
- ? { quickActionCommandsHeader: defaultTabBarData.quickActionCommandsHeader }
- : {}),
tabBarButtons: defaultTabBarData.tabBarButtons,
contextCommands: [
...(contextCommandGroups || []),
@@ -414,6 +410,12 @@ export const createMynahUi = (
}
const tabStore = mynahUi.getTabData(tabId).getStore()
+ const storedPromptInputOptions = mynahUi.getTabDefaults().store?.promptInputOptions
+
+ // Retrieve stored model selection and pair programming mode from defaults
+ if (storedPromptInputOptions) {
+ defaultTabConfig.promptInputOptions = storedPromptInputOptions
+ }
// Tabs can be opened through different methods, including server-initiated 'openTab' requests.
// The 'openTab' request is specifically used for loading historical chat sessions with pre-existing messages.
@@ -1415,7 +1417,8 @@ export const createMynahUi = (
const sendToPrompt = (params: SendToPromptParams) => {
const tabId = getOrCreateTabId()
if (!tabId) return
-
+ chatHistoryList.close()
+ mcpMynahUi.close()
if (params.autoSubmit && params.prompt) {
messager.onChatPrompt({ prompt: params.prompt, tabId, context: undefined }, 'contextMenu')
initializeChatResponse(mynahUi, tabId, params.prompt.prompt, agenticMode)
@@ -1429,7 +1432,8 @@ export const createMynahUi = (
let tabId = getOrCreateTabId()
if (!tabId) return
-
+ chatHistoryList.close()
+ mcpMynahUi.close()
// send to a new tab if the current tab is loading
if (getTabStore(tabId)?.loadingChat) {
tabId = createTabId()
@@ -1558,6 +1562,7 @@ ${params.message}`,
commands: toContextCommands(child.commands),
})),
icon: toMynahIcon(command.icon),
+ disabled: command.disabledText != null,
}))
}
@@ -1735,7 +1740,11 @@ ${params.message}`,
? {
...option,
type: 'select',
- options: params.models.map(model => ({ value: model.id, label: model.name })),
+ options: params.models.map(model => ({
+ value: model.id,
+ label: model.name,
+ description: model.description ?? '',
+ })),
value: params.selectedModelId,
}
: option
@@ -1778,7 +1787,7 @@ const DEFAULT_TEST_PROMPT = `You are Amazon Q. Start with a warm greeting, then
const DEFAULT_DEV_PROMPT = `You are Amazon Q. Start with a warm greeting, then ask the user to specify what kind of help they need in code development. Present common questions asked (like Creating a new project, Adding a new feature, Modifying your files). Keep the question brief and friendly. Don't make assumptions about existing content or context. Wait for their response before providing specific guidance.`
-const DEFAULT_REVIEW_PROMPT = `You are Amazon Q. Start with a warm greeting, then use code review tool to perform code analysis of the open file. If there is no open file, ask what the user would like to review.`
+const DEFAULT_REVIEW_PROMPT = `You are Amazon Q. Start with a warm greeting, then use code review tool to perform a diff review code analysis of the open file. If there is no open file, ask what the user would like to review. Please tell the user that the scan is a diff scan.`
export const uiComponentsTexts = {
mainTitle: 'Amazon Q (Preview)',
diff --git a/chat-client/src/client/tabs/tabFactory.test.ts b/chat-client/src/client/tabs/tabFactory.test.ts
index c398c709eb..815e81a22e 100644
--- a/chat-client/src/client/tabs/tabFactory.test.ts
+++ b/chat-client/src/client/tabs/tabFactory.test.ts
@@ -2,7 +2,7 @@ import { ChatHistory } from '../features/history'
import { TabFactory } from './tabFactory'
import * as assert from 'assert'
import { pairProgrammingPromptInput } from '../texts/pairProgramming'
-import { modelSelectionForRegion } from '../texts/modelSelection'
+import { modelSelection } from '../texts/modelSelection'
describe('tabFactory', () => {
describe('getDefaultTabData', () => {
@@ -92,10 +92,7 @@ describe('tabFactory', () => {
const result = tabFactory.createTab(false)
- assert.deepStrictEqual(result.promptInputOptions, [
- pairProgrammingPromptInput,
- modelSelectionForRegion['us-east-1'],
- ])
+ assert.deepStrictEqual(result.promptInputOptions, [pairProgrammingPromptInput, modelSelection])
})
it('should not include model selection when only agentic mode is enabled', () => {
diff --git a/chat-client/src/client/tabs/tabFactory.ts b/chat-client/src/client/tabs/tabFactory.ts
index 3a6012471a..bfb3091911 100644
--- a/chat-client/src/client/tabs/tabFactory.ts
+++ b/chat-client/src/client/tabs/tabFactory.ts
@@ -4,14 +4,13 @@ import {
MynahIcons,
MynahUIDataModel,
QuickActionCommandGroup,
- QuickActionCommandsHeader,
TabBarMainAction,
} from '@aws/mynah-ui'
import { disclaimerCard } from '../texts/disclaimer'
import { ChatMessage } from '@aws/language-server-runtimes-types'
import { ChatHistory } from '../features/history'
import { pairProgrammingPromptInput, programmerModeCard } from '../texts/pairProgramming'
-import { modelSelectionForRegion } from '../texts/modelSelection'
+import { modelSelection } from '../texts/modelSelection'
export type DefaultTabData = MynahUIDataModel
@@ -52,10 +51,7 @@ export class TabFactory {
...this.getDefaultTabData(),
...(disclaimerCardActive ? { promptInputStickyCard: disclaimerCard } : {}),
promptInputOptions: this.agenticMode
- ? [
- pairProgrammingPromptInput,
- ...(this.modelSelectionEnabled ? [modelSelectionForRegion['us-east-1']] : []),
- ]
+ ? [pairProgrammingPromptInput, ...(this.modelSelectionEnabled ? [modelSelection] : [])]
: [],
cancelButtonWhenLoading: this.agenticMode, // supported for agentic chat only
}
@@ -146,17 +142,6 @@ Select code & ask me to explain, debug or optimize it, or type \`/\` for quick a
quickActionCommands: this.quickActionCommands,
}
: {}),
- ...(this.reroute
- ? {
- quickActionCommandsHeader: {
- status: 'warning',
- icon: MynahIcons.INFO,
- title: 'Q Developer agentic capabilities',
- description:
- "You can now ask Q directly in the chat to generate code, documentation, and unit tests. You don't need to explicitly use /dev, /test, /review or /doc",
- } as QuickActionCommandsHeader,
- }
- : {}),
}
tabData.tabBarButtons = this.getTabBarButtons()
@@ -232,50 +217,4 @@ Select code & ask me to explain, debug or optimize it, or type \`/\` for quick a
return tabBarButtons.length ? tabBarButtons : undefined
}
-
- // Enhanced welcome messages block for non-agentic mode
- private getEnhancedWelcomeBlock() {
- return {
- text: '',
- options: [
- {
- pillText: 'Getting Started',
- prompt: 'What can Amazon Q help me with?',
- type: 'help',
- },
- ],
- }
- }
-
- // Agentic welcome messages block
- private getAgenticWelcomeBlock() {
- return {
- text: '',
- options: [
- {
- pillText: 'Getting Started',
- prompt: 'What can Amazon Q help me with?',
- type: 'help',
- },
- ],
- }
- }
-
- // Legacy welcome messages block
- private getWelcomeBlock() {
- return {
- text: 'Try Examples:',
- options: [
- {
- pillText: 'Explain selected code',
- prompt: 'Explain selected code',
- type: 'init-prompt',
- },
- {
- pillText: 'How can Amazon Q help me?',
- type: 'help',
- },
- ],
- }
- }
}
diff --git a/chat-client/src/client/texts/modelSelection.test.ts b/chat-client/src/client/texts/modelSelection.test.ts
index c36dfad976..abd010436e 100644
--- a/chat-client/src/client/texts/modelSelection.test.ts
+++ b/chat-client/src/client/texts/modelSelection.test.ts
@@ -1,60 +1,11 @@
import * as assert from 'assert'
-import {
- BedrockModel,
- modelSelectionForRegion,
- getModelSelectionChatItem,
- modelUnavailableBanner,
- modelThrottledBanner,
-} from './modelSelection'
+import { getModelSelectionChatItem, modelUnavailableBanner, modelThrottledBanner } from './modelSelection'
import { ChatItemType } from '@aws/mynah-ui'
/**
* Tests for modelSelection functionality
- *
- * Note: Some tests are for deprecated code (marked with 'legacy') that is maintained
- * for backward compatibility with older clients. These should be removed once
- * all clients have been updated to use the new API (aws/chat/listAvailableModels).
*/
describe('modelSelection', () => {
- describe('BedrockModel enum (legacy)', () => {
- it('should have the correct model IDs', () => {
- assert.strictEqual(BedrockModel.CLAUDE_3_7_SONNET_20250219_V1_0, 'CLAUDE_3_7_SONNET_20250219_V1_0')
- assert.strictEqual(BedrockModel.CLAUDE_SONNET_4_20250514_V1_0, 'CLAUDE_SONNET_4_20250514_V1_0')
- })
- })
-
- describe('modelSelectionForRegion (legacy)', () => {
- it('should provide all models for us-east-1 region', () => {
- const usEast1ModelSelection = modelSelectionForRegion['us-east-1']
- assert.ok(usEast1ModelSelection, 'usEast1ModelSelection should exist')
- assert.ok(usEast1ModelSelection.type === 'select', 'usEast1ModelSelection should be type select')
- assert.ok(Array.isArray(usEast1ModelSelection.options), 'options should be an array')
- assert.strictEqual(usEast1ModelSelection.options.length, 2, 'should have 2 options')
-
- const modelIds = usEast1ModelSelection.options.map(option => option.value)
- assert.ok(modelIds.includes(BedrockModel.CLAUDE_SONNET_4_20250514_V1_0), 'should include Claude Sonnet 4')
- assert.ok(
- modelIds.includes(BedrockModel.CLAUDE_3_7_SONNET_20250219_V1_0),
- 'should include Claude Sonnet 3.7'
- )
- })
-
- it('should provide all models for eu-central-1 region', () => {
- const euCentral1ModelSelection = modelSelectionForRegion['eu-central-1']
- assert.ok(euCentral1ModelSelection, 'euCentral1ModelSelection should exist')
- assert.ok(euCentral1ModelSelection.type === 'select', 'euCentral1ModelSelection should be type select')
- assert.ok(Array.isArray(euCentral1ModelSelection.options), 'options should be an array')
- assert.strictEqual(euCentral1ModelSelection.options.length, 2, 'should have 2 option')
-
- const modelIds = euCentral1ModelSelection.options.map(option => option.value)
- assert.ok(modelIds.includes(BedrockModel.CLAUDE_SONNET_4_20250514_V1_0), 'should include Claude Sonnet 4')
- assert.ok(
- modelIds.includes(BedrockModel.CLAUDE_3_7_SONNET_20250219_V1_0),
- 'should include Claude Sonnet 3.7'
- )
- })
- })
-
describe('getModelSelectionChatItem', () => {
it('should return a chat item with the correct model name', () => {
const modelName = 'Claude Sonnet 4'
diff --git a/chat-client/src/client/texts/modelSelection.ts b/chat-client/src/client/texts/modelSelection.ts
index 18df833419..6cfd25b7fe 100644
--- a/chat-client/src/client/texts/modelSelection.ts
+++ b/chat-client/src/client/texts/modelSelection.ts
@@ -5,41 +5,36 @@ import { ChatItem, ChatItemFormItem, ChatItemType } from '@aws/mynah-ui'
*/
export enum BedrockModel {
CLAUDE_SONNET_4_20250514_V1_0 = 'CLAUDE_SONNET_4_20250514_V1_0',
- CLAUDE_3_7_SONNET_20250219_V1_0 = 'CLAUDE_3_7_SONNET_20250219_V1_0',
}
type ModelDetails = {
label: string
+ description: string
}
const modelRecord: Record = {
- [BedrockModel.CLAUDE_3_7_SONNET_20250219_V1_0]: { label: 'Claude Sonnet 3.7' },
- [BedrockModel.CLAUDE_SONNET_4_20250514_V1_0]: { label: 'Claude Sonnet 4' },
+ [BedrockModel.CLAUDE_SONNET_4_20250514_V1_0]: {
+ label: 'Claude Sonnet 4',
+ description: 'Hybrid reasoning and coding for regular use',
+ },
}
-const modelOptions = Object.entries(modelRecord).map(([value, { label }]) => ({
+const modelOptions = Object.entries(modelRecord).map(([value, { label, description }]) => ({
value,
label,
+ description,
}))
-const modelSelection: ChatItemFormItem = {
+export const modelSelection: ChatItemFormItem = {
type: 'select',
id: 'model-selection',
- options: modelOptions,
mandatory: true,
hideMandatoryIcon: true,
+ options: modelOptions,
border: false,
autoWidth: true,
}
-/**
- * @deprecated use aws/chat/listAvailableModels server request instead
- */
-export const modelSelectionForRegion: Record = {
- 'us-east-1': modelSelection,
- 'eu-central-1': modelSelection,
-}
-
export const getModelSelectionChatItem = (modelName: string): ChatItem => ({
type: ChatItemType.DIRECTIVE,
contentHorizontalAlignment: 'center',
diff --git a/chat-client/src/client/texts/pairProgramming.test.ts b/chat-client/src/client/texts/pairProgramming.test.ts
index 3ffec1bcaf..8181f50c8b 100644
--- a/chat-client/src/client/texts/pairProgramming.test.ts
+++ b/chat-client/src/client/texts/pairProgramming.test.ts
@@ -1,14 +1,10 @@
import * as assert from 'assert'
-import { ChatItemType, MynahIcons } from '@aws/mynah-ui'
+import { ChatItemType } from '@aws/mynah-ui'
import {
programmerModeCard,
pairProgrammingPromptInput,
pairProgrammingModeOn,
pairProgrammingModeOff,
- testRerouteCard,
- docRerouteCard,
- devRerouteCard,
- createRerouteCard,
} from './pairProgramming'
describe('pairProgramming', () => {
@@ -56,67 +52,4 @@ describe('pairProgramming', () => {
assert.equal(pairProgrammingModeOff.body, 'Agentic coding - OFF')
})
})
-
- describe('testRerouteCard', () => {
- it('has correct properties', () => {
- assert.equal(testRerouteCard.type, ChatItemType.ANSWER)
- assert.equal(testRerouteCard.border, true)
- assert.equal(testRerouteCard.header?.padding, true)
- assert.equal(testRerouteCard.header?.iconForegroundStatus, 'warning')
- assert.equal(testRerouteCard.header?.icon, MynahIcons.INFO)
- assert.ok(testRerouteCard.header?.body?.includes('generate unit tests'))
- assert.ok(testRerouteCard.body?.includes("You don't need to explicitly use /test"))
- })
- })
-
- describe('docRerouteCard', () => {
- it('has correct properties', () => {
- assert.equal(docRerouteCard.type, ChatItemType.ANSWER)
- assert.equal(docRerouteCard.border, true)
- assert.equal(docRerouteCard.header?.padding, true)
- assert.equal(docRerouteCard.header?.iconForegroundStatus, 'warning')
- assert.equal(docRerouteCard.header?.icon, MynahIcons.INFO)
- assert.ok(docRerouteCard.header?.body?.includes('generate documentation'))
- assert.ok(docRerouteCard.body?.includes("You don't need to explicitly use /doc"))
- })
- })
-
- describe('devRerouteCard', () => {
- it('has correct properties', () => {
- assert.equal(devRerouteCard.type, ChatItemType.ANSWER)
- assert.equal(devRerouteCard.border, true)
- assert.equal(devRerouteCard.header?.padding, true)
- assert.equal(devRerouteCard.header?.iconForegroundStatus, 'warning')
- assert.equal(devRerouteCard.header?.icon, MynahIcons.INFO)
- assert.ok(devRerouteCard.header?.body?.includes('generate code'))
- assert.ok(devRerouteCard.body?.includes("You don't need to explicitly use /dev"))
- })
- })
-
- describe('createRerouteCard', () => {
- it('returns testRerouteCard for /test command', () => {
- const result = createRerouteCard('/test')
- assert.deepEqual(result, testRerouteCard)
- })
-
- it('returns docRerouteCard for /doc command', () => {
- const result = createRerouteCard('/doc')
- assert.deepEqual(result, docRerouteCard)
- })
-
- it('returns devRerouteCard for /dev command', () => {
- const result = createRerouteCard('/dev')
- assert.deepEqual(result, devRerouteCard)
- })
-
- it('returns devRerouteCard for unknown command', () => {
- const result = createRerouteCard('/unknown')
- assert.deepEqual(result, devRerouteCard)
- })
-
- it('returns devRerouteCard for empty string', () => {
- const result = createRerouteCard('')
- assert.deepEqual(result, devRerouteCard)
- })
- })
})
diff --git a/chat-client/src/client/texts/pairProgramming.ts b/chat-client/src/client/texts/pairProgramming.ts
index c93918317f..335a37069c 100644
--- a/chat-client/src/client/texts/pairProgramming.ts
+++ b/chat-client/src/client/texts/pairProgramming.ts
@@ -1,4 +1,4 @@
-import { ChatItem, ChatItemFormItem, ChatItemType, MynahIcons } from '@aws/mynah-ui'
+import { ChatItem, ChatItemFormItem, ChatItemType } from '@aws/mynah-ui'
export const programmerModeCard: ChatItem = {
type: ChatItemType.ANSWER,
@@ -36,76 +36,3 @@ export const pairProgrammingModeOff: ChatItem = {
fullWidth: true,
body: 'Agentic coding - OFF',
}
-
-export const testRerouteCard: ChatItem = {
- type: ChatItemType.ANSWER,
- border: true,
- header: {
- padding: true,
- iconForegroundStatus: 'warning',
- icon: MynahIcons.INFO,
- body: 'You can now ask to generate unit tests directly in the chat.',
- },
- body: `You don't need to explicitly use /test. We've redirected your request to chat.
-Ask me to do things like:
-• Add unit tests for highlighted functions in my active file
-• Generate tests for null and empty inputs in my project`,
-}
-
-export const docRerouteCard: ChatItem = {
- type: ChatItemType.ANSWER,
- border: true,
- header: {
- padding: true,
- iconForegroundStatus: 'warning',
- icon: MynahIcons.INFO,
- body: 'You can now ask to generate documentation directly in the chat.',
- },
- body: `You don't need to explicitly use /doc. We've redirected your request to chat.`,
-}
-
-export const devRerouteCard: ChatItem = {
- type: ChatItemType.ANSWER,
- border: true,
- header: {
- padding: true,
- iconForegroundStatus: 'warning',
- icon: MynahIcons.INFO,
- body: 'You can now ask to generate code directly in the chat.',
- },
- body: `You don't need to explicitly use /dev. We've redirected your request to chat.
-Ask me to do things like:
-1. Create a project
-2. Add a feature
-3. Modify your files`,
-}
-
-export const reviewRerouteCard: ChatItem = {
- type: ChatItemType.ANSWER,
- border: true,
- header: {
- padding: true,
- iconForegroundStatus: 'warning',
- icon: MynahIcons.INFO,
- body: 'You can now ask to run code reviews directly in the chat.',
- },
- body: `You don't need to explicitly use /review. We've redirected your request to chat.
-Ask me to do things like:
-• Perform a code review of uncommitted changes in my active file
-• Perform a code review of my active file`,
-}
-
-export const createRerouteCard = (command: string): ChatItem => {
- switch (command) {
- case '/test':
- return testRerouteCard
- case '/doc':
- return docRerouteCard
- case '/dev':
- return devRerouteCard
- case '/review':
- return reviewRerouteCard
- default:
- return devRerouteCard // Default fallback
- }
-}
diff --git a/client/vscode/package.json b/client/vscode/package.json
index a5d7f66d21..8f8b68e7f8 100644
--- a/client/vscode/package.json
+++ b/client/vscode/package.json
@@ -351,8 +351,8 @@
"devDependencies": {
"@aws-sdk/credential-providers": "^3.731.1",
"@aws-sdk/types": "^3.734.0",
- "@aws/chat-client-ui-types": "^0.1.56",
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/chat-client-ui-types": "0.1.68",
+ "@aws/language-server-runtimes": "0.3.6",
"@types/uuid": "^9.0.8",
"@types/vscode": "^1.98.0",
"jose": "^5.2.4",
diff --git a/core/aws-lsp-core/CHANGELOG.md b/core/aws-lsp-core/CHANGELOG.md
index 0e1e63dd38..891be1996b 100644
--- a/core/aws-lsp-core/CHANGELOG.md
+++ b/core/aws-lsp-core/CHANGELOG.md
@@ -1,5 +1,27 @@
# Changelog
+## [0.0.17](https://github.com/aws/language-servers/compare/lsp-core/v0.0.16...lsp-core/v0.0.17) (2025-11-21)
+
+
+### Features
+
+* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811))
+
+## [0.0.16](https://github.com/aws/language-servers/compare/lsp-core/v0.0.15...lsp-core/v0.0.16) (2025-10-01)
+
+
+### Bug Fixes
+
+* **amazonq:** Fix mock fs clean; Node version upgrade ([#2324](https://github.com/aws/language-servers/issues/2324)) ([1d9afd4](https://github.com/aws/language-servers/commit/1d9afd410e19624223e300ca06ea7d08a112cc82))
+* **amazonq:** handle IAM credentials expiration field to be aws sdk versions compatible and add refresh logic to codewhisperer IAM client ([#2349](https://github.com/aws/language-servers/issues/2349)) ([5eb3768](https://github.com/aws/language-servers/commit/5eb3768bf020d61d0ade767d62e13839048146e4))
+
+## [0.0.15](https://github.com/aws/language-servers/compare/lsp-core/v0.0.14...lsp-core/v0.0.15) (2025-09-09)
+
+
+### Features
+
+* add support for getSupplementalContext LSP API ([#2212](https://github.com/aws/language-servers/issues/2212)) ([2ddcae7](https://github.com/aws/language-servers/commit/2ddcae7a4fac6b89cbc9784911959743ea0a6d11))
+
## [0.0.14](https://github.com/aws/language-servers/compare/lsp-core/v0.0.13...lsp-core/v0.0.14) (2025-08-19)
diff --git a/core/aws-lsp-core/package.json b/core/aws-lsp-core/package.json
index 54ca980fc1..7c5a3b33a2 100644
--- a/core/aws-lsp-core/package.json
+++ b/core/aws-lsp-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@aws/lsp-core",
- "version": "0.0.14",
+ "version": "0.0.17",
"description": "Core library, contains common code and utilities",
"main": "out/index.js",
"repository": {
@@ -28,7 +28,7 @@
"prepack": "shx cp ../../LICENSE ../../NOTICE ../../SECURITY.md ."
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@gerhobbelt/gitignore-parser": "^0.2.0-9",
"cross-spawn": "7.0.6",
"jose": "^5.2.4",
diff --git a/core/aws-lsp-core/src/content/cache/uriCacheRepository.test.ts b/core/aws-lsp-core/src/content/cache/uriCacheRepository.test.ts
index 695a49995c..8487e886bd 100644
--- a/core/aws-lsp-core/src/content/cache/uriCacheRepository.test.ts
+++ b/core/aws-lsp-core/src/content/cache/uriCacheRepository.test.ts
@@ -12,7 +12,7 @@ import path = require('path')
describe('Test UriCacheRepository', async () => {
const sampleUri = URI.parse('https://aws.amazon.com/')
const currentTimeMs = 1234
- const metadataPath = '//cache/cachedUris/metadata'
+ const metadataPath = 'cache/cachedUris/metadata'
let timeProviderStub: SinonStubbedInstance
@@ -20,7 +20,7 @@ describe('Test UriCacheRepository', async () => {
beforeEach(async () => {
mockfs({
- '//cache': {
+ cache: {
cachedUris: {
metadata: '{}',
},
@@ -30,7 +30,7 @@ describe('Test UriCacheRepository', async () => {
timeProviderStub = stub(new TimeProvider())
timeProviderStub.currentMilliseconds.returns(currentTimeMs)
- sut = new UriCacheRepository('//cache', timeProviderStub)
+ sut = new UriCacheRepository('cache', timeProviderStub)
})
afterEach(async () => {
@@ -89,7 +89,7 @@ describe('Test UriCacheRepository', async () => {
})
function getCachePath(uri: URI): string {
- return path.join('//cache/cachedUris', getHash(uri))
+ return path.join('cache/cachedUris', getHash(uri))
}
function getHash(uri: URI): string {
diff --git a/core/aws-lsp-core/src/content/handlers/cachedContentHandler.test.ts b/core/aws-lsp-core/src/content/handlers/cachedContentHandler.test.ts
index ade872313f..aaf316c6d6 100644
--- a/core/aws-lsp-core/src/content/handlers/cachedContentHandler.test.ts
+++ b/core/aws-lsp-core/src/content/handlers/cachedContentHandler.test.ts
@@ -43,7 +43,7 @@ describe('Test CachedContentHandler', async () => {
beforeEach(async () => {
mockfs({
- '//cache': {
+ cache: {
cachedUris: {
metadata: '{}',
},
@@ -54,7 +54,7 @@ describe('Test CachedContentHandler', async () => {
timeProviderStub = stub(new TimeProvider())
timeProviderStub.currentMilliseconds.returns(currentTimeMs)
- cacheRepository = new UriCacheRepository('//cache', timeProviderStub)
+ cacheRepository = new UriCacheRepository('cache', timeProviderStub)
sut = new CachedContentHandler({
cacheRepository,
timeProvider: timeProviderStub,
diff --git a/core/aws-lsp-core/src/credentials/credentialsProvider.ts b/core/aws-lsp-core/src/credentials/credentialsProvider.ts
index a56be8e0ad..1f5186eea7 100644
--- a/core/aws-lsp-core/src/credentials/credentialsProvider.ts
+++ b/core/aws-lsp-core/src/credentials/credentialsProvider.ts
@@ -4,6 +4,7 @@ export interface IamCredentials {
accessKeyId: string
secretAccessKey: string
sessionToken?: string
+ expiration?: Date // v3 format
}
export interface BearerToken {
diff --git a/core/aws-lsp-core/src/credentials/ideCredentialsProvider.test.ts b/core/aws-lsp-core/src/credentials/ideCredentialsProvider.test.ts
new file mode 100644
index 0000000000..a2fbb51834
--- /dev/null
+++ b/core/aws-lsp-core/src/credentials/ideCredentialsProvider.test.ts
@@ -0,0 +1,48 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import * as assert from 'assert'
+import { IdeCredentialsProvider } from './ideCredentialsProvider'
+import { IamCredentials } from './credentialsProvider'
+import { Connection } from 'vscode-languageserver'
+import * as sinon from 'sinon'
+
+describe('IdeCredentialsProvider', function () {
+ let provider: IdeCredentialsProvider
+ let mockConnection: sinon.SinonStubbedInstance
+
+ beforeEach(function () {
+ mockConnection = {
+ console: {
+ info: sinon.stub(),
+ log: sinon.stub(),
+ warn: sinon.stub(),
+ error: sinon.stub(),
+ },
+ } as any
+ provider = new IdeCredentialsProvider(mockConnection as any)
+ })
+
+ describe('validateIamCredentialsFields', function () {
+ it('throws error when accessKeyId is missing', function () {
+ const credentials = {
+ secretAccessKey: 'secret',
+ } as IamCredentials
+
+ assert.throws(() => provider['validateIamCredentialsFields'](credentials), /Missing property: accessKeyId/)
+ })
+
+ it('throws error when secretAccessKey is missing', function () {
+ const credentials = {
+ accessKeyId: 'key',
+ } as IamCredentials
+
+ assert.throws(
+ () => provider['validateIamCredentialsFields'](credentials),
+ /Missing property: secretAccessKey/
+ )
+ })
+ })
+})
diff --git a/core/aws-lsp-core/src/credentials/ideCredentialsProvider.ts b/core/aws-lsp-core/src/credentials/ideCredentialsProvider.ts
index 08231ad33d..6f389594b8 100644
--- a/core/aws-lsp-core/src/credentials/ideCredentialsProvider.ts
+++ b/core/aws-lsp-core/src/credentials/ideCredentialsProvider.ts
@@ -58,7 +58,15 @@ export class IdeCredentialsProvider implements CredentialsProvider {
credentialsProtocolMethodNames.iamCredentialsUpdate,
async (request: UpdateCredentialsRequest) => {
try {
- const iamCredentials = await this.decodeCredentialsRequestToken(request)
+ const rawCredentials = await this.decodeCredentialsRequestToken<
+ IamCredentials & { expireTime?: Date }
+ >(request)
+
+ // Normalize legacy expireTime field to standard expiration field
+ const iamCredentials: IamCredentials = {
+ ...rawCredentials,
+ expiration: rawCredentials.expiration || rawCredentials.expireTime,
+ }
this.validateIamCredentialsFields(iamCredentials)
diff --git a/core/aws-lsp-core/src/util/httpsUtils.ts b/core/aws-lsp-core/src/util/httpsUtils.ts
index b42d42f2b4..e5ca35da75 100644
--- a/core/aws-lsp-core/src/util/httpsUtils.ts
+++ b/core/aws-lsp-core/src/util/httpsUtils.ts
@@ -1,9 +1,9 @@
import * as https from 'https'
+import { Agent } from 'https'
-export function requestContent(url: string): Promise {
+export function requestContent(url: string, agent?: Agent): Promise<{ content: string; contentType?: string }> {
return new Promise((resolve, reject) => {
- const request = https.get(url, response => {
- // Handle the response
+ const request = https.get(url, { agent }, response => {
const statusCode = response.statusCode
if (statusCode !== 200) {
reject(new Error(`Request failed with status code ${statusCode}`))
@@ -11,6 +11,7 @@ export function requestContent(url: string): Promise {
return
}
+ const contentType = response.headers['content-type']
let rawData = ''
response.setEncoding('utf8')
@@ -19,8 +20,7 @@ export function requestContent(url: string): Promise {
})
response.on('end', () => {
- // File download completed
- resolve(rawData)
+ resolve({ content: rawData, contentType })
})
})
diff --git a/core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz b/core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz
new file mode 100644
index 0000000000..b25222e67f
Binary files /dev/null and b/core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz differ
diff --git a/core/codewhisperer/amzn-codewhisperer-1.0.0.tgz b/core/codewhisperer/amzn-codewhisperer-1.0.0.tgz
new file mode 100644
index 0000000000..18ab19948c
Binary files /dev/null and b/core/codewhisperer/amzn-codewhisperer-1.0.0.tgz differ
diff --git a/integration-tests/q-agentic-chat-server/package.json b/integration-tests/q-agentic-chat-server/package.json
index ffb33f1a4e..84cc85f1be 100644
--- a/integration-tests/q-agentic-chat-server/package.json
+++ b/integration-tests/q-agentic-chat-server/package.json
@@ -9,7 +9,7 @@
"test-integ": "npm run compile && mocha --timeout 30000 \"./out/**/*.test.js\" --retries 2"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-core": "*"
},
"devDependencies": {
diff --git a/package-lock.json b/package-lock.json
index 5fc601a1bc..5b1469e4b6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,7 +17,7 @@
"integration-tests/*"
],
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.116",
+ "@aws/language-server-runtimes": "0.3.6",
"@smithy/types": "4.2.0",
"clean": "^4.0.2",
"typescript": "^5.8.2"
@@ -48,10 +48,10 @@
"name": "@aws/lsp-antlr4-runtimes",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-antlr4": "*",
- "antlr4-c3": "^3.4.1",
- "antlr4ng": "^3.0.4"
+ "antlr4-c3": "^3.4.2",
+ "antlr4ng": "^3.0.14"
},
"devDependencies": {
"@types/chai": "^4.3.5",
@@ -62,7 +62,7 @@
"chai-as-promised": "^7.1.1",
"mocha": "^11.0.1",
"ts-loader": "^9.4.4",
- "ts-lsp-client": "^1.0.3",
+ "ts-lsp-client": "1.0.3",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
}
@@ -71,7 +71,7 @@
"name": "@aws/lsp-buildspec-runtimes",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-buildspec": "^0.0.1"
}
},
@@ -79,7 +79,7 @@
"name": "@aws/lsp-cloudformation-runtimes",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-cloudformation": "^0.0.1"
}
},
@@ -87,7 +87,7 @@
"name": "@aws/lsp-codewhisperer-runtimes",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-codewhisperer": "*",
"copyfiles": "^2.4.1",
"cross-env": "^7.0.3",
@@ -99,6 +99,7 @@
"process": "^0.11.10",
"stream-browserify": "^3.0.0",
"stream-http": "^3.2.0",
+ "url": "^0.11.4",
"vscode-languageserver": "^9.0.1",
"wdio": "^6.0.1",
"webpack-dev-server": "^5.2.0"
@@ -120,7 +121,7 @@
"name": "@aws/lsp-identity-runtimes",
"version": "0.1.0",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-identity": "^0.0.1"
}
},
@@ -128,7 +129,7 @@
"name": "@aws/lsp-json-runtimes",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-json": "*"
},
"devDependencies": {
@@ -139,7 +140,7 @@
"chai-as-promised": "^7.1.1",
"mocha": "^11.0.1",
"ts-loader": "^9.4.4",
- "ts-lsp-client": "^1.0.3",
+ "ts-lsp-client": "1.0.3",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
}
@@ -148,7 +149,7 @@
"name": "@aws/lsp-notification-runtimes",
"version": "0.1.0",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-notification": "^0.0.1"
}
},
@@ -156,32 +157,21 @@
"name": "@aws/lsp-partiql-runtimes",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.125",
- "@aws/lsp-partiql": "^0.0.5"
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-partiql": "0.0.19"
},
"devDependencies": {
"ts-loader": "^9.4.4",
- "ts-lsp-client": "^1.0.3",
+ "ts-lsp-client": "1.0.3",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
}
},
- "app/aws-lsp-partiql-runtimes/node_modules/@aws/lsp-partiql": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/@aws/lsp-partiql/-/lsp-partiql-0.0.5.tgz",
- "integrity": "sha512-WGRJIR2H13avwNWtTp8od1q1s2IJlUNLXft1OQxDV7xKnL4AJ0O/r3+X2oTg3PbT7j8n5a9CY9HzIU8LTMaR0Q==",
- "dependencies": {
- "@aws/language-server-runtimes": "^0.2.40",
- "antlr4-c3": "3.4.2",
- "antlr4ng": "3.0.14",
- "web-tree-sitter": "0.22.6"
- }
- },
"app/aws-lsp-s3-runtimes": {
"name": "@aws/lsp-s3-runtimes",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-s3": "^0.0.1"
},
"bin": {
@@ -192,7 +182,7 @@
"name": "@aws/lsp-yaml-json-webworker",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-json": "*",
"@aws/lsp-yaml": "*"
},
@@ -212,7 +202,7 @@
"name": "@aws/lsp-yaml-runtimes",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-yaml": "*"
},
"devDependencies": {
@@ -223,7 +213,7 @@
"chai-as-promised": "^7.1.1",
"mocha": "^11.0.1",
"ts-loader": "^9.4.4",
- "ts-lsp-client": "^1.0.3",
+ "ts-lsp-client": "1.0.3",
"umd-compat-loader": "^2.1.2",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
@@ -234,7 +224,7 @@
"version": "0.0.1",
"dependencies": {
"@aws/hello-world-lsp": "^0.0.1",
- "@aws/language-server-runtimes": "^0.2.127"
+ "@aws/language-server-runtimes": "0.3.6"
},
"devDependencies": {
"@types/chai": "^4.3.5",
@@ -244,20 +234,20 @@
"chai-as-promised": "^7.1.1",
"mocha": "^11.0.1",
"ts-loader": "^9.4.4",
- "ts-lsp-client": "^1.0.3",
+ "ts-lsp-client": "1.0.3",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
}
},
"chat-client": {
"name": "@aws/chat-client",
- "version": "0.1.33",
+ "version": "0.1.42",
"license": "Apache-2.0",
"dependencies": {
- "@aws/chat-client-ui-types": "^0.1.56",
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/language-server-runtimes-types": "^0.1.50",
- "@aws/mynah-ui": "^4.36.5"
+ "@aws/chat-client-ui-types": "0.1.68",
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/language-server-runtimes-types": "0.1.62",
+ "@aws/mynah-ui": "^4.38.0"
},
"devDependencies": {
"@types/jsdom": "^21.1.6",
@@ -279,8 +269,8 @@
"devDependencies": {
"@aws-sdk/credential-providers": "^3.731.1",
"@aws-sdk/types": "^3.734.0",
- "@aws/chat-client-ui-types": "^0.1.56",
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/chat-client-ui-types": "0.1.68",
+ "@aws/language-server-runtimes": "0.3.6",
"@types/uuid": "^9.0.8",
"@types/vscode": "^1.98.0",
"jose": "^5.2.4",
@@ -293,10 +283,10 @@
},
"core/aws-lsp-core": {
"name": "@aws/lsp-core",
- "version": "0.0.14",
+ "version": "0.0.17",
"license": "Apache-2.0",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@gerhobbelt/gitignore-parser": "^0.2.0-9",
"cross-spawn": "7.0.6",
"jose": "^5.2.4",
@@ -327,7 +317,7 @@
"name": "@aws/q-agentic-chat-server-integration-tests",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-core": "*"
},
"devDependencies": {
@@ -345,19 +335,6 @@
"yauzl-promise": "^4.0.0"
}
},
- "node_modules/@ampproject/remapping": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
- "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/@amzn/amazon-q-developer-streaming-client": {
"version": "1.0.0",
"resolved": "file:core/q-developer-streaming-client/amzn-amazon-q-developer-streaming-client-1.0.0.tgz",
@@ -413,6 +390,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -422,11 +400,12 @@
}
},
"node_modules/@amzn/amazon-q-developer-streaming-client/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -434,14 +413,15 @@
}
},
"node_modules/@amzn/amazon-q-developer-streaming-client/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -449,9 +429,10 @@
}
},
"node_modules/@amzn/amazon-q-developer-streaming-client/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -467,6 +448,190 @@
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@amzn/codewhisperer": {
+ "version": "1.0.0",
+ "resolved": "file:core/codewhisperer/amzn-codewhisperer-1.0.0.tgz",
+ "integrity": "sha512-ukYWlVbn0d2d+ERE/uPaYatbpsob3RNDfRIDgH3V/MWVSNjX+Kgdzo9QgKwXYBLf9rWtIOkviGxi9INr3qV3MA==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.731.0",
+ "@aws-sdk/credential-provider-node": "3.731.1",
+ "@aws-sdk/middleware-host-header": "3.731.0",
+ "@aws-sdk/middleware-logger": "3.731.0",
+ "@aws-sdk/middleware-recursion-detection": "3.731.0",
+ "@aws-sdk/middleware-user-agent": "3.731.0",
+ "@aws-sdk/region-config-resolver": "3.731.0",
+ "@aws-sdk/types": "3.731.0",
+ "@aws-sdk/util-user-agent-browser": "3.731.0",
+ "@aws-sdk/util-user-agent-node": "3.731.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
+ "@types/uuid": "^9.0.1",
+ "tslib": "^2.6.2",
+ "uuid": "^9.0.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer-runtime": {
+ "version": "1.0.0",
+ "resolved": "file:core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz",
+ "integrity": "sha512-3nnqcL5itP4Pidx/ONU4jABkG4vpIFq85HA4K2hmOLrvWUuNIBGZgBdBn2NJ30rLBWtAlJjNTDCt40JuvM7LMQ==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.731.0",
+ "@aws-sdk/middleware-host-header": "3.731.0",
+ "@aws-sdk/middleware-logger": "3.731.0",
+ "@aws-sdk/middleware-recursion-detection": "3.731.0",
+ "@aws-sdk/middleware-user-agent": "3.731.0",
+ "@aws-sdk/region-config-resolver": "3.731.0",
+ "@aws-sdk/token-providers": "3.731.1",
+ "@aws-sdk/types": "3.731.0",
+ "@aws-sdk/util-endpoints": "3.731.0",
+ "@aws-sdk/util-user-agent-browser": "3.731.0",
+ "@aws-sdk/util-user-agent-node": "3.731.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
+ "@types/uuid": "^9.0.1",
+ "tslib": "^2.6.2",
+ "uuid": "^9.0.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer-runtime/node_modules/@aws-sdk/token-providers": {
+ "version": "3.731.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.731.1.tgz",
+ "integrity": "sha512-t34GOPwBZsX7zGHjiTXmMHGY3kHM7fLiQ60Jqk0On9P0ASHTDE5U75RgCXboE3u+qEv9wyKyaqMNyMWj9qQlFg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/nested-clients": "3.731.1",
+ "@aws-sdk/types": "3.731.0",
+ "@smithy/property-provider": "^4.0.0",
+ "@smithy/shared-ini-file-loader": "^4.0.0",
+ "@smithy/types": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer-runtime/node_modules/@aws-sdk/types": {
+ "version": "3.731.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
+ "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer-runtime/node_modules/@smithy/abort-controller": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer-runtime/node_modules/@smithy/node-http-handler": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer-runtime/node_modules/@smithy/types": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer-runtime/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
@@ -526,6 +691,7 @@
"version": "3.731.1",
"resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.731.1.tgz",
"integrity": "sha512-t34GOPwBZsX7zGHjiTXmMHGY3kHM7fLiQ60Jqk0On9P0ASHTDE5U75RgCXboE3u+qEv9wyKyaqMNyMWj9qQlFg==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/nested-clients": "3.731.1",
"@aws-sdk/types": "3.731.0",
@@ -542,6 +708,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -551,11 +718,12 @@
}
},
"node_modules/@amzn/codewhisperer-streaming/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -563,14 +731,15 @@
}
},
"node_modules/@amzn/codewhisperer-streaming/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -578,9 +747,10 @@
}
},
"node_modules/@amzn/codewhisperer-streaming/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -596,6 +766,74 @@
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@amzn/codewhisperer/node_modules/@aws-sdk/types": {
+ "version": "3.731.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
+ "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer/node_modules/@smithy/abort-controller": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer/node_modules/@smithy/node-http-handler": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer/node_modules/@smithy/types": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@amzn/codewhisperer/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
@@ -609,6 +847,7 @@
"resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz",
"integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@csstools/css-calc": "^2.1.3",
"@csstools/css-color-parser": "^3.0.9",
@@ -621,12 +860,14 @@
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/@aws-crypto/crc32": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz",
"integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/util": "^5.2.0",
"@aws-sdk/types": "^3.222.0",
@@ -640,6 +881,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz",
"integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/util": "^5.2.0",
"@aws-sdk/types": "^3.222.0",
@@ -650,6 +892,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz",
"integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/supports-web-crypto": "^5.2.0",
"@aws-crypto/util": "^5.2.0",
@@ -663,6 +906,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
"integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -674,6 +918,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
"integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/is-array-buffer": "^2.2.0",
"tslib": "^2.6.2"
@@ -686,6 +931,7 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
"integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/util-buffer-from": "^2.2.0",
"tslib": "^2.6.2"
@@ -698,6 +944,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz",
"integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-js": "^5.2.0",
"@aws-crypto/supports-web-crypto": "^5.2.0",
@@ -712,6 +959,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
"integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -723,6 +971,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
"integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/is-array-buffer": "^2.2.0",
"tslib": "^2.6.2"
@@ -735,6 +984,7 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
"integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/util-buffer-from": "^2.2.0",
"tslib": "^2.6.2"
@@ -747,6 +997,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz",
"integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/util": "^5.2.0",
"@aws-sdk/types": "^3.222.0",
@@ -760,6 +1011,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz",
"integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
}
@@ -768,6 +1020,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
"integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "^3.222.0",
"@smithy/util-utf8": "^2.0.0",
@@ -778,6 +1031,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
"integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -789,6 +1043,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
"integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/is-array-buffer": "^2.2.0",
"tslib": "^2.6.2"
@@ -801,6 +1056,7 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
"integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/util-buffer-from": "^2.2.0",
"tslib": "^2.6.2"
@@ -810,49 +1066,50 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.839.0.tgz",
- "integrity": "sha512-Pq/A5W46Z0JrRTIl4eVvguQjXWwVHiiBC3WyrLxlIH0hMS6bILgC7H+z+JiCm4mXR/oF2ZobQ8Wei/Sga1Uxkw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.936.0.tgz",
+ "integrity": "sha512-AkJZ426y0G8Lsyi9p7mWudacMKeo8XLZOfxUmeThMkDa3GxGQ1y6BTrOj6ZcvqQ1Hz7Abb3QWPC+EMqhu1Lncw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/credential-provider-node": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/credential-provider-node": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -860,48 +1117,49 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sso": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.839.0.tgz",
- "integrity": "sha512-AZABysUhbfcwXVlMo97/vwHgsfJNF81wypCAowpqAJkSjP2KrqsqHpb71/RoR2w8JGmEnBBXRD4wIxDhnmifWg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.936.0.tgz",
+ "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -909,25 +1167,24 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/core": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.839.0.tgz",
- "integrity": "sha512-KdwL5RaK7eUIlOpdOoZ5u+2t4X1rdX/MTZgz3IV/aBzjVUoGsp+uUnbyqXomLQSUitPHp72EE/NHDsvWW/IHvQ==",
- "dev": true,
- "dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/xml-builder": "3.821.0",
- "@smithy/core": "^3.6.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/signature-v4": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-utf8": "^4.0.0",
- "fast-xml-parser": "4.4.1",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz",
+ "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/xml-builder": "3.930.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/signature-v4": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -935,15 +1192,16 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.839.0.tgz",
- "integrity": "sha512-cWTadewPPz1OvObZJB+olrgh8VwcgIVcT293ZUT9V0CMF0UU7QaPwJP7uNXcNxltTh+sk1yhjH4UlcnJigZZbA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.936.0.tgz",
+ "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -951,20 +1209,21 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.839.0.tgz",
- "integrity": "sha512-fv0BZwrDhWDju4D1MCLT4I2aPjr0dVQ6P+MpqvcGNOA41Oa9UdRhYTV5iuy5NLXzIzoCmnS+XfSq5Kbsf6//xw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.936.0.tgz",
+ "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-stream": "^4.2.2",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-stream": "^4.5.6",
"tslib": "^2.6.2"
},
"engines": {
@@ -972,23 +1231,25 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.839.0.tgz",
- "integrity": "sha512-GHm0hF4CiDxIDR7TauMaA6iI55uuSqRxMBcqTAHaTPm6+h1A+MS+ysQMxZ+Jvwtoy8WmfTIGrJVxSCw0sK2hvA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.936.0.tgz",
+ "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/credential-provider-env": "3.839.0",
- "@aws-sdk/credential-provider-http": "3.839.0",
- "@aws-sdk/credential-provider-process": "3.839.0",
- "@aws-sdk/credential-provider-sso": "3.839.0",
- "@aws-sdk/credential-provider-web-identity": "3.839.0",
- "@aws-sdk/nested-clients": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/credential-provider-imds": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/credential-provider-env": "3.936.0",
+ "@aws-sdk/credential-provider-http": "3.936.0",
+ "@aws-sdk/credential-provider-login": "3.936.0",
+ "@aws-sdk/credential-provider-process": "3.936.0",
+ "@aws-sdk/credential-provider-sso": "3.936.0",
+ "@aws-sdk/credential-provider-web-identity": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/credential-provider-imds": "^4.2.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -996,22 +1257,23 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.839.0.tgz",
- "integrity": "sha512-7bR+U2h+ft0V8chyeu9Bh/pvau4ZkQMeRt5f0dAULoepZQ77QQVRP4H04yJPTg9DCtqbVULQ3uf5YOp1/08vQw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.936.0.tgz",
+ "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.839.0",
- "@aws-sdk/credential-provider-http": "3.839.0",
- "@aws-sdk/credential-provider-ini": "3.839.0",
- "@aws-sdk/credential-provider-process": "3.839.0",
- "@aws-sdk/credential-provider-sso": "3.839.0",
- "@aws-sdk/credential-provider-web-identity": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/credential-provider-imds": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/credential-provider-env": "3.936.0",
+ "@aws-sdk/credential-provider-http": "3.936.0",
+ "@aws-sdk/credential-provider-ini": "3.936.0",
+ "@aws-sdk/credential-provider-process": "3.936.0",
+ "@aws-sdk/credential-provider-sso": "3.936.0",
+ "@aws-sdk/credential-provider-web-identity": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/credential-provider-imds": "^4.2.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1019,16 +1281,17 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.839.0.tgz",
- "integrity": "sha512-qShpekjociUZ+isyQNa0P7jo+0q3N2+0eJDg8SGyP6K6hHTcGfiqxTDps+IKl6NreCPhZCBzyI9mWkP0xSDR6g==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.936.0.tgz",
+ "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1036,18 +1299,19 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.839.0.tgz",
- "integrity": "sha512-w10zBLHhU8SBQcdrSPMI02haLoRGZg+gP7mH/Er8VhIXfHefbr7o4NirmB0hwdw/YAH8MLlC9jj7c2SJlsNhYA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.936.0.tgz",
+ "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/client-sso": "3.839.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/token-providers": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/client-sso": "3.936.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/token-providers": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1055,16 +1319,18 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.839.0.tgz",
- "integrity": "sha512-EvqTc7J1kgmiuxknpCp1S60hyMQvmKxsI5uXzQtcogl/N55rxiXEqnCLI5q6p33q91PJegrcMCM5Q17Afhm5qA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.936.0.tgz",
+ "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/nested-clients": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1072,14 +1338,15 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.821.0.tgz",
- "integrity": "sha512-xSMR+sopSeWGx5/4pAGhhfMvGBHioVBbqGvDs6pG64xfNwM5vq5s5v6D04e2i+uSTj4qGa71dLUs5I0UzAK3sw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz",
+ "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1087,13 +1354,14 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-logger": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.821.0.tgz",
- "integrity": "sha512-0cvI0ipf2tGx7fXYEEN5fBeZDz2RnHyb9xftSgUsEq7NBxjV0yTZfLJw6Za5rjE6snC80dRN8+bTNR1tuG89zA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz",
+ "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1101,14 +1369,16 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.821.0.tgz",
- "integrity": "sha512-efmaifbhBoqKG3bAoEfDdcM8hn1psF+4qa7ykWuYmfmah59JBeqHLfz5W9m9JoTwoKPkFcVLWZxnyZzAnVBOIg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz",
+ "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@aws/lambda-invoke-store": "^0.2.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1116,17 +1386,18 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.839.0.tgz",
- "integrity": "sha512-2u74uRM1JWq6Sf7+3YpjejPM9YkomGt4kWhrmooIBEq1k5r2GTbkH7pNCxBQwBueXM21jAGVDxxeClpTx+5hig==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz",
+ "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@smithy/core": "^3.6.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1134,48 +1405,49 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/nested-clients": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.839.0.tgz",
- "integrity": "sha512-Glic0pg2THYP3aRhJORwJJBe1JLtJoEdWV/MFZNyzCklfMwEzpWtZAyxy+tQyFmMeW50uBAnh2R0jhMMcf257w==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz",
+ "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1183,16 +1455,33 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.821.0.tgz",
- "integrity": "sha512-t8og+lRCIIy5nlId0bScNpCkif8sc0LhmtaKsbm0ZPm3sCa/WhCbSZibjbZ28FNjVCV+p0D9RYZx0VDDbtWyjw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz",
+ "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
- "@smithy/util-config-provider": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz",
+ "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-endpoints": "^3.2.5",
"tslib": "^2.6.2"
},
"engines": {
@@ -1200,27 +1489,29 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.821.0.tgz",
- "integrity": "sha512-irWZHyM0Jr1xhC+38OuZ7JB6OXMLPZlj48thElpsO1ZSLRkLZx5+I7VV6k3sp2yZ7BYbKz/G2ojSv4wdm7XTLw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz",
+ "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.839.0.tgz",
- "integrity": "sha512-MuunkIG1bJVMtTH7MbjXOrhHleU5wjHz5eCAUc6vj7M9rwol71nqjj9b8RLnkO5gsJcKc29Qk8iV6xQuzKWNMw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz",
+ "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1236,12 +1527,13 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1249,15 +1541,16 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1265,10 +1558,11 @@
}
},
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -1277,115 +1571,114 @@
}
},
"node_modules/@aws-sdk/client-s3": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.839.0.tgz",
- "integrity": "sha512-7zDInY+qltKxeG+9d/97nbs+FWINcAi5bChBrleUQkuQ/dA9pSP1URo/6JlVzD2Ejvksm+hVK6z3VUWZaIAVOw==",
+ "version": "3.937.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.937.0.tgz",
+ "integrity": "sha512-ioeNe6HSc7PxjsUQY7foSHmgesxM5KwAeUtPhIHgKx99nrM+7xYCfW4FMvHypUzz7ZOvqlCdH7CEAZ8ParBvVg==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha1-browser": "5.2.0",
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/credential-provider-node": "3.839.0",
- "@aws-sdk/middleware-bucket-endpoint": "3.830.0",
- "@aws-sdk/middleware-expect-continue": "3.821.0",
- "@aws-sdk/middleware-flexible-checksums": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-location-constraint": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-sdk-s3": "3.839.0",
- "@aws-sdk/middleware-ssec": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/signature-v4-multi-region": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@aws-sdk/xml-builder": "3.821.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/eventstream-serde-browser": "^4.0.4",
- "@smithy/eventstream-serde-config-resolver": "^4.1.2",
- "@smithy/eventstream-serde-node": "^4.0.4",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-blob-browser": "^4.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/hash-stream-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/md5-js": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-stream": "^4.2.2",
- "@smithy/util-utf8": "^4.0.0",
- "@smithy/util-waiter": "^4.0.6",
- "@types/uuid": "^9.0.1",
- "tslib": "^2.6.2",
- "uuid": "^9.0.1"
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/credential-provider-node": "3.936.0",
+ "@aws-sdk/middleware-bucket-endpoint": "3.936.0",
+ "@aws-sdk/middleware-expect-continue": "3.936.0",
+ "@aws-sdk/middleware-flexible-checksums": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-location-constraint": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-sdk-s3": "3.936.0",
+ "@aws-sdk/middleware-ssec": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/signature-v4-multi-region": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/eventstream-serde-browser": "^4.2.5",
+ "@smithy/eventstream-serde-config-resolver": "^4.3.5",
+ "@smithy/eventstream-serde-node": "^4.2.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-blob-browser": "^4.2.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/hash-stream-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/md5-js": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-stream": "^4.5.6",
+ "@smithy/util-utf8": "^4.2.0",
+ "@smithy/util-waiter": "^4.2.5",
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sso": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.839.0.tgz",
- "integrity": "sha512-AZABysUhbfcwXVlMo97/vwHgsfJNF81wypCAowpqAJkSjP2KrqsqHpb71/RoR2w8JGmEnBBXRD4wIxDhnmifWg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.936.0.tgz",
+ "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1393,24 +1686,23 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/core": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.839.0.tgz",
- "integrity": "sha512-KdwL5RaK7eUIlOpdOoZ5u+2t4X1rdX/MTZgz3IV/aBzjVUoGsp+uUnbyqXomLQSUitPHp72EE/NHDsvWW/IHvQ==",
- "dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/xml-builder": "3.821.0",
- "@smithy/core": "^3.6.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/signature-v4": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-utf8": "^4.0.0",
- "fast-xml-parser": "4.4.1",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz",
+ "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/xml-builder": "3.930.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/signature-v4": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1418,14 +1710,15 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.839.0.tgz",
- "integrity": "sha512-cWTadewPPz1OvObZJB+olrgh8VwcgIVcT293ZUT9V0CMF0UU7QaPwJP7uNXcNxltTh+sk1yhjH4UlcnJigZZbA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.936.0.tgz",
+ "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1433,19 +1726,20 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.839.0.tgz",
- "integrity": "sha512-fv0BZwrDhWDju4D1MCLT4I2aPjr0dVQ6P+MpqvcGNOA41Oa9UdRhYTV5iuy5NLXzIzoCmnS+XfSq5Kbsf6//xw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.936.0.tgz",
+ "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-stream": "^4.2.2",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-stream": "^4.5.6",
"tslib": "^2.6.2"
},
"engines": {
@@ -1453,22 +1747,24 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.839.0.tgz",
- "integrity": "sha512-GHm0hF4CiDxIDR7TauMaA6iI55uuSqRxMBcqTAHaTPm6+h1A+MS+ysQMxZ+Jvwtoy8WmfTIGrJVxSCw0sK2hvA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.936.0.tgz",
+ "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/credential-provider-env": "3.839.0",
- "@aws-sdk/credential-provider-http": "3.839.0",
- "@aws-sdk/credential-provider-process": "3.839.0",
- "@aws-sdk/credential-provider-sso": "3.839.0",
- "@aws-sdk/credential-provider-web-identity": "3.839.0",
- "@aws-sdk/nested-clients": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/credential-provider-imds": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/credential-provider-env": "3.936.0",
+ "@aws-sdk/credential-provider-http": "3.936.0",
+ "@aws-sdk/credential-provider-login": "3.936.0",
+ "@aws-sdk/credential-provider-process": "3.936.0",
+ "@aws-sdk/credential-provider-sso": "3.936.0",
+ "@aws-sdk/credential-provider-web-identity": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/credential-provider-imds": "^4.2.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1476,21 +1772,22 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.839.0.tgz",
- "integrity": "sha512-7bR+U2h+ft0V8chyeu9Bh/pvau4ZkQMeRt5f0dAULoepZQ77QQVRP4H04yJPTg9DCtqbVULQ3uf5YOp1/08vQw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.936.0.tgz",
+ "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.839.0",
- "@aws-sdk/credential-provider-http": "3.839.0",
- "@aws-sdk/credential-provider-ini": "3.839.0",
- "@aws-sdk/credential-provider-process": "3.839.0",
- "@aws-sdk/credential-provider-sso": "3.839.0",
- "@aws-sdk/credential-provider-web-identity": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/credential-provider-imds": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/credential-provider-env": "3.936.0",
+ "@aws-sdk/credential-provider-http": "3.936.0",
+ "@aws-sdk/credential-provider-ini": "3.936.0",
+ "@aws-sdk/credential-provider-process": "3.936.0",
+ "@aws-sdk/credential-provider-sso": "3.936.0",
+ "@aws-sdk/credential-provider-web-identity": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/credential-provider-imds": "^4.2.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1498,15 +1795,16 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.839.0.tgz",
- "integrity": "sha512-qShpekjociUZ+isyQNa0P7jo+0q3N2+0eJDg8SGyP6K6hHTcGfiqxTDps+IKl6NreCPhZCBzyI9mWkP0xSDR6g==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.936.0.tgz",
+ "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1514,17 +1812,18 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.839.0.tgz",
- "integrity": "sha512-w10zBLHhU8SBQcdrSPMI02haLoRGZg+gP7mH/Er8VhIXfHefbr7o4NirmB0hwdw/YAH8MLlC9jj7c2SJlsNhYA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.936.0.tgz",
+ "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/client-sso": "3.839.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/token-providers": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/client-sso": "3.936.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/token-providers": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1532,15 +1831,17 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.839.0.tgz",
- "integrity": "sha512-EvqTc7J1kgmiuxknpCp1S60hyMQvmKxsI5uXzQtcogl/N55rxiXEqnCLI5q6p33q91PJegrcMCM5Q17Afhm5qA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.936.0.tgz",
+ "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/nested-clients": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1548,13 +1849,14 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.821.0.tgz",
- "integrity": "sha512-xSMR+sopSeWGx5/4pAGhhfMvGBHioVBbqGvDs6pG64xfNwM5vq5s5v6D04e2i+uSTj4qGa71dLUs5I0UzAK3sw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz",
+ "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1562,12 +1864,13 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-logger": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.821.0.tgz",
- "integrity": "sha512-0cvI0ipf2tGx7fXYEEN5fBeZDz2RnHyb9xftSgUsEq7NBxjV0yTZfLJw6Za5rjE6snC80dRN8+bTNR1tuG89zA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz",
+ "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1575,13 +1878,15 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.821.0.tgz",
- "integrity": "sha512-efmaifbhBoqKG3bAoEfDdcM8hn1psF+4qa7ykWuYmfmah59JBeqHLfz5W9m9JoTwoKPkFcVLWZxnyZzAnVBOIg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz",
+ "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@aws/lambda-invoke-store": "^0.2.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1589,16 +1894,17 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.839.0.tgz",
- "integrity": "sha512-2u74uRM1JWq6Sf7+3YpjejPM9YkomGt4kWhrmooIBEq1k5r2GTbkH7pNCxBQwBueXM21jAGVDxxeClpTx+5hig==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz",
+ "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@smithy/core": "^3.6.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1606,47 +1912,48 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/nested-clients": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.839.0.tgz",
- "integrity": "sha512-Glic0pg2THYP3aRhJORwJJBe1JLtJoEdWV/MFZNyzCklfMwEzpWtZAyxy+tQyFmMeW50uBAnh2R0jhMMcf257w==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz",
+ "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1654,15 +1961,31 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.821.0.tgz",
- "integrity": "sha512-t8og+lRCIIy5nlId0bScNpCkif8sc0LhmtaKsbm0ZPm3sCa/WhCbSZibjbZ28FNjVCV+p0D9RYZx0VDDbtWyjw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz",
+ "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
- "@smithy/util-config-provider": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz",
+ "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-endpoints": "^3.2.5",
"tslib": "^2.6.2"
},
"engines": {
@@ -1670,25 +1993,27 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.821.0.tgz",
- "integrity": "sha512-irWZHyM0Jr1xhC+38OuZ7JB6OXMLPZlj48thElpsO1ZSLRkLZx5+I7VV6k3sp2yZ7BYbKz/G2ojSv4wdm7XTLw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz",
+ "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.839.0.tgz",
- "integrity": "sha512-MuunkIG1bJVMtTH7MbjXOrhHleU5wjHz5eCAUc6vj7M9rwol71nqjj9b8RLnkO5gsJcKc29Qk8iV6xQuzKWNMw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz",
+ "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1704,11 +2029,12 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1716,14 +2042,15 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1731,9 +2058,10 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -1741,22 +2069,11 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/client-s3/node_modules/uuid": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
- "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
- "funding": [
- "https://github.com/sponsors/broofa",
- "https://github.com/sponsors/ctavan"
- ],
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
"node_modules/@aws-sdk/client-sso": {
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.731.0.tgz",
"integrity": "sha512-O4C/UYGgqMsBg21MMApFdgyh8BX568hQhbdoNFmRVTBoSnCZ3w+H4a1wBPX4Gyl0NX+ab6Xxo9rId8HiyPXJ0A==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
@@ -1802,48 +2119,49 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.839.0.tgz",
- "integrity": "sha512-7QnMApYfQBT441YkxObxt1hZ8TdqZH7h0NdYsvbLdEqGROXBDDT+Wq7ZVfsnKjuVUGQ/t75bIqFn7M8cdyESfA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.936.0.tgz",
+ "integrity": "sha512-+yVLpCbA19NnD14FMUx1beLoYyZjoPu5IE9YjhBHN3DSYuF/nonDCwo/76j0oDe6LSQmZ0oJF3oMDAioFoYtDw==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/credential-provider-node": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/credential-provider-node": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1851,47 +2169,48 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/client-sso": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.839.0.tgz",
- "integrity": "sha512-AZABysUhbfcwXVlMo97/vwHgsfJNF81wypCAowpqAJkSjP2KrqsqHpb71/RoR2w8JGmEnBBXRD4wIxDhnmifWg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.936.0.tgz",
+ "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1899,24 +2218,23 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/core": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.839.0.tgz",
- "integrity": "sha512-KdwL5RaK7eUIlOpdOoZ5u+2t4X1rdX/MTZgz3IV/aBzjVUoGsp+uUnbyqXomLQSUitPHp72EE/NHDsvWW/IHvQ==",
- "dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/xml-builder": "3.821.0",
- "@smithy/core": "^3.6.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/signature-v4": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-utf8": "^4.0.0",
- "fast-xml-parser": "4.4.1",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz",
+ "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/xml-builder": "3.930.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/signature-v4": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1924,14 +2242,15 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.839.0.tgz",
- "integrity": "sha512-cWTadewPPz1OvObZJB+olrgh8VwcgIVcT293ZUT9V0CMF0UU7QaPwJP7uNXcNxltTh+sk1yhjH4UlcnJigZZbA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.936.0.tgz",
+ "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1939,19 +2258,20 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.839.0.tgz",
- "integrity": "sha512-fv0BZwrDhWDju4D1MCLT4I2aPjr0dVQ6P+MpqvcGNOA41Oa9UdRhYTV5iuy5NLXzIzoCmnS+XfSq5Kbsf6//xw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.936.0.tgz",
+ "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-stream": "^4.2.2",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-stream": "^4.5.6",
"tslib": "^2.6.2"
},
"engines": {
@@ -1959,22 +2279,24 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.839.0.tgz",
- "integrity": "sha512-GHm0hF4CiDxIDR7TauMaA6iI55uuSqRxMBcqTAHaTPm6+h1A+MS+ysQMxZ+Jvwtoy8WmfTIGrJVxSCw0sK2hvA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.936.0.tgz",
+ "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/credential-provider-env": "3.839.0",
- "@aws-sdk/credential-provider-http": "3.839.0",
- "@aws-sdk/credential-provider-process": "3.839.0",
- "@aws-sdk/credential-provider-sso": "3.839.0",
- "@aws-sdk/credential-provider-web-identity": "3.839.0",
- "@aws-sdk/nested-clients": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/credential-provider-imds": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/credential-provider-env": "3.936.0",
+ "@aws-sdk/credential-provider-http": "3.936.0",
+ "@aws-sdk/credential-provider-login": "3.936.0",
+ "@aws-sdk/credential-provider-process": "3.936.0",
+ "@aws-sdk/credential-provider-sso": "3.936.0",
+ "@aws-sdk/credential-provider-web-identity": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/credential-provider-imds": "^4.2.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -1982,21 +2304,22 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.839.0.tgz",
- "integrity": "sha512-7bR+U2h+ft0V8chyeu9Bh/pvau4ZkQMeRt5f0dAULoepZQ77QQVRP4H04yJPTg9DCtqbVULQ3uf5YOp1/08vQw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.936.0.tgz",
+ "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.839.0",
- "@aws-sdk/credential-provider-http": "3.839.0",
- "@aws-sdk/credential-provider-ini": "3.839.0",
- "@aws-sdk/credential-provider-process": "3.839.0",
- "@aws-sdk/credential-provider-sso": "3.839.0",
- "@aws-sdk/credential-provider-web-identity": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/credential-provider-imds": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/credential-provider-env": "3.936.0",
+ "@aws-sdk/credential-provider-http": "3.936.0",
+ "@aws-sdk/credential-provider-ini": "3.936.0",
+ "@aws-sdk/credential-provider-process": "3.936.0",
+ "@aws-sdk/credential-provider-sso": "3.936.0",
+ "@aws-sdk/credential-provider-web-identity": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/credential-provider-imds": "^4.2.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2004,15 +2327,16 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.839.0.tgz",
- "integrity": "sha512-qShpekjociUZ+isyQNa0P7jo+0q3N2+0eJDg8SGyP6K6hHTcGfiqxTDps+IKl6NreCPhZCBzyI9mWkP0xSDR6g==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.936.0.tgz",
+ "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2020,17 +2344,18 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.839.0.tgz",
- "integrity": "sha512-w10zBLHhU8SBQcdrSPMI02haLoRGZg+gP7mH/Er8VhIXfHefbr7o4NirmB0hwdw/YAH8MLlC9jj7c2SJlsNhYA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.936.0.tgz",
+ "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/client-sso": "3.839.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/token-providers": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/client-sso": "3.936.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/token-providers": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2038,15 +2363,17 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.839.0.tgz",
- "integrity": "sha512-EvqTc7J1kgmiuxknpCp1S60hyMQvmKxsI5uXzQtcogl/N55rxiXEqnCLI5q6p33q91PJegrcMCM5Q17Afhm5qA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.936.0.tgz",
+ "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/nested-clients": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2054,13 +2381,14 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.821.0.tgz",
- "integrity": "sha512-xSMR+sopSeWGx5/4pAGhhfMvGBHioVBbqGvDs6pG64xfNwM5vq5s5v6D04e2i+uSTj4qGa71dLUs5I0UzAK3sw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz",
+ "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2068,12 +2396,13 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-logger": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.821.0.tgz",
- "integrity": "sha512-0cvI0ipf2tGx7fXYEEN5fBeZDz2RnHyb9xftSgUsEq7NBxjV0yTZfLJw6Za5rjE6snC80dRN8+bTNR1tuG89zA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz",
+ "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2081,13 +2410,15 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.821.0.tgz",
- "integrity": "sha512-efmaifbhBoqKG3bAoEfDdcM8hn1psF+4qa7ykWuYmfmah59JBeqHLfz5W9m9JoTwoKPkFcVLWZxnyZzAnVBOIg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz",
+ "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@aws/lambda-invoke-store": "^0.2.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2095,16 +2426,17 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.839.0.tgz",
- "integrity": "sha512-2u74uRM1JWq6Sf7+3YpjejPM9YkomGt4kWhrmooIBEq1k5r2GTbkH7pNCxBQwBueXM21jAGVDxxeClpTx+5hig==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz",
+ "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@smithy/core": "^3.6.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2112,47 +2444,48 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/nested-clients": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.839.0.tgz",
- "integrity": "sha512-Glic0pg2THYP3aRhJORwJJBe1JLtJoEdWV/MFZNyzCklfMwEzpWtZAyxy+tQyFmMeW50uBAnh2R0jhMMcf257w==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz",
+ "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2160,15 +2493,31 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.821.0.tgz",
- "integrity": "sha512-t8og+lRCIIy5nlId0bScNpCkif8sc0LhmtaKsbm0ZPm3sCa/WhCbSZibjbZ28FNjVCV+p0D9RYZx0VDDbtWyjw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz",
+ "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
- "@smithy/util-config-provider": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz",
+ "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-endpoints": "^3.2.5",
"tslib": "^2.6.2"
},
"engines": {
@@ -2176,25 +2525,27 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.821.0.tgz",
- "integrity": "sha512-irWZHyM0Jr1xhC+38OuZ7JB6OXMLPZlj48thElpsO1ZSLRkLZx5+I7VV6k3sp2yZ7BYbKz/G2ojSv4wdm7XTLw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz",
+ "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.839.0.tgz",
- "integrity": "sha512-MuunkIG1bJVMtTH7MbjXOrhHleU5wjHz5eCAUc6vj7M9rwol71nqjj9b8RLnkO5gsJcKc29Qk8iV6xQuzKWNMw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz",
+ "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2210,11 +2561,12 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2222,14 +2574,15 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2237,9 +2590,10 @@
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -2251,6 +2605,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -2259,26 +2614,13 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz",
- "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==",
- "dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-endpoints": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"node_modules/@aws-sdk/client-sso/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2286,14 +2628,15 @@
}
},
"node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2301,9 +2644,10 @@
}
},
"node_modules/@aws-sdk/client-sso/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -2315,6 +2659,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.731.0.tgz",
"integrity": "sha512-ithBN1VWASkvAIlozJmenqDvNnFddr/SZXAs58+jCnBHgy3tXLHABZGVNCjetZkHRqNdXEO1kirnoxaFeXMeDA==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "3.731.0",
"@smithy/core": "^3.0.0",
@@ -2336,6 +2681,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -2345,15 +2691,16 @@
}
},
"node_modules/@aws-sdk/credential-provider-cognito-identity": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.839.0.tgz",
- "integrity": "sha512-dXJsdSEVzG+8nIihqVnWzyW8Dc41kNKZEXYguHDb+VM/cIjRSVkaw9jXc+KAvbwcGkEB7BfAuW9VMjxpTR5eAA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.936.0.tgz",
+ "integrity": "sha512-+aSC59yiD4M5RcYp9Gx3iwX/n4hO3ZWA2Mxmkzmt9gYFBbJ9umx2LpBdrV64y57AtOvfGeo0h7PAXniIufagxw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/client-cognito-identity": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/client-cognito-identity": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2361,10 +2708,11 @@
}
},
"node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -2376,6 +2724,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.731.0.tgz",
"integrity": "sha512-h0WWZg4QMLgFVyIvQrC43zpVqsUWg1mPM1clpogP43B8+wEhDEQ4qWRzvFs3dQ4cqx/FLyDUZZF4cqgd94z7kw==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/core": "3.731.0",
"@aws-sdk/types": "3.731.0",
@@ -2391,6 +2740,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -2403,6 +2753,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.731.0.tgz",
"integrity": "sha512-iRtrjtcYaWgbvtu2cvDhIsPWXZGvhy1Hgks4682MEBNTc9AUwlfvDrYz2EEnTtJJyrbOdEHVrYrzqD8qPyVLCg==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/core": "3.731.0",
"@aws-sdk/types": "3.731.0",
@@ -2423,6 +2774,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -2432,11 +2784,12 @@
}
},
"node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2444,14 +2797,15 @@
}
},
"node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2459,9 +2813,10 @@
}
},
"node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -2473,6 +2828,7 @@
"version": "3.731.1",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.731.1.tgz",
"integrity": "sha512-0M0ejuqW8iHNcTH2ZXSY9m+I7Y06qVkj6k3vfQU9XaB//mTUCxxfGfqWAtgfr7Yi73egABTcPc0jyPdcvSW4Kw==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/core": "3.731.0",
"@aws-sdk/credential-provider-env": "3.731.0",
@@ -2496,6 +2852,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -2504,72 +2861,341 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.731.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.731.1.tgz",
- "integrity": "sha512-5c0ZiagMTPmWilXNffeXJCLoCEz97jilHr3QJWwf2GaTay4tzN+Ld71rpdfEenzUR7fuxEWFfVlwQbFOzFNYHg==",
+ "node_modules/@aws-sdk/credential-provider-login": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.936.0.tgz",
+ "integrity": "sha512-8DVrdRqPyUU66gfV7VZNToh56ZuO5D6agWrkLQE/xbLJOm2RbeRgh6buz7CqV8ipRd6m+zCl9mM4F3osQLZn8Q==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.731.0",
- "@aws-sdk/credential-provider-http": "3.731.0",
- "@aws-sdk/credential-provider-ini": "3.731.1",
- "@aws-sdk/credential-provider-process": "3.731.0",
- "@aws-sdk/credential-provider-sso": "3.731.1",
- "@aws-sdk/credential-provider-web-identity": "3.731.1",
- "@aws-sdk/types": "3.731.0",
- "@smithy/credential-provider-imds": "^4.0.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/shared-ini-file-loader": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/core": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz",
+ "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/xml-builder": "3.930.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/signature-v4": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.731.0.tgz",
- "integrity": "sha512-6yNMY6q3xHLbs2f2+C6GhvMrjTgtFBiPJJqKaPLsTIhlTRvh4sK8pGm3ITcma0jOxtPDIuoPfBAV8N8XVMBlZg==",
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz",
+ "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/shared-ini-file-loader": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-process/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz",
+ "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.731.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.731.1.tgz",
- "integrity": "sha512-p1tp+rMUf5YNQLr8rVRmDgNtKGYLL0KCdq3K2hwwvFnx9MjReF1sA4lfm3xWsxBQM+j3QN9AvMQqBzDJ+NOSdw==",
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz",
+ "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@aws/lambda-invoke-store": "^0.2.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz",
+ "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/nested-clients": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz",
+ "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/region-config-resolver": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz",
+ "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz",
+ "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-endpoints": "^3.2.5",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz",
+ "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz",
+ "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/abort-controller": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/node-http-handler": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/types": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.731.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.731.1.tgz",
+ "integrity": "sha512-5c0ZiagMTPmWilXNffeXJCLoCEz97jilHr3QJWwf2GaTay4tzN+Ld71rpdfEenzUR7fuxEWFfVlwQbFOzFNYHg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.731.0",
+ "@aws-sdk/credential-provider-http": "3.731.0",
+ "@aws-sdk/credential-provider-ini": "3.731.1",
+ "@aws-sdk/credential-provider-process": "3.731.0",
+ "@aws-sdk/credential-provider-sso": "3.731.1",
+ "@aws-sdk/credential-provider-web-identity": "3.731.1",
+ "@aws-sdk/types": "3.731.0",
+ "@smithy/credential-provider-imds": "^4.0.0",
+ "@smithy/property-provider": "^4.0.0",
+ "@smithy/shared-ini-file-loader": "^4.0.0",
+ "@smithy/types": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/types": {
+ "version": "3.731.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
+ "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.731.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.731.0.tgz",
+ "integrity": "sha512-6yNMY6q3xHLbs2f2+C6GhvMrjTgtFBiPJJqKaPLsTIhlTRvh4sK8pGm3ITcma0jOxtPDIuoPfBAV8N8XVMBlZg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.731.0",
+ "@aws-sdk/types": "3.731.0",
+ "@smithy/property-provider": "^4.0.0",
+ "@smithy/shared-ini-file-loader": "^4.0.0",
+ "@smithy/types": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-process/node_modules/@aws-sdk/types": {
+ "version": "3.731.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
+ "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.731.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.731.1.tgz",
+ "integrity": "sha512-p1tp+rMUf5YNQLr8rVRmDgNtKGYLL0KCdq3K2hwwvFnx9MjReF1sA4lfm3xWsxBQM+j3QN9AvMQqBzDJ+NOSdw==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/client-sso": "3.731.0",
"@aws-sdk/core": "3.731.0",
@@ -2588,6 +3214,7 @@
"version": "3.731.1",
"resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.731.1.tgz",
"integrity": "sha512-t34GOPwBZsX7zGHjiTXmMHGY3kHM7fLiQ60Jqk0On9P0ASHTDE5U75RgCXboE3u+qEv9wyKyaqMNyMWj9qQlFg==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/nested-clients": "3.731.1",
"@aws-sdk/types": "3.731.0",
@@ -2604,6 +3231,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -2616,6 +3244,7 @@
"version": "3.731.1",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.731.1.tgz",
"integrity": "sha512-+ynAvEGWDR5ZJFxgpwwzhvlQ3WQ7BleWXU6JwpIw3yFrD4eZEn85b8DZC1aEz7C9kb1HSV6B3gpqHqlyS6wj8g==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/core": "3.731.0",
"@aws-sdk/nested-clients": "3.731.1",
@@ -2632,6 +3261,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -2641,29 +3271,31 @@
}
},
"node_modules/@aws-sdk/credential-providers": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.839.0.tgz",
- "integrity": "sha512-hiM7vY2qYAdNT87+Qd3vvfNA+bqhtecsPIduIxkhwispEs9NGcQYtOaG3KQRcHkJBb4kaMYpudVNMXeYUYi2Aw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.936.0.tgz",
+ "integrity": "sha512-RWiX6wuReeEU7/P7apGwWMNO7nrai/CXmMMaho3+pJW7i6ImosgsjSe5tetdv1r4djOtM1b4J4WAbHPKJUahUg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/client-cognito-identity": "3.839.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/credential-provider-cognito-identity": "3.839.0",
- "@aws-sdk/credential-provider-env": "3.839.0",
- "@aws-sdk/credential-provider-http": "3.839.0",
- "@aws-sdk/credential-provider-ini": "3.839.0",
- "@aws-sdk/credential-provider-node": "3.839.0",
- "@aws-sdk/credential-provider-process": "3.839.0",
- "@aws-sdk/credential-provider-sso": "3.839.0",
- "@aws-sdk/credential-provider-web-identity": "3.839.0",
- "@aws-sdk/nested-clients": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/credential-provider-imds": "^4.0.6",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/client-cognito-identity": "3.936.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/credential-provider-cognito-identity": "3.936.0",
+ "@aws-sdk/credential-provider-env": "3.936.0",
+ "@aws-sdk/credential-provider-http": "3.936.0",
+ "@aws-sdk/credential-provider-ini": "3.936.0",
+ "@aws-sdk/credential-provider-login": "3.936.0",
+ "@aws-sdk/credential-provider-node": "3.936.0",
+ "@aws-sdk/credential-provider-process": "3.936.0",
+ "@aws-sdk/credential-provider-sso": "3.936.0",
+ "@aws-sdk/credential-provider-web-identity": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/credential-provider-imds": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2671,48 +3303,49 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sso": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.839.0.tgz",
- "integrity": "sha512-AZABysUhbfcwXVlMo97/vwHgsfJNF81wypCAowpqAJkSjP2KrqsqHpb71/RoR2w8JGmEnBBXRD4wIxDhnmifWg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.936.0.tgz",
+ "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2720,25 +3353,24 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/core": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.839.0.tgz",
- "integrity": "sha512-KdwL5RaK7eUIlOpdOoZ5u+2t4X1rdX/MTZgz3IV/aBzjVUoGsp+uUnbyqXomLQSUitPHp72EE/NHDsvWW/IHvQ==",
- "dev": true,
- "dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/xml-builder": "3.821.0",
- "@smithy/core": "^3.6.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/signature-v4": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-utf8": "^4.0.0",
- "fast-xml-parser": "4.4.1",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz",
+ "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/xml-builder": "3.930.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/signature-v4": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2746,15 +3378,16 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.839.0.tgz",
- "integrity": "sha512-cWTadewPPz1OvObZJB+olrgh8VwcgIVcT293ZUT9V0CMF0UU7QaPwJP7uNXcNxltTh+sk1yhjH4UlcnJigZZbA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.936.0.tgz",
+ "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2762,20 +3395,21 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.839.0.tgz",
- "integrity": "sha512-fv0BZwrDhWDju4D1MCLT4I2aPjr0dVQ6P+MpqvcGNOA41Oa9UdRhYTV5iuy5NLXzIzoCmnS+XfSq5Kbsf6//xw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.936.0.tgz",
+ "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-stream": "^4.2.2",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-stream": "^4.5.6",
"tslib": "^2.6.2"
},
"engines": {
@@ -2783,23 +3417,25 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.839.0.tgz",
- "integrity": "sha512-GHm0hF4CiDxIDR7TauMaA6iI55uuSqRxMBcqTAHaTPm6+h1A+MS+ysQMxZ+Jvwtoy8WmfTIGrJVxSCw0sK2hvA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.936.0.tgz",
+ "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/credential-provider-env": "3.839.0",
- "@aws-sdk/credential-provider-http": "3.839.0",
- "@aws-sdk/credential-provider-process": "3.839.0",
- "@aws-sdk/credential-provider-sso": "3.839.0",
- "@aws-sdk/credential-provider-web-identity": "3.839.0",
- "@aws-sdk/nested-clients": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/credential-provider-imds": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/credential-provider-env": "3.936.0",
+ "@aws-sdk/credential-provider-http": "3.936.0",
+ "@aws-sdk/credential-provider-login": "3.936.0",
+ "@aws-sdk/credential-provider-process": "3.936.0",
+ "@aws-sdk/credential-provider-sso": "3.936.0",
+ "@aws-sdk/credential-provider-web-identity": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/credential-provider-imds": "^4.2.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2807,22 +3443,23 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.839.0.tgz",
- "integrity": "sha512-7bR+U2h+ft0V8chyeu9Bh/pvau4ZkQMeRt5f0dAULoepZQ77QQVRP4H04yJPTg9DCtqbVULQ3uf5YOp1/08vQw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.936.0.tgz",
+ "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.839.0",
- "@aws-sdk/credential-provider-http": "3.839.0",
- "@aws-sdk/credential-provider-ini": "3.839.0",
- "@aws-sdk/credential-provider-process": "3.839.0",
- "@aws-sdk/credential-provider-sso": "3.839.0",
- "@aws-sdk/credential-provider-web-identity": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/credential-provider-imds": "^4.0.6",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/credential-provider-env": "3.936.0",
+ "@aws-sdk/credential-provider-http": "3.936.0",
+ "@aws-sdk/credential-provider-ini": "3.936.0",
+ "@aws-sdk/credential-provider-process": "3.936.0",
+ "@aws-sdk/credential-provider-sso": "3.936.0",
+ "@aws-sdk/credential-provider-web-identity": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/credential-provider-imds": "^4.2.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2830,16 +3467,17 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.839.0.tgz",
- "integrity": "sha512-qShpekjociUZ+isyQNa0P7jo+0q3N2+0eJDg8SGyP6K6hHTcGfiqxTDps+IKl6NreCPhZCBzyI9mWkP0xSDR6g==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.936.0.tgz",
+ "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2847,18 +3485,19 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.839.0.tgz",
- "integrity": "sha512-w10zBLHhU8SBQcdrSPMI02haLoRGZg+gP7mH/Er8VhIXfHefbr7o4NirmB0hwdw/YAH8MLlC9jj7c2SJlsNhYA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.936.0.tgz",
+ "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/client-sso": "3.839.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/token-providers": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/client-sso": "3.936.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/token-providers": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2866,16 +3505,18 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.839.0.tgz",
- "integrity": "sha512-EvqTc7J1kgmiuxknpCp1S60hyMQvmKxsI5uXzQtcogl/N55rxiXEqnCLI5q6p33q91PJegrcMCM5Q17Afhm5qA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.936.0.tgz",
+ "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/nested-clients": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2883,14 +3524,15 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.821.0.tgz",
- "integrity": "sha512-xSMR+sopSeWGx5/4pAGhhfMvGBHioVBbqGvDs6pG64xfNwM5vq5s5v6D04e2i+uSTj4qGa71dLUs5I0UzAK3sw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz",
+ "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2898,13 +3540,14 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-logger": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.821.0.tgz",
- "integrity": "sha512-0cvI0ipf2tGx7fXYEEN5fBeZDz2RnHyb9xftSgUsEq7NBxjV0yTZfLJw6Za5rjE6snC80dRN8+bTNR1tuG89zA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz",
+ "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2912,14 +3555,16 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.821.0.tgz",
- "integrity": "sha512-efmaifbhBoqKG3bAoEfDdcM8hn1psF+4qa7ykWuYmfmah59JBeqHLfz5W9m9JoTwoKPkFcVLWZxnyZzAnVBOIg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz",
+ "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@aws/lambda-invoke-store": "^0.2.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2927,17 +3572,18 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.839.0.tgz",
- "integrity": "sha512-2u74uRM1JWq6Sf7+3YpjejPM9YkomGt4kWhrmooIBEq1k5r2GTbkH7pNCxBQwBueXM21jAGVDxxeClpTx+5hig==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz",
+ "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@smithy/core": "^3.6.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2945,48 +3591,49 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/nested-clients": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.839.0.tgz",
- "integrity": "sha512-Glic0pg2THYP3aRhJORwJJBe1JLtJoEdWV/MFZNyzCklfMwEzpWtZAyxy+tQyFmMeW50uBAnh2R0jhMMcf257w==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz",
+ "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -2994,16 +3641,33 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.821.0.tgz",
- "integrity": "sha512-t8og+lRCIIy5nlId0bScNpCkif8sc0LhmtaKsbm0ZPm3sCa/WhCbSZibjbZ28FNjVCV+p0D9RYZx0VDDbtWyjw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz",
+ "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
- "@smithy/util-config-provider": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz",
+ "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-endpoints": "^3.2.5",
"tslib": "^2.6.2"
},
"engines": {
@@ -3011,27 +3675,29 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.821.0.tgz",
- "integrity": "sha512-irWZHyM0Jr1xhC+38OuZ7JB6OXMLPZlj48thElpsO1ZSLRkLZx5+I7VV6k3sp2yZ7BYbKz/G2ojSv4wdm7XTLw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz",
+ "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.839.0.tgz",
- "integrity": "sha512-MuunkIG1bJVMtTH7MbjXOrhHleU5wjHz5eCAUc6vj7M9rwol71nqjj9b8RLnkO5gsJcKc29Qk8iV6xQuzKWNMw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz",
+ "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3047,12 +3713,13 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3060,15 +3727,16 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3076,10 +3744,11 @@
}
},
"node_modules/@aws-sdk/credential-providers/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3088,16 +3757,17 @@
}
},
"node_modules/@aws-sdk/middleware-bucket-endpoint": {
- "version": "3.830.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.830.0.tgz",
- "integrity": "sha512-ElVeCReZSH5Ds+/pkL5ebneJjuo8f49e9JXV1cYizuH0OAOQfYaBU9+M+7+rn61pTttOFE8W//qKzrXBBJhfMg==",
- "dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-arn-parser": "3.804.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
- "@smithy/util-config-provider": "^4.0.0",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.936.0.tgz",
+ "integrity": "sha512-XLSVVfAorUxZh6dzF+HTOp4R1B5EQcdpGcPliWr0KUj2jukgjZEcqbBmjyMF/p9bmyQsONX80iURF1HLAlW0qg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-arn-parser": "3.893.0",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-config-provider": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3105,9 +3775,10 @@
}
},
"node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3116,13 +3787,14 @@
}
},
"node_modules/@aws-sdk/middleware-expect-continue": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.821.0.tgz",
- "integrity": "sha512-zAOoSZKe1njOrtynvK6ZORU57YGv5I7KP4+rwOvUN3ZhJbQ7QPf8gKtFUCYAPRMegaXCKF/ADPtDZBAmM+zZ9g==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.936.0.tgz",
+ "integrity": "sha512-Eb4ELAC23bEQLJmUMYnPWcjD3FZIsmz2svDiXEcxRkQU9r7NRID7pM7C5NPH94wOfiCk0b2Y8rVyFXW0lGQwbA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3130,9 +3802,10 @@
}
},
"node_modules/@aws-sdk/middleware-expect-continue/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3141,22 +3814,23 @@
}
},
"node_modules/@aws-sdk/middleware-flexible-checksums": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.839.0.tgz",
- "integrity": "sha512-2LEuDUviV3wardiHoHCKx0WUvmiK1gBGmnw12aj5f/KKcWOaqnWI2h1K7nDQC/ZARQ1bbMZZ5kvOv5ueuMg1RA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.936.0.tgz",
+ "integrity": "sha512-l3GG6CrSQtMCM6fWY7foV3JQv0WJWT+3G6PSP3Ceb/KEE/5Lz5PrYFXTBf+bVoYL1b0bGjGajcgAXpstBmtHtQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/crc32": "5.2.0",
"@aws-crypto/crc32c": "5.2.0",
"@aws-crypto/util": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/is-array-buffer": "^4.0.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-stream": "^4.2.2",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/is-array-buffer": "^4.2.0",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-stream": "^4.5.6",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3164,24 +3838,23 @@
}
},
"node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/core": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.839.0.tgz",
- "integrity": "sha512-KdwL5RaK7eUIlOpdOoZ5u+2t4X1rdX/MTZgz3IV/aBzjVUoGsp+uUnbyqXomLQSUitPHp72EE/NHDsvWW/IHvQ==",
- "dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/xml-builder": "3.821.0",
- "@smithy/core": "^3.6.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/signature-v4": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-utf8": "^4.0.0",
- "fast-xml-parser": "4.4.1",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz",
+ "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/xml-builder": "3.930.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/signature-v4": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3189,9 +3862,10 @@
}
},
"node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3203,6 +3877,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.731.0.tgz",
"integrity": "sha512-ndAJsm5uWPPJRZowLKpB1zuL17qWlWVtCJP4I/ynBkq1PU1DijDXBul2UZaG6Mpvsgms1NXo/h9noHuK7T3v8w==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "3.731.0",
"@smithy/protocol-http": "^5.0.0",
@@ -3217,6 +3892,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -3226,12 +3902,13 @@
}
},
"node_modules/@aws-sdk/middleware-location-constraint": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.821.0.tgz",
- "integrity": "sha512-sKrm80k0t3R0on8aA/WhWFoMaAl4yvdk+riotmMElLUpcMcRXAd1+600uFVrxJqZdbrKQ0mjX0PjT68DlkYXLg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.936.0.tgz",
+ "integrity": "sha512-SCMPenDtQMd9o5da9JzkHz838w3327iqXk3cbNnXWqnNRx6unyW8FL0DZ84gIY12kAyVHz5WEqlWuekc15ehfw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3239,9 +3916,10 @@
}
},
"node_modules/@aws-sdk/middleware-location-constraint/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3253,6 +3931,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.731.0.tgz",
"integrity": "sha512-IIZrOdjbY2vKzPJPrwE7FoFQCIPEL6UqURi8LEaiVyCag4p2fvaTN5pgKuQtGC2+iYd/HHcGT4qn2bAqF5Jmmw==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "3.731.0",
"@smithy/types": "^4.0.0",
@@ -3266,6 +3945,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -3278,6 +3958,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.731.0.tgz",
"integrity": "sha512-y6FLASB1iKWuR5tUipMyo77bt0lEl3OnCrrd2xw/H24avq1HhJjjPR0HHhJE6QKJzF/FYXeV88tcyPSMe32VDw==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "3.731.0",
"@smithy/protocol-http": "^5.0.0",
@@ -3292,6 +3973,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -3301,23 +3983,24 @@
}
},
"node_modules/@aws-sdk/middleware-sdk-s3": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.839.0.tgz",
- "integrity": "sha512-NwprpzJdkuUnUWxoZwKqAcL1/AsrM1YESVpLeL0pW747Vq6rIiUgkuoyQ1fASV9r5mUoWor7iMu8k5ZCisAh7A==",
- "dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-arn-parser": "3.804.0",
- "@smithy/core": "^3.6.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/signature-v4": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-config-provider": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-stream": "^4.2.2",
- "@smithy/util-utf8": "^4.0.0",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.936.0.tgz",
+ "integrity": "sha512-UQs/pVq4cOygsnKON0pOdSKIWkfgY0dzq4h+fR+xHi/Ng3XzxPJhWeAE6tDsKrcyQc1X8UdSbS70XkfGYr5hng==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-arn-parser": "3.893.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/signature-v4": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-config-provider": "^4.2.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-stream": "^4.5.6",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3325,24 +4008,23 @@
}
},
"node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/core": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.839.0.tgz",
- "integrity": "sha512-KdwL5RaK7eUIlOpdOoZ5u+2t4X1rdX/MTZgz3IV/aBzjVUoGsp+uUnbyqXomLQSUitPHp72EE/NHDsvWW/IHvQ==",
- "dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/xml-builder": "3.821.0",
- "@smithy/core": "^3.6.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/signature-v4": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-utf8": "^4.0.0",
- "fast-xml-parser": "4.4.1",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz",
+ "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/xml-builder": "3.930.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/signature-v4": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3350,9 +4032,10 @@
}
},
"node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3361,12 +4044,13 @@
}
},
"node_modules/@aws-sdk/middleware-ssec": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.821.0.tgz",
- "integrity": "sha512-YYi1Hhr2AYiU/24cQc8HIB+SWbQo6FBkMYojVuz/zgrtkFmALxENGF/21OPg7f/QWd+eadZJRxCjmRwh5F2Cxg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.936.0.tgz",
+ "integrity": "sha512-/GLC9lZdVp05ozRik5KsuODR/N7j+W+2TbfdFL3iS+7un+gnP6hC8RDOZd6WhpZp7drXQ9guKiTAxkZQwzS8DA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3374,9 +4058,10 @@
}
},
"node_modules/@aws-sdk/middleware-ssec/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3388,6 +4073,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.731.0.tgz",
"integrity": "sha512-Ngr2Gz0aec/uduoKaO3srN52SYkEHndYtFzkK/gDUyQwQzi4ha2eIisxPiuHEX6RvXT31V9ouqn/YtVkt0R76A==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/core": "3.731.0",
"@aws-sdk/types": "3.731.0",
@@ -3405,6 +4091,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -3413,24 +4100,11 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-user-agent/node_modules/@aws-sdk/util-endpoints": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz",
- "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==",
- "dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-endpoints": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"node_modules/@aws-sdk/nested-clients": {
"version": "3.731.1",
"resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.731.1.tgz",
"integrity": "sha512-/L8iVrulnXZl+kgmTn+oxRxNnhcSIbf+r12C06vGUq60w0YMidLvxJZN7vt8H9SnCAGCHqud2MS7ExCEvhc0gA==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
@@ -3479,6 +4153,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -3487,26 +4162,13 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-endpoints": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz",
- "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==",
- "dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-endpoints": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"node_modules/@aws-sdk/nested-clients/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3514,14 +4176,15 @@
}
},
"node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3529,9 +4192,10 @@
}
},
"node_modules/@aws-sdk/nested-clients/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3543,6 +4207,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.731.0.tgz",
"integrity": "sha512-XlDpRNkDVHF59f07JmkuAidEv//m3hT6/JL85h0l3+zrpaRWhf8n8lVUyAPNq35ZujK8AcorYM+93u7hdWsliQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "3.731.0",
"@smithy/node-config-provider": "^4.0.0",
@@ -3559,6 +4224,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -3568,15 +4234,16 @@
}
},
"node_modules/@aws-sdk/signature-v4-multi-region": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.839.0.tgz",
- "integrity": "sha512-/O+lh6qXKTMWPcip8ccGL7OgTceUTDmy3wBD22+tPHLeOUSMGUQTZcsmHeDB7vSHLpVY9H6GhOsdes7uQQMUwA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.936.0.tgz",
+ "integrity": "sha512-8qS0GFUqkmwO7JZ0P8tdluBmt1UTfYUah8qJXGzNh9n1Pcb0AIeT117cCSiCUtwk+gDbJvd4hhRIhJCNr5wgjg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-sdk-s3": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/signature-v4": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/middleware-sdk-s3": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/signature-v4": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3584,9 +4251,10 @@
}
},
"node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3595,16 +4263,17 @@
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.839.0.tgz",
- "integrity": "sha512-2nlafqdSbet/2WtYIoZ7KEGFowFonPBDYlTjrUvwU2yooE10VhvzhLSCTB2aKIVzo2Z2wL5WGFQsqAY5QwK6Bw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.936.0.tgz",
+ "integrity": "sha512-vvw8+VXk0I+IsoxZw0mX9TMJawUJvEsg3EF7zcCSetwhNPAU8Xmlhv7E/sN/FgSmm7b7DsqKoW6rVtQiCs1PWQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/nested-clients": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/nested-clients": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3612,24 +4281,23 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.839.0.tgz",
- "integrity": "sha512-KdwL5RaK7eUIlOpdOoZ5u+2t4X1rdX/MTZgz3IV/aBzjVUoGsp+uUnbyqXomLQSUitPHp72EE/NHDsvWW/IHvQ==",
- "dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/xml-builder": "3.821.0",
- "@smithy/core": "^3.6.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/signature-v4": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-utf8": "^4.0.0",
- "fast-xml-parser": "4.4.1",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz",
+ "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/xml-builder": "3.930.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/signature-v4": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3637,13 +4305,14 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.821.0.tgz",
- "integrity": "sha512-xSMR+sopSeWGx5/4pAGhhfMvGBHioVBbqGvDs6pG64xfNwM5vq5s5v6D04e2i+uSTj4qGa71dLUs5I0UzAK3sw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz",
+ "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3651,12 +4320,13 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.821.0.tgz",
- "integrity": "sha512-0cvI0ipf2tGx7fXYEEN5fBeZDz2RnHyb9xftSgUsEq7NBxjV0yTZfLJw6Za5rjE6snC80dRN8+bTNR1tuG89zA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz",
+ "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3664,13 +4334,15 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.821.0.tgz",
- "integrity": "sha512-efmaifbhBoqKG3bAoEfDdcM8hn1psF+4qa7ykWuYmfmah59JBeqHLfz5W9m9JoTwoKPkFcVLWZxnyZzAnVBOIg==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz",
+ "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@aws/lambda-invoke-store": "^0.2.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3678,16 +4350,17 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.839.0.tgz",
- "integrity": "sha512-2u74uRM1JWq6Sf7+3YpjejPM9YkomGt4kWhrmooIBEq1k5r2GTbkH7pNCxBQwBueXM21jAGVDxxeClpTx+5hig==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz",
+ "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@smithy/core": "^3.6.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@smithy/core": "^3.18.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3695,47 +4368,48 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.839.0.tgz",
- "integrity": "sha512-Glic0pg2THYP3aRhJORwJJBe1JLtJoEdWV/MFZNyzCklfMwEzpWtZAyxy+tQyFmMeW50uBAnh2R0jhMMcf257w==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz",
+ "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.839.0",
- "@aws-sdk/middleware-host-header": "3.821.0",
- "@aws-sdk/middleware-logger": "3.821.0",
- "@aws-sdk/middleware-recursion-detection": "3.821.0",
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/region-config-resolver": "3.821.0",
- "@aws-sdk/types": "3.821.0",
- "@aws-sdk/util-endpoints": "3.828.0",
- "@aws-sdk/util-user-agent-browser": "3.821.0",
- "@aws-sdk/util-user-agent-node": "3.839.0",
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/core": "^3.6.0",
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/hash-node": "^4.0.4",
- "@smithy/invalid-dependency": "^4.0.4",
- "@smithy/middleware-content-length": "^4.0.4",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-retry": "^4.1.14",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.21",
- "@smithy/util-defaults-mode-node": "^4.0.21",
- "@smithy/util-endpoints": "^3.0.6",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.936.0",
+ "@aws-sdk/middleware-host-header": "3.936.0",
+ "@aws-sdk/middleware-logger": "3.936.0",
+ "@aws-sdk/middleware-recursion-detection": "3.936.0",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/region-config-resolver": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@aws-sdk/util-endpoints": "3.936.0",
+ "@aws-sdk/util-user-agent-browser": "3.936.0",
+ "@aws-sdk/util-user-agent-node": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/core": "^3.18.5",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/hash-node": "^4.2.5",
+ "@smithy/invalid-dependency": "^4.2.5",
+ "@smithy/middleware-content-length": "^4.2.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-retry": "^4.4.12",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-body-length-node": "^4.2.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.11",
+ "@smithy/util-defaults-mode-node": "^4.2.14",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3743,15 +4417,31 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.821.0.tgz",
- "integrity": "sha512-t8og+lRCIIy5nlId0bScNpCkif8sc0LhmtaKsbm0ZPm3sCa/WhCbSZibjbZ28FNjVCV+p0D9RYZx0VDDbtWyjw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz",
+ "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
- "@smithy/util-config-provider": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz",
+ "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-endpoints": "^3.2.5",
"tslib": "^2.6.2"
},
"engines": {
@@ -3759,25 +4449,27 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.821.0.tgz",
- "integrity": "sha512-irWZHyM0Jr1xhC+38OuZ7JB6OXMLPZlj48thElpsO1ZSLRkLZx5+I7VV6k3sp2yZ7BYbKz/G2ojSv4wdm7XTLw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz",
+ "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/types": "^4.9.0",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.839.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.839.0.tgz",
- "integrity": "sha512-MuunkIG1bJVMtTH7MbjXOrhHleU5wjHz5eCAUc6vj7M9rwol71nqjj9b8RLnkO5gsJcKc29Qk8iV6xQuzKWNMw==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz",
+ "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-user-agent": "3.839.0",
- "@aws-sdk/types": "3.821.0",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
+ "@aws-sdk/middleware-user-agent": "3.936.0",
+ "@aws-sdk/types": "3.936.0",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3793,11 +4485,12 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3805,14 +4498,15 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3820,9 +4514,10 @@
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3831,11 +4526,12 @@
}
},
"node_modules/@aws-sdk/types": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.821.0.tgz",
- "integrity": "sha512-Znroqdai1a90TlxGaJ+FK1lwC0fHpo97Xjsp5UKGR5JODYm7f9+/fF17ebO1KdoBr/Rm0UIFiF5VmI8ts9F1eA==",
+ "version": "3.936.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.936.0.tgz",
+ "integrity": "sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3843,9 +4539,10 @@
}
},
"node_modules/@aws-sdk/types/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3854,9 +4551,10 @@
}
},
"node_modules/@aws-sdk/util-arn-parser": {
- "version": "3.804.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz",
- "integrity": "sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==",
+ "version": "3.893.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz",
+ "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3865,24 +4563,27 @@
}
},
"node_modules/@aws-sdk/util-endpoints": {
- "version": "3.828.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.828.0.tgz",
- "integrity": "sha512-RvKch111SblqdkPzg3oCIdlGxlQs+k+P7Etory9FmxPHyPDvsP1j1c74PmgYqtzzMWmoXTjd+c9naUHh9xG8xg==",
+ "version": "3.731.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz",
+ "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.821.0",
- "@smithy/types": "^4.3.1",
- "@smithy/util-endpoints": "^3.0.6",
+ "@aws-sdk/types": "3.731.0",
+ "@smithy/types": "^4.0.0",
+ "@smithy/util-endpoints": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/util-endpoints/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "node_modules/@aws-sdk/util-endpoints/node_modules/@aws-sdk/types": {
+ "version": "3.731.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
+ "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
+ "@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3890,9 +4591,10 @@
}
},
"node_modules/@aws-sdk/util-locate-window": {
- "version": "3.804.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz",
- "integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==",
+ "version": "3.893.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz",
+ "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -3905,6 +4607,7 @@
"resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.374.0.tgz",
"integrity": "sha512-0p/trhYU+Ys8j3vMnWCvAkSOL6JRMooV9dVlQ+o7EHbQs9kDtnyucMUHU09ahHSIPTA/n/013hv7bzIt3MyKQg==",
"deprecated": "This package has moved to @smithy/util-retry",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/util-retry": "^1.0.3",
"tslib": "^2.5.0"
@@ -3917,6 +4620,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-1.1.0.tgz",
"integrity": "sha512-OCTEeJ1igatd5kFrS2VDlYbainNNpf7Lj1siFOxnRWqYOP9oNvC5HOJBd3t+Z8MbrmehBtuDJ2QqeBsfeiNkww==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=14.0.0"
}
@@ -3925,6 +4629,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-1.1.0.tgz",
"integrity": "sha512-ygQW5HBqYXpR3ua09UciS0sL7UGJzGiktrKkOuEJwARoUuzz40yaEGU6xd9Gs7KBmAaFC8gMfnghHtwZ2nyBCQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/service-error-classification": "^1.1.0",
"tslib": "^2.5.0"
@@ -3937,6 +4642,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.731.0.tgz",
"integrity": "sha512-EnYXxTkCNCjTTBjW/pelRPv4Thsi9jepoB6qQjPMA9/ixrZ71BhhQecz9kgqzZLR9BPCwb6hgJ/Yd702jqJ4aQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "3.731.0",
"@smithy/types": "^4.0.0",
@@ -3948,6 +4654,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -3960,6 +4667,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.731.0.tgz",
"integrity": "sha512-Rze78Ym5Bx7aWMvmZE2iL3JPo2INNCC5N9rLVx98Gg1G0ZaxclVRUvJrh1AojNlOFxU+otkxAe7FA3Foy2iLLQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/middleware-user-agent": "3.731.0",
"@aws-sdk/types": "3.731.0",
@@ -3983,6 +4691,7 @@
"version": "3.731.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
"integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
@@ -3992,11 +4701,13 @@
}
},
"node_modules/@aws-sdk/xml-builder": {
- "version": "3.821.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz",
- "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==",
+ "version": "3.930.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz",
+ "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
+ "fast-xml-parser": "5.2.5",
"tslib": "^2.6.2"
},
"engines": {
@@ -4004,9 +4715,10 @@
}
},
"node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -4014,17 +4726,47 @@
"node": ">=18.0.0"
}
},
+ "node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser": {
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz",
+ "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "strnum": "^2.1.0"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/@aws-sdk/xml-builder/node_modules/strnum": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz",
+ "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/@aws/chat-client": {
"resolved": "chat-client",
"link": true
},
"node_modules/@aws/chat-client-ui-types": {
- "version": "0.1.56",
- "resolved": "https://registry.npmjs.org/@aws/chat-client-ui-types/-/chat-client-ui-types-0.1.56.tgz",
- "integrity": "sha512-5FAFyzo0KzqnVBbZuhN4drCmLnREbb4IpAzb/OS8omNLf1/yUsP89DBCNoW6WxqFuWSASwaPEffmQOuMT3bWIg==",
+ "version": "0.1.68",
+ "resolved": "https://registry.npmjs.org/@aws/chat-client-ui-types/-/chat-client-ui-types-0.1.68.tgz",
+ "integrity": "sha512-T4sYp0HajJOyUk6sNhcP6BCpFUEFeS2/S7AnrhSUT2Zi2z1cujMUEquk5K5rwMee7IJSY6Y3GVc/6zE+O9vQfg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws/language-server-runtimes-types": "^0.1.50"
+ "@aws/language-server-runtimes-types": "^0.1.62"
}
},
"node_modules/@aws/hello-world-lsp": {
@@ -4035,12 +4777,22 @@
"resolved": "app/hello-world-lsp-runtimes",
"link": true
},
+ "node_modules/@aws/lambda-invoke-store": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.1.tgz",
+ "integrity": "sha512-sIyFcoPZkTtNu9xFeEoynMef3bPJIAbOfUh+ueYcfhVl6xm2VRtMcMclSxmZCMnHHd4hlYKJeq/aggmBEWynww==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/@aws/language-server-runtimes": {
- "version": "0.2.127",
- "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.2.127.tgz",
- "integrity": "sha512-UWCfv49MYaBhxArVBWTEw2XVfIyunbm6EfS9AxSLPudcwrpOg3KAVLooXearmyM/r2hgNDGCQYI8HuKf5FAnew==",
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.6.tgz",
+ "integrity": "sha512-UYapohFIjEI93BfKQQlFiqOEq5wkG7Zm0jfcl2sMJwDYMtzNBtc31jDHr5cpeiQxSFpnALxqhPYp1PZU0vprwg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws/language-server-runtimes-types": "^0.1.56",
+ "@aws/language-server-runtimes-types": "^0.1.62",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/api-logs": "^0.200.0",
"@opentelemetry/core": "^2.0.0",
@@ -4051,7 +4803,6 @@
"@opentelemetry/sdk-metrics": "^2.0.1",
"@smithy/node-http-handler": "^4.0.4",
"ajv": "^8.17.1",
- "aws-sdk": "^2.1692.0",
"hpagent": "^1.2.0",
"jose": "^5.9.6",
"mac-ca": "^3.1.1",
@@ -4063,13 +4814,13 @@
"win-ca": "^3.5.1"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=24.0.0"
}
},
"node_modules/@aws/language-server-runtimes-types": {
- "version": "0.1.56",
- "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes-types/-/language-server-runtimes-types-0.1.56.tgz",
- "integrity": "sha512-Md/L750JShCHUsCQUJva51Ofkn/GDBEX8PpZnWUIVqkpddDR00SLQS2smNf4UHtKNJ2fefsfks/Kqfuatjkjvg==",
+ "version": "0.1.62",
+ "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes-types/-/language-server-runtimes-types-0.1.62.tgz",
+ "integrity": "sha512-d/RSCZZzniaNeME+iM47l9Xx66vFvlQqGyLaWA5vFyKU0FkhN8/6CjPV4C4lxh3s8H4qOGsHm1w0y7t+zTgu4g==",
"license": "Apache-2.0",
"dependencies": {
"vscode-languageserver-textdocument": "^1.0.12",
@@ -4077,11 +4828,12 @@
}
},
"node_modules/@aws/language-server-runtimes/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -4089,14 +4841,15 @@
}
},
"node_modules/@aws/language-server-runtimes/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -4104,9 +4857,10 @@
}
},
"node_modules/@aws/language-server-runtimes/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -4203,9 +4957,9 @@
"link": true
},
"node_modules/@aws/mynah-ui": {
- "version": "4.36.5",
- "resolved": "https://registry.npmjs.org/@aws/mynah-ui/-/mynah-ui-4.36.5.tgz",
- "integrity": "sha512-HMXqvSpZT84mpY67ChzRDrd73Y9AFZVZ8RcOJ/rNWIXR44uryfNFg2nrvoP4GSn2P+kU8WIPGChHGmyX9N0UgA==",
+ "version": "4.38.0",
+ "resolved": "https://registry.npmjs.org/@aws/mynah-ui/-/mynah-ui-4.38.0.tgz",
+ "integrity": "sha512-c/+lyTfKm+6FB1GSxTqwLK0+YeQ4HJKaBPitAcH53hf+CaT9AUPz3ER/8FhmjExiZr4AWLfibEVQq9Of174PNw==",
"hasInstallScript": true,
"license": "Apache License 2.0",
"dependencies": {
@@ -4234,6 +4988,7 @@
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
"integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.27.1",
"js-tokens": "^4.0.0",
@@ -4244,30 +4999,33 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.7.tgz",
- "integrity": "sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
+ "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.7.tgz",
- "integrity": "sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
+ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.27.5",
+ "@babel/generator": "^7.28.5",
"@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.27.3",
- "@babel/helpers": "^7.27.6",
- "@babel/parser": "^7.27.7",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.4",
+ "@babel/parser": "^7.28.5",
"@babel/template": "^7.27.2",
- "@babel/traverse": "^7.27.7",
- "@babel/types": "^7.27.7",
+ "@babel/traverse": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@jridgewell/remapping": "^2.3.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -4283,15 +5041,16 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.27.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz",
- "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
+ "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/parser": "^7.27.5",
- "@babel/types": "^7.27.3",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
+ "@babel/parser": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
},
"engines": {
@@ -4303,6 +5062,7 @@
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
"integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.27.2",
"@babel/helper-validator-option": "^7.27.1",
@@ -4314,11 +5074,22 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-module-imports": {
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
"integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/traverse": "^7.27.1",
"@babel/types": "^7.27.1"
@@ -4328,14 +5099,15 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
- "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-module-imports": "^7.27.1",
"@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.27.3"
+ "@babel/traverse": "^7.28.3"
},
"engines": {
"node": ">=6.9.0"
@@ -4349,6 +5121,7 @@
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
"integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
@@ -4358,15 +5131,17 @@
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
- "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
@@ -4376,30 +5151,33 @@
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
"integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.27.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz",
- "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/template": "^7.27.2",
- "@babel/types": "^7.27.6"
+ "@babel/types": "^7.28.4"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.7.tgz",
- "integrity": "sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
+ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.7"
+ "@babel/types": "^7.28.5"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -4413,6 +5191,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -4425,6 +5204,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
"integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -4437,6 +5217,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
"integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.12.13"
},
@@ -4449,6 +5230,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
"integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -4464,6 +5246,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz",
"integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1"
},
@@ -4479,6 +5262,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
"integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -4491,6 +5275,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -4503,6 +5288,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
"integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1"
},
@@ -4518,6 +5304,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
"integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -4530,6 +5317,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -4542,6 +5330,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
"integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -4554,6 +5343,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -4566,6 +5356,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -4578,6 +5369,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -4590,6 +5382,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
"integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -4605,6 +5398,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
"integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -4620,6 +5414,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
"integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1"
},
@@ -4635,6 +5430,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz",
"integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-module-transforms": "^7.27.1",
"@babel/helper-plugin-utils": "^7.27.1"
@@ -4646,21 +5442,12 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/runtime": {
- "version": "7.27.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz",
- "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/template": {
"version": "7.27.2",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
"integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/parser": "^7.27.2",
@@ -4671,31 +5458,33 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.7.tgz",
- "integrity": "sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
+ "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.27.5",
- "@babel/parser": "^7.27.7",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.28.5",
"@babel/template": "^7.27.2",
- "@babel/types": "^7.27.7",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
+ "@babel/types": "^7.28.5",
+ "debug": "^4.3.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/types": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.7.tgz",
- "integrity": "sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
+ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1"
+ "@babel/helper-validator-identifier": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@@ -4706,6 +5495,7 @@
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz",
"integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -4715,6 +5505,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz",
"integrity": "sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/format": "^19.8.1",
"@commitlint/lint": "^19.8.1",
@@ -4736,6 +5527,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.1.tgz",
"integrity": "sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/types": "^19.8.1",
"conventional-changelog-conventionalcommits": "^7.0.2"
@@ -4749,6 +5541,7 @@
"resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz",
"integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"compare-func": "^2.0.0"
},
@@ -4761,6 +5554,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz",
"integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/types": "^19.8.1",
"ajv": "^8.11.0"
@@ -4774,6 +5568,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.1.tgz",
"integrity": "sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/types": "^19.8.1",
"lodash.camelcase": "^4.3.0",
@@ -4791,6 +5586,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz",
"integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=v18"
}
@@ -4800,6 +5596,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.8.1.tgz",
"integrity": "sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/types": "^19.8.1",
"chalk": "^5.3.0"
@@ -4813,6 +5610,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz",
"integrity": "sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/types": "^19.8.1",
"semver": "^7.6.0"
@@ -4822,10 +5620,11 @@
}
},
"node_modules/@commitlint/is-ignored/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -4838,6 +5637,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.1.tgz",
"integrity": "sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/is-ignored": "^19.8.1",
"@commitlint/parse": "^19.8.1",
@@ -4853,6 +5653,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz",
"integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/config-validator": "^19.8.1",
"@commitlint/execute-rule": "^19.8.1",
@@ -4874,6 +5675,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.1.tgz",
"integrity": "sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=v18"
}
@@ -4883,6 +5685,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.1.tgz",
"integrity": "sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/types": "^19.8.1",
"conventional-changelog-angular": "^7.0.0",
@@ -4897,6 +5700,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.8.1.tgz",
"integrity": "sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/top-level": "^19.8.1",
"@commitlint/types": "^19.8.1",
@@ -4913,6 +5717,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz",
"integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/config-validator": "^19.8.1",
"@commitlint/types": "^19.8.1",
@@ -4930,6 +5735,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.1.tgz",
"integrity": "sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@commitlint/ensure": "^19.8.1",
"@commitlint/message": "^19.8.1",
@@ -4945,6 +5751,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.1.tgz",
"integrity": "sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=v18"
}
@@ -4954,6 +5761,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.1.tgz",
"integrity": "sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^7.0.0"
},
@@ -4966,6 +5774,7 @@
"resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz",
"integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/conventional-commits-parser": "^5.0.0",
"chalk": "^5.3.0"
@@ -4979,6 +5788,7 @@
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "0.3.9"
},
@@ -4991,15 +5801,16 @@
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
"@jridgewell/sourcemap-codec": "^1.4.10"
}
},
"node_modules/@csstools/color-helpers": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz",
- "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
+ "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==",
"dev": true,
"funding": [
{
@@ -5011,6 +5822,7 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT-0",
"engines": {
"node": ">=18"
}
@@ -5030,6 +5842,7 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -5039,9 +5852,9 @@
}
},
"node_modules/@csstools/css-color-parser": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz",
- "integrity": "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz",
+ "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==",
"dev": true,
"funding": [
{
@@ -5053,8 +5866,9 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
"dependencies": {
- "@csstools/color-helpers": "^5.0.2",
+ "@csstools/color-helpers": "^5.1.0",
"@csstools/css-calc": "^2.1.4"
},
"engines": {
@@ -5080,6 +5894,8 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
},
@@ -5102,6 +5918,8 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -5111,26 +5929,27 @@
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz",
"integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.17.0"
}
},
"node_modules/@emnapi/core": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.4.tgz",
- "integrity": "sha512-A9CnAbC6ARNMKcIcrQwq6HeHCjpcBZ5wSx4U01WXCqEKlrzB9F9315WDNHkrs2xbx7YjjSxbUYxuN6EQzpcY2g==",
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz",
+ "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
- "@emnapi/wasi-threads": "1.0.3",
+ "@emnapi/wasi-threads": "1.1.0",
"tslib": "^2.4.0"
}
},
"node_modules/@emnapi/runtime": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.4.tgz",
- "integrity": "sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==",
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz",
+ "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -5139,9 +5958,9 @@
}
},
"node_modules/@emnapi/wasi-threads": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.3.tgz",
- "integrity": "sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz",
+ "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -5150,13 +5969,14 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
- "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
"cpu": [
"ppc64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"aix"
@@ -5166,13 +5986,14 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz",
- "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -5182,13 +6003,14 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",
- "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -5198,13 +6020,14 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz",
- "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -5214,13 +6037,14 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz",
- "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -5230,13 +6054,14 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",
- "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -5246,13 +6071,14 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",
- "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"freebsd"
@@ -5262,13 +6088,14 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",
- "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"freebsd"
@@ -5278,13 +6105,14 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",
- "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -5294,13 +6122,14 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz",
- "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -5310,13 +6139,14 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",
- "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -5326,13 +6156,14 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",
- "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
"cpu": [
"loong64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -5342,13 +6173,14 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",
- "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
"cpu": [
"mips64el"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -5358,13 +6190,14 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",
- "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
"cpu": [
"ppc64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -5374,13 +6207,14 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",
- "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
"cpu": [
"riscv64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -5390,13 +6224,14 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",
- "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
"cpu": [
"s390x"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -5406,13 +6241,14 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",
- "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -5422,13 +6258,14 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",
- "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"netbsd"
@@ -5438,13 +6275,14 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",
- "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"netbsd"
@@ -5454,13 +6292,14 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",
- "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"openbsd"
@@ -5470,13 +6309,14 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",
- "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"openbsd"
@@ -5485,30 +6325,49 @@
"node": ">=18"
}
},
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",
- "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
+ "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
"cpu": [
- "x64"
+ "arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
- "sunos"
+ "openharmony"
],
"engines": {
"node": ">=18"
}
},
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",
- "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
"cpu": [
- "arm64"
+ "x64"
],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -5518,13 +6377,14 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",
- "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -5534,13 +6394,14 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",
- "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
+ "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -5550,10 +6411,11 @@
}
},
"node_modules/@eslint-community/eslint-utils": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
- "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
+ "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eslint-visitor-keys": "^3.4.3"
},
@@ -5568,10 +6430,11 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.12.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
- "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
@@ -5581,6 +6444,7 @@
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
"integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
@@ -5604,6 +6468,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -5620,31 +6485,18 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/@eslint/eslintrc/node_modules/ignore": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -5653,13 +6505,15 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@eslint/eslintrc/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -5667,23 +6521,12 @@
"node": "*"
}
},
- "node_modules/@eslint/eslintrc/node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/@eslint/js": {
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
"integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
@@ -5692,6 +6535,7 @@
"version": "0.2.0-9",
"resolved": "https://registry.npmjs.org/@gerhobbelt/gitignore-parser/-/gitignore-parser-0.2.0-9.tgz",
"integrity": "sha512-leOyCx+xnmioBSPqdkFBi1drkdM+Nm5+MfgffRcdkcVVUjFuAlxqEJ7jkYeXyHLvL9/l7ejPGooE1TPAo7qmmA==",
+ "license": "Apache License, Version 2.0",
"engines": {
"node": ">=10"
}
@@ -5700,7 +6544,8 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz",
"integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.13.0",
@@ -5708,6 +6553,7 @@
"integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
"deprecated": "Use @eslint/config-array instead",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@humanwhocodes/object-schema": "^2.0.3",
"debug": "^4.3.1",
@@ -5722,6 +6568,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -5732,6 +6579,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -5744,6 +6592,7 @@
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=12.22"
},
@@ -5757,58 +6606,92 @@
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
"integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
"deprecated": "Use @eslint/object-schema instead",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@inquirer/ansi": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz",
+ "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/@inquirer/checkbox": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz",
- "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz",
+ "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/figures": "^1.0.6",
- "@inquirer/type": "^2.0.0",
- "ansi-escapes": "^4.3.2",
- "yoctocolors-cjs": "^2.1.2"
+ "@inquirer/ansi": "^1.0.2",
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/figures": "^1.0.15",
+ "@inquirer/type": "^3.0.10",
+ "yoctocolors-cjs": "^2.1.3"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/confirm": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz",
- "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==",
+ "version": "5.1.21",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz",
+ "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/type": "^2.0.0"
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/core": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz",
- "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==",
+ "version": "10.3.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz",
+ "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/figures": "^1.0.6",
- "@inquirer/type": "^2.0.0",
- "@types/mute-stream": "^0.0.4",
- "@types/node": "^22.5.5",
- "@types/wrap-ansi": "^3.0.0",
- "ansi-escapes": "^4.3.2",
+ "@inquirer/ansi": "^1.0.2",
+ "@inquirer/figures": "^1.0.15",
+ "@inquirer/type": "^3.0.10",
"cli-width": "^4.1.0",
- "mute-stream": "^1.0.0",
+ "mute-stream": "^2.0.0",
"signal-exit": "^4.1.0",
- "strip-ansi": "^6.0.1",
"wrap-ansi": "^6.2.0",
- "yoctocolors-cjs": "^2.1.2"
+ "yoctocolors-cjs": "^2.1.3"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/core/node_modules/ansi-styles": {
@@ -5816,6 +6699,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -5830,13 +6714,15 @@
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@inquirer/core/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -5851,6 +6737,7 @@
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -5861,164 +6748,292 @@
}
},
"node_modules/@inquirer/editor": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz",
- "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==",
+ "version": "4.2.23",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz",
+ "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/type": "^2.0.0",
- "external-editor": "^3.1.0"
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/external-editor": "^1.0.3",
+ "@inquirer/type": "^3.0.10"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/expand": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz",
- "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==",
+ "version": "4.0.23",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz",
+ "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10",
+ "yoctocolors-cjs": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/external-editor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz",
+ "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/type": "^2.0.0",
- "yoctocolors-cjs": "^2.1.2"
+ "chardet": "^2.1.1",
+ "iconv-lite": "^0.7.0"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/external-editor/node_modules/iconv-lite": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/@inquirer/figures": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.12.tgz",
- "integrity": "sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==",
+ "version": "1.0.15",
+ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz",
+ "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
},
"node_modules/@inquirer/input": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz",
- "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz",
+ "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/type": "^2.0.0"
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/number": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz",
- "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==",
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz",
+ "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/type": "^2.0.0"
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/password": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz",
- "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==",
+ "version": "4.0.23",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz",
+ "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/type": "^2.0.0",
- "ansi-escapes": "^4.3.2"
+ "@inquirer/ansi": "^1.0.2",
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/prompts": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz",
- "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==",
+ "version": "7.10.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz",
+ "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/checkbox": "^3.0.1",
- "@inquirer/confirm": "^4.0.1",
- "@inquirer/editor": "^3.0.1",
- "@inquirer/expand": "^3.0.1",
- "@inquirer/input": "^3.0.1",
- "@inquirer/number": "^2.0.1",
- "@inquirer/password": "^3.0.1",
- "@inquirer/rawlist": "^3.0.1",
- "@inquirer/search": "^2.0.1",
- "@inquirer/select": "^3.0.1"
+ "@inquirer/checkbox": "^4.3.2",
+ "@inquirer/confirm": "^5.1.21",
+ "@inquirer/editor": "^4.2.23",
+ "@inquirer/expand": "^4.0.23",
+ "@inquirer/input": "^4.3.1",
+ "@inquirer/number": "^3.0.23",
+ "@inquirer/password": "^4.0.23",
+ "@inquirer/rawlist": "^4.1.11",
+ "@inquirer/search": "^3.2.2",
+ "@inquirer/select": "^4.4.2"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/rawlist": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz",
- "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==",
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz",
+ "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/type": "^2.0.0",
- "yoctocolors-cjs": "^2.1.2"
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10",
+ "yoctocolors-cjs": "^2.1.3"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/search": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz",
- "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz",
+ "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/figures": "^1.0.6",
- "@inquirer/type": "^2.0.0",
- "yoctocolors-cjs": "^2.1.2"
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/figures": "^1.0.15",
+ "@inquirer/type": "^3.0.10",
+ "yoctocolors-cjs": "^2.1.3"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/select": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz",
- "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==",
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz",
+ "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/figures": "^1.0.6",
- "@inquirer/type": "^2.0.0",
- "ansi-escapes": "^4.3.2",
- "yoctocolors-cjs": "^2.1.2"
+ "@inquirer/ansi": "^1.0.2",
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/figures": "^1.0.15",
+ "@inquirer/type": "^3.0.10",
+ "yoctocolors-cjs": "^2.1.3"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@inquirer/type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz",
- "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==",
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz",
+ "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==",
"dev": true,
- "dependencies": {
- "mute-stream": "^1.0.0"
- },
+ "license": "MIT",
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "license": "ISC",
"dependencies": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
@@ -6032,9 +7047,10 @@
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -6043,9 +7059,10 @@
}
},
"node_modules/@isaacs/cliui/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -6061,6 +7078,7 @@
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
"integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"camelcase": "^5.3.1",
"find-up": "^4.1.0",
@@ -6077,6 +7095,7 @@
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"sprintf-js": "~1.0.2"
}
@@ -6086,6 +7105,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@@ -6095,10 +7115,11 @@
}
},
"node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -6112,6 +7133,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
},
@@ -6124,6 +7146,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
@@ -6139,6 +7162,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
},
@@ -6151,6 +7175,7 @@
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -6160,6 +7185,7 @@
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
"integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -6169,6 +7195,7 @@
"resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
"integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@types/node": "*",
@@ -6186,6 +7213,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -6201,6 +7229,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -6217,6 +7246,7 @@
"resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
"integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/console": "^29.7.0",
"@jest/reporters": "^29.7.0",
@@ -6264,6 +7294,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -6279,6 +7310,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -6295,6 +7327,7 @@
"resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz",
"integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
@@ -6304,6 +7337,7 @@
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
"integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/fake-timers": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -6319,6 +7353,7 @@
"resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
"integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"expect": "^29.7.0",
"jest-snapshot": "^29.7.0"
@@ -6332,6 +7367,7 @@
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
"integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jest-get-type": "^29.6.3"
},
@@ -6344,6 +7380,7 @@
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
"integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@sinonjs/fake-timers": "^10.0.2",
@@ -6357,10 +7394,11 @@
}
},
"node_modules/@jest/get-type": {
- "version": "30.0.1",
- "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz",
- "integrity": "sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==",
+ "version": "30.1.0",
+ "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz",
+ "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
@@ -6370,6 +7408,7 @@
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
"integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
"@jest/expect": "^29.7.0",
@@ -6385,6 +7424,7 @@
"resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz",
"integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"jest-regex-util": "30.0.1"
@@ -6398,6 +7438,7 @@
"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz",
"integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
@@ -6407,6 +7448,7 @@
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
"integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@bcoe/v8-coverage": "^0.2.3",
"@jest/console": "^29.7.0",
@@ -6449,13 +7491,15 @@
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@jest/reporters/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -6471,6 +7515,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -6481,6 +7526,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -6498,6 +7544,7 @@
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -6518,6 +7565,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -6530,6 +7578,7 @@
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
"integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sinclair/typebox": "^0.27.8"
},
@@ -6542,6 +7591,7 @@
"resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
"integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.18",
"callsites": "^3.0.0",
@@ -6556,6 +7606,7 @@
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
"integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/console": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -6571,6 +7622,7 @@
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
"integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/test-result": "^29.7.0",
"graceful-fs": "^4.2.9",
@@ -6586,6 +7638,7 @@
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
"integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.11.6",
"@jest/types": "^29.6.3",
@@ -6612,6 +7665,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -6627,6 +7681,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -6643,6 +7698,7 @@
"resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
"integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/schemas": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
@@ -6660,6 +7716,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -6675,6 +7732,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -6687,45 +7745,61 @@
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.9.tgz",
- "integrity": "sha512-xpz6C/vXOegF9VEtlMBlkNNIjHrLhKaFBsO4lmQGr00x5BHp7p+oliR6i7LwIcM5cZU2VjLSwm2R+/zj5IjPWg==",
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0",
"@jridgewell/trace-mapping": "^0.3.24"
}
},
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/source-map": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
- "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "version": "0.3.11",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
+ "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
- "devOptional": true
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
@@ -6735,6 +7809,39 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz",
"integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
+ "node_modules/@jsonjoy.com/buffers": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz",
+ "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
+ "node_modules/@jsonjoy.com/codegen": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz",
+ "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=10.0"
},
@@ -6747,14 +7854,39 @@
}
},
"node_modules/@jsonjoy.com/json-pack": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.2.0.tgz",
- "integrity": "sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==",
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz",
+ "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/base64": "^1.1.1",
- "@jsonjoy.com/util": "^1.1.2",
+ "@jsonjoy.com/base64": "^1.1.2",
+ "@jsonjoy.com/buffers": "^1.2.0",
+ "@jsonjoy.com/codegen": "^1.0.0",
+ "@jsonjoy.com/json-pointer": "^1.0.2",
+ "@jsonjoy.com/util": "^1.9.0",
"hyperdyperid": "^1.2.0",
- "thingies": "^1.20.0"
+ "thingies": "^2.5.0",
+ "tree-dump": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
+ "node_modules/@jsonjoy.com/json-pointer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz",
+ "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jsonjoy.com/codegen": "^1.0.0",
+ "@jsonjoy.com/util": "^1.9.0"
},
"engines": {
"node": ">=10.0"
@@ -6768,9 +7900,14 @@
}
},
"node_modules/@jsonjoy.com/util": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.6.0.tgz",
- "integrity": "sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz",
+ "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jsonjoy.com/buffers": "^1.0.0",
+ "@jsonjoy.com/codegen": "^1.0.0"
+ },
"engines": {
"node": ">=10.0"
},
@@ -6785,15 +7922,17 @@
"node_modules/@leichtgewicht/ip-codec": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
- "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw=="
+ "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
+ "license": "MIT"
},
"node_modules/@modelcontextprotocol/sdk": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.15.0.tgz",
- "integrity": "sha512-67hnl/ROKdb03Vuu0YOr+baKTvf1/5YBHBm9KnZdjdAh8hjt4FRCPD5ucwxGB237sBpzlqQsLy1PFu7z/ekZ9Q==",
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.22.0.tgz",
+ "integrity": "sha512-VUpl106XVTCpDmTBil2ehgJZjhyLY2QZikzF8NvTXtLRF1CvO5iEE2UNZdVIUer35vFOwMKYeUGbjJtvPWan3g==",
"license": "MIT",
"dependencies": {
- "ajv": "^6.12.6",
+ "ajv": "^8.17.1",
+ "ajv-formats": "^3.0.1",
"content-type": "^1.0.5",
"cors": "^2.8.5",
"cross-spawn": "^7.0.5",
@@ -6808,39 +7947,27 @@
},
"engines": {
"node": ">=18"
- }
- },
- "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "peerDependencies": {
+ "@cfworker/json-schema": "^4.1.1"
+ },
+ "peerDependenciesMeta": {
+ "@cfworker/json-schema": {
+ "optional": true
+ }
}
},
- "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
"node_modules/@napi-rs/wasm-runtime": {
- "version": "0.2.11",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz",
- "integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==",
+ "version": "0.2.12",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz",
+ "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"@emnapi/core": "^1.4.3",
"@emnapi/runtime": "^1.4.3",
- "@tybys/wasm-util": "^0.9.0"
+ "@tybys/wasm-util": "^0.10.0"
}
},
"node_modules/@node-rs/crc32": {
@@ -7115,6 +8242,7 @@
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
@@ -7127,6 +8255,7 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
@@ -7135,6 +8264,7 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
@@ -7147,6 +8277,7 @@
"version": "1.15.10",
"resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz",
"integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==",
+ "license": "MIT",
"dependencies": {
"@oozcitak/infra": "1.0.8",
"@oozcitak/url": "1.0.4",
@@ -7160,6 +8291,7 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz",
"integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==",
+ "license": "MIT",
"dependencies": {
"@oozcitak/util": "8.3.8"
},
@@ -7171,6 +8303,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz",
"integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==",
+ "license": "MIT",
"dependencies": {
"@oozcitak/infra": "1.0.8",
"@oozcitak/util": "8.3.8"
@@ -7183,6 +8316,7 @@
"version": "8.3.8",
"resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz",
"integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==",
+ "license": "MIT",
"engines": {
"node": ">=8.0"
}
@@ -7191,6 +8325,8 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
"integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
+ "license": "Apache-2.0",
+ "peer": true,
"engines": {
"node": ">=8.0.0"
}
@@ -7199,6 +8335,7 @@
"version": "0.200.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz",
"integrity": "sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/api": "^1.3.0"
},
@@ -7207,9 +8344,10 @@
}
},
"node_modules/@opentelemetry/core": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.1.tgz",
- "integrity": "sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz",
+ "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -7224,6 +8362,7 @@
"version": "0.200.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.200.0.tgz",
"integrity": "sha512-KfWw49htbGGp9s8N4KI8EQ9XuqKJ0VG+yVYVYFiCYSjEV32qpQ5qZ9UZBzOZ6xRb+E16SXOSCT3RkqBVSABZ+g==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/api-logs": "0.200.0",
"@opentelemetry/core": "2.0.0",
@@ -7242,6 +8381,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz",
"integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -7256,6 +8396,7 @@
"version": "0.200.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.200.0.tgz",
"integrity": "sha512-5BiR6i8yHc9+qW7F6LqkuUnIzVNA7lt0qRxIKcKT+gq3eGUPHZ3DY29sfxI3tkvnwMgtnHDMNze5DdxW39HsAw==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/core": "2.0.0",
"@opentelemetry/otlp-exporter-base": "0.200.0",
@@ -7274,6 +8415,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz",
"integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -7288,6 +8430,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz",
"integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/core": "2.0.0",
"@opentelemetry/semantic-conventions": "^1.29.0"
@@ -7303,6 +8446,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.0.tgz",
"integrity": "sha512-Bvy8QDjO05umd0+j+gDeWcTaVa1/R2lDj/eOvjzpm8VQj1K1vVZJuyjThpV5/lSHyYW2JaHF2IQ7Z8twJFAhjA==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/core": "2.0.0",
"@opentelemetry/resources": "2.0.0"
@@ -7318,6 +8462,7 @@
"version": "0.200.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.200.0.tgz",
"integrity": "sha512-IxJgA3FD7q4V6gGq4bnmQM5nTIyMDkoGFGrBrrDjB6onEiq1pafma55V+bHvGYLWvcqbBbRfezr1GED88lacEQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/core": "2.0.0",
"@opentelemetry/otlp-transformer": "0.200.0"
@@ -7333,6 +8478,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz",
"integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -7347,6 +8493,7 @@
"version": "0.200.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.200.0.tgz",
"integrity": "sha512-+9YDZbYybOnv7sWzebWOeK6gKyt2XE7iarSyBFkwwnP559pEevKOUD8NyDHhRjCSp13ybh9iVXlMfcj/DwF/yw==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/api-logs": "0.200.0",
"@opentelemetry/core": "2.0.0",
@@ -7367,6 +8514,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz",
"integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -7381,6 +8529,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz",
"integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/core": "2.0.0",
"@opentelemetry/semantic-conventions": "^1.29.0"
@@ -7396,6 +8545,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.0.tgz",
"integrity": "sha512-Bvy8QDjO05umd0+j+gDeWcTaVa1/R2lDj/eOvjzpm8VQj1K1vVZJuyjThpV5/lSHyYW2JaHF2IQ7Z8twJFAhjA==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/core": "2.0.0",
"@opentelemetry/resources": "2.0.0"
@@ -7408,11 +8558,12 @@
}
},
"node_modules/@opentelemetry/resources": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.1.tgz",
- "integrity": "sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz",
+ "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==",
+ "license": "Apache-2.0",
"dependencies": {
- "@opentelemetry/core": "2.0.1",
+ "@opentelemetry/core": "2.2.0",
"@opentelemetry/semantic-conventions": "^1.29.0"
},
"engines": {
@@ -7426,6 +8577,7 @@
"version": "0.200.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.200.0.tgz",
"integrity": "sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/api-logs": "0.200.0",
"@opentelemetry/core": "2.0.0",
@@ -7442,6 +8594,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz",
"integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -7456,6 +8609,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz",
"integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/core": "2.0.0",
"@opentelemetry/semantic-conventions": "^1.29.0"
@@ -7468,12 +8622,13 @@
}
},
"node_modules/@opentelemetry/sdk-metrics": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.1.tgz",
- "integrity": "sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz",
+ "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@opentelemetry/core": "2.0.1",
- "@opentelemetry/resources": "2.0.1"
+ "@opentelemetry/core": "2.2.0",
+ "@opentelemetry/resources": "2.2.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -7486,6 +8641,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0.tgz",
"integrity": "sha512-qQnYdX+ZCkonM7tA5iU4fSRsVxbFGml8jbxOgipRGMFHKaXKHQ30js03rTobYjKjIfnOsZSbHKWF0/0v0OQGfw==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/core": "2.0.0",
"@opentelemetry/resources": "2.0.0",
@@ -7502,6 +8658,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz",
"integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -7516,6 +8673,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz",
"integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==",
+ "license": "Apache-2.0",
"dependencies": {
"@opentelemetry/core": "2.0.0",
"@opentelemetry/semantic-conventions": "^1.29.0"
@@ -7528,9 +8686,10 @@
}
},
"node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.34.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz",
- "integrity": "sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==",
+ "version": "1.38.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz",
+ "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=14"
}
@@ -7539,16 +8698,18 @@
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=14"
}
},
"node_modules/@pkgr/core": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz",
- "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==",
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
+ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.18.0 || >=16.0.0"
},
@@ -7571,6 +8732,7 @@
"url": "https://github.com/webgptorg/promptbook/blob/main/README.md#%EF%B8%8F-contributing"
}
],
+ "license": "CC-BY-4.0",
"dependencies": {
"spacetrim": "0.11.59"
}
@@ -7578,27 +8740,32 @@
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
- "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/base64": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/codegen": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
- "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/eventemitter": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
- "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
+ "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/fetch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
"integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
+ "license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.1",
"@protobufjs/inquire": "^1.1.0"
@@ -7607,40 +8774,46 @@
"node_modules/@protobufjs/float": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
- "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/inquire": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
- "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
+ "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/path": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
- "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/pool": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
- "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/utf8": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
- "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
+ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
+ "license": "BSD-3-Clause"
},
"node_modules/@puppeteer/browsers": {
- "version": "2.10.5",
- "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.5.tgz",
- "integrity": "sha512-eifa0o+i8dERnngJwKrfp3dEq7ia5XFyoqB17S4gK8GhsQE4/P8nxOfQSE0zQHxzzLo/cmF+7+ywEQ7wK7Fb+w==",
+ "version": "2.10.13",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.13.tgz",
+ "integrity": "sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "debug": "^4.4.1",
+ "debug": "^4.4.3",
"extract-zip": "^2.0.1",
"progress": "^2.0.3",
"proxy-agent": "^6.5.0",
- "semver": "^7.7.2",
- "tar-fs": "^3.0.8",
+ "semver": "^7.7.3",
+ "tar-fs": "^3.1.1",
"yargs": "^17.7.2"
},
"bin": {
@@ -7651,10 +8824,11 @@
}
},
"node_modules/@puppeteer/browsers/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -7663,10 +8837,11 @@
}
},
"node_modules/@puppeteer/browsers/node_modules/tar-fs": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.10.tgz",
- "integrity": "sha512-C1SwlQGNLe/jPNqapK8epDsXME7CAJR5RL3GcE6KWx1d9OUByzoHVcbu1VPI8tevg9H8Alae0AApHHFGzrD5zA==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz",
+ "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pump": "^3.0.0",
"tar-stream": "^3.1.5"
@@ -7680,24 +8855,28 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
"integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@sec-ant/readable-stream": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
"integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@sinclair/typebox": {
"version": "0.27.8",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
"integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@sindresorhus/is": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
"integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -7710,6 +8889,7 @@
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
"integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -7722,6 +8902,7 @@
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
"integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"type-detect": "4.0.8"
}
@@ -7731,6 +8912,7 @@
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -7740,18 +8922,19 @@
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
"integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^3.0.0"
}
},
"node_modules/@sinonjs/samsam": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz",
- "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==",
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz",
+ "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^3.0.1",
- "lodash.get": "^4.4.2",
"type-detect": "^4.1.0"
}
},
@@ -7759,12 +8942,14 @@
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz",
"integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==",
- "dev": true
+ "dev": true,
+ "license": "(Unlicense OR Apache-2.0)"
},
"node_modules/@smithy/abort-controller": {
"version": "3.1.9",
"resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.9.tgz",
"integrity": "sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
@@ -7777,6 +8962,7 @@
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
"integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -7785,9 +8971,10 @@
}
},
"node_modules/@smithy/chunked-blob-reader": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.0.0.tgz",
- "integrity": "sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz",
+ "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -7796,11 +8983,12 @@
}
},
"node_modules/@smithy/chunked-blob-reader-native": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.0.0.tgz",
- "integrity": "sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz",
+ "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-base64": "^4.3.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -7808,14 +8996,16 @@
}
},
"node_modules/@smithy/config-resolver": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.4.tgz",
- "integrity": "sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz",
+ "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
- "@smithy/util-config-provider": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-config-provider": "^4.2.0",
+ "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/util-middleware": "^4.2.5",
"tslib": "^2.6.2"
},
"engines": {
@@ -7823,9 +9013,10 @@
}
},
"node_modules/@smithy/config-resolver/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -7834,18 +9025,20 @@
}
},
"node_modules/@smithy/core": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.6.0.tgz",
- "integrity": "sha512-Pgvfb+TQ4wUNLyHzvgCP4aYZMh16y7GcfF59oirRHcgGgkH1e/s9C0nv/v3WP+Quymyr5je71HeFQCwh+44XLg==",
+ "version": "3.18.5",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.5.tgz",
+ "integrity": "sha512-6gnIz3h+PEPQGDj8MnRSjDvKBah042jEoPgjFGJ4iJLBE78L4lY/n98x14XyPF4u3lN179Ub/ZKFY5za9GeLQw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-stream": "^4.2.2",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-body-length-browser": "^4.2.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-stream": "^4.5.6",
+ "@smithy/util-utf8": "^4.2.0",
+ "@smithy/uuid": "^1.1.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -7853,9 +9046,10 @@
}
},
"node_modules/@smithy/core/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -7864,14 +9058,15 @@
}
},
"node_modules/@smithy/credential-provider-imds": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.6.tgz",
- "integrity": "sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz",
+ "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
"tslib": "^2.6.2"
},
"engines": {
@@ -7879,9 +9074,10 @@
}
},
"node_modules/@smithy/credential-provider-imds/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -7890,13 +9086,14 @@
}
},
"node_modules/@smithy/eventstream-codec": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.4.tgz",
- "integrity": "sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz",
+ "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==",
+ "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/crc32": "5.2.0",
- "@smithy/types": "^4.3.1",
- "@smithy/util-hex-encoding": "^4.0.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-hex-encoding": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -7904,9 +9101,10 @@
}
},
"node_modules/@smithy/eventstream-codec/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -7915,12 +9113,13 @@
}
},
"node_modules/@smithy/eventstream-serde-browser": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.4.tgz",
- "integrity": "sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz",
+ "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/eventstream-serde-universal": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/eventstream-serde-universal": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -7928,9 +9127,10 @@
}
},
"node_modules/@smithy/eventstream-serde-browser/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -7939,11 +9139,12 @@
}
},
"node_modules/@smithy/eventstream-serde-config-resolver": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.2.tgz",
- "integrity": "sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==",
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz",
+ "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -7951,9 +9152,10 @@
}
},
"node_modules/@smithy/eventstream-serde-config-resolver/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -7962,12 +9164,13 @@
}
},
"node_modules/@smithy/eventstream-serde-node": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.4.tgz",
- "integrity": "sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz",
+ "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/eventstream-serde-universal": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/eventstream-serde-universal": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -7975,9 +9178,10 @@
}
},
"node_modules/@smithy/eventstream-serde-node/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -7986,12 +9190,13 @@
}
},
"node_modules/@smithy/eventstream-serde-universal": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.4.tgz",
- "integrity": "sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz",
+ "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/eventstream-codec": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/eventstream-codec": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -7999,9 +9204,10 @@
}
},
"node_modules/@smithy/eventstream-serde-universal/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8010,14 +9216,15 @@
}
},
"node_modules/@smithy/fetch-http-handler": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz",
- "integrity": "sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==",
+ "version": "5.3.6",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz",
+ "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
- "@smithy/util-base64": "^4.0.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8025,9 +9232,10 @@
}
},
"node_modules/@smithy/fetch-http-handler/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8036,13 +9244,14 @@
}
},
"node_modules/@smithy/hash-blob-browser": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.4.tgz",
- "integrity": "sha512-WszRiACJiQV3QG6XMV44i5YWlkrlsM5Yxgz4jvsksuu7LDXA6wAtypfPajtNTadzpJy3KyJPoWehYpmZGKUFIQ==",
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz",
+ "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/chunked-blob-reader": "^5.0.0",
- "@smithy/chunked-blob-reader-native": "^4.0.0",
- "@smithy/types": "^4.3.1",
+ "@smithy/chunked-blob-reader": "^5.2.0",
+ "@smithy/chunked-blob-reader-native": "^4.2.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8050,9 +9259,10 @@
}
},
"node_modules/@smithy/hash-blob-browser/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8061,13 +9271,14 @@
}
},
"node_modules/@smithy/hash-node": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.4.tgz",
- "integrity": "sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz",
+ "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
- "@smithy/util-buffer-from": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-buffer-from": "^4.2.0",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8075,9 +9286,10 @@
}
},
"node_modules/@smithy/hash-node/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8086,12 +9298,13 @@
}
},
"node_modules/@smithy/hash-stream-node": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.0.4.tgz",
- "integrity": "sha512-wHo0d8GXyVmpmMh/qOR0R7Y46/G1y6OR8U+bSTB4ppEzRxd1xVAQ9xOE9hOc0bSjhz0ujCPAbfNLkLrpa6cevg==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz",
+ "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8099,9 +9312,10 @@
}
},
"node_modules/@smithy/hash-stream-node/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8110,11 +9324,12 @@
}
},
"node_modules/@smithy/invalid-dependency": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.4.tgz",
- "integrity": "sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz",
+ "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8122,9 +9337,10 @@
}
},
"node_modules/@smithy/invalid-dependency/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8133,9 +9349,10 @@
}
},
"node_modules/@smithy/is-array-buffer": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz",
- "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz",
+ "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8144,12 +9361,13 @@
}
},
"node_modules/@smithy/md5-js": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.0.4.tgz",
- "integrity": "sha512-uGLBVqcOwrLvGh/v/jw423yWHq/ofUGK1W31M2TNspLQbUV1Va0F5kTxtirkoHawODAZcjXTSGi7JwbnPcDPJg==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz",
+ "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8157,9 +9375,10 @@
}
},
"node_modules/@smithy/md5-js/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8168,12 +9387,13 @@
}
},
"node_modules/@smithy/middleware-content-length": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.4.tgz",
- "integrity": "sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz",
+ "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8181,9 +9401,10 @@
}
},
"node_modules/@smithy/middleware-content-length/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8192,17 +9413,18 @@
}
},
"node_modules/@smithy/middleware-endpoint": {
- "version": "4.1.13",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.13.tgz",
- "integrity": "sha512-xg3EHV/Q5ZdAO5b0UiIMj3RIOCobuS40pBBODguUDVdko6YK6QIzCVRrHTogVuEKglBWqWenRnZ71iZnLL3ZAQ==",
+ "version": "4.3.12",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.12.tgz",
+ "integrity": "sha512-9pAX/H+VQPzNbouhDhkW723igBMLgrI8OtX+++M7iKJgg/zY/Ig3i1e6seCcx22FWhE6Q/S61BRdi2wXBORT+A==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.6.0",
- "@smithy/middleware-serde": "^4.0.8",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
- "@smithy/url-parser": "^4.0.4",
- "@smithy/util-middleware": "^4.0.4",
+ "@smithy/core": "^3.18.5",
+ "@smithy/middleware-serde": "^4.2.6",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/url-parser": "^4.2.5",
+ "@smithy/util-middleware": "^4.2.5",
"tslib": "^2.6.2"
},
"engines": {
@@ -8210,9 +9432,10 @@
}
},
"node_modules/@smithy/middleware-endpoint/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8221,28 +9444,30 @@
}
},
"node_modules/@smithy/middleware-retry": {
- "version": "4.1.14",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.14.tgz",
- "integrity": "sha512-eoXaLlDGpKvdmvt+YBfRXE7HmIEtFF+DJCbTPwuLunP0YUnrydl+C4tS+vEM0+nyxXrX3PSUFqC+lP1+EHB1Tw==",
- "dependencies": {
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/service-error-classification": "^4.0.6",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-retry": "^4.0.6",
- "tslib": "^2.6.2",
- "uuid": "^9.0.1"
+ "version": "4.4.12",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.12.tgz",
+ "integrity": "sha512-S4kWNKFowYd0lID7/DBqWHOQxmxlsf0jBaos9chQZUWTVOjSW1Ogyh8/ib5tM+agFDJ/TCxuCTvrnlc+9cIBcQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/service-error-classification": "^4.2.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-retry": "^4.2.5",
+ "@smithy/uuid": "^1.1.0",
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@smithy/middleware-retry/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8250,25 +9475,14 @@
"node": ">=18.0.0"
}
},
- "node_modules/@smithy/middleware-retry/node_modules/uuid": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
- "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
- "funding": [
- "https://github.com/sponsors/broofa",
- "https://github.com/sponsors/ctavan"
- ],
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
"node_modules/@smithy/middleware-serde": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.8.tgz",
- "integrity": "sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==",
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz",
+ "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8276,9 +9490,10 @@
}
},
"node_modules/@smithy/middleware-serde/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8287,11 +9502,12 @@
}
},
"node_modules/@smithy/middleware-stack": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.4.tgz",
- "integrity": "sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz",
+ "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8299,9 +9515,10 @@
}
},
"node_modules/@smithy/middleware-stack/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8310,13 +9527,14 @@
}
},
"node_modules/@smithy/node-config-provider": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.3.tgz",
- "integrity": "sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==",
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz",
+ "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/property-provider": "^4.0.4",
- "@smithy/shared-ini-file-loader": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/shared-ini-file-loader": "^4.4.0",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8324,9 +9542,10 @@
}
},
"node_modules/@smithy/node-config-provider/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8338,6 +9557,7 @@
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.3.3.tgz",
"integrity": "sha512-BrpZOaZ4RCbcJ2igiSNG16S+kgAc65l/2hmxWdmhyoGWHTLlzQzr06PXavJp9OBlPEG/sHlqdxjWmjzV66+BSQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/abort-controller": "^3.1.9",
"@smithy/protocol-http": "^4.1.8",
@@ -8353,6 +9573,7 @@
"version": "4.1.8",
"resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
"integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
@@ -8365,6 +9586,7 @@
"version": "3.0.11",
"resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz",
"integrity": "sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^3.7.2",
"@smithy/util-uri-escape": "^3.0.0",
@@ -8378,6 +9600,7 @@
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
"integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8389,6 +9612,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz",
"integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8397,11 +9621,12 @@
}
},
"node_modules/@smithy/property-provider": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.4.tgz",
- "integrity": "sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz",
+ "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8409,9 +9634,10 @@
}
},
"node_modules/@smithy/property-provider/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8420,11 +9646,12 @@
}
},
"node_modules/@smithy/protocol-http": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.2.tgz",
- "integrity": "sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==",
+ "version": "5.3.5",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz",
+ "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8432,9 +9659,10 @@
}
},
"node_modules/@smithy/protocol-http/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8443,12 +9671,13 @@
}
},
"node_modules/@smithy/querystring-builder": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.4.tgz",
- "integrity": "sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz",
+ "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
- "@smithy/util-uri-escape": "^4.0.0",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-uri-escape": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8456,9 +9685,10 @@
}
},
"node_modules/@smithy/querystring-builder/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8467,11 +9697,12 @@
}
},
"node_modules/@smithy/querystring-parser": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.4.tgz",
- "integrity": "sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz",
+ "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8479,9 +9710,10 @@
}
},
"node_modules/@smithy/querystring-parser/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8490,20 +9722,22 @@
}
},
"node_modules/@smithy/service-error-classification": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.6.tgz",
- "integrity": "sha512-RRoTDL//7xi4tn5FrN2NzH17jbgmnKidUqd4KvquT0954/i6CXXkh1884jBiunq24g9cGtPBEXlU40W6EpNOOg==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz",
+ "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1"
+ "@smithy/types": "^4.9.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@smithy/service-error-classification/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8512,11 +9746,12 @@
}
},
"node_modules/@smithy/shared-ini-file-loader": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.4.tgz",
- "integrity": "sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz",
+ "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8524,9 +9759,10 @@
}
},
"node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8535,17 +9771,18 @@
}
},
"node_modules/@smithy/signature-v4": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.2.tgz",
- "integrity": "sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==",
- "dependencies": {
- "@smithy/is-array-buffer": "^4.0.0",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
- "@smithy/util-hex-encoding": "^4.0.0",
- "@smithy/util-middleware": "^4.0.4",
- "@smithy/util-uri-escape": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "version": "5.3.5",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz",
+ "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/is-array-buffer": "^4.2.0",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-hex-encoding": "^4.2.0",
+ "@smithy/util-middleware": "^4.2.5",
+ "@smithy/util-uri-escape": "^4.2.0",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8553,9 +9790,10 @@
}
},
"node_modules/@smithy/signature-v4/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8564,16 +9802,17 @@
}
},
"node_modules/@smithy/smithy-client": {
- "version": "4.4.5",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.5.tgz",
- "integrity": "sha512-+lynZjGuUFJaMdDYSTMnP/uPBBXXukVfrJlP+1U/Dp5SFTEI++w6NMga8DjOENxecOF71V9Z2DllaVDYRnGlkg==",
+ "version": "4.9.8",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.8.tgz",
+ "integrity": "sha512-8xgq3LgKDEFoIrLWBho/oYKyWByw9/corz7vuh1upv7ZBm0ZMjGYBhbn6v643WoIqA9UTcx5A5htEp/YatUwMA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.6.0",
- "@smithy/middleware-endpoint": "^4.1.13",
- "@smithy/middleware-stack": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/types": "^4.3.1",
- "@smithy/util-stream": "^4.2.2",
+ "@smithy/core": "^3.18.5",
+ "@smithy/middleware-endpoint": "^4.3.12",
+ "@smithy/middleware-stack": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-stream": "^4.5.6",
"tslib": "^2.6.2"
},
"engines": {
@@ -8581,9 +9820,10 @@
}
},
"node_modules/@smithy/smithy-client/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8595,6 +9835,7 @@
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.2.0.tgz",
"integrity": "sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8603,12 +9844,13 @@
}
},
"node_modules/@smithy/url-parser": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.4.tgz",
- "integrity": "sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz",
+ "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/querystring-parser": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/querystring-parser": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8616,9 +9858,10 @@
}
},
"node_modules/@smithy/url-parser/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8627,12 +9870,13 @@
}
},
"node_modules/@smithy/util-base64": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz",
- "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz",
+ "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/util-buffer-from": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/util-buffer-from": "^4.2.0",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8640,9 +9884,10 @@
}
},
"node_modules/@smithy/util-body-length-browser": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz",
- "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz",
+ "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8651,9 +9896,10 @@
}
},
"node_modules/@smithy/util-body-length-node": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz",
- "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz",
+ "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8662,11 +9908,12 @@
}
},
"node_modules/@smithy/util-buffer-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz",
- "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz",
+ "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/is-array-buffer": "^4.0.0",
+ "@smithy/is-array-buffer": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8674,9 +9921,10 @@
}
},
"node_modules/@smithy/util-config-provider": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz",
- "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz",
+ "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8685,14 +9933,14 @@
}
},
"node_modules/@smithy/util-defaults-mode-browser": {
- "version": "4.0.21",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.21.tgz",
- "integrity": "sha512-wM0jhTytgXu3wzJoIqpbBAG5U6BwiubZ6QKzSbP7/VbmF1v96xlAbX2Am/mz0Zep0NLvLh84JT0tuZnk3wmYQA==",
+ "version": "4.3.11",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.11.tgz",
+ "integrity": "sha512-yHv+r6wSQXEXTPVCIQTNmXVWs7ekBTpMVErjqZoWkYN75HIFN5y9+/+sYOejfAuvxWGvgzgxbTHa/oz61YTbKw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/property-provider": "^4.0.4",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
- "bowser": "^2.11.0",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8700,9 +9948,10 @@
}
},
"node_modules/@smithy/util-defaults-mode-browser/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8711,16 +9960,17 @@
}
},
"node_modules/@smithy/util-defaults-mode-node": {
- "version": "4.0.21",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.21.tgz",
- "integrity": "sha512-/F34zkoU0GzpUgLJydHY8Rxu9lBn8xQC/s/0M0U9lLBkYbA1htaAFjWYJzpzsbXPuri5D1H8gjp2jBum05qBrA==",
+ "version": "4.2.14",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.14.tgz",
+ "integrity": "sha512-ljZN3iRvaJUgulfvobIuG97q1iUuCMrvXAlkZ4msY+ZuVHQHDIqn7FKZCEj+bx8omz6kF5yQXms/xhzjIO5XiA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/config-resolver": "^4.1.4",
- "@smithy/credential-provider-imds": "^4.0.6",
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/property-provider": "^4.0.4",
- "@smithy/smithy-client": "^4.4.5",
- "@smithy/types": "^4.3.1",
+ "@smithy/config-resolver": "^4.4.3",
+ "@smithy/credential-provider-imds": "^4.2.5",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/property-provider": "^4.2.5",
+ "@smithy/smithy-client": "^4.9.8",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8728,9 +9978,10 @@
}
},
"node_modules/@smithy/util-defaults-mode-node/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8739,12 +9990,13 @@
}
},
"node_modules/@smithy/util-endpoints": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.6.tgz",
- "integrity": "sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz",
+ "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/node-config-provider": "^4.1.3",
- "@smithy/types": "^4.3.1",
+ "@smithy/node-config-provider": "^4.3.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8752,9 +10004,10 @@
}
},
"node_modules/@smithy/util-endpoints/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8763,9 +10016,10 @@
}
},
"node_modules/@smithy/util-hex-encoding": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz",
- "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz",
+ "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8774,11 +10028,12 @@
}
},
"node_modules/@smithy/util-middleware": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.4.tgz",
- "integrity": "sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz",
+ "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8786,9 +10041,10 @@
}
},
"node_modules/@smithy/util-middleware/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8797,12 +10053,13 @@
}
},
"node_modules/@smithy/util-retry": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.6.tgz",
- "integrity": "sha512-+YekoF2CaSMv6zKrA6iI/N9yva3Gzn4L6n35Luydweu5MMPYpiGZlWqehPHDHyNbnyaYlz/WJyYAZnC+loBDZg==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz",
+ "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/service-error-classification": "^4.0.6",
- "@smithy/types": "^4.3.1",
+ "@smithy/service-error-classification": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8810,9 +10067,10 @@
}
},
"node_modules/@smithy/util-retry/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8821,17 +10079,18 @@
}
},
"node_modules/@smithy/util-stream": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.2.tgz",
- "integrity": "sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==",
+ "version": "4.5.6",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz",
+ "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/fetch-http-handler": "^5.0.4",
- "@smithy/node-http-handler": "^4.0.6",
- "@smithy/types": "^4.3.1",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-buffer-from": "^4.0.0",
- "@smithy/util-hex-encoding": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/fetch-http-handler": "^5.3.6",
+ "@smithy/node-http-handler": "^4.4.5",
+ "@smithy/types": "^4.9.0",
+ "@smithy/util-base64": "^4.3.0",
+ "@smithy/util-buffer-from": "^4.2.0",
+ "@smithy/util-hex-encoding": "^4.2.0",
+ "@smithy/util-utf8": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8839,11 +10098,12 @@
}
},
"node_modules/@smithy/util-stream/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8851,14 +10111,15 @@
}
},
"node_modules/@smithy/util-stream/node_modules/@smithy/node-http-handler": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
- "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
+ "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/protocol-http": "^5.1.2",
- "@smithy/querystring-builder": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/protocol-http": "^5.3.5",
+ "@smithy/querystring-builder": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8866,9 +10127,10 @@
}
},
"node_modules/@smithy/util-stream/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8877,9 +10139,10 @@
}
},
"node_modules/@smithy/util-uri-escape": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz",
- "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz",
+ "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8888,11 +10151,12 @@
}
},
"node_modules/@smithy/util-utf8": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz",
- "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz",
+ "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-buffer-from": "^4.2.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8900,12 +10164,13 @@
}
},
"node_modules/@smithy/util-waiter": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.6.tgz",
- "integrity": "sha512-slcr1wdRbX7NFphXZOxtxRNA7hXAAtJAXJDE/wdoMAos27SIquVCKiSqfB6/28YzQ8FCsB5NKkhdM5gMADbqxg==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz",
+ "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.4",
- "@smithy/types": "^4.3.1",
+ "@smithy/abort-controller": "^4.2.5",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8913,11 +10178,12 @@
}
},
"node_modules/@smithy/util-waiter/node_modules/@smithy/abort-controller": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
- "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
+ "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.3.1",
+ "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -8925,9 +10191,22 @@
}
},
"node_modules/@smithy/util-waiter/node_modules/@smithy/types": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
- "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
+ "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@smithy/uuid": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz",
+ "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -8939,6 +10218,7 @@
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
"integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+ "license": "MIT",
"dependencies": {
"defer-to-connect": "^2.0.0"
},
@@ -8950,36 +10230,41 @@
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
"integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@tsconfig/node10": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
- "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
- "dev": true
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz",
+ "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@tsconfig/node12": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@tsconfig/node14": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@tsconfig/node16": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
"integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@tybys/wasm-util": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz",
- "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==",
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
+ "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -8992,15 +10277,17 @@
"resolved": "https://registry.npmjs.org/@types/adm-zip/-/adm-zip-0.5.7.tgz",
"integrity": "sha512-DNEs/QvmyRLurdQPChqq0Md4zGvPwHerAJYWk9l2jCbD1VPpnzRJorOdiq4zsw09NFbYnhfsoEhWtxIzXpn2yw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/archiver": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-6.0.3.tgz",
- "integrity": "sha512-a6wUll6k3zX6qs5KlxIggs1P1JcYJaTCx2gnlr+f0S1yd2DoaEwoIK10HmBaLnZwWneBz+JBm0dwcZu0zECBcQ==",
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-6.0.4.tgz",
+ "integrity": "sha512-ULdQpARQ3sz9WH4nb98mJDYA0ft2A8C4f4fovvUcFwINa1cgGjY36JCAYuP5YypRq4mco1lJp1/7jEMS2oR0Hg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/readdir-glob": "*"
}
@@ -9010,6 +10297,7 @@
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
"integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/parser": "^7.20.7",
"@babel/types": "^7.20.7",
@@ -9023,6 +10311,7 @@
"resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
"integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.0.0"
}
@@ -9032,24 +10321,27 @@
"resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
"integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/parser": "^7.1.0",
"@babel/types": "^7.0.0"
}
},
"node_modules/@types/babel__traverse": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
- "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
+ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.20.7"
+ "@babel/types": "^7.28.2"
}
},
"node_modules/@types/body-parser": {
"version": "1.19.6",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
"integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
+ "license": "MIT",
"dependencies": {
"@types/connect": "*",
"@types/node": "*"
@@ -9059,6 +10351,7 @@
"version": "3.5.13",
"resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz",
"integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9067,6 +10360,7 @@
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
"integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "license": "MIT",
"dependencies": {
"@types/http-cache-semantics": "*",
"@types/keyv": "^3.1.4",
@@ -9078,13 +10372,15 @@
"version": "4.3.20",
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz",
"integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/chai-as-promised": {
"version": "7.1.8",
"resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz",
"integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/chai": "*"
}
@@ -9093,6 +10389,7 @@
"version": "3.4.38",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
"integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9101,16 +10398,18 @@
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz",
"integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==",
+ "license": "MIT",
"dependencies": {
"@types/express-serve-static-core": "*",
"@types/node": "*"
}
},
"node_modules/@types/conventional-commits-parser": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz",
- "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.2.tgz",
+ "integrity": "sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9120,6 +10419,7 @@
"resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz",
"integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9128,7 +10428,8 @@
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/@types/diff/-/diff-7.0.2.tgz",
"integrity": "sha512-JSWRMozjFKsGlEjiiKajUjIJVKuKdE3oVy2DNtK+fUo8q82nhFZ2CPQwicAIkXrofahDXrWJ7mjelvZphMS98Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/encoding-japanese": {
"version": "2.2.1",
@@ -9137,11 +10438,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/escape-html": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@types/escape-html/-/escape-html-1.0.4.tgz",
+ "integrity": "sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/eslint": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -9152,6 +10461,7 @@
"resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
"integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@types/eslint": "*",
"@types/estree": "*"
@@ -9161,23 +10471,26 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/@types/express": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz",
- "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==",
+ "version": "4.17.25",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz",
+ "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==",
+ "license": "MIT",
"dependencies": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "^4.17.33",
"@types/qs": "*",
- "@types/serve-static": "*"
+ "@types/serve-static": "^1"
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.19.6",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz",
- "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
+ "version": "4.19.7",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz",
+ "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"@types/qs": "*",
@@ -9190,6 +10503,7 @@
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
"integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9198,22 +10512,26 @@
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
"integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/http-cache-semantics": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
- "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA=="
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
+ "license": "MIT"
},
"node_modules/@types/http-errors": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
- "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg=="
+ "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
+ "license": "MIT"
},
"node_modules/@types/http-proxy": {
- "version": "1.17.16",
- "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz",
- "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==",
+ "version": "1.17.17",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz",
+ "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9223,6 +10541,7 @@
"resolved": "https://registry.npmjs.org/@types/ignore-walk/-/ignore-walk-4.0.3.tgz",
"integrity": "sha512-6V7wDsk0nz8LtRC7qeC0GfXadFLT4FdCtVbXhxoIGRdkn2kLr20iMLupRGiBhlZ79WWWqaObIdR3nkXfUrBPdQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9231,13 +10550,15 @@
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
"integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/istanbul-lib-report": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
"integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/istanbul-lib-coverage": "*"
}
@@ -9247,6 +10568,7 @@
"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
"integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/istanbul-lib-report": "*"
}
@@ -9256,6 +10578,7 @@
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz",
"integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"expect": "^29.0.0",
"pretty-format": "^29.0.0"
@@ -9266,6 +10589,7 @@
"resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz",
"integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"@types/tough-cookie": "*",
@@ -9275,18 +10599,21 @@
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "license": "MIT"
},
"node_modules/@types/json5": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/keyv": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
"integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9301,49 +10628,47 @@
"version": "1.5.14",
"resolved": "https://registry.npmjs.org/@types/lokijs/-/lokijs-1.5.14.tgz",
"integrity": "sha512-4Fic47BX3Qxr8pd12KT6/T1XWU8dOlJBIp1jGoMbaDbiEvdv50rAii+B3z1b/J2pvMywcVP+DBPGP5/lgLOKGA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/mime": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
- "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
+ "license": "MIT"
},
"node_modules/@types/mocha": {
"version": "10.0.10",
"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz",
"integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/mock-fs": {
"version": "4.13.4",
"resolved": "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.4.tgz",
"integrity": "sha512-mXmM0o6lULPI8z3XNnQCpL0BGxPwx1Ul1wXYEPBGl4efShyxW2Rln0JOPEWGyZaYZMM6OVXM/15zUuFMY52ljg==",
"dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/mute-stream": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz",
- "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/node": {
- "version": "22.15.34",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.34.tgz",
- "integrity": "sha512-8Y6E5WUupYy1Dd0II32BsWAx5MWdcnRd8L84Oys3veg1YrYtNtzgO4CFhiBg6MDSjk7Ay36HYOnU7/tuOzIzcw==",
+ "version": "22.19.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz",
+ "integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"undici-types": "~6.21.0"
}
},
"node_modules/@types/node-forge": {
- "version": "1.3.11",
- "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz",
- "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==",
+ "version": "1.3.14",
+ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz",
+ "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9352,23 +10677,27 @@
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
"integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/qs": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
- "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ=="
+ "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==",
+ "license": "MIT"
},
"node_modules/@types/range-parser": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
- "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
+ "license": "MIT"
},
"node_modules/@types/readdir-glob": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.5.tgz",
"integrity": "sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9377,6 +10706,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
"integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9384,14 +10714,15 @@
"node_modules/@types/retry": {
"version": "0.12.2",
"resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz",
- "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow=="
+ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==",
+ "license": "MIT"
},
"node_modules/@types/send": {
- "version": "0.17.5",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz",
- "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz",
+ "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==",
+ "license": "MIT",
"dependencies": {
- "@types/mime": "^1",
"@types/node": "*"
}
},
@@ -9399,18 +10730,30 @@
"version": "1.9.4",
"resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz",
"integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==",
+ "license": "MIT",
"dependencies": {
"@types/express": "*"
}
},
"node_modules/@types/serve-static": {
- "version": "1.15.8",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz",
- "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==",
- "dependencies": {
+ "version": "1.15.10",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz",
+ "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==",
+ "license": "MIT",
+ "dependencies": {
"@types/http-errors": "*",
"@types/node": "*",
- "@types/send": "*"
+ "@types/send": "<1"
+ }
+ },
+ "node_modules/@types/serve-static/node_modules/@types/send": {
+ "version": "0.17.6",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz",
+ "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
}
},
"node_modules/@types/sinon": {
@@ -9418,6 +10761,7 @@
"resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz",
"integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/sinonjs__fake-timers": "*"
}
@@ -9427,21 +10771,24 @@
"resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz",
"integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/chai": "*",
"@types/sinon": "*"
}
},
"node_modules/@types/sinonjs__fake-timers": {
- "version": "8.1.5",
- "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz",
- "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==",
- "dev": true
+ "version": "15.0.1",
+ "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-15.0.1.tgz",
+ "integrity": "sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/sockjs": {
"version": "0.3.36",
"resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz",
"integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9450,41 +10797,41 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
"integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/tough-cookie": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
"integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/uuid": {
"version": "9.0.8",
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
- "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA=="
+ "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==",
+ "license": "MIT"
},
"node_modules/@types/vscode": {
- "version": "1.101.0",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.101.0.tgz",
- "integrity": "sha512-ZWf0IWa+NGegdW3iU42AcDTFHWW7fApLdkdnBqwYEtHVIBGbTu0ZNQKP/kX3Ds/uMJXIMQNAojHR4vexCEEz5Q==",
- "dev": true
+ "version": "1.106.1",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.106.1.tgz",
+ "integrity": "sha512-R/HV8u2h8CAddSbX8cjpdd7B8/GnE4UjgjpuGuHcbp1xV6yh4OeqU4L1pKjlwujCrSFS0MOpwJAIs/NexMB1fQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz",
"integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==",
- "dev": true
- },
- "node_modules/@types/wrap-ansi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz",
- "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/ws": {
"version": "8.18.1",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
"integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -9494,15 +10841,17 @@
"resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.14.tgz",
"integrity": "sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/yargs": {
- "version": "17.0.33",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
- "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
+ "version": "17.0.35",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz",
+ "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/yargs-parser": "*"
}
@@ -9511,13 +10860,15 @@
"version": "21.0.3",
"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
"integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/yauzl": {
"version": "2.10.3",
"resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
"integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"@types/node": "*"
@@ -9534,16 +10885,18 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.0.tgz",
- "integrity": "sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.47.0.tgz",
+ "integrity": "sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.35.0",
- "@typescript-eslint/type-utils": "8.35.0",
- "@typescript-eslint/utils": "8.35.0",
- "@typescript-eslint/visitor-keys": "8.35.0",
+ "@typescript-eslint/scope-manager": "8.47.0",
+ "@typescript-eslint/type-utils": "8.47.0",
+ "@typescript-eslint/utils": "8.47.0",
+ "@typescript-eslint/visitor-keys": "8.47.0",
"graphemer": "^1.4.0",
"ignore": "^7.0.0",
"natural-compare": "^1.4.0",
@@ -9557,21 +10910,23 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.35.0",
+ "@typescript-eslint/parser": "^8.47.0",
"eslint": "^8.57.0 || ^9.0.0",
- "typescript": ">=4.8.4 <5.9.0"
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.0.tgz",
- "integrity": "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.47.0.tgz",
+ "integrity": "sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "8.35.0",
- "@typescript-eslint/types": "8.35.0",
- "@typescript-eslint/typescript-estree": "8.35.0",
- "@typescript-eslint/visitor-keys": "8.35.0",
+ "@typescript-eslint/scope-manager": "8.47.0",
+ "@typescript-eslint/types": "8.47.0",
+ "@typescript-eslint/typescript-estree": "8.47.0",
+ "@typescript-eslint/visitor-keys": "8.47.0",
"debug": "^4.3.4"
},
"engines": {
@@ -9583,17 +10938,18 @@
},
"peerDependencies": {
"eslint": "^8.57.0 || ^9.0.0",
- "typescript": ">=4.8.4 <5.9.0"
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.0.tgz",
- "integrity": "sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz",
+ "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.35.0",
- "@typescript-eslint/types": "^8.35.0",
+ "@typescript-eslint/tsconfig-utils": "^8.47.0",
+ "@typescript-eslint/types": "^8.47.0",
"debug": "^4.3.4"
},
"engines": {
@@ -9604,17 +10960,18 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "typescript": ">=4.8.4 <5.9.0"
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.0.tgz",
- "integrity": "sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz",
+ "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.35.0",
- "@typescript-eslint/visitor-keys": "8.35.0"
+ "@typescript-eslint/types": "8.47.0",
+ "@typescript-eslint/visitor-keys": "8.47.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -9625,10 +10982,11 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.0.tgz",
- "integrity": "sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz",
+ "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@@ -9637,17 +10995,19 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "typescript": ">=4.8.4 <5.9.0"
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.35.0.tgz",
- "integrity": "sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.47.0.tgz",
+ "integrity": "sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.35.0",
- "@typescript-eslint/utils": "8.35.0",
+ "@typescript-eslint/types": "8.47.0",
+ "@typescript-eslint/typescript-estree": "8.47.0",
+ "@typescript-eslint/utils": "8.47.0",
"debug": "^4.3.4",
"ts-api-utils": "^2.1.0"
},
@@ -9660,14 +11020,15 @@
},
"peerDependencies": {
"eslint": "^8.57.0 || ^9.0.0",
- "typescript": ">=4.8.4 <5.9.0"
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz",
- "integrity": "sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz",
+ "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@@ -9677,15 +11038,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.0.tgz",
- "integrity": "sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz",
+ "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.35.0",
- "@typescript-eslint/tsconfig-utils": "8.35.0",
- "@typescript-eslint/types": "8.35.0",
- "@typescript-eslint/visitor-keys": "8.35.0",
+ "@typescript-eslint/project-service": "8.47.0",
+ "@typescript-eslint/tsconfig-utils": "8.47.0",
+ "@typescript-eslint/types": "8.47.0",
+ "@typescript-eslint/visitor-keys": "8.47.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@@ -9701,14 +11063,15 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "typescript": ">=4.8.4 <5.9.0"
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -9717,15 +11080,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.0.tgz",
- "integrity": "sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz",
+ "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.7.0",
- "@typescript-eslint/scope-manager": "8.35.0",
- "@typescript-eslint/types": "8.35.0",
- "@typescript-eslint/typescript-estree": "8.35.0"
+ "@typescript-eslint/scope-manager": "8.47.0",
+ "@typescript-eslint/types": "8.47.0",
+ "@typescript-eslint/typescript-estree": "8.47.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -9736,16 +11100,17 @@
},
"peerDependencies": {
"eslint": "^8.57.0 || ^9.0.0",
- "typescript": ">=4.8.4 <5.9.0"
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.0.tgz",
- "integrity": "sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz",
+ "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.35.0",
+ "@typescript-eslint/types": "8.47.0",
"eslint-visitor-keys": "^4.2.1"
},
"engines": {
@@ -9761,6 +11126,7 @@
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
"integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@@ -9772,13 +11138,15 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
"integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/@vitest/pretty-format": {
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz",
"integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tinyrainbow": "^1.2.0"
},
@@ -9791,6 +11159,7 @@
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz",
"integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@vitest/pretty-format": "2.1.9",
"magic-string": "^0.30.12",
@@ -9801,34 +11170,31 @@
}
},
"node_modules/@wdio/cli": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.16.2.tgz",
- "integrity": "sha512-mb17CsZ+mM5WBSDA3/Nx0snCitqTWyRVzRfTjP1yOMMgVmc6toZ8b7Nfbv30nvn/bZiZ/jQFAL2SyafpJEMYcw==",
+ "version": "9.20.1",
+ "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.20.1.tgz",
+ "integrity": "sha512-aeU6iV79GVdUkuHfuqbx4RkaJWY1amsQbiawr8VXhFTmBhPKQdzqQEVs/G+FG2zh2ILTXZ8+spv9irWMQmpGBA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/node": "^20.1.1",
"@vitest/snapshot": "^2.1.1",
- "@wdio/config": "9.16.2",
- "@wdio/globals": "9.16.2",
- "@wdio/logger": "9.16.2",
+ "@wdio/config": "9.20.1",
+ "@wdio/globals": "9.17.0",
+ "@wdio/logger": "9.18.0",
"@wdio/protocols": "9.16.2",
- "@wdio/types": "9.16.2",
- "@wdio/utils": "9.16.2",
+ "@wdio/types": "9.20.0",
+ "@wdio/utils": "9.20.1",
"async-exit-hook": "^2.0.1",
- "chalk": "^5.2.0",
+ "chalk": "^5.4.1",
"chokidar": "^4.0.0",
- "dotenv": "^16.3.1",
- "ejs": "^3.1.9",
- "execa": "^9.2.0",
+ "create-wdio": "9.18.2",
+ "dotenv": "^17.2.0",
"import-meta-resolve": "^4.0.0",
- "inquirer": "^11.0.1",
"lodash.flattendeep": "^4.4.0",
"lodash.pickby": "^4.6.0",
"lodash.union": "^4.6.0",
"read-pkg-up": "^10.0.0",
- "recursive-readdir": "^2.2.3",
"tsx": "^4.7.2",
- "webdriverio": "9.16.2",
+ "webdriverio": "9.20.1",
"yargs": "^17.7.2"
},
"bin": {
@@ -9838,151 +11204,184 @@
"node": ">=18.20.0"
}
},
- "node_modules/@wdio/cli/node_modules/@types/node": {
- "version": "20.19.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.2.tgz",
- "integrity": "sha512-9pLGGwdzOUBDYi0GNjM97FIA+f92fqSke6joWeBjWXllfNxZBs7qeMF7tvtOIsbY45xkWkxrdwUfUf3MnQa9gA==",
- "dev": true,
- "dependencies": {
- "undici-types": "~6.21.0"
- }
- },
- "node_modules/@wdio/cli/node_modules/execa": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz",
- "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==",
+ "node_modules/@wdio/cli/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@sindresorhus/merge-streams": "^4.0.0",
- "cross-spawn": "^7.0.6",
- "figures": "^6.1.0",
- "get-stream": "^9.0.0",
- "human-signals": "^8.0.1",
- "is-plain-obj": "^4.1.0",
- "is-stream": "^4.0.1",
- "npm-run-path": "^6.0.0",
- "pretty-ms": "^9.2.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^4.0.0",
- "yoctocolors": "^2.1.1"
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
},
"engines": {
- "node": "^18.19.0 || >=20.5.0"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@wdio/cli/node_modules/get-stream": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
- "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "node_modules/@wdio/cli/node_modules/hosted-git-info": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
+ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "@sec-ant/readable-stream": "^0.4.1",
- "is-stream": "^4.0.1"
+ "lru-cache": "^10.0.1"
},
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": "^16.14.0 || >=18.0.0"
}
},
- "node_modules/@wdio/cli/node_modules/human-signals": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz",
- "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
+ "node_modules/@wdio/cli/node_modules/json-parse-even-better-errors": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz",
+ "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=18.18.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/@wdio/cli/node_modules/is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "node_modules/@wdio/cli/node_modules/lines-and-columns": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz",
+ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@wdio/cli/node_modules/normalize-package-data": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
+ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^7.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/parse-json": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz",
+ "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.21.4",
+ "error-ex": "^1.3.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "lines-and-columns": "^2.0.3",
+ "type-fest": "^3.8.0"
+ },
+ "engines": {
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@wdio/cli/node_modules/is-stream": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
- "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "node_modules/@wdio/cli/node_modules/parse-json/node_modules/type-fest": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
+ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
- "node": ">=18"
+ "node": ">=14.16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@wdio/cli/node_modules/npm-run-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
- "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "node_modules/@wdio/cli/node_modules/read-pkg": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz",
+ "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "path-key": "^4.0.0",
- "unicorn-magic": "^0.3.0"
+ "@types/normalize-package-data": "^2.4.1",
+ "normalize-package-data": "^6.0.0",
+ "parse-json": "^7.0.0",
+ "type-fest": "^4.2.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@wdio/cli/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "node_modules/@wdio/cli/node_modules/read-pkg-up": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz",
+ "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^6.3.0",
+ "read-pkg": "^8.1.0",
+ "type-fest": "^4.2.0"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@wdio/cli/node_modules/strip-final-newline": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
- "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
+ "node_modules/@wdio/cli/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
- "engines": {
- "node": ">=18"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/@wdio/cli/node_modules/unicorn-magic": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
- "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "node_modules/@wdio/cli/node_modules/type-fest": {
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
- "node": ">=18"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@wdio/config": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.16.2.tgz",
- "integrity": "sha512-a7zDSNzpGgkb6mWrg9GWPmvh/sZFzaf86/iBjCv+n2DTY0+8v8NLruRQmWuCaQAlLVhM3XAqmB+fWLqxDhdvOA==",
+ "version": "9.20.1",
+ "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.20.1.tgz",
+ "integrity": "sha512-npl2J+rjCDJPjVySgWpciOyhWddn6s7n5sepKXLR7x1ADQHl5zUFv1dHD3jx4OQ9l6lrGQSPaofuz+7e9mu+vg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@wdio/logger": "9.16.2",
- "@wdio/types": "9.16.2",
- "@wdio/utils": "9.16.2",
+ "@wdio/logger": "9.18.0",
+ "@wdio/types": "9.20.0",
+ "@wdio/utils": "9.20.1",
"deepmerge-ts": "^7.0.3",
"glob": "^10.2.2",
"import-meta-resolve": "^4.0.0"
@@ -9992,13 +11391,14 @@
}
},
"node_modules/@wdio/dot-reporter": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.16.2.tgz",
- "integrity": "sha512-JzFegviZdpzgvt8w8uwI0pyJguIuJzfzlkkyWz1WUoqtilH4yrf5IYKzObnm3peh7iQ/y2J1SSeAjKr0Hr5xTg==",
+ "version": "9.20.0",
+ "resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.20.0.tgz",
+ "integrity": "sha512-lRhihDQ56dApJcKOIEkVHThl8t2e5h7f3FW3JVmMLcGgbbkkLgXqVWPpbEGJcLld3wL4CipAPojVE/YEWp80hw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@wdio/reporter": "9.16.2",
- "@wdio/types": "9.16.2",
+ "@wdio/reporter": "9.20.0",
+ "@wdio/types": "9.20.0",
"chalk": "^5.0.1"
},
"engines": {
@@ -10006,15 +11406,17 @@
}
},
"node_modules/@wdio/globals": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.16.2.tgz",
- "integrity": "sha512-PBPBfNPIVC76g6IXadZQeqo6TwjVnfCW31PBVgYsTuhb1MB2wQi00rkBP8JFndr7C0Lhyce+gdIJl6VXURO0FA==",
+ "version": "9.17.0",
+ "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.17.0.tgz",
+ "integrity": "sha512-i38o7wlipLllNrk2hzdDfAmk6nrqm3lR2MtAgWgtHbwznZAKkB84KpkNFfmUXw5Kg3iP1zKlSjwZpKqenuLc+Q==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18.20.0"
},
"peerDependencies": {
- "expect-webdriverio": "^5.3.2",
+ "expect-webdriverio": "^5.3.4",
"webdriverio": "^9.0.0"
},
"peerDependenciesMeta": {
@@ -10027,18 +11429,20 @@
}
},
"node_modules/@wdio/local-runner": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.16.2.tgz",
- "integrity": "sha512-ChHTXXknq8hDXhyMjjtWiPqsXenyvxrHqqgq3zDI8EXuGNjVfG6/CzcKXyry7LBXq2Bu78LoymKfvoLdZu+7JQ==",
+ "version": "9.20.1",
+ "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.20.1.tgz",
+ "integrity": "sha512-O4zMa3SKcS+3jnMT1C/IqRl6Owl5c2e4aFpz6nRPFRdcs6Cwr+d7OXw8XGdfDtgSIEcpcDws+B53De9YDZmPzA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0",
- "@wdio/logger": "9.16.2",
+ "@wdio/logger": "9.18.0",
"@wdio/repl": "9.16.2",
- "@wdio/runner": "9.16.2",
- "@wdio/types": "9.16.2",
+ "@wdio/runner": "9.20.1",
+ "@wdio/types": "9.20.0",
+ "@wdio/xvfb": "9.20.0",
"exit-hook": "^4.0.0",
- "expect-webdriverio": "^5.3.2",
+ "expect-webdriverio": "^5.3.4",
"split2": "^4.1.0",
"stream-buffers": "^3.0.2"
},
@@ -10047,23 +11451,27 @@
}
},
"node_modules/@wdio/local-runner/node_modules/@types/node": {
- "version": "20.19.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.2.tgz",
- "integrity": "sha512-9pLGGwdzOUBDYi0GNjM97FIA+f92fqSke6joWeBjWXllfNxZBs7qeMF7tvtOIsbY45xkWkxrdwUfUf3MnQa9gA==",
+ "version": "20.19.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
+ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
},
"node_modules/@wdio/logger": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.16.2.tgz",
- "integrity": "sha512-6A1eVpNPToWupLIo8CXStth4HJGTfxKsAiKtwE0xQFKyDM8uPTm3YO3Nf15vCSHbmsncbYVEo7QrUwRUEB4YUg==",
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+ "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"chalk": "^5.1.2",
"loglevel": "^1.6.0",
"loglevel-plugin-prefix": "^0.8.4",
+ "safe-regex2": "^5.0.0",
"strip-ansi": "^7.1.0"
},
"engines": {
@@ -10071,10 +11479,11 @@
}
},
"node_modules/@wdio/logger/node_modules/ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -10083,10 +11492,11 @@
}
},
"node_modules/@wdio/logger/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -10098,16 +11508,17 @@
}
},
"node_modules/@wdio/mocha-framework": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.16.2.tgz",
- "integrity": "sha512-t+SxdS539Gy0iYudmCWV8FSDGQLdTKR8dnYTaPePCGXI3kkeh95h9ODloLOITOi/ndjLe5vsFH/Vd5rBr12rFA==",
+ "version": "9.20.1",
+ "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.20.1.tgz",
+ "integrity": "sha512-QGZlJhycCLdiQlGyP33zl5c9m01NvjfRTH4yyTmSXDLFrukzl8qFDDBFkjhQylnTGlsa+htcDTog4taM/4LISg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/mocha": "^10.0.6",
"@types/node": "^20.11.28",
- "@wdio/logger": "9.16.2",
- "@wdio/types": "9.16.2",
- "@wdio/utils": "9.16.2",
+ "@wdio/logger": "9.18.0",
+ "@wdio/types": "9.20.0",
+ "@wdio/utils": "9.20.1",
"mocha": "^10.3.0"
},
"engines": {
@@ -10115,10 +11526,11 @@
}
},
"node_modules/@wdio/mocha-framework/node_modules/@types/node": {
- "version": "20.19.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.2.tgz",
- "integrity": "sha512-9pLGGwdzOUBDYi0GNjM97FIA+f92fqSke6joWeBjWXllfNxZBs7qeMF7tvtOIsbY45xkWkxrdwUfUf3MnQa9gA==",
+ "version": "20.19.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
+ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
@@ -10128,6 +11540,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -10143,6 +11556,7 @@
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -10167,6 +11581,7 @@
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
@@ -10178,6 +11593,7 @@
"resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
"integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
@@ -10186,13 +11602,15 @@
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@wdio/mocha-framework/node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
@@ -10210,6 +11628,7 @@
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -10229,6 +11648,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -10241,6 +11661,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^5.0.0"
},
@@ -10256,6 +11677,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -10268,6 +11690,7 @@
"resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz",
"integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-colors": "^4.1.3",
"browser-stdout": "^1.3.1",
@@ -10303,6 +11726,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^3.0.2"
},
@@ -10318,6 +11742,7 @@
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -10327,6 +11752,7 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -10339,6 +11765,7 @@
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -10351,6 +11778,7 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -10365,6 +11793,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -10379,13 +11808,15 @@
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz",
"integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
- "dev": true
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/@wdio/mocha-framework/node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -10403,6 +11834,7 @@
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -10421,6 +11853,7 @@
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10"
}
@@ -10429,13 +11862,15 @@
"version": "9.16.2",
"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz",
"integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@wdio/repl": {
"version": "9.16.2",
"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz",
"integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0"
},
@@ -10444,24 +11879,26 @@
}
},
"node_modules/@wdio/repl/node_modules/@types/node": {
- "version": "20.19.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.2.tgz",
- "integrity": "sha512-9pLGGwdzOUBDYi0GNjM97FIA+f92fqSke6joWeBjWXllfNxZBs7qeMF7tvtOIsbY45xkWkxrdwUfUf3MnQa9gA==",
+ "version": "20.19.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
+ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
},
"node_modules/@wdio/reporter": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.16.2.tgz",
- "integrity": "sha512-th+APMRuK03OzpiJKnfhCwnXoJb57mRmP/NQYGc+k9GEF3Z3yPDD7LxnBlwPANGxt/hdzirQ6OvQyJYLwpmmuQ==",
+ "version": "9.20.0",
+ "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.20.0.tgz",
+ "integrity": "sha512-HjKJzm8o0MCcnwGVGprzaCAyau0OB8mWHwH1ZI/ka+z1nmVBr2tsr7H53SdHsGIhAg/XuZObobqdzeVF63ApeA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0",
- "@wdio/logger": "9.16.2",
- "@wdio/types": "9.16.2",
- "diff": "^7.0.0",
+ "@wdio/logger": "9.18.0",
+ "@wdio/types": "9.20.0",
+ "diff": "^8.0.2",
"object-inspect": "^1.12.0"
},
"engines": {
@@ -10469,36 +11906,48 @@
}
},
"node_modules/@wdio/reporter/node_modules/@types/node": {
- "version": "20.19.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.2.tgz",
- "integrity": "sha512-9pLGGwdzOUBDYi0GNjM97FIA+f92fqSke6joWeBjWXllfNxZBs7qeMF7tvtOIsbY45xkWkxrdwUfUf3MnQa9gA==",
+ "version": "20.19.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
+ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
},
+ "node_modules/@wdio/reporter/node_modules/diff": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
+ "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/@wdio/runner": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.16.2.tgz",
- "integrity": "sha512-cETsJivOD2yzJfzwKi1n7NNXL3zF/yTcA+578fiu48iGVmhOJNhgW9sv4oVH/aDCt09PPUZw6DEBOT3mcKDSGw==",
+ "version": "9.20.1",
+ "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.20.1.tgz",
+ "integrity": "sha512-aoB1ytsWuN8YH2SCpY4dyD1VZHSKRub4xDo0gZ2r7fh3qup4zJCPrCNV0Dq1CcUvsq3TgGlySbfazPjSpm1g3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.11.28",
- "@wdio/config": "9.16.2",
- "@wdio/dot-reporter": "9.16.2",
- "@wdio/globals": "9.16.2",
- "@wdio/logger": "9.16.2",
- "@wdio/types": "9.16.2",
- "@wdio/utils": "9.16.2",
+ "@wdio/config": "9.20.1",
+ "@wdio/dot-reporter": "9.20.0",
+ "@wdio/globals": "9.17.0",
+ "@wdio/logger": "9.18.0",
+ "@wdio/types": "9.20.0",
+ "@wdio/utils": "9.20.1",
"deepmerge-ts": "^7.0.3",
- "webdriver": "9.16.2",
- "webdriverio": "9.16.2"
+ "webdriver": "9.20.1",
+ "webdriverio": "9.20.1"
},
"engines": {
"node": ">=18.20.0"
},
"peerDependencies": {
- "expect-webdriverio": "^5.3.2",
+ "expect-webdriverio": "^5.3.4",
"webdriverio": "^9.0.0"
},
"peerDependenciesMeta": {
@@ -10511,22 +11960,24 @@
}
},
"node_modules/@wdio/runner/node_modules/@types/node": {
- "version": "20.19.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.2.tgz",
- "integrity": "sha512-9pLGGwdzOUBDYi0GNjM97FIA+f92fqSke6joWeBjWXllfNxZBs7qeMF7tvtOIsbY45xkWkxrdwUfUf3MnQa9gA==",
+ "version": "20.19.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
+ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
},
"node_modules/@wdio/spec-reporter": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.16.2.tgz",
- "integrity": "sha512-14HhLSvc+sHns0v07yL8MTfd9BVQ1VhEsywQFA6RbFvKc5PkyoLcxmQSzcH0FOjHhXAfwBh6YxL1mbJwy6+L+w==",
+ "version": "9.20.0",
+ "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.20.0.tgz",
+ "integrity": "sha512-YHj3kF86RoOVVR+k3eb+e/Fki6Mq1FIrJQ380Cz5SSWbIc9gL8HXG3ydReldY6/80KLFOuHn9ZHvDHrCIXRjiw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@wdio/reporter": "9.16.2",
- "@wdio/types": "9.16.2",
+ "@wdio/reporter": "9.20.0",
+ "@wdio/types": "9.20.0",
"chalk": "^5.1.2",
"easy-table": "^1.2.0",
"pretty-ms": "^9.0.0"
@@ -10536,10 +11987,11 @@
}
},
"node_modules/@wdio/types": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.16.2.tgz",
- "integrity": "sha512-P86FvM/4XQGpJKwlC2RKF3I21TglPvPOozJGG9HoL0Jmt6jRF20ggO/nRTxU0XiWkRdqESUTmfA87bdCO4GRkQ==",
+ "version": "9.20.0",
+ "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+ "integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0"
},
@@ -10548,30 +12000,33 @@
}
},
"node_modules/@wdio/types/node_modules/@types/node": {
- "version": "20.19.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.2.tgz",
- "integrity": "sha512-9pLGGwdzOUBDYi0GNjM97FIA+f92fqSke6joWeBjWXllfNxZBs7qeMF7tvtOIsbY45xkWkxrdwUfUf3MnQa9gA==",
+ "version": "20.19.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
+ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
},
"node_modules/@wdio/utils": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.16.2.tgz",
- "integrity": "sha512-bsRdEUXUTYvznXH/Z+p6HDzHSjMI6I6bnu8WXWTeDDDyqybWK5D8cbZvs8A/kMmGXoz1GZkSBHxy4Z5NTg8OQg==",
+ "version": "9.20.1",
+ "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.20.1.tgz",
+ "integrity": "sha512-C/Gsy5NAatsGUF1eT9Ks/ErR52/X4YI7MSm7BtwNOw8v2Ko+SiCA5qXts61J0A7QYwOn4gfXfBZZnzSAng6G/w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@puppeteer/browsers": "^2.2.0",
- "@wdio/logger": "9.16.2",
- "@wdio/types": "9.16.2",
+ "@wdio/logger": "9.18.0",
+ "@wdio/types": "9.20.0",
"decamelize": "^6.0.0",
"deepmerge-ts": "^7.0.3",
- "edgedriver": "^6.1.1",
+ "edgedriver": "^6.1.2",
"geckodriver": "^5.0.0",
"get-port": "^7.0.0",
"import-meta-resolve": "^4.0.0",
"locate-app": "^2.2.24",
+ "mitt": "^3.0.1",
"safaridriver": "^1.0.0",
"split2": "^4.2.0",
"wait-port": "^1.1.0"
@@ -10581,10 +12036,11 @@
}
},
"node_modules/@wdio/utils/node_modules/decamelize": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz",
- "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz",
+ "integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -10592,11 +12048,25 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@wdio/xvfb": {
+ "version": "9.20.0",
+ "resolved": "https://registry.npmjs.org/@wdio/xvfb/-/xvfb-9.20.0.tgz",
+ "integrity": "sha512-shllZH9CsLiZqTXkqBTJrwi6k/ajBE7/78fQgvafMUIQU1Hpb2RdsmydKfPFZ5NDoA+LNm67PD2cPkvkXy4pSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@wdio/logger": "9.18.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@webassemblyjs/ast": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
"integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@webassemblyjs/helper-numbers": "1.13.2",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2"
@@ -10606,25 +12076,29 @@
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
"integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-api-error": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
"integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-buffer": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
"integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-numbers": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
"integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@webassemblyjs/floating-point-hex-parser": "1.13.2",
"@webassemblyjs/helper-api-error": "1.13.2",
@@ -10635,13 +12109,15 @@
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
"integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-wasm-section": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
"integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -10654,6 +12130,7 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
"integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
}
@@ -10663,6 +12140,7 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
"integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
"devOptional": true,
+ "license": "Apache-2.0",
"dependencies": {
"@xtuc/long": "4.2.2"
}
@@ -10671,13 +12149,15 @@
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
"integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/@webassemblyjs/wasm-edit": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
"integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -10694,6 +12174,7 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
"integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
@@ -10707,6 +12188,7 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
"integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -10719,6 +12201,7 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
"integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-api-error": "1.13.2",
@@ -10733,6 +12216,7 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
"integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@xtuc/long": "4.2.2"
@@ -10743,6 +12227,7 @@
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz",
"integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18.12.0"
},
@@ -10756,6 +12241,7 @@
"resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz",
"integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18.12.0"
},
@@ -10769,6 +12255,7 @@
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz",
"integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18.12.0"
},
@@ -10786,35 +12273,40 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "devOptional": true
+ "devOptional": true,
+ "license": "BSD-3-Clause"
},
"node_modules/@xtuc/long": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "devOptional": true
+ "devOptional": true,
+ "license": "Apache-2.0"
},
"node_modules/@zip.js/zip.js": {
- "version": "2.7.62",
- "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.62.tgz",
- "integrity": "sha512-OaLvZ8j4gCkLn048ypkZu29KX30r8/OfFF2w4Jo5WXFr+J04J+lzJ5TKZBVgFXhlvSkqNFQdfnY1Q8TMTCyBVA==",
+ "version": "2.8.11",
+ "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.11.tgz",
+ "integrity": "sha512-0fztsk/0ryJ+2PPr9EyXS5/Co7OK8q3zY/xOoozEWaUsL5x+C0cyZ4YyMuUffOO2Dx/rAdq4JMPqW0VUtm+vzA==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"bun": ">=0.7.0",
"deno": ">=1.0.0",
- "node": ">=16.5.0"
+ "node": ">=18.0.0"
}
},
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/abort-controller": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "license": "MIT",
"dependencies": {
"event-target-shim": "^5.0.0"
},
@@ -10826,6 +12318,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
"integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
+ "license": "MIT",
"dependencies": {
"mime-types": "^3.0.0",
"negotiator": "^1.0.0"
@@ -10839,6 +12332,8 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"devOptional": true,
+ "license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -10846,11 +12341,25 @@
"node": ">=0.4.0"
}
},
+ "node_modules/acorn-import-phases": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz",
+ "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "peerDependencies": {
+ "acorn": "^8.14.0"
+ }
+ },
"node_modules/acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
@@ -10860,6 +12369,7 @@
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
"integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"acorn": "^8.11.0"
},
@@ -10871,14 +12381,16 @@
"version": "0.5.16",
"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz",
"integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==",
+ "license": "MIT",
"engines": {
"node": ">=12.0"
}
},
"node_modules/agent-base": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
- "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "license": "MIT",
"engines": {
"node": ">= 14"
}
@@ -10887,6 +12399,8 @@
"version": "8.17.1",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -10899,9 +12413,10 @@
}
},
"node_modules/ajv-formats": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
- "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
+ "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
+ "license": "MIT",
"dependencies": {
"ajv": "^8.0.0"
},
@@ -10918,6 +12433,7 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
"integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3"
},
@@ -10930,6 +12446,7 @@
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
"integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -10939,6 +12456,7 @@
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
"integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.21.3"
},
@@ -10949,6 +12467,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/ansi-escapes/node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/ansi-html-community": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
@@ -10956,6 +12487,7 @@
"engines": [
"node >= 0.8.0"
],
+ "license": "Apache-2.0",
"bin": {
"ansi-html": "bin/ansi-html"
}
@@ -10964,6 +12496,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -10973,6 +12506,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -10981,26 +12515,27 @@
}
},
"node_modules/antlr4-c3": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/antlr4-c3/-/antlr4-c3-3.4.2.tgz",
- "integrity": "sha512-rISIjeelkeun6Y/YrdVqWtJBDg7SRT9d0Cqov8f6vGe5O5w8wY9HE00jcdevcRjwYOSExHjFi/gUqC3BMSvBuQ==",
+ "version": "3.4.4",
+ "resolved": "https://registry.npmjs.org/antlr4-c3/-/antlr4-c3-3.4.4.tgz",
+ "integrity": "sha512-ixp1i17ypbRzZnffdarIfCVEXJwPydtDt61SHMGkc+UCD7rrbfvHESTMTgx8jFhUgKAgcHyt9060kQ8nU3vlxA==",
+ "license": "MIT",
"dependencies": {
- "antlr4ng": "3.0.14"
+ "antlr4ng": "3.0.16"
}
},
"node_modules/antlr4ng": {
- "version": "3.0.14",
- "resolved": "https://registry.npmjs.org/antlr4ng/-/antlr4ng-3.0.14.tgz",
- "integrity": "sha512-EVEn3B3zpxgbq/731dhwMYCls9e8mAudBvo479hoXbX/yTL24Do1HNZEU+v1U6GayIFrow5EcHMdyXqqRXTtBw==",
- "peerDependencies": {
- "antlr4ng-cli": "^2.0.0"
- }
+ "version": "3.0.16",
+ "resolved": "https://registry.npmjs.org/antlr4ng/-/antlr4ng-3.0.16.tgz",
+ "integrity": "sha512-DQuJkC7kX3xunfF4K2KsWTSvoxxslv+FQp/WHQZTJSsH2Ec3QfFmrxC3Nky2ok9yglXn6nHM4zUaVDxcN5f6kA==",
+ "license": "BSD-3-Clause"
},
"node_modules/antlr4ng-cli": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/antlr4ng-cli/-/antlr4ng-cli-2.0.0.tgz",
"integrity": "sha512-oAt5OSSYhRQn1PgahtpAP4Vp3BApCoCqlzX7Q8ZUWWls4hX59ryYuu0t7Hwrnfk796OxP/vgIJaqxdltd/oEvQ==",
"deprecated": "This package is deprecated and will no longer be updated. Please use the new antlr-ng package instead: https://github.com/mike-lischke/antlr-ng",
+ "dev": true,
+ "license": "BSD-3-Clause",
"bin": {
"antlr4ng": "index.js"
}
@@ -11009,6 +12544,7 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -11021,6 +12557,7 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -11038,6 +12575,7 @@
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz",
"integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==",
+ "license": "MIT",
"dependencies": {
"archiver-utils": "^5.0.2",
"async": "^3.2.4",
@@ -11055,6 +12593,7 @@
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz",
"integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==",
+ "license": "MIT",
"dependencies": {
"glob": "^10.0.0",
"graceful-fs": "^4.2.0",
@@ -11079,6 +12618,12 @@
"readable-stream": "^2.0.6"
}
},
+ "node_modules/are-we-there-yet/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
"node_modules/are-we-there-yet/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
@@ -11113,19 +12658,22 @@
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
+ "dev": true,
+ "license": "Python-2.0"
},
"node_modules/args": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz",
"integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"camelcase": "5.0.0",
"chalk": "2.4.2",
@@ -11141,6 +12689,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -11153,6 +12702,7 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
"integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -11162,6 +12712,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -11176,6 +12727,7 @@
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "1.1.3"
}
@@ -11184,13 +12736,15 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/args/node_modules/escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
@@ -11200,6 +12754,7 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -11209,6 +12764,7 @@
"resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
"integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11218,6 +12774,7 @@
"resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz",
"integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -11227,6 +12784,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -11239,6 +12797,7 @@
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
"integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">= 0.4"
}
@@ -11248,6 +12807,7 @@
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
"integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
"is-array-buffer": "^3.0.5"
@@ -11264,6 +12824,7 @@
"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
"integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11271,19 +12832,22 @@
"node_modules/array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "license": "MIT"
},
"node_modules/array-ify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
"integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/array-includes": {
"version": "3.1.9",
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz",
"integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"call-bound": "^1.0.4",
@@ -11306,6 +12870,7 @@
"resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz",
"integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"call-bound": "^1.0.4",
@@ -11327,6 +12892,7 @@
"resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz",
"integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"define-properties": "^1.2.1",
@@ -11345,6 +12911,7 @@
"resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz",
"integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"define-properties": "^1.2.1",
@@ -11363,6 +12930,7 @@
"resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
"integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
"call-bind": "^1.0.8",
@@ -11383,12 +12951,14 @@
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/asn1.js": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
"integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
@@ -11398,13 +12968,15 @@
"node_modules/asn1.js/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
- "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="
+ "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
+ "license": "MIT"
},
"node_modules/assert": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz",
"integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"is-nan": "^1.3.2",
@@ -11418,6 +12990,7 @@
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
"integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
@@ -11427,6 +13000,7 @@
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
"integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tslib": "^2.0.1"
},
@@ -11437,13 +13011,15 @@
"node_modules/async": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
- "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "license": "MIT"
},
"node_modules/async-exit-hook": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
"integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
@@ -11453,6 +13029,7 @@
"resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
"integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -11461,6 +13038,7 @@
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz",
"integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==",
+ "license": "MIT",
"dependencies": {
"tslib": "^2.4.0"
}
@@ -11468,13 +13046,15 @@
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
},
"node_modules/atomic-sleep": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
"integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
@@ -11483,6 +13063,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
"integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "license": "MIT",
"dependencies": {
"possible-typed-array-names": "^1.0.0"
},
@@ -11493,43 +13074,14 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/aws-sdk": {
- "version": "2.1692.0",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1692.0.tgz",
- "integrity": "sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw==",
- "hasInstallScript": true,
- "dependencies": {
- "buffer": "4.9.2",
- "events": "1.1.1",
- "ieee754": "1.1.13",
- "jmespath": "0.16.0",
- "querystring": "0.2.0",
- "sax": "1.2.1",
- "url": "0.10.3",
- "util": "^0.12.4",
- "uuid": "8.0.0",
- "xml2js": "0.6.2"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/aws-sdk/node_modules/uuid": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz",
- "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
"node_modules/awsdocuments-ls-client": {
"resolved": "client/vscode",
"link": true
},
"node_modules/axios": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz",
- "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz",
+ "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
@@ -11538,15 +13090,25 @@
}
},
"node_modules/b4a": {
- "version": "1.6.7",
- "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
- "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz",
+ "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
},
"node_modules/babel-jest": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
"integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/transform": "^29.7.0",
"@types/babel__core": "^7.1.14",
@@ -11568,6 +13130,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -11583,6 +13146,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -11599,6 +13163,7 @@
"resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
"integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
"@istanbuljs/load-nyc-config": "^1.0.0",
@@ -11615,6 +13180,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -11626,6 +13192,7 @@
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -11646,6 +13213,7 @@
"resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
"integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@babel/core": "^7.12.3",
"@babel/parser": "^7.14.7",
@@ -11662,6 +13230,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -11674,6 +13243,7 @@
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
"integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@istanbuljs/schema": "^0.1.2",
"glob": "^7.1.4",
@@ -11688,6 +13258,7 @@
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
"integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/template": "^7.3.3",
"@babel/types": "^7.3.3",
@@ -11703,6 +13274,7 @@
"resolved": "https://registry.npmjs.org/babel-plugin-transform-import-meta/-/babel-plugin-transform-import-meta-2.3.3.tgz",
"integrity": "sha512-bbh30qz1m6ZU1ybJoNOhA2zaDvmeXMnGNBMVMDOJ1Fni4+wMBoy/j7MTRVmqAUCIcy54/rEnr9VEBsfcgbpm3Q==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@babel/template": "^7.25.9",
"tslib": "^2.8.1"
@@ -11712,10 +13284,11 @@
}
},
"node_modules/babel-preset-current-node-syntax": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz",
- "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz",
+ "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-bigint": "^7.8.3",
@@ -11734,7 +13307,7 @@
"@babel/plugin-syntax-top-level-await": "^7.14.5"
},
"peerDependencies": {
- "@babel/core": "^7.0.0"
+ "@babel/core": "^7.0.0 || ^8.0.0-0"
}
},
"node_modules/babel-preset-jest": {
@@ -11742,6 +13315,7 @@
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
"integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"babel-plugin-jest-hoist": "^29.6.3",
"babel-preset-current-node-syntax": "^1.0.0"
@@ -11756,24 +13330,36 @@
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
},
"node_modules/bare-events": {
- "version": "2.5.4",
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz",
- "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==",
- "optional": true
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz",
+ "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "bare-abort-controller": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-abort-controller": {
+ "optional": true
+ }
+ }
},
"node_modules/bare-fs": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz",
- "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==",
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.1.tgz",
+ "integrity": "sha512-zGUCsm3yv/ePt2PHNbVxjjn0nNB1MkIaR4wOCxJ2ig5pCf5cCVAYJXVhQg/3OhhJV6DB1ts7Hv0oUaElc2TPQg==",
"dev": true,
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
"bare-events": "^2.5.4",
"bare-path": "^3.0.0",
- "bare-stream": "^2.6.4"
+ "bare-stream": "^2.6.4",
+ "bare-url": "^2.2.2",
+ "fast-fifo": "^1.3.2"
},
"engines": {
"bare": ">=1.16.0"
@@ -11788,10 +13374,11 @@
}
},
"node_modules/bare-os": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz",
- "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz",
+ "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==",
"dev": true,
+ "license": "Apache-2.0",
"optional": true,
"engines": {
"bare": ">=1.14.0"
@@ -11802,16 +13389,18 @@
"resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
"integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
"dev": true,
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
"bare-os": "^3.0.1"
}
},
"node_modules/bare-stream": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz",
- "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz",
+ "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==",
"dev": true,
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
"streamx": "^2.21.0"
@@ -11829,6 +13418,17 @@
}
}
},
+ "node_modules/bare-url": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz",
+ "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-path": "^3.0.0"
+ }
+ },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -11846,13 +13446,25 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.8.30",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.30.tgz",
+ "integrity": "sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==",
+ "devOptional": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.js"
+ }
},
"node_modules/basic-ftp": {
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
"integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
}
@@ -11860,13 +13472,15 @@
"node_modules/batch": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
- "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw=="
+ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
+ "license": "MIT"
},
"node_modules/big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
@@ -11875,6 +13489,7 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -11935,17 +13550,20 @@
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/bn.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz",
- "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw=="
+ "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==",
+ "license": "MIT"
},
"node_modules/body-parser": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
"integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
+ "license": "MIT",
"dependencies": {
"bytes": "^3.1.2",
"content-type": "^1.0.5",
@@ -11965,6 +13583,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz",
"integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==",
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
"multicast-dns": "^7.2.5"
@@ -11974,13 +13593,15 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/bower": {
"version": "1.8.14",
"resolved": "https://registry.npmjs.org/bower/-/bower-1.8.14.tgz",
"integrity": "sha512-8Rq058FD91q9Nwthyhw0la9fzpBz0iwZTrt51LWl+w+PnJgZk9J+5wp3nibsJcIUPglMYXr4NRBaR+TUj0OkBQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"bower": "bin/bower"
},
@@ -11993,6 +13614,7 @@
"resolved": "https://registry.npmjs.org/bower-json/-/bower-json-0.8.4.tgz",
"integrity": "sha512-mMKghvq9ivbuzSsY5nrOLnDtZIJMUCpysqbGaGW3mj88JAcuSi8ZAzIt34vNZjohy0aR9VXLwgPTZGnBX2Vpjg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"deep-extend": "^0.5.1",
"ends-with": "^0.2.0",
@@ -12005,21 +13627,12 @@
"node": ">=0.10.0"
}
},
- "node_modules/bower-json/node_modules/deep-extend": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
- "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
- "dev": true,
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
"node_modules/bower-license": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/bower-license/-/bower-license-0.4.4.tgz",
"integrity": "sha512-zkDh1GlJkXNFNdlw/JVjihbYsLw5aJhnZnEMMSXLuFKxhJaz+SGFJDOfhBiPZxrASsQCEohuU9EPYdUj1X3GwA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"bower-json": "~0.4.0",
"npm-license": "~0.3.3",
@@ -12051,6 +13664,7 @@
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz",
"integrity": "sha512-t2N+4ihO7YgydJOUI47I6GdXpONJ+jUZmYeTNiifALaEduiCja1mKcq3tuSp0RhA9mMfxdMN3YskpwB7puMAtw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.4"
}
@@ -12061,6 +13675,7 @@
"integrity": "sha512-hcj/NTUWv+C3MbqrVb9F+aH6lvTwEHJdx2foBxlrVq5h6zE8Bfu4pv4CAAqbDcZrw/9Ak5lsRXlY9Ao8/F0Tuw==",
"deprecated": "please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js",
"dev": true,
+ "license": "BSD",
"engines": {
"node": ">=0.4.0"
}
@@ -12069,7 +13684,8 @@
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/intersect/-/intersect-0.0.3.tgz",
"integrity": "sha512-Bp/mSG9dsq/eOMk2Q7DyjKxY62TTU2RvNvycjXHhi5TjrA72H+I3c5+1nAOAqtENcrQvCb5NDlsoPWJ4Bh01SA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/bower-license/node_modules/treeify": {
"version": "1.0.1",
@@ -12081,14 +13697,16 @@
}
},
"node_modules/bowser": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
- "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz",
+ "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==",
+ "license": "MIT"
},
"node_modules/brace-expansion": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
@@ -12097,6 +13715,7 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
"dependencies": {
"fill-range": "^7.1.1"
},
@@ -12107,18 +13726,21 @@
"node_modules/brorand": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
+ "license": "MIT"
},
"node_modules/browser-stdout": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/browserify-aes": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "license": "MIT",
"dependencies": {
"buffer-xor": "^1.0.3",
"cipher-base": "^1.0.0",
@@ -12132,6 +13754,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
"integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "license": "MIT",
"dependencies": {
"browserify-aes": "^1.0.4",
"browserify-des": "^1.0.0",
@@ -12142,6 +13765,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
"integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "license": "MIT",
"dependencies": {
"cipher-base": "^1.0.1",
"des.js": "^1.0.0",
@@ -12153,6 +13777,7 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz",
"integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^5.2.1",
"randombytes": "^2.1.0",
@@ -12163,29 +13788,36 @@
}
},
"node_modules/browserify-sign": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz",
- "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz",
+ "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==",
+ "license": "ISC",
"dependencies": {
- "bn.js": "^5.2.1",
- "browserify-rsa": "^4.1.0",
+ "bn.js": "^5.2.2",
+ "browserify-rsa": "^4.1.1",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
- "elliptic": "^6.5.5",
- "hash-base": "~3.0",
+ "elliptic": "^6.6.1",
"inherits": "^2.0.4",
- "parse-asn1": "^5.1.7",
+ "parse-asn1": "^5.1.9",
"readable-stream": "^2.3.8",
"safe-buffer": "^5.2.1"
},
"engines": {
- "node": ">= 0.12"
+ "node": ">= 0.10"
}
},
+ "node_modules/browserify-sign/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
"node_modules/browserify-sign/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -12199,12 +13831,14 @@
"node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
},
"node_modules/browserify-sign/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
@@ -12212,12 +13846,13 @@
"node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
},
"node_modules/browserslist": {
- "version": "4.25.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz",
- "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz",
+ "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==",
"devOptional": true,
"funding": [
{
@@ -12233,11 +13868,14 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "caniuse-lite": "^1.0.30001726",
- "electron-to-chromium": "^1.5.173",
- "node-releases": "^2.0.19",
- "update-browserslist-db": "^1.1.3"
+ "baseline-browser-mapping": "^2.8.25",
+ "caniuse-lite": "^1.0.30001754",
+ "electron-to-chromium": "^1.5.249",
+ "node-releases": "^2.0.27",
+ "update-browserslist-db": "^1.1.4"
},
"bin": {
"browserslist": "cli.js"
@@ -12251,6 +13889,7 @@
"resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
"integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-json-stable-stringify": "2.x"
},
@@ -12263,24 +13902,40 @@
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
"integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"node-int64": "^0.4.0"
}
},
"node_modules/buffer": {
- "version": "4.9.2",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
- "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
}
},
"node_modules/buffer-crc32": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz",
"integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==",
+ "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
@@ -12289,22 +13944,26 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ=="
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
+ "license": "MIT"
},
"node_modules/builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
- "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ=="
+ "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
+ "license": "MIT"
},
"node_modules/bundle-name": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
"integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "license": "MIT",
"dependencies": {
"run-applescript": "^7.0.0"
},
@@ -12319,6 +13978,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -12328,6 +13988,7 @@
"resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz",
"integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@bcoe/v8-coverage": "^1.0.1",
"@istanbuljs/schema": "^0.1.3",
@@ -12361,6 +14022,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
@@ -12377,6 +14039,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^5.0.0"
},
@@ -12392,6 +14055,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^3.0.2"
},
@@ -12407,6 +14071,7 @@
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -12415,6 +14080,7 @@
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
"integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "license": "MIT",
"engines": {
"node": ">=10.6.0"
}
@@ -12423,6 +14089,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
"integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "license": "MIT",
"dependencies": {
"clone-response": "^1.0.2",
"get-stream": "^5.1.0",
@@ -12440,6 +14107,7 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
"integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.0",
"es-define-property": "^1.0.0",
@@ -12457,6 +14125,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
@@ -12469,6 +14138,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"get-intrinsic": "^1.3.0"
@@ -12485,6 +14155,7 @@
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -12494,6 +14165,7 @@
"resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
"integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pascal-case": "^3.1.2",
"tslib": "^2.0.3"
@@ -12504,14 +14176,15 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001726",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz",
- "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==",
+ "version": "1.0.30001756",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz",
+ "integrity": "sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==",
"devOptional": true,
"funding": [
{
@@ -12526,13 +14199,16 @@
"type": "github",
"url": "https://github.com/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
},
"node_modules/chai": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz",
"integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"assertion-error": "^1.1.0",
"check-error": "^1.0.3",
@@ -12551,6 +14227,7 @@
"resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz",
"integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==",
"dev": true,
+ "license": "WTFPL",
"dependencies": {
"check-error": "^1.0.2"
},
@@ -12559,10 +14236,11 @@
}
},
"node_modules/chalk": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
- "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
@@ -12575,21 +14253,24 @@
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
"integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz",
+ "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/check-error": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
"integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"get-func-name": "^2.0.2"
},
@@ -12598,25 +14279,26 @@
}
},
"node_modules/cheerio": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.0.tgz",
- "integrity": "sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz",
+ "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cheerio-select": "^2.1.0",
"dom-serializer": "^2.0.0",
"domhandler": "^5.0.3",
"domutils": "^3.2.2",
- "encoding-sniffer": "^0.2.0",
+ "encoding-sniffer": "^0.2.1",
"htmlparser2": "^10.0.0",
"parse5": "^7.3.0",
"parse5-htmlparser2-tree-adapter": "^7.1.0",
"parse5-parser-stream": "^7.1.2",
- "undici": "^7.10.0",
+ "undici": "^7.12.0",
"whatwg-mimetype": "^4.0.0"
},
"engines": {
- "node": ">=18.17"
+ "node": ">=20.18.1"
},
"funding": {
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
@@ -12627,6 +14309,7 @@
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
"integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-select": "^5.1.0",
@@ -12644,6 +14327,7 @@
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
"integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-what": "^6.1.0",
@@ -12660,6 +14344,7 @@
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
@@ -12674,6 +14359,7 @@
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.3.0"
},
@@ -12689,6 +14375,7 @@
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
"integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
@@ -12703,6 +14390,7 @@
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
@@ -12717,6 +14405,7 @@
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.3.0"
},
@@ -12732,6 +14421,7 @@
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
"integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
@@ -12753,6 +14443,7 @@
"url": "https://github.com/sponsors/fb55"
}
],
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
@@ -12765,6 +14456,7 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
"integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
@@ -12773,10 +14465,11 @@
}
},
"node_modules/cheerio/node_modules/undici": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.11.0.tgz",
- "integrity": "sha512-heTSIac3iLhsmZhUCjyS3JQEkZELateufzZuBaVM5RHXdSBMb1LPMQf5x+FH7qjsZYDP0ttAc3nnVpUB+wYbOg==",
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz",
+ "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=20.18.1"
}
@@ -12785,6 +14478,7 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "license": "MIT",
"dependencies": {
"readdirp": "^4.0.1"
},
@@ -12806,6 +14500,7 @@
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
"integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
"devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=6.0"
}
@@ -12821,17 +14516,20 @@
"url": "https://github.com/sponsors/sibiraj-s"
}
],
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/cipher-base": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz",
- "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz",
+ "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.4",
- "safe-buffer": "^5.2.1"
+ "safe-buffer": "^5.2.1",
+ "to-buffer": "^1.2.2"
},
"engines": {
"node": ">= 0.10"
@@ -12841,12 +14539,14 @@
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
"integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/clean": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/clean/-/clean-4.0.2.tgz",
"integrity": "sha512-2LGVh4dNtI16L4UzqDHO6Hbl74YjG1vWvEUU78dgLO4kuyqJZFMNMPBx+EGtYKTFb14e24p+gWXgkabqxc1EUw==",
+ "license": "MIT",
"dependencies": {
"async": "^0.9.0",
"minimist": "^1.1.0",
@@ -12859,6 +14559,7 @@
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
"integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"source-map": "~0.6.0"
},
@@ -12869,13 +14570,15 @@
"node_modules/clean/node_modules/async": {
"version": "0.9.2",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
- "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw=="
+ "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==",
+ "license": "MIT"
},
"node_modules/cli-width": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
"integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">= 12"
}
@@ -12885,6 +14588,7 @@
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
@@ -12899,6 +14603,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -12913,13 +14618,15 @@
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cliui/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -12934,6 +14641,7 @@
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -12951,6 +14659,7 @@
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
"integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
"dev": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.8"
@@ -12961,6 +14670,7 @@
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
"integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4",
"kind-of": "^6.0.2",
@@ -12974,6 +14684,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
"integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+ "license": "MIT",
"dependencies": {
"mimic-response": "^1.0.0"
},
@@ -12986,6 +14697,7 @@
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"iojs": ">= 1.0.0",
"node": ">= 0.12.0"
@@ -13001,15 +14713,17 @@
}
},
"node_modules/collect-v8-coverage": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
- "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
- "dev": true
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz",
+ "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -13020,17 +14734,20 @@
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
},
"node_modules/colorette": {
"version": "2.0.20",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "license": "MIT"
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -13042,13 +14759,15 @@
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/compare-func": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
"integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-ify": "^1.0.0",
"dot-prop": "^5.1.0"
@@ -13058,6 +14777,7 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz",
"integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==",
+ "license": "MIT",
"dependencies": {
"crc-32": "^1.2.0",
"crc32-stream": "^6.0.0",
@@ -13073,6 +14793,7 @@
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
"integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "license": "MIT",
"dependencies": {
"mime-db": ">= 1.43.0 < 2"
},
@@ -13102,6 +14823,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -13109,12 +14831,14 @@
"node_modules/compression/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/compression/node_modules/negotiator": {
"version": "0.6.4",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
"integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -13122,12 +14846,14 @@
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
},
"node_modules/connect-history-api-fallback": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
"integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
+ "license": "MIT",
"engines": {
"node": ">=0.8"
}
@@ -13139,20 +14865,23 @@
"license": "ISC"
},
"node_modules/content-disposition": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz",
- "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
+ "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.6"
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/content-type": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -13162,6 +14891,7 @@
"resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz",
"integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"compare-func": "^2.0.0"
},
@@ -13174,6 +14904,7 @@
"resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz",
"integrity": "sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"compare-func": "^2.0.0"
},
@@ -13186,6 +14917,7 @@
"resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz",
"integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-text-path": "^2.0.0",
"JSONStream": "^1.3.5",
@@ -13203,12 +14935,14 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cookie": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -13217,6 +14951,7 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
"integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
+ "license": "MIT",
"engines": {
"node": ">=6.6.0"
}
@@ -13225,6 +14960,7 @@
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz",
"integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==",
+ "license": "MIT",
"dependencies": {
"glob": "^7.0.5",
"minimatch": "^3.0.3",
@@ -13243,6 +14979,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -13257,6 +14994,7 @@
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -13266,6 +15004,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
@@ -13275,13 +15014,15 @@
"node_modules/copyfiles/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
},
"node_modules/copyfiles/node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -13301,6 +15042,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -13312,6 +15054,7 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -13325,6 +15068,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -13341,6 +15085,7 @@
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "license": "MIT",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -13358,6 +15103,7 @@
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "license": "ISC",
"engines": {
"node": ">=10"
}
@@ -13365,12 +15111,14 @@
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "license": "MIT"
},
"node_modules/cors": {
"version": "2.8.5",
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "license": "MIT",
"dependencies": {
"object-assign": "^4",
"vary": "^1"
@@ -13384,6 +15132,8 @@
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
"integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"env-paths": "^2.2.1",
"import-fresh": "^3.3.0",
@@ -13406,12 +15156,13 @@
}
},
"node_modules/cosmiconfig-typescript-loader": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz",
- "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.2.0.tgz",
+ "integrity": "sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "jiti": "^2.4.1"
+ "jiti": "^2.6.1"
},
"engines": {
"node": ">=v18"
@@ -13426,6 +15177,7 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
"integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+ "license": "Apache-2.0",
"bin": {
"crc32": "bin/crc32.njs"
},
@@ -13437,6 +15189,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz",
"integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==",
+ "license": "MIT",
"dependencies": {
"crc-32": "^1.2.0",
"readable-stream": "^4.0.0"
@@ -13449,6 +15202,7 @@
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
"integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.1.0",
"elliptic": "^6.5.3"
@@ -13457,12 +15211,14 @@
"node_modules/create-ecdh/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
- "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="
+ "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
+ "license": "MIT"
},
"node_modules/create-hash": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "license": "MIT",
"dependencies": {
"cipher-base": "^1.0.1",
"inherits": "^2.0.1",
@@ -13475,6 +15231,7 @@
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "license": "MIT",
"dependencies": {
"cipher-base": "^1.0.3",
"create-hash": "^1.1.0",
@@ -13489,6 +15246,7 @@
"resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
"integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"chalk": "^4.0.0",
@@ -13510,6 +15268,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -13525,6 +15284,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -13540,42 +15300,416 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/cross-env": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
- "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+ "node_modules/create-wdio": {
+ "version": "9.18.2",
+ "resolved": "https://registry.npmjs.org/create-wdio/-/create-wdio-9.18.2.tgz",
+ "integrity": "sha512-atf81YJfyTNAJXsNu3qhpqF4OO43tHGTpr88duAc1Hk4a0uXJAPUYLnYxshOuMnfmeAxlWD+NqGU7orRiXEuJg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "cross-spawn": "^7.0.1"
+ "chalk": "^5.3.0",
+ "commander": "^14.0.0",
+ "cross-spawn": "^7.0.3",
+ "ejs": "^3.1.10",
+ "execa": "^9.6.0",
+ "import-meta-resolve": "^4.1.0",
+ "inquirer": "^12.7.0",
+ "normalize-package-data": "^7.0.0",
+ "read-pkg-up": "^10.1.0",
+ "recursive-readdir": "^2.2.3",
+ "semver": "^7.6.3",
+ "type-fest": "^4.41.0",
+ "yargs": "^17.7.2"
},
"bin": {
- "cross-env": "src/bin/cross-env.js",
- "cross-env-shell": "src/bin/cross-env-shell.js"
+ "create-wdio": "bin/wdio.js"
},
"engines": {
- "node": ">=10.14",
- "npm": ">=6",
- "yarn": ">=1"
+ "node": ">=12.0.0"
}
},
- "node_modules/cross-spawn": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "node_modules/create-wdio/node_modules/commander": {
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz",
+ "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/create-wdio/node_modules/execa": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz",
+ "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.1",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.2.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.1.1"
},
"engines": {
- "node": ">= 8"
+ "node": "^18.19.0 || >=20.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/crypto-browserify": {
- "version": "3.12.1",
- "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz",
- "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==",
+ "node_modules/create-wdio/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/get-stream": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/hosted-git-info": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz",
+ "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/create-wdio/node_modules/human-signals": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz",
+ "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/create-wdio/node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/is-stream": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/json-parse-even-better-errors": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz",
+ "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/create-wdio/node_modules/lines-and-columns": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz",
+ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/create-wdio/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/create-wdio/node_modules/normalize-package-data": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-7.0.1.tgz",
+ "integrity": "sha512-linxNAT6M0ebEYZOx2tO6vBEFsVgnPpv+AVjk0wJHfaUIbq31Jm3T6vvZaarnOeWDh8ShnwXuaAyM7WT3RzErA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^8.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/create-wdio/node_modules/npm-run-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/parse-json": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz",
+ "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.21.4",
+ "error-ex": "^1.3.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "lines-and-columns": "^2.0.3",
+ "type-fest": "^3.8.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/parse-json/node_modules/type-fest": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
+ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/read-pkg": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz",
+ "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.1",
+ "normalize-package-data": "^6.0.0",
+ "parse-json": "^7.0.0",
+ "type-fest": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/read-pkg-up": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz",
+ "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^6.3.0",
+ "read-pkg": "^8.1.0",
+ "type-fest": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/read-pkg/node_modules/hosted-git-info": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
+ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/create-wdio/node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
+ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^7.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/create-wdio/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/create-wdio/node_modules/strip-final-newline": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/type-fest": {
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/create-wdio/node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.1"
+ },
+ "bin": {
+ "cross-env": "src/bin/cross-env.js",
+ "cross-env-shell": "src/bin/cross-env-shell.js"
+ },
+ "engines": {
+ "node": ">=10.14",
+ "npm": ">=6",
+ "yarn": ">=1"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-browserify": {
+ "version": "3.12.1",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz",
+ "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==",
+ "license": "MIT",
"dependencies": {
"browserify-cipher": "^1.0.1",
"browserify-sign": "^4.2.3",
@@ -13602,6 +15736,7 @@
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
"integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-what": "^6.0.1",
@@ -13617,7 +15752,8 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz",
"integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/css-value": {
"version": "0.0.1",
@@ -13630,6 +15766,7 @@
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
"integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">= 6"
},
@@ -13642,6 +15779,7 @@
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz",
"integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@asamuzakjp/css-color": "^3.2.0",
"rrweb-cssom": "^0.8.0"
@@ -13654,13 +15792,15 @@
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
"integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/dargs": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz",
"integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -13673,6 +15813,7 @@
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
"integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 12"
}
@@ -13682,6 +15823,7 @@
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
"integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"whatwg-mimetype": "^4.0.0",
"whatwg-url": "^14.0.0"
@@ -13695,6 +15837,7 @@
"resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
"integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
"es-errors": "^1.3.0",
@@ -13712,6 +15855,7 @@
"resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
"integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
"es-errors": "^1.3.0",
@@ -13729,6 +15873,7 @@
"resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
"integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
@@ -13746,14 +15891,16 @@
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
"integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
@@ -13772,6 +15919,7 @@
"integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==",
"deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
@@ -13781,6 +15929,7 @@
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
"integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -13789,15 +15938,17 @@
}
},
"node_modules/decimal.js": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz",
- "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==",
- "dev": true
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
+ "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/decompress-response": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
"integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "license": "MIT",
"dependencies": {
"mimic-response": "^3.1.0"
},
@@ -13812,6 +15963,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
"integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -13820,10 +15972,11 @@
}
},
"node_modules/dedent": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz",
- "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz",
+ "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"babel-plugin-macros": "^3.1.0"
},
@@ -13838,6 +15991,7 @@
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
"integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-detect": "^4.0.0"
},
@@ -13846,24 +16000,28 @@
}
},
"node_modules/deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
+ "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
+ "dev": true,
"license": "MIT",
"engines": {
- "node": ">=4.0.0"
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
}
},
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -13873,14 +16031,16 @@
"resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz",
"integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=16.0.0"
}
},
"node_modules/default-browser": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
- "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz",
+ "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==",
+ "license": "MIT",
"dependencies": {
"bundle-name": "^4.1.0",
"default-browser-id": "^5.0.0"
@@ -13893,9 +16053,10 @@
}
},
"node_modules/default-browser-id": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
- "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
+ "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -13908,6 +16069,7 @@
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
"integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"clone": "^1.0.2"
@@ -13920,6 +16082,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
"integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "license": "MIT",
"engines": {
"node": ">=10"
}
@@ -13928,6 +16091,7 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -13944,6 +16108,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
"integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -13956,6 +16121,7 @@
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
"integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.0.1",
"has-property-descriptors": "^1.0.0",
@@ -13973,6 +16139,7 @@
"resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
"integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ast-types": "^0.13.4",
"escodegen": "^2.1.0",
@@ -13986,6 +16153,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
@@ -14000,6 +16168,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -14008,6 +16177,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz",
"integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
@@ -14017,6 +16187,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
@@ -14039,6 +16210,7 @@
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
"integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -14046,13 +16218,15 @@
"node_modules/detect-node": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
- "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "license": "MIT"
},
"node_modules/dezalgo": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
"integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"asap": "^2.0.0",
"wrappy": "1"
@@ -14062,6 +16236,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
"integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
@@ -14071,6 +16246,7 @@
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
"integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
@@ -14079,6 +16255,7 @@
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
@@ -14088,12 +16265,14 @@
"node_modules/diffie-hellman/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
- "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="
+ "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
+ "license": "MIT"
},
"node_modules/dns-packet": {
"version": "5.6.1",
"resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
"integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
+ "license": "MIT",
"dependencies": {
"@leichtgewicht/ip-codec": "^2.0.1"
},
@@ -14106,6 +16285,7 @@
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"esutils": "^2.0.2"
},
@@ -14118,6 +16298,7 @@
"resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
"integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"utila": "~0.4"
}
@@ -14127,6 +16308,7 @@
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
"integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^4.2.0",
@@ -14141,6 +16323,7 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
"dev": true,
+ "license": "BSD-2-Clause",
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
@@ -14154,13 +16337,15 @@
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
- ]
+ ],
+ "license": "BSD-2-Clause"
},
"node_modules/domhandler": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.2.0"
},
@@ -14176,6 +16361,7 @@
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^1.0.1",
"domelementtype": "^2.2.0",
@@ -14190,6 +16376,7 @@
"resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
"integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"no-case": "^3.0.4",
"tslib": "^2.0.3"
@@ -14200,6 +16387,7 @@
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
"integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-obj": "^2.0.0"
},
@@ -14208,10 +16396,11 @@
}
},
"node_modules/dotenv": {
- "version": "16.6.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
- "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
+ "version": "17.2.3",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
+ "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=12"
},
@@ -14223,6 +16412,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
@@ -14237,6 +16427,7 @@
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
"integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"end-of-stream": "^1.4.1",
"inherits": "^2.0.3",
@@ -14249,6 +16440,7 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -14261,13 +16453,15 @@
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "license": "MIT"
},
"node_modules/easy-table": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz",
"integrity": "sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -14280,6 +16474,7 @@
"resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz",
"integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/which": "^2.0.1",
"which": "^2.0.2"
@@ -14292,17 +16487,18 @@
}
},
"node_modules/edgedriver": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.1.tgz",
- "integrity": "sha512-/dM/PoBf22Xg3yypMWkmRQrBKEnSyNaZ7wHGCT9+qqT14izwtFT+QvdR89rjNkMfXwW+bSFoqOfbcvM+2Cyc7w==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.2.tgz",
+ "integrity": "sha512-UvFqd/IR81iPyWMcxXbUNi+xKWR7JjfoHjfuwjqsj9UHQKn80RpQmS0jf+U25IPi+gKVPcpOSKm0XkqgGMq4zQ==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"dependencies": {
"@wdio/logger": "^9.1.3",
"@zip.js/zip.js": "^2.7.53",
"decamelize": "^6.0.0",
"edge-paths": "^3.0.5",
- "fast-xml-parser": "^4.5.0",
+ "fast-xml-parser": "^5.0.8",
"http-proxy-agent": "^7.0.2",
"https-proxy-agent": "^7.0.5",
"node-fetch": "^3.3.2",
@@ -14316,10 +16512,11 @@
}
},
"node_modules/edgedriver/node_modules/decamelize": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz",
- "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz",
+ "integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -14328,9 +16525,9 @@
}
},
"node_modules/edgedriver/node_modules/fast-xml-parser": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz",
- "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.2.tgz",
+ "integrity": "sha512-n8v8b6p4Z1sMgqRmqLJm3awW4NX7NkaKPfb3uJIBTSH7Pdvufi3PQ3/lJLQrvxcMYl7JI2jnDO90siPEpD8JBA==",
"dev": true,
"funding": [
{
@@ -14338,8 +16535,9 @@
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
+ "license": "MIT",
"dependencies": {
- "strnum": "^1.1.1"
+ "strnum": "^2.1.0"
},
"bin": {
"fxparser": "src/cli/cli.js"
@@ -14350,15 +16548,30 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
"integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=16"
}
},
+ "node_modules/edgedriver/node_modules/strnum": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz",
+ "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/edgedriver/node_modules/which": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
"integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^3.1.1"
},
@@ -14372,13 +16585,15 @@
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "license": "MIT"
},
"node_modules/ejs": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
"integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"jake": "^10.8.5"
},
@@ -14390,15 +16605,17 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.177",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.177.tgz",
- "integrity": "sha512-7EH2G59nLsEMj97fpDuvVcYi6lwTcM1xuWw3PssD8xzboAW7zj7iB3COEEEATUfjLHrs5uKBLQT03V/8URx06g==",
- "devOptional": true
+ "version": "1.5.259",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.259.tgz",
+ "integrity": "sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==",
+ "devOptional": true,
+ "license": "ISC"
},
"node_modules/elliptic": {
"version": "6.6.1",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz",
"integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
@@ -14412,13 +16629,15 @@
"node_modules/elliptic/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
- "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="
+ "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
+ "license": "MIT"
},
"node_modules/emittery": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
"integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -14429,13 +16648,15 @@
"node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "license": "MIT"
},
"node_modules/emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -14444,6 +16665,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -14462,6 +16684,7 @@
"resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
"integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"iconv-lite": "^0.6.3",
"whatwg-encoding": "^3.1.1"
@@ -14474,6 +16697,7 @@
"version": "1.4.5",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
"integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "license": "MIT",
"dependencies": {
"once": "^1.4.0"
}
@@ -14488,10 +16712,11 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.18.2",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz",
- "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==",
+ "version": "5.18.3",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
+ "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -14504,6 +16729,7 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
@@ -14516,15 +16742,17 @@
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/envinfo": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz",
- "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==",
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.20.0.tgz",
+ "integrity": "sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==",
"dev": true,
+ "license": "MIT",
"bin": {
"envinfo": "dist/cli.js"
},
@@ -14533,10 +16761,11 @@
}
},
"node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-arrayish": "^0.2.1"
}
@@ -14546,6 +16775,7 @@
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz",
"integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-buffer-byte-length": "^1.0.2",
"arraybuffer.prototype.slice": "^1.0.4",
@@ -14613,6 +16843,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -14621,6 +16852,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -14629,12 +16861,14 @@
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
"integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
},
@@ -14646,6 +16880,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
@@ -14661,6 +16896,7 @@
"resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz",
"integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"hasown": "^2.0.2"
},
@@ -14673,6 +16909,7 @@
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
"integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-callable": "^1.2.7",
"is-date-object": "^1.0.5",
@@ -14686,11 +16923,12 @@
}
},
"node_modules/esbuild": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
- "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
+ "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
@@ -14698,37 +16936,39 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.25.5",
- "@esbuild/android-arm": "0.25.5",
- "@esbuild/android-arm64": "0.25.5",
- "@esbuild/android-x64": "0.25.5",
- "@esbuild/darwin-arm64": "0.25.5",
- "@esbuild/darwin-x64": "0.25.5",
- "@esbuild/freebsd-arm64": "0.25.5",
- "@esbuild/freebsd-x64": "0.25.5",
- "@esbuild/linux-arm": "0.25.5",
- "@esbuild/linux-arm64": "0.25.5",
- "@esbuild/linux-ia32": "0.25.5",
- "@esbuild/linux-loong64": "0.25.5",
- "@esbuild/linux-mips64el": "0.25.5",
- "@esbuild/linux-ppc64": "0.25.5",
- "@esbuild/linux-riscv64": "0.25.5",
- "@esbuild/linux-s390x": "0.25.5",
- "@esbuild/linux-x64": "0.25.5",
- "@esbuild/netbsd-arm64": "0.25.5",
- "@esbuild/netbsd-x64": "0.25.5",
- "@esbuild/openbsd-arm64": "0.25.5",
- "@esbuild/openbsd-x64": "0.25.5",
- "@esbuild/sunos-x64": "0.25.5",
- "@esbuild/win32-arm64": "0.25.5",
- "@esbuild/win32-ia32": "0.25.5",
- "@esbuild/win32-x64": "0.25.5"
+ "@esbuild/aix-ppc64": "0.25.12",
+ "@esbuild/android-arm": "0.25.12",
+ "@esbuild/android-arm64": "0.25.12",
+ "@esbuild/android-x64": "0.25.12",
+ "@esbuild/darwin-arm64": "0.25.12",
+ "@esbuild/darwin-x64": "0.25.12",
+ "@esbuild/freebsd-arm64": "0.25.12",
+ "@esbuild/freebsd-x64": "0.25.12",
+ "@esbuild/linux-arm": "0.25.12",
+ "@esbuild/linux-arm64": "0.25.12",
+ "@esbuild/linux-ia32": "0.25.12",
+ "@esbuild/linux-loong64": "0.25.12",
+ "@esbuild/linux-mips64el": "0.25.12",
+ "@esbuild/linux-ppc64": "0.25.12",
+ "@esbuild/linux-riscv64": "0.25.12",
+ "@esbuild/linux-s390x": "0.25.12",
+ "@esbuild/linux-x64": "0.25.12",
+ "@esbuild/netbsd-arm64": "0.25.12",
+ "@esbuild/netbsd-x64": "0.25.12",
+ "@esbuild/openbsd-arm64": "0.25.12",
+ "@esbuild/openbsd-x64": "0.25.12",
+ "@esbuild/openharmony-arm64": "0.25.12",
+ "@esbuild/sunos-x64": "0.25.12",
+ "@esbuild/win32-arm64": "0.25.12",
+ "@esbuild/win32-ia32": "0.25.12",
+ "@esbuild/win32-x64": "0.25.12"
}
},
"node_modules/escalade": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -14736,12 +16976,14 @@
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
},
"node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -14754,6 +16996,7 @@
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
"integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^5.2.0",
@@ -14776,6 +17019,8 @@
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
@@ -14831,6 +17076,7 @@
"resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
"integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "^3.2.7",
"is-core-module": "^2.13.0",
@@ -14842,6 +17088,7 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "^2.1.1"
}
@@ -14851,6 +17098,7 @@
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz",
"integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "^3.2.7"
},
@@ -14868,6 +17116,7 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "^2.1.1"
}
@@ -14877,6 +17126,7 @@
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz",
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@rtsao/scc": "^1.1.0",
"array-includes": "^3.1.9",
@@ -14910,6 +17160,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -14920,6 +17171,7 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "^2.1.1"
}
@@ -14929,6 +17181,7 @@
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"esutils": "^2.0.2"
},
@@ -14941,6 +17194,7 @@
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.0"
},
@@ -14953,6 +17207,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -14965,6 +17220,7 @@
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
"integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -14974,6 +17230,7 @@
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
"integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json5": "^0.0.29",
"json5": "^1.0.2",
@@ -14982,10 +17239,11 @@
}
},
"node_modules/eslint-plugin-unused-imports": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz",
- "integrity": "sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.3.0.tgz",
+ "integrity": "sha512-ZFBmXMGBYfHttdRtOG9nFFpmUvMtbHSjsKrS20vdWdbfiVYsO3yA2SGYy9i9XmZJDfMGBflZGBCm70SEnFQtOA==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0",
"eslint": "^9.0.0 || ^8.0.0"
@@ -15001,6 +17259,7 @@
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
"integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
@@ -15017,6 +17276,7 @@
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -15029,6 +17289,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -15045,6 +17306,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -15060,6 +17322,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -15070,6 +17333,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -15086,6 +17350,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
@@ -15097,26 +17362,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/eslint/node_modules/ignore": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -15125,13 +17376,15 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/eslint/node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^5.0.0"
},
@@ -15147,6 +17400,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -15159,6 +17413,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^3.0.2"
},
@@ -15174,27 +17429,17 @@
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/eslint/node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/espree": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
"integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
@@ -15211,6 +17456,7 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
@@ -15224,6 +17470,7 @@
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"estraverse": "^5.1.0"
},
@@ -15236,6 +17483,7 @@
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"devOptional": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -15248,6 +17496,7 @@
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"devOptional": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
@@ -15257,6 +17506,7 @@
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -15265,6 +17515,7 @@
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -15273,6 +17524,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -15280,20 +17532,32 @@
"node_modules/eventemitter3": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "license": "MIT"
},
"node_modules/events": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
- "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "license": "MIT",
"engines": {
- "node": ">=0.4.x"
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/events-universal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
+ "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bare-events": "^2.7.0"
}
},
"node_modules/eventsource": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
"integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
+ "license": "MIT",
"dependencies": {
"eventsource-parser": "^3.0.1"
},
@@ -15302,17 +17566,19 @@
}
},
"node_modules/eventsource-parser": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.3.tgz",
- "integrity": "sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA==",
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz",
+ "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==",
+ "license": "MIT",
"engines": {
- "node": ">=20.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/evp_bytestokey": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "license": "MIT",
"dependencies": {
"md5.js": "^1.3.4",
"safe-buffer": "^5.1.1"
@@ -15323,6 +17589,7 @@
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^6.0.0",
@@ -15346,6 +17613,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -15357,7 +17625,8 @@
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/exit": {
"version": "0.1.2",
@@ -15373,6 +17642,7 @@
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz",
"integrity": "sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -15394,6 +17664,7 @@
"resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
"integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/expect-utils": "^29.7.0",
"jest-get-type": "^29.6.3",
@@ -15406,15 +17677,17 @@
}
},
"node_modules/expect-webdriverio": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.3.4.tgz",
- "integrity": "sha512-FU+96C0nqeYTXrJcGLUDB6hPKKaSm1/tVHjFDE4EDHGCYvajAHCC2MBQJ5MomjCmp6lGMz36lDHeZj52LHylyA==",
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.4.3.tgz",
+ "integrity": "sha512-/XxRRR90gNSuNf++w1jOQjhC5LE9Ixf/iAQctVb/miEI3dwzPZTuG27/omoh5REfSLDoPXofM84vAH/ULtz35g==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"@vitest/snapshot": "^3.2.4",
+ "deep-eql": "^5.0.2",
"expect": "^30.0.0",
- "jest-matcher-utils": "^30.0.0",
- "lodash.isequal": "^4.5.0"
+ "jest-matcher-utils": "^30.0.0"
},
"engines": {
"node": ">=18 || >=20 || >=22"
@@ -15437,22 +17710,24 @@
}
},
"node_modules/expect-webdriverio/node_modules/@jest/expect-utils": {
- "version": "30.0.3",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.3.tgz",
- "integrity": "sha512-SMtBvf2sfX2agcT0dA9pXwcUrKvOSDqBY4e4iRfT+Hya33XzV35YVg+98YQFErVGA/VR1Gto5Y2+A6G9LSQ3Yg==",
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz",
+ "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/get-type": "30.0.1"
+ "@jest/get-type": "30.1.0"
},
"engines": {
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/expect-webdriverio/node_modules/@jest/schemas": {
- "version": "30.0.1",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.1.tgz",
- "integrity": "sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz",
+ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sinclair/typebox": "^0.34.0"
},
@@ -15461,13 +17736,14 @@
}
},
"node_modules/expect-webdriverio/node_modules/@jest/types": {
- "version": "30.0.1",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.1.tgz",
- "integrity": "sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw==",
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz",
+ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/pattern": "30.0.1",
- "@jest/schemas": "30.0.1",
+ "@jest/schemas": "30.0.5",
"@types/istanbul-lib-coverage": "^2.0.6",
"@types/istanbul-reports": "^3.0.4",
"@types/node": "*",
@@ -15479,16 +17755,18 @@
}
},
"node_modules/expect-webdriverio/node_modules/@sinclair/typebox": {
- "version": "0.34.37",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.37.tgz",
- "integrity": "sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw==",
- "dev": true
+ "version": "0.34.41",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz",
+ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/expect-webdriverio/node_modules/@vitest/pretty-format": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz",
"integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tinyrainbow": "^2.0.0"
},
@@ -15501,6 +17779,7 @@
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz",
"integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@vitest/pretty-format": "3.2.4",
"magic-string": "^0.30.17",
@@ -15515,6 +17794,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -15531,6 +17811,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -15542,9 +17823,9 @@
}
},
"node_modules/expect-webdriverio/node_modules/ci-info": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz",
- "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz",
+ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==",
"dev": true,
"funding": [
{
@@ -15552,70 +17833,85 @@
"url": "https://github.com/sponsors/sibiraj-s"
}
],
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "node_modules/expect-webdriverio/node_modules/deep-eql": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
+ "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/expect-webdriverio/node_modules/expect": {
- "version": "30.0.3",
- "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.3.tgz",
- "integrity": "sha512-HXg6NvK35/cSYZCUKAtmlgCFyqKM4frEPbzrav5hRqb0GMz0E0lS5hfzYjSaiaE5ysnp/qI2aeZkeyeIAOeXzQ==",
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz",
+ "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/expect-utils": "30.0.3",
- "@jest/get-type": "30.0.1",
- "jest-matcher-utils": "30.0.3",
- "jest-message-util": "30.0.2",
- "jest-mock": "30.0.2",
- "jest-util": "30.0.2"
+ "@jest/expect-utils": "30.2.0",
+ "@jest/get-type": "30.1.0",
+ "jest-matcher-utils": "30.2.0",
+ "jest-message-util": "30.2.0",
+ "jest-mock": "30.2.0",
+ "jest-util": "30.2.0"
},
"engines": {
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/expect-webdriverio/node_modules/jest-diff": {
- "version": "30.0.3",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.3.tgz",
- "integrity": "sha512-Q1TAV0cUcBTic57SVnk/mug0/ASyAqtSIOkr7RAlxx97llRYsM74+E8N5WdGJUlwCKwgxPAkVjKh653h1+HA9A==",
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz",
+ "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/diff-sequences": "30.0.1",
- "@jest/get-type": "30.0.1",
+ "@jest/get-type": "30.1.0",
"chalk": "^4.1.2",
- "pretty-format": "30.0.2"
+ "pretty-format": "30.2.0"
},
"engines": {
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/expect-webdriverio/node_modules/jest-matcher-utils": {
- "version": "30.0.3",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.3.tgz",
- "integrity": "sha512-hMpVFGFOhYmIIRGJ0HgM9htC5qUiJ00famcc9sRFchJJiLZbbVKrAztcgE6VnXLRxA3XZ0bvNA7hQWh3oHXo/A==",
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz",
+ "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/get-type": "30.0.1",
+ "@jest/get-type": "30.1.0",
"chalk": "^4.1.2",
- "jest-diff": "30.0.3",
- "pretty-format": "30.0.2"
+ "jest-diff": "30.2.0",
+ "pretty-format": "30.2.0"
},
"engines": {
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/expect-webdriverio/node_modules/jest-message-util": {
- "version": "30.0.2",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.2.tgz",
- "integrity": "sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw==",
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz",
+ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.27.1",
- "@jest/types": "30.0.1",
+ "@jest/types": "30.2.0",
"@types/stack-utils": "^2.0.3",
"chalk": "^4.1.2",
"graceful-fs": "^4.2.11",
"micromatch": "^4.0.8",
- "pretty-format": "30.0.2",
+ "pretty-format": "30.2.0",
"slash": "^3.0.0",
"stack-utils": "^2.0.6"
},
@@ -15624,26 +17920,28 @@
}
},
"node_modules/expect-webdriverio/node_modules/jest-mock": {
- "version": "30.0.2",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.2.tgz",
- "integrity": "sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA==",
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz",
+ "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/types": "30.0.1",
+ "@jest/types": "30.2.0",
"@types/node": "*",
- "jest-util": "30.0.2"
+ "jest-util": "30.2.0"
},
"engines": {
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/expect-webdriverio/node_modules/jest-util": {
- "version": "30.0.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.2.tgz",
- "integrity": "sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg==",
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz",
+ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/types": "30.0.1",
+ "@jest/types": "30.2.0",
"@types/node": "*",
"chalk": "^4.1.2",
"ci-info": "^4.2.0",
@@ -15658,15 +17956,17 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
"integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/expect-webdriverio/node_modules/pretty-format": {
- "version": "30.0.2",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz",
- "integrity": "sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==",
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz",
+ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/schemas": "30.0.1",
+ "@jest/schemas": "30.0.5",
"ansi-styles": "^5.2.0",
"react-is": "^18.3.1"
},
@@ -15679,6 +17979,7 @@
"resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
"integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.0.0"
}
@@ -15687,6 +17988,8 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
"integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"accepts": "^2.0.0",
"body-parser": "^2.2.0",
@@ -15728,6 +18031,7 @@
"version": "7.5.1",
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz",
"integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==",
+ "license": "MIT",
"engines": {
"node": ">= 16"
},
@@ -15743,6 +18047,7 @@
"resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
"integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mime-db": "^1.28.0"
},
@@ -15750,37 +18055,12 @@
"node": ">=0.10.0"
}
},
- "node_modules/external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
- "dev": true,
- "dependencies": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/external-editor/node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/extract-zip": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
"integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"debug": "^4.1.1",
"get-stream": "^5.1.0",
@@ -15799,17 +18079,20 @@
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "license": "MIT"
},
"node_modules/fast-fifo": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
- "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "license": "MIT"
},
"node_modules/fast-glob": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -15825,6 +18108,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -15835,19 +18119,23 @@
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-redact": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz",
"integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -15856,12 +18144,13 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-uri": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz",
- "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
+ "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
"funding": [
{
"type": "github",
@@ -15871,7 +18160,8 @@
"type": "opencollective",
"url": "https://opencollective.com/fastify"
}
- ]
+ ],
+ "license": "BSD-3-Clause"
},
"node_modules/fast-xml-parser": {
"version": "4.4.1",
@@ -15887,6 +18177,7 @@
"url": "https://paypal.me/naturalintelligence"
}
],
+ "license": "MIT",
"dependencies": {
"strnum": "^1.0.5"
},
@@ -15898,6 +18189,7 @@
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
"integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+ "license": "MIT",
"engines": {
"node": ">= 4.9.1"
}
@@ -15906,6 +18198,7 @@
"version": "1.19.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
"integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
}
@@ -15914,6 +18207,7 @@
"version": "0.11.4",
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
"integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
+ "license": "Apache-2.0",
"dependencies": {
"websocket-driver": ">=0.5.1"
},
@@ -15926,6 +18220,7 @@
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
"integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"bser": "2.1.1"
}
@@ -15935,14 +18230,19 @@
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
"integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pend": "~1.2.0"
}
},
"node_modules/fdir": {
- "version": "6.4.6",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
- "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
"peerDependencies": {
"picomatch": "^3 || ^4"
},
@@ -15967,6 +18267,7 @@
"url": "https://paypal.me/jimmywarting"
}
],
+ "license": "MIT",
"dependencies": {
"node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
@@ -15980,6 +18281,7 @@
"resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz",
"integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-unicode-supported": "^2.0.0"
},
@@ -15995,6 +18297,7 @@
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
"integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -16007,6 +18310,7 @@
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flat-cache": "^3.0.4"
},
@@ -16019,6 +18323,7 @@
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"minimatch": "^5.0.1"
}
@@ -16028,6 +18333,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -16039,6 +18345,7 @@
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -16050,6 +18357,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
"integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.4.0",
"encodeurl": "^2.0.0",
@@ -16067,6 +18375,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz",
"integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^7.2.0",
"path-exists": "^5.0.0",
@@ -16084,6 +18393,7 @@
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"bin": {
"flat": "cli.js"
}
@@ -16093,6 +18403,7 @@
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
"integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flatted": "^3.2.9",
"keyv": "^4.5.3",
@@ -16106,18 +18417,20 @@
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/follow-redirects": {
- "version": "1.15.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
- "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "version": "1.15.11",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
+ "license": "MIT",
"engines": {
"node": ">=4.0"
},
@@ -16131,6 +18444,7 @@
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
"integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "license": "MIT",
"dependencies": {
"is-callable": "^1.2.7"
},
@@ -16145,6 +18459,7 @@
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
"integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "license": "ISC",
"dependencies": {
"cross-spawn": "^7.0.6",
"signal-exit": "^4.0.1"
@@ -16157,9 +18472,9 @@
}
},
"node_modules/form-data": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
- "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
@@ -16176,6 +18491,7 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -16184,6 +18500,7 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -16196,6 +18513,7 @@
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fetch-blob": "^3.1.2"
},
@@ -16207,6 +18525,7 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -16215,6 +18534,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
"integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -16230,6 +18550,7 @@
"resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-0.12.0.tgz",
"integrity": "sha512-Xhuoorec62B9LwumWmlcPD9/pussEmpHa4Udyhuu2w0fLZ2sI8AJQ2ZDpkkMpcvDbybOiahZaCmGwAl7yPvbTg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimatch": "^3.0.2",
"mkdirp": "^0.5.1",
@@ -16242,6 +18563,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -16253,6 +18575,7 @@
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -16273,6 +18596,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -16285,6 +18609,7 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.6"
},
@@ -16298,6 +18623,7 @@
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"deprecated": "Rimraf versions prior to v4 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^7.1.3"
},
@@ -16308,13 +18634,15 @@
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "license": "ISC"
},
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -16327,6 +18655,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -16336,6 +18665,7 @@
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
"integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"call-bound": "^1.0.3",
@@ -16356,6 +18686,7 @@
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -16364,6 +18695,7 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz",
"integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=10"
}
@@ -16444,6 +18776,7 @@
"integrity": "sha512-vn7TtQ3b9VMJtVXsyWtQQl1fyBVFhQy7UvJF96kPuuJ0or5THH496AD3eUyaDD11+EqCxH9t6V+EP9soZQk4YQ==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"dependencies": {
"@wdio/logger": "^9.1.3",
"@zip.js/zip.js": "^2.7.53",
@@ -16462,10 +18795,11 @@
}
},
"node_modules/geckodriver/node_modules/decamelize": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz",
- "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz",
+ "integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -16478,15 +18812,17 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
"integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=16"
}
},
"node_modules/geckodriver/node_modules/tar-fs": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.10.tgz",
- "integrity": "sha512-C1SwlQGNLe/jPNqapK8epDsXME7CAJR5RL3GcE6KWx1d9OUByzoHVcbu1VPI8tevg9H8Alae0AApHHFGzrD5zA==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz",
+ "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pump": "^3.0.0",
"tar-stream": "^3.1.5"
@@ -16501,6 +18837,7 @@
"resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
"integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^3.1.1"
},
@@ -16511,11 +18848,22 @@
"node": "^18.17.0 || >=20.5.0"
}
},
+ "node_modules/generator-function": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
+ "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
@@ -16524,6 +18872,7 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
@@ -16533,6 +18882,7 @@
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
"integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
@@ -16541,6 +18891,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
@@ -16565,6 +18916,7 @@
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
@@ -16574,6 +18926,7 @@
"resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz",
"integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -16585,6 +18938,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
@@ -16597,6 +18951,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "license": "MIT",
"dependencies": {
"pump": "^3.0.0"
},
@@ -16612,6 +18967,7 @@
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
"integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
"es-errors": "^1.3.0",
@@ -16625,10 +18981,11 @@
}
},
"node_modules/get-tsconfig": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz",
- "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==",
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
+ "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"resolve-pkg-maps": "^1.0.0"
},
@@ -16637,10 +18994,11 @@
}
},
"node_modules/get-uri": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz",
- "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==",
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
+ "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"basic-ftp": "^5.0.2",
"data-uri-to-buffer": "^6.0.2",
@@ -16655,6 +19013,7 @@
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
"integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 14"
}
@@ -16664,6 +19023,7 @@
"resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz",
"integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"dargs": "^8.0.0",
"meow": "^12.0.1",
@@ -16683,9 +19043,10 @@
"license": "MIT"
},
"node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+ "license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
@@ -16706,6 +19067,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -16713,17 +19075,35 @@
"node": ">=10.13.0"
}
},
+ "node_modules/glob-to-regex.js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz",
+ "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
"node_modules/glob-to-regexp": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "devOptional": true
+ "devOptional": true,
+ "license": "BSD-2-Clause"
},
"node_modules/global-directory": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz",
"integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ini": "4.1.1"
},
@@ -16735,12 +19115,19 @@
}
},
"node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/globalthis": {
@@ -16748,6 +19135,7 @@
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
"integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-properties": "^1.2.1",
"gopd": "^1.0.1"
@@ -16763,6 +19151,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -16774,6 +19163,7 @@
"version": "11.8.6",
"resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
"integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+ "license": "MIT",
"dependencies": {
"@sindresorhus/is": "^4.0.0",
"@szmarczak/http-timer": "^4.0.5",
@@ -16797,30 +19187,57 @@
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
},
"node_modules/grapheme-splitter": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/graphemer": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/handle-thing": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
- "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg=="
+ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
+ "license": "MIT"
+ },
+ "node_modules/handlebars": {
+ "version": "4.7.8",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
+ }
},
"node_modules/has-ansi": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
"integrity": "sha512-1YsTg1fk2/6JToQhtZkArMkurq8UoWU1Qe0aR3VUHjgij4nOylSWLWAtBXoZ4/dXOmugfLGm1c+QhuD0JyedFA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^0.2.0"
},
@@ -16836,6 +19253,7 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz",
"integrity": "sha512-sGwIGMjhYdW26/IhwK2gkWWI8DRCVO6uj3hYgHT+zD+QL1pa37tM3ujhyfcJIYSbsxp7Gxhy7zrRW/1AHm4BmA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -16845,6 +19263,7 @@
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
"integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -16856,6 +19275,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -16864,6 +19284,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0"
},
@@ -16876,6 +19297,7 @@
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
"integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.0"
},
@@ -16890,6 +19312,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -16901,6 +19324,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
@@ -16921,6 +19345,7 @@
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz",
"integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.4",
"safe-buffer": "^5.2.1"
@@ -16933,6 +19358,7 @@
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
"integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"minimalistic-assert": "^1.0.1"
@@ -16942,6 +19368,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -16954,6 +19381,7 @@
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true,
+ "license": "MIT",
"bin": {
"he": "bin/he"
}
@@ -16962,6 +19390,7 @@
"version": "11.11.1",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz",
"integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==",
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=12.0.0"
}
@@ -16970,6 +19399,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
"integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "license": "MIT",
"dependencies": {
"hash.js": "^1.0.3",
"minimalistic-assert": "^1.0.0",
@@ -16977,27 +19407,17 @@
}
},
"node_modules/hosted-git-info": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
- "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^10.0.1"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/hosted-git-info/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/hpack.js": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
"integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.1",
"obuf": "^1.0.0",
@@ -17005,10 +19425,17 @@
"wbuf": "^1.1.0"
}
},
+ "node_modules/hpack.js/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
"node_modules/hpack.js/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -17022,12 +19449,14 @@
"node_modules/hpack.js/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
},
"node_modules/hpack.js/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
@@ -17036,6 +19465,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz",
"integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==",
+ "license": "MIT",
"engines": {
"node": ">=14"
}
@@ -17045,6 +19475,7 @@
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
"integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"whatwg-encoding": "^3.1.1"
},
@@ -17056,13 +19487,15 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/html-loader": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/html-loader/-/html-loader-5.1.0.tgz",
"integrity": "sha512-Jb3xwDbsm0W3qlXrCZwcYqYGnYz55hb6aoKQTlzyZPXsPpi6tHXzAfqalecglMQgNvtEfxrCQPaKT90Irt5XDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"html-minifier-terser": "^7.2.0",
"parse5": "^7.1.2"
@@ -17083,6 +19516,7 @@
"resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz",
"integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"camel-case": "^4.1.2",
"clean-css": "~5.3.2",
@@ -17104,15 +19538,17 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
"integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14"
}
},
"node_modules/html-webpack-plugin": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz",
- "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==",
+ "version": "5.6.5",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.5.tgz",
+ "integrity": "sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/html-minifier-terser": "^6.0.0",
"html-minifier-terser": "^6.0.2",
@@ -17145,6 +19581,7 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 12"
}
@@ -17154,6 +19591,7 @@
"resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
"integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"camel-case": "^4.1.2",
"clean-css": "^5.2.2",
@@ -17171,10 +19609,11 @@
}
},
"node_modules/htmlfy": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz",
- "integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==",
- "dev": true
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz",
+ "integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/htmlparser2": {
"version": "6.1.0",
@@ -17188,6 +19627,7 @@
"url": "https://github.com/sponsors/fb55"
}
],
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^4.0.0",
@@ -17200,6 +19640,7 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
"dev": true,
+ "license": "BSD-2-Clause",
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
@@ -17207,45 +19648,46 @@
"node_modules/http-cache-semantics": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
- "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ=="
+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
+ "license": "BSD-2-Clause"
},
"node_modules/http-deceiver": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
- "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw=="
+ "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
+ "license": "MIT"
},
"node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "license": "MIT",
"dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
},
"engines": {
"node": ">= 0.8"
- }
- },
- "node_modules/http-errors/node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "engines": {
- "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/http-parser-js": {
"version": "0.5.10",
"resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz",
- "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA=="
+ "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==",
+ "license": "MIT"
},
"node_modules/http-proxy": {
"version": "1.18.1",
"resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
"integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "license": "MIT",
"dependencies": {
"eventemitter3": "^4.0.0",
"follow-redirects": "^1.0.0",
@@ -17260,6 +19702,7 @@
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
"integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.0",
"debug": "^4.3.4"
@@ -17272,6 +19715,7 @@
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz",
"integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==",
+ "license": "MIT",
"dependencies": {
"@types/http-proxy": "^1.17.8",
"http-proxy": "^1.18.1",
@@ -17295,6 +19739,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
"integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -17306,6 +19751,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
"integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "license": "MIT",
"dependencies": {
"quick-lru": "^5.1.1",
"resolve-alpn": "^1.0.0"
@@ -17317,12 +19763,14 @@
"node_modules/https-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
- "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg=="
+ "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
+ "license": "MIT"
},
"node_modules/https-proxy-agent": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
"integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.2",
"debug": "4"
@@ -17336,6 +19784,7 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=10.17.0"
}
@@ -17345,6 +19794,7 @@
"resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz",
"integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==",
"dev": true,
+ "license": "MIT",
"bin": {
"husky": "bin.js"
},
@@ -17359,6 +19809,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz",
"integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==",
+ "license": "MIT",
"engines": {
"node": ">=10.18"
}
@@ -17367,6 +19818,7 @@
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
@@ -17375,14 +19827,30 @@
}
},
"node_modules/ieee754": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
- "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "BSD-3-Clause"
},
"node_modules/ignore": {
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
"integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -17391,6 +19859,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz",
"integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==",
+ "license": "MIT",
"bin": {
"image-size": "bin/image-size.js"
},
@@ -17401,13 +19870,15 @@
"node_modules/immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
+ "license": "MIT"
},
"node_modules/import-fresh": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
"integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -17424,6 +19895,7 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -17433,6 +19905,7 @@
"resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz",
"integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pkg-dir": "^4.2.0",
"resolve-cwd": "^3.0.0"
@@ -17448,10 +19921,11 @@
}
},
"node_modules/import-meta-resolve": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
- "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
+ "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
"dev": true,
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -17462,6 +19936,7 @@
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.19"
}
@@ -17471,6 +19946,7 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "license": "ISC",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -17479,34 +19955,44 @@
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
},
"node_modules/ini": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz",
"integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/inquirer": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-11.1.0.tgz",
- "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==",
+ "version": "12.11.1",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.11.1.tgz",
+ "integrity": "sha512-9VF7mrY+3OmsAfjH3yKz/pLbJ5z22E23hENKw3/LNSaA/sAt3v49bDRY+Ygct1xwuKT+U+cBfTzjCPySna69Qw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@inquirer/core": "^9.2.1",
- "@inquirer/prompts": "^6.0.1",
- "@inquirer/type": "^2.0.0",
- "@types/mute-stream": "^0.0.4",
- "ansi-escapes": "^4.3.2",
- "mute-stream": "^1.0.0",
- "run-async": "^3.0.0",
- "rxjs": "^7.8.1"
+ "@inquirer/ansi": "^1.0.2",
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/prompts": "^7.10.1",
+ "@inquirer/type": "^3.0.10",
+ "mute-stream": "^2.0.0",
+ "run-async": "^4.0.6",
+ "rxjs": "^7.8.2"
},
"engines": {
"node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
"node_modules/internal-slot": {
@@ -17514,6 +20000,7 @@
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
"integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"hasown": "^2.0.2",
@@ -17528,6 +20015,7 @@
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
@@ -17536,40 +20024,34 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/intersect/-/intersect-1.0.1.tgz",
"integrity": "sha512-qsc720yevCO+4NydrJWgEWKccAQwTOvj2m73O/VBA6iUL2HGZJ9XqBiyraNrBXX/W1IAjdpXdRZk24sq8TzBRg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/invert-kv": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
"integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ip-address": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
- "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+ "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
"dev": true,
- "dependencies": {
- "jsbn": "1.1.0",
- "sprintf-js": "^1.1.3"
- },
+ "license": "MIT",
"engines": {
"node": ">= 12"
}
},
- "node_modules/ip-address/node_modules/sprintf-js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
- "dev": true
- },
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
@@ -17578,6 +20060,8 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz",
"integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"has-tostringtag": "^1.0.2"
@@ -17594,6 +20078,7 @@
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
"integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"call-bound": "^1.0.3",
@@ -17610,13 +20095,15 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-async-function": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
"integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"async-function": "^1.0.0",
"call-bound": "^1.0.3",
@@ -17636,6 +20123,7 @@
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
"integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-bigints": "^1.0.2"
},
@@ -17650,6 +20138,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
},
@@ -17662,6 +20151,7 @@
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
"integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
"has-tostringtag": "^1.0.2"
@@ -17677,6 +20167,7 @@
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -17689,6 +20180,7 @@
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"hasown": "^2.0.2"
},
@@ -17704,6 +20196,7 @@
"resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
"integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"get-intrinsic": "^1.2.6",
@@ -17721,6 +20214,7 @@
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
"integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"has-tostringtag": "^1.0.2"
@@ -17736,6 +20230,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
"integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "license": "MIT",
"bin": {
"is-docker": "cli.js"
},
@@ -17749,12 +20244,14 @@
"node_modules/is-electron": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz",
- "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg=="
+ "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==",
+ "license": "MIT"
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -17764,6 +20261,7 @@
"resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
"integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3"
},
@@ -17778,6 +20276,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -17787,17 +20286,21 @@
"resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
"integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/is-generator-function": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz",
- "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
+ "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bound": "^1.0.3",
- "get-proto": "^1.0.0",
+ "call-bound": "^1.0.4",
+ "generator-function": "^2.0.0",
+ "get-proto": "^1.0.1",
"has-tostringtag": "^1.0.2",
"safe-regex-test": "^1.1.0"
},
@@ -17812,6 +20315,7 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -17823,6 +20327,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
"integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "license": "MIT",
"dependencies": {
"is-docker": "^3.0.0"
},
@@ -17837,13 +20342,12 @@
}
},
"node_modules/is-it-type": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/is-it-type/-/is-it-type-5.1.2.tgz",
- "integrity": "sha512-q/gOZQTNYABAxaXWnBKZjTFH4yACvWEFtgVOj+LbgxYIgAJG1xVmUZOsECSrZPIemYUQvaQWVilSFVbh4Eyt8A==",
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/is-it-type/-/is-it-type-5.1.3.tgz",
+ "integrity": "sha512-AX2uU0HW+TxagTgQXOJY7+2fbFHemC7YFBwN1XqD8qQMKdtfbOC8OC3fUb4s5NU59a3662Dzwto8tWDdZYRXxg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.16.7",
"globalthis": "^1.0.2"
},
"engines": {
@@ -17855,6 +20359,7 @@
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
"integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -17867,6 +20372,7 @@
"resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
"integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.0",
"define-properties": "^1.1.3"
@@ -17883,6 +20389,7 @@
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
"integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -17891,9 +20398,10 @@
}
},
"node_modules/is-network-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz",
- "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz",
+ "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==",
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -17905,6 +20413,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
@@ -17914,6 +20423,7 @@
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
"integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
"has-tostringtag": "^1.0.2"
@@ -17930,6 +20440,7 @@
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -17939,17 +20450,19 @@
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
"node_modules/is-plain-object": {
@@ -17957,6 +20470,7 @@
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"isobject": "^3.0.1"
},
@@ -17968,17 +20482,21 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
"integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-promise": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
- "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
+ "license": "MIT"
},
"node_modules/is-regex": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
"integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"gopd": "^1.2.0",
@@ -17997,6 +20515,7 @@
"resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
"integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -18009,6 +20528,7 @@
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
"integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3"
},
@@ -18023,6 +20543,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -18035,6 +20556,7 @@
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
"integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
"has-tostringtag": "^1.0.2"
@@ -18051,6 +20573,7 @@
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
"integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"has-symbols": "^1.1.0",
@@ -18068,6 +20591,7 @@
"resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz",
"integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"text-extensions": "^2.0.0"
},
@@ -18079,6 +20603,7 @@
"version": "1.1.15",
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
"integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "license": "MIT",
"dependencies": {
"which-typed-array": "^1.1.16"
},
@@ -18094,6 +20619,7 @@
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -18105,13 +20631,15 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
"integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-weakmap": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
"integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -18124,6 +20652,7 @@
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
"integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3"
},
@@ -18139,6 +20668,7 @@
"resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
"integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
"get-intrinsic": "^1.2.6"
@@ -18154,6 +20684,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
"integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "license": "MIT",
"dependencies": {
"is-inside-container": "^1.0.0"
},
@@ -18180,23 +20711,27 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.2.tgz",
"integrity": "sha512-+ykBpFL44/E8TlSBn0kDHZ1+IseXxUu/Om3bS2nqNscaeYWzxx54R9CewU6pLrsXLmEeTRZsGMTQIHfSUEEcUw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "license": "MIT"
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
},
"node_modules/isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -18206,6 +20741,7 @@
"resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
"integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=8"
}
@@ -18215,6 +20751,7 @@
"resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
"integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@babel/core": "^7.23.9",
"@babel/parser": "^7.23.9",
@@ -18227,10 +20764,11 @@
}
},
"node_modules/istanbul-lib-instrument/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -18243,6 +20781,7 @@
"resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
"integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"istanbul-lib-coverage": "^3.0.0",
"make-dir": "^4.0.0",
@@ -18257,6 +20796,7 @@
"resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
"integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"debug": "^4.1.1",
"istanbul-lib-coverage": "^3.0.0",
@@ -18267,10 +20807,11 @@
}
},
"node_modules/istanbul-reports": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
- "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz",
+ "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"html-escaper": "^2.0.0",
"istanbul-lib-report": "^3.0.0"
@@ -18283,6 +20824,7 @@
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
"integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
@@ -18293,75 +20835,22 @@
"@pkgjs/parseargs": "^0.11.0"
}
},
- "node_modules/jake": {
- "version": "10.9.2",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
- "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
- "dev": true,
- "dependencies": {
- "async": "^3.2.3",
- "chalk": "^4.0.2",
- "filelist": "^1.0.4",
- "minimatch": "^3.1.2"
- },
- "bin": {
- "jake": "bin/cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jake/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jake/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/jake/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jake/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/jake": {
+ "version": "10.9.4",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz",
+ "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "async": "^3.2.6",
+ "filelist": "^1.0.4",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "jake": "bin/cli.js"
},
"engines": {
- "node": "*"
+ "node": ">=10"
}
},
"node_modules/jest": {
@@ -18369,6 +20858,8 @@
"resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"@jest/core": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -18395,6 +20886,7 @@
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
"integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"execa": "^5.0.0",
"jest-util": "^29.7.0",
@@ -18409,6 +20901,7 @@
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
"integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
"@jest/expect": "^29.7.0",
@@ -18440,6 +20933,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -18455,6 +20949,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -18471,6 +20966,7 @@
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
"integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/core": "^29.7.0",
"@jest/test-result": "^29.7.0",
@@ -18504,6 +21000,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -18519,6 +21016,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -18535,6 +21033,7 @@
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
"integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.11.6",
"@jest/test-sequencer": "^29.7.0",
@@ -18580,6 +21079,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -18595,6 +21095,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -18605,6 +21106,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -18622,6 +21124,7 @@
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -18642,6 +21145,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -18654,6 +21158,7 @@
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
"integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
"diff-sequences": "^29.6.3",
@@ -18669,6 +21174,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -18684,6 +21190,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -18700,6 +21207,7 @@
"resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
"integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"detect-newline": "^3.0.0"
},
@@ -18712,6 +21220,7 @@
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
"integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"chalk": "^4.0.0",
@@ -18728,6 +21237,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -18743,6 +21253,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -18759,6 +21270,7 @@
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
"integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
"@jest/fake-timers": "^29.7.0",
@@ -18776,6 +21288,7 @@
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
"integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
@@ -18785,6 +21298,7 @@
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
"integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@types/graceful-fs": "^4.1.3",
@@ -18810,6 +21324,7 @@
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
"integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jest-get-type": "^29.6.3",
"pretty-format": "^29.7.0"
@@ -18823,6 +21338,7 @@
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
"integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
"jest-diff": "^29.7.0",
@@ -18838,6 +21354,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -18853,6 +21370,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -18869,6 +21387,7 @@
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
"integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.12.13",
"@jest/types": "^29.6.3",
@@ -18889,6 +21408,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -18904,6 +21424,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -18920,6 +21441,7 @@
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
"integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@types/node": "*",
@@ -18934,6 +21456,7 @@
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
"integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
},
@@ -18951,6 +21474,7 @@
"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
"integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
@@ -18960,6 +21484,7 @@
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
"integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
@@ -18980,6 +21505,7 @@
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
"integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jest-regex-util": "^29.6.3",
"jest-snapshot": "^29.7.0"
@@ -18993,6 +21519,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -19008,6 +21535,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -19024,6 +21552,7 @@
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
"integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/console": "^29.7.0",
"@jest/environment": "^29.7.0",
@@ -19056,6 +21585,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -19071,6 +21601,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -19087,6 +21618,7 @@
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
"integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
"@jest/fake-timers": "^29.7.0",
@@ -19120,6 +21652,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -19135,6 +21668,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -19145,6 +21679,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -19162,6 +21697,7 @@
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -19182,6 +21718,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -19194,6 +21731,7 @@
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
"integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.11.6",
"@babel/generator": "^7.7.2",
@@ -19225,6 +21763,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -19240,6 +21779,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -19252,10 +21792,11 @@
}
},
"node_modules/jest-snapshot/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -19268,6 +21809,7 @@
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
"integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@types/node": "*",
@@ -19285,6 +21827,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -19300,6 +21843,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -19316,6 +21860,7 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -19328,6 +21873,7 @@
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
"integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"camelcase": "^6.2.0",
@@ -19345,6 +21891,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -19360,6 +21907,7 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
"integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -19372,6 +21920,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -19388,6 +21937,7 @@
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
"integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/test-result": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -19407,6 +21957,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -19422,6 +21973,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -19438,6 +21990,7 @@
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
"integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"jest-util": "^29.7.0",
@@ -19453,6 +22006,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -19464,18 +22018,20 @@
}
},
"node_modules/jiti": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
- "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
+ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"jiti": "lib/jiti-cli.mjs"
}
},
"node_modules/jmespath": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz",
- "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==",
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz",
+ "integrity": "sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w==",
+ "dev": true,
"engines": {
"node": ">= 0.6.0"
}
@@ -19494,6 +22050,7 @@
"resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz",
"integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
@@ -19501,19 +22058,22 @@
"node_modules/js-md5": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.8.3.tgz",
- "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ=="
+ "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==",
+ "license": "MIT"
},
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -19521,17 +22081,12 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/jsbn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
- "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
- "dev": true
- },
"node_modules/jsdom": {
"version": "24.1.3",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.3.tgz",
"integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cssstyle": "^4.0.1",
"data-urls": "^5.0.0",
@@ -19572,6 +22127,7 @@
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
"dev": true,
+ "license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
},
@@ -19582,13 +22138,15 @@
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "license": "MIT"
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/json-rpc-2.0": {
"version": "1.7.1",
@@ -19600,19 +22158,22 @@
"node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
+ "license": "MIT",
"bin": {
"json5": "lib/cli.js"
},
@@ -19623,7 +22184,8 @@
"node_modules/jsonc-parser": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
- "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "license": "MIT"
},
"node_modules/jsonparse": {
"version": "1.3.1",
@@ -19632,13 +22194,15 @@
"dev": true,
"engines": [
"node >= 0.2.0"
- ]
+ ],
+ "license": "MIT"
},
"node_modules/JSONStream": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
"integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
"dev": true,
+ "license": "(MIT OR Apache-2.0)",
"dependencies": {
"jsonparse": "^1.2.0",
"through": ">=2.2.7 <3"
@@ -19654,6 +22218,7 @@
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
"integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "license": "(MIT OR GPL-3.0-or-later)",
"dependencies": {
"lie": "~3.3.0",
"pako": "~1.0.2",
@@ -19661,10 +22226,17 @@
"setimmediate": "^1.0.5"
}
},
+ "node_modules/jszip/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
"node_modules/jszip/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -19678,12 +22250,14 @@
"node_modules/jszip/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
},
"node_modules/jszip/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
@@ -19691,18 +22265,21 @@
"node_modules/just-clone": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/just-clone/-/just-clone-6.2.0.tgz",
- "integrity": "sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA=="
+ "integrity": "sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA==",
+ "license": "MIT"
},
"node_modules/just-extend": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz",
"integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
"integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "license": "MIT",
"dependencies": {
"json-buffer": "3.0.1"
}
@@ -19712,6 +22289,7 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -19721,23 +22299,26 @@
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/launch-editor": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz",
- "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz",
+ "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==",
+ "license": "MIT",
"dependencies": {
- "picocolors": "^1.0.0",
- "shell-quote": "^1.8.1"
+ "picocolors": "^1.1.1",
+ "shell-quote": "^1.8.3"
}
},
"node_modules/lazystream": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
"integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
+ "license": "MIT",
"dependencies": {
"readable-stream": "^2.0.5"
},
@@ -19745,10 +22326,17 @@
"node": ">= 0.6.3"
}
},
+ "node_modules/lazystream/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
"node_modules/lazystream/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -19762,12 +22350,14 @@
"node_modules/lazystream/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
},
"node_modules/lazystream/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
@@ -19777,6 +22367,7 @@
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
"integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"invert-kv": "^1.0.0"
},
@@ -19789,6 +22380,7 @@
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -19798,6 +22390,7 @@
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1",
"type-check": "~0.4.0"
@@ -19811,6 +22404,7 @@
"resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz",
"integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"chalk": "^2.4.1",
"debug": "^3.1.0",
@@ -19832,6 +22426,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -19844,6 +22439,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -19858,6 +22454,7 @@
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "1.1.3"
}
@@ -19866,13 +22463,15 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/license-checker/node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "^2.1.1"
}
@@ -19882,6 +22481,7 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
@@ -19891,6 +22491,7 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -19900,6 +22501,7 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.6"
},
@@ -19912,6 +22514,7 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver"
}
@@ -19921,6 +22524,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -19932,6 +22536,7 @@
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "license": "MIT",
"dependencies": {
"immediate": "~3.0.5"
}
@@ -19940,13 +22545,15 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/load-json-file": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
@@ -19963,6 +22570,7 @@
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"error-ex": "^1.2.0"
},
@@ -19970,20 +22578,12 @@
"node": ">=0.10.0"
}
},
- "node_modules/load-json-file/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/load-json-file/node_modules/strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-utf8": "^0.2.0"
},
@@ -19992,12 +22592,17 @@
}
},
"node_modules/loader-runner": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz",
+ "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==",
"devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=6.11.5"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
"node_modules/loader-utils": {
@@ -20005,6 +22610,7 @@
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
"integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -20029,6 +22635,7 @@
"url": "https://github.com/hejny/locate-app/blob/main/README.md#%EF%B8%8F-contributing"
}
],
+ "license": "Apache-2.0",
"dependencies": {
"@promptbook/utils": "0.69.5",
"type-fest": "4.26.0",
@@ -20040,6 +22647,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz",
"integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
},
@@ -20052,6 +22660,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
"integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^6.0.0"
},
@@ -20065,117 +22674,128 @@
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
},
"node_modules/lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.flattendeep": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
"integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
"deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.",
- "dev": true
- },
- "node_modules/lodash.isequal": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
- "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.kebabcase": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
"integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.memoize": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
"integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.mergewith": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
"integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.pickby": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz",
"integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.snakecase": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
"integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.startcase": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz",
"integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.union": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
"integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.upperfirst": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz",
"integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.zip": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz",
"integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
"integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.0",
"is-unicode-supported": "^0.1.0"
@@ -20192,6 +22812,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -20207,6 +22828,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -20223,6 +22845,7 @@
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz",
"integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6.0"
},
@@ -20235,23 +22858,27 @@
"version": "0.8.4",
"resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz",
"integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lokijs": {
"version": "1.5.12",
"resolved": "https://registry.npmjs.org/lokijs/-/lokijs-1.5.12.tgz",
- "integrity": "sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q=="
+ "integrity": "sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==",
+ "license": "MIT"
},
"node_modules/long": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
- "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="
+ "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==",
+ "license": "Apache-2.0"
},
"node_modules/loupe": {
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
"integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"get-func-name": "^2.0.1"
}
@@ -20261,6 +22888,7 @@
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
"integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tslib": "^2.0.3"
}
@@ -20269,6 +22897,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
"integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -20278,6 +22907,7 @@
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"yallist": "^3.0.2"
}
@@ -20286,24 +22916,27 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/mac-ca/-/mac-ca-3.1.3.tgz",
"integrity": "sha512-yAdth+3TAfAyYYxNlnIJxKJbNOVvn9ZiQ1C9XJAj8ThKBBd5hu581sFjld3wr4DSrHcQwn7rt+t6dLiB+vFEFQ==",
+ "license": "BSD-3-Clause",
"dependencies": {
"node-forge": "^1.3.1",
"undici": "^6.16.1"
}
},
"node_modules/magic-string": {
- "version": "0.30.17",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
- "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0"
+ "@jridgewell/sourcemap-codec": "^1.5.5"
}
},
"node_modules/make-array": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/make-array/-/make-array-0.1.2.tgz",
"integrity": "sha512-bcFmxgZ+OTaMYJp/w6eifElKTcfum7Gi5H7vQ8KzAf9X6swdxkVuilCaG3ZjXr/qJsQT4JJ2Rq9SDYScWEdu9Q==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -20313,6 +22946,7 @@
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
"integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"semver": "^7.5.3"
},
@@ -20324,10 +22958,11 @@
}
},
"node_modules/make-dir/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -20339,13 +22974,15 @@
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/makeerror": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
"integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"tmpl": "1.0.5"
}
@@ -20354,6 +22991,7 @@
"version": "14.1.4",
"resolved": "https://registry.npmjs.org/marked/-/marked-14.1.4.tgz",
"integrity": "sha512-vkVZ8ONmUdPnjCKc5uTRvmkRbx4EAi2OkTOXmfTDhZz3OFqMNBM1oTTWwTr4HY4uAEojhzPf+Fy8F1DWa3Sndg==",
+ "license": "MIT",
"bin": {
"marked": "bin/marked.js"
},
@@ -20365,6 +23003,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -20373,6 +23012,7 @@
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
"integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "license": "MIT",
"dependencies": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1",
@@ -20383,23 +23023,24 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/memfs": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.2.tgz",
- "integrity": "sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==",
+ "version": "4.51.0",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.0.tgz",
+ "integrity": "sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==",
+ "license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/json-pack": "^1.0.3",
- "@jsonjoy.com/util": "^1.3.0",
- "tree-dump": "^1.0.1",
+ "@jsonjoy.com/json-pack": "^1.11.0",
+ "@jsonjoy.com/util": "^1.9.0",
+ "glob-to-regex.js": "^1.0.1",
+ "thingies": "^2.5.0",
+ "tree-dump": "^1.0.3",
"tslib": "^2.0.0"
},
- "engines": {
- "node": ">= 4.0.0"
- },
"funding": {
"type": "github",
"url": "https://github.com/sponsors/streamich"
@@ -20410,6 +23051,7 @@
"resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
"integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16.10"
},
@@ -20421,6 +23063,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
"integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -20432,12 +23075,14 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
@@ -20446,6 +23091,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -20454,6 +23100,7 @@
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
"dependencies": {
"braces": "^3.0.3",
"picomatch": "^2.3.1"
@@ -20466,6 +23113,7 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -20477,6 +23125,7 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.0.0",
"brorand": "^1.0.1"
@@ -20488,12 +23137,14 @@
"node_modules/miller-rabin/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
- "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="
+ "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
+ "license": "MIT"
},
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
"bin": {
"mime": "cli.js"
},
@@ -20505,19 +23156,25 @@
"version": "1.54.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
- "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
+ "license": "MIT",
"dependencies": {
"mime-db": "^1.54.0"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/mimic-fn": {
@@ -20525,6 +23182,7 @@
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -20533,6 +23191,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -20540,17 +23199,20 @@
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "license": "ISC"
},
"node_modules/minimalistic-crypto-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+ "license": "MIT"
},
"node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -20565,6 +23227,7 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -20573,14 +23236,23 @@
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/mix2": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/mix2/-/mix2-1.0.5.tgz",
"integrity": "sha512-ybWz7nY+WHBBIyliND5eYaJKzkoa+qXRYNTmVqAxSLlFtL/umT2iv+pmyTu1oU7WNkrirwheqR8d9EaKVz0e5g==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -20589,6 +23261,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "license": "MIT",
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -20603,10 +23276,11 @@
"license": "MIT"
},
"node_modules/mocha": {
- "version": "11.7.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.1.tgz",
- "integrity": "sha512-5EK+Cty6KheMS/YLPPMJC64g5V61gIR25KsRItHw6x4hEKT6Njp1n9LOlH4gpevuwMVS66SXaBBpg+RWZkza4A==",
+ "version": "11.7.5",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz",
+ "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"browser-stdout": "^1.3.1",
"chokidar": "^4.0.1",
@@ -20616,6 +23290,7 @@
"find-up": "^5.0.0",
"glob": "^10.4.5",
"he": "^1.2.0",
+ "is-path-inside": "^3.0.3",
"js-yaml": "^4.1.0",
"log-symbols": "^4.1.0",
"minimatch": "^9.0.5",
@@ -20642,6 +23317,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
@@ -20658,6 +23334,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^5.0.0"
},
@@ -20673,6 +23350,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^3.0.2"
},
@@ -20688,6 +23366,7 @@
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -20697,6 +23376,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -20712,6 +23392,7 @@
"resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.5.0.tgz",
"integrity": "sha512-d/P1M/RacgM3dB0sJ8rjeRNXxtapkPCUnMGmIN0ixJ16F/E4GUZCvWcSGfWGz8eaXYvn1s9baUwNjI4LOPEjiA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12.0.0"
}
@@ -20721,6 +23402,7 @@
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
"integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -20728,12 +23410,14 @@
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
},
"node_modules/multicast-dns": {
"version": "7.2.5",
"resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
"integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
+ "license": "MIT",
"dependencies": {
"dns-packet": "^5.2.2",
"thunky": "^1.0.2"
@@ -20743,12 +23427,13 @@
}
},
"node_modules/mute-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
- "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
+ "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
"dev": true,
+ "license": "ISC",
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/nanoid": {
@@ -20761,6 +23446,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -20778,12 +23464,14 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/negotiator": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -20792,13 +23480,15 @@
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "devOptional": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/netmask": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
"integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4.0"
}
@@ -20808,6 +23498,7 @@
"resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz",
"integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^3.0.1",
"@sinonjs/fake-timers": "^13.0.1",
@@ -20821,6 +23512,7 @@
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz",
"integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^3.0.1"
}
@@ -20830,6 +23522,7 @@
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
"integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"lower-case": "^2.0.2",
"tslib": "^2.0.3"
@@ -20875,6 +23568,7 @@
"url": "https://paypal.me/jimmywarting"
}
],
+ "license": "MIT",
"engines": {
"node": ">=10.5.0"
}
@@ -20884,6 +23578,7 @@
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
"integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"data-uri-to-buffer": "^4.0.0",
"fetch-blob": "^3.1.4",
@@ -20901,6 +23596,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
+ "license": "(BSD-3-Clause OR GPL-2.0)",
"engines": {
"node": ">= 6.13.0"
}
@@ -20909,13 +23605,15 @@
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
"integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/node-loader": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.1.0.tgz",
"integrity": "sha512-OwjPkyh8+7jW8DMd/iq71uU1Sspufr/C2+c3t0p08J3CrM9ApZ4U53xuisNrDXOHyGi5OYHgtfmmh+aK9zJA6g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"loader-utils": "^2.0.3"
},
@@ -20931,15 +23629,17 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
- "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
- "devOptional": true
+ "version": "2.0.27",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
+ "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/noms": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz",
"integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==",
+ "license": "ISC",
"dependencies": {
"inherits": "^2.0.1",
"readable-stream": "~1.0.31"
@@ -20948,12 +23648,14 @@
"node_modules/noms/node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
},
"node_modules/noms/node_modules/readable-stream": {
"version": "1.0.34",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
@@ -20964,7 +23666,8 @@
"node_modules/noms/node_modules/string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
},
"node_modules/noop-logger": {
"version": "0.1.1",
@@ -20977,6 +23680,7 @@
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
"integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"abbrev": "1",
"osenv": "^0.1.4"
@@ -20989,38 +23693,37 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/nopt-usage/-/nopt-usage-0.1.0.tgz",
"integrity": "sha512-Tg2sISrWBbSsCRqpEMmdxn3KZfacrd0N2NYpZQIq0MHxGHMjwzYlxeB9pVIom/g7CBK28atDUQsTlOfG0wOsNA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/normalize-package-data": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
- "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "hosted-git-info": "^7.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
}
},
"node_modules/normalize-package-data/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
+ "license": "ISC",
"bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
+ "semver": "bin/semver"
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21029,6 +23732,7 @@
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
"integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -21060,6 +23764,7 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.6"
},
@@ -21072,6 +23777,7 @@
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
"integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"abbrev": "1"
},
@@ -21098,13 +23804,15 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
"integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.0.0"
},
@@ -21130,6 +23838,7 @@
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
"integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0"
},
@@ -21147,15 +23856,17 @@
}
},
"node_modules/nwsapi": {
- "version": "2.2.20",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz",
- "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==",
- "dev": true
+ "version": "2.2.22",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz",
+ "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21164,6 +23875,7 @@
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -21176,6 +23888,7 @@
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
"integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1"
@@ -21192,6 +23905,7 @@
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -21201,6 +23915,7 @@
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
"integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"call-bound": "^1.0.3",
@@ -21221,6 +23936,7 @@
"resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
"integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -21239,6 +23955,7 @@
"resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
"integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -21253,6 +23970,7 @@
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz",
"integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"call-bound": "^1.0.3",
@@ -21269,18 +23987,21 @@
"node_modules/obuf": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
- "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+ "license": "MIT"
},
"node_modules/on-exit-leak-free": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz",
"integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
"dependencies": {
"ee-first": "1.1.1"
},
@@ -21301,6 +24022,7 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
"dependencies": {
"wrappy": "1"
}
@@ -21310,6 +24032,7 @@
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-fn": "^2.1.0"
},
@@ -21321,14 +24044,15 @@
}
},
"node_modules/open": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz",
- "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
+ "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
+ "license": "MIT",
"dependencies": {
"default-browser": "^5.2.1",
"define-lazy-prop": "^3.0.0",
"is-inside-container": "^1.0.0",
- "is-wsl": "^3.1.0"
+ "wsl-utils": "^0.1.0"
},
"engines": {
"node": ">=18"
@@ -21342,6 +24066,7 @@
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
"integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
@@ -21357,13 +24082,15 @@
"node_modules/os-browserify": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
- "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A=="
+ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
+ "license": "MIT"
},
"node_modules/os-homedir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21373,6 +24100,7 @@
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
"integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"lcid": "^1.0.0"
},
@@ -21385,6 +24113,7 @@
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21395,6 +24124,7 @@
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"deprecated": "This package is no longer supported.",
"dev": true,
+ "license": "ISC",
"dependencies": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
@@ -21405,6 +24135,7 @@
"resolved": "https://registry.npmjs.org/oss-attribution-generator/-/oss-attribution-generator-1.7.1.tgz",
"integrity": "sha512-ReLf/UJ3z3ZEhzW6XD4HswUIoUgEUVq8I+amX12DqFwcEYhw8HGGhn2mrk7afqXuT+4AZiPDEhwDXtZSgtnOeA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bluebird": "^3.5.0",
"bower": "^1.8.0",
@@ -21426,6 +24157,7 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz",
"integrity": "sha512-sGwIGMjhYdW26/IhwK2gkWWI8DRCVO6uj3hYgHT+zD+QL1pa37tM3ujhyfcJIYSbsxp7Gxhy7zrRW/1AHm4BmA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21435,6 +24167,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz",
"integrity": "sha512-f2PKUkN5QngiSemowa6Mrk9MPCdtFiOSmibjZ+j1qhLGHHYsqZwmBMRF3IRMVXo8sybDqx2fJl2d/8OphBoWkA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21444,6 +24177,7 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
"integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21453,6 +24187,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
"integrity": "sha512-bIKA54hP8iZhyDT81TOsJiQvR1gW+ZYSXFaZUAvoD4wCHdbHY2actmpTE4x344ZlFqHbvoxKOaESULTZN2gstg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^1.1.0",
"escape-string-regexp": "^1.0.0",
@@ -21469,6 +24204,7 @@
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
"integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
@@ -21480,6 +24216,7 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21489,6 +24226,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^2.0.0"
},
@@ -21501,6 +24239,7 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -21510,6 +24249,7 @@
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21519,40 +24259,24 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
- "node_modules/oss-attribution-generator/node_modules/find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
- "dev": true,
- "dependencies": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/oss-attribution-generator/node_modules/get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
- },
- "node_modules/oss-attribution-generator/node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/oss-attribution-generator/node_modules/is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"number-is-nan": "^1.0.0"
},
@@ -21565,6 +24289,7 @@
"resolved": "https://registry.npmjs.org/license-checker/-/license-checker-13.1.0.tgz",
"integrity": "sha512-0sqnOzLkYYSZKzR3IO7q/1Drksin6IH1nlUgXE61ycWvF807UmFHV1fSDf6fGw5woQ0On/Gmh1YvVZ2jYMjUwQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"chalk": "~0.5.1",
"debug": "^2.2.0",
@@ -21586,19 +24311,22 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
"integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==",
"deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/oss-attribution-generator/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/oss-attribution-generator/node_modules/nopt": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-2.2.1.tgz",
"integrity": "sha512-gIOTA/uJuhPwFqp+spY7VQ1satbnGlD+iQVZxI18K6hs8Evq4sX81Ml7BB5byP/LsbR2yBVtmvdEmhi7evJ6Aw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"abbrev": "1"
},
@@ -21606,62 +24334,12 @@
"nopt": "bin/nopt.js"
}
},
- "node_modules/oss-attribution-generator/node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/oss-attribution-generator/node_modules/path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
- "dev": true,
- "dependencies": {
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/oss-attribution-generator/node_modules/read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
- "dev": true,
- "dependencies": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/oss-attribution-generator/node_modules/read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
- "dev": true,
- "dependencies": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/oss-attribution-generator/node_modules/semver": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver"
}
@@ -21671,6 +24349,7 @@
"resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-0.1.2.tgz",
"integrity": "sha512-Wc1aAqOHvP0e9H6Q6Ie56rGc9Mn00xmhqiB1BaKfMsBpJw/BPp6FLkuKxLcubHXIXwAKTTyvA2E74aPUv8OA8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"spdx-expression-parse": "^1.0.0",
"spdx-ranges": "^1.0.0"
@@ -21680,13 +24359,15 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
"integrity": "sha512-xMXXC4eLKaIskvZm89nZi/MstVv1UtGk3nJz9BBKjreMVyoWisWFKfboH+kJS97+wUyBLpO/8ghV9M5VvrwwrA==",
- "dev": true
+ "dev": true,
+ "license": "(MIT AND CC-BY-3.0)"
},
"node_modules/oss-attribution-generator/node_modules/spdx-correct": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-2.0.4.tgz",
"integrity": "sha512-c+4gPpt9YDhz7cHlz5UrsHzxxRi4ksclxnEEKsuGT9JdwSC+ZNmsGbYRzzgxyZaBYpcWnlu+4lPcdLKx4DOCmA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-expression-parse": "^2.0.1",
"spdx-license-ids": "^2.0.1"
@@ -21697,6 +24378,7 @@
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-2.0.2.tgz",
"integrity": "sha512-oFxOkWCfFS0ltNp0H66gXlU4NF6bxg7RkoTYR0413t+yTY9zyj+AIWsjtN8dcVp6703ijDYBWBIARlJ7DkyP9Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"spdx-exceptions": "^2.0.0",
"spdx-license-ids": "^2.0.1"
@@ -21706,19 +24388,22 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-2.0.1.tgz",
"integrity": "sha512-3RF4t5oYLlynWVIsKsmmGVM0obnTBK8ElS+2XSwRIYdf1U12aT8jS8MVHv1BH/tKrUKckogK5qJt/T+IMQZlAg==",
- "dev": true
+ "dev": true,
+ "license": "CC0-1.0"
},
"node_modules/oss-attribution-generator/node_modules/spdx-ranges": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-1.0.1.tgz",
"integrity": "sha512-re78PYmpAkAqL63aWC+Xnf2GOhOP37uldGWCslThw+NHKuOSPmLATVfNFyetdjyF6F9yHxn5/XzvFHH6CHFjJA==",
- "dev": true
+ "dev": true,
+ "license": "CC-BY-3.0"
},
"node_modules/oss-attribution-generator/node_modules/spdx-satisfies": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-0.1.3.tgz",
"integrity": "sha512-SdspT8Tv3RyHlH8pESd/rWEXII4Ho3sRr9KYeGAUbhVF+Z8loYdcMg8taog1551DMwHcdV/FK725lEANTehPhg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"spdx-compare": "^0.1.2",
"spdx-expression-parse": "^1.0.0"
@@ -21728,13 +24413,15 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
"integrity": "sha512-xMXXC4eLKaIskvZm89nZi/MstVv1UtGk3nJz9BBKjreMVyoWisWFKfboH+kJS97+wUyBLpO/8ghV9M5VvrwwrA==",
- "dev": true
+ "dev": true,
+ "license": "(MIT AND CC-BY-3.0)"
},
"node_modules/oss-attribution-generator/node_modules/string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -21749,6 +24436,7 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21758,6 +24446,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^2.0.0"
},
@@ -21770,6 +24459,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
"integrity": "sha512-DerhZL7j6i6/nEnVG0qViKXI0OKouvvpsAiaj7c+LfqZZZxdwZtv8+UiA/w4VUJpT8UzX0pR1dcHOii1GbmruQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^0.2.1"
},
@@ -21785,6 +24475,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz",
"integrity": "sha512-tdCZ28MnM7k7cJDJc7Eq80A9CsRFAAOZUy41npOZCs++qSjfIy7o5Rh46CBk+Dk5FbKJ33X3Tqg4YrV07N5RaA==",
"dev": true,
+ "license": "MIT",
"bin": {
"supports-color": "cli.js"
},
@@ -21797,6 +24488,7 @@
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1"
@@ -21810,6 +24502,7 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -21819,6 +24512,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^2.0.0"
},
@@ -21830,13 +24524,15 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
"integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/oss-attribution-generator/node_modules/yargs": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz",
"integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"camelcase": "^3.0.0",
"cliui": "^3.2.0",
@@ -21858,6 +24554,7 @@
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
"integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"camelcase": "^3.0.0",
"object.assign": "^4.1.0"
@@ -21868,6 +24565,7 @@
"resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
"integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.2.6",
"object-keys": "^1.1.1",
@@ -21884,6 +24582,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
"integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -21893,6 +24592,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"yocto-queue": "^0.1.0"
},
@@ -21908,6 +24608,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
"integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^4.0.0"
},
@@ -21923,6 +24624,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
"integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"yocto-queue": "^1.0.0"
},
@@ -21934,10 +24636,11 @@
}
},
"node_modules/p-locate/node_modules/yocto-queue": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz",
- "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz",
+ "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12.20"
},
@@ -21949,6 +24652,7 @@
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz",
"integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==",
+ "license": "MIT",
"dependencies": {
"@types/retry": "0.12.2",
"is-network-error": "^1.0.0",
@@ -21966,6 +24670,7 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -21975,6 +24680,7 @@
"resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
"integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@tootallnate/quickjs-emscripten": "^0.23.0",
"agent-base": "^7.1.2",
@@ -21994,6 +24700,7 @@
"resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
"integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"degenerator": "^5.0.0",
"netmask": "^2.0.2"
@@ -22005,24 +24712,28 @@
"node_modules/package-json-from-dist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
- "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "license": "BlueOak-1.0.0"
},
"node_modules/package-license": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/package-license/-/package-license-0.1.2.tgz",
"integrity": "sha512-Q5zmx+M9ZJneMpYS6MlYL77gqeMYWuyErXMnQ/83WCztmYQD7Z0U9XGLvX9OKFFXwRj2NzdzlM0y9Jzcww2O1Q==",
- "dev": true
+ "dev": true,
+ "license": "Apache2"
},
"node_modules/pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "license": "(MIT AND Zlib)"
},
"node_modules/param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
"integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"dot-case": "^3.0.4",
"tslib": "^2.0.3"
@@ -22033,6 +24744,7 @@
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"callsites": "^3.0.0"
},
@@ -22041,15 +24753,15 @@
}
},
"node_modules/parse-asn1": {
- "version": "5.1.7",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz",
- "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==",
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz",
+ "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==",
+ "license": "ISC",
"dependencies": {
"asn1.js": "^4.10.1",
"browserify-aes": "^1.2.0",
"evp_bytestokey": "^1.0.3",
- "hash-base": "~3.0",
- "pbkdf2": "^3.1.2",
+ "pbkdf2": "^3.1.5",
"safe-buffer": "^5.2.1"
},
"engines": {
@@ -22061,6 +24773,7 @@
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
@@ -22079,6 +24792,7 @@
"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
"integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -22089,13 +24803,15 @@
"node_modules/parse-srcset": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
- "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q=="
+ "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==",
+ "license": "MIT"
},
"node_modules/parse5": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
"integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"entities": "^6.0.0"
},
@@ -22108,6 +24824,7 @@
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
"integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"domhandler": "^5.0.3",
"parse5": "^7.0.0"
@@ -22121,6 +24838,7 @@
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.3.0"
},
@@ -22136,6 +24854,7 @@
"resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
"integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parse5": "^7.0.0"
},
@@ -22148,6 +24867,7 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
"integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
@@ -22159,6 +24879,7 @@
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -22168,6 +24889,7 @@
"resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
"integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"no-case": "^3.0.4",
"tslib": "^2.0.3"
@@ -22178,6 +24900,7 @@
"resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
"integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"process": "^0.11.1",
"util": "^0.10.3"
@@ -22186,13 +24909,15 @@
"node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
- "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "license": "MIT"
},
"node_modules/path-exists": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
"integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
@@ -22201,6 +24926,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -22209,6 +24935,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -22217,12 +24944,14 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/path-scurry": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
"integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "license": "BlueOak-1.0.0",
"dependencies": {
"lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
@@ -22237,14 +24966,17 @@
"node_modules/path-scurry/node_modules/lru-cache": {
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
},
"node_modules/path-to-regexp": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
- "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
- "engines": {
- "node": ">=16"
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
+ "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/path-type": {
@@ -22252,6 +24984,7 @@
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
"integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.2",
"pify": "^2.0.0",
@@ -22261,26 +24994,19 @@
"node": ">=0.10.0"
}
},
- "node_modules/path-type/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/path/node_modules/inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/path/node_modules/util": {
"version": "0.10.4",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"inherits": "2.0.3"
}
@@ -22289,76 +25015,55 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
"integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/pathval": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
"integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/pbkdf2": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz",
- "integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz",
+ "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==",
+ "license": "MIT",
"dependencies": {
- "create-hash": "~1.1.3",
+ "create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
- "ripemd160": "=2.0.1",
+ "ripemd160": "^2.0.3",
"safe-buffer": "^5.2.1",
- "sha.js": "^2.4.11",
- "to-buffer": "^1.2.0"
+ "sha.js": "^2.4.12",
+ "to-buffer": "^1.2.1"
},
"engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/pbkdf2/node_modules/create-hash": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
- "integrity": "sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==",
- "dependencies": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "sha.js": "^2.4.0"
- }
- },
- "node_modules/pbkdf2/node_modules/hash-base": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
- "integrity": "sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==",
- "dependencies": {
- "inherits": "^2.0.1"
- }
- },
- "node_modules/pbkdf2/node_modules/ripemd160": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
- "integrity": "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==",
- "dependencies": {
- "hash-base": "^2.0.0",
- "inherits": "^2.0.1"
+ "node": ">= 0.10"
}
},
"node_modules/pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
},
"node_modules/picomatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "license": "MIT",
+ "peer": true,
"engines": {
"node": ">=12"
},
@@ -22367,11 +25072,13 @@
}
},
"node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
"node_modules/pinkie": {
@@ -22379,6 +25086,7 @@
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -22388,6 +25096,7 @@
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pinkie": "^2.0.0"
},
@@ -22400,6 +25109,7 @@
"resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz",
"integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"atomic-sleep": "^1.0.0",
"fast-redact": "^3.0.0",
@@ -22422,6 +25132,7 @@
"resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz",
"integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"duplexify": "^4.1.2",
"split2": "^4.0.0"
@@ -22432,6 +25143,7 @@
"resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-5.1.3.tgz",
"integrity": "sha512-Zj+0TVdYKkAAIx9EUCL5e4TttwgsaFvJh2ceIMQeFCY8ak9tseEZQGSgpvyjEj1/iIVGIh5tdhkGEQWSMILKHA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@hapi/bourne": "^2.0.0",
"args": "^5.0.1",
@@ -22455,6 +25167,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -22470,6 +25183,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -22481,20 +25195,12 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/pino-pretty/node_modules/jmespath": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz",
- "integrity": "sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w==",
- "dev": true,
- "engines": {
- "node": ">= 0.6.0"
- }
- },
"node_modules/pino-pretty/node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -22509,6 +25215,7 @@
"resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
"integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"readable-stream": "^3.0.0"
}
@@ -22517,13 +25224,15 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz",
"integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/pirates": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
"integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 6"
}
@@ -22532,6 +25241,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz",
"integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==",
+ "license": "MIT",
"engines": {
"node": ">=16.20.0"
}
@@ -22541,6 +25251,7 @@
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^4.0.0"
},
@@ -22553,6 +25264,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@@ -22566,6 +25278,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
},
@@ -22578,6 +25291,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
@@ -22593,6 +25307,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
},
@@ -22605,6 +25320,7 @@
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -22614,6 +25330,7 @@
"resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz",
"integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4.0"
}
@@ -22622,6 +25339,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
"integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -22644,6 +25362,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -22687,6 +25406,7 @@
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
@@ -22696,6 +25416,8 @@
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -22711,6 +25433,7 @@
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
"integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"lodash": "^4.17.20",
"renderkid": "^3.0.0"
@@ -22721,6 +25444,7 @@
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
"integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/schemas": "^29.6.3",
"ansi-styles": "^5.0.0",
@@ -22735,15 +25459,17 @@
"resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
"integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/pretty-ms": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz",
- "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==",
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz",
+ "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parse-ms": "^4.0.0"
},
@@ -22759,6 +25485,7 @@
"resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-4.2.2.tgz",
"integrity": "sha512-uAh96tBW1SsD34VhhDmWuEmqbpfYc/B3j++5MC/6b3Cb8Ow7NJsvKFhg0eoGu2xXX+o9RkahkTK6sUdd8E7g5w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@pkgr/core": "^0.2.7",
"ignore": "^7.0.5",
@@ -22785,13 +25512,15 @@
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
"integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/private": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
"integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -22800,6 +25529,7 @@
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6.0"
}
@@ -22807,19 +25537,22 @@
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "license": "MIT"
},
"node_modules/process-warning": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz",
"integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
@@ -22829,6 +25562,7 @@
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
"integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"kleur": "^3.0.3",
"sisteransi": "^1.0.5"
@@ -22838,10 +25572,11 @@
}
},
"node_modules/protobufjs": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz",
- "integrity": "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz",
+ "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==",
"hasInstallScript": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
@@ -22864,6 +25599,7 @@
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "license": "MIT",
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
@@ -22877,6 +25613,7 @@
"resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
"integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.2",
"debug": "^4.3.4",
@@ -22896,6 +25633,7 @@
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -22903,13 +25641,15 @@
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
},
"node_modules/psl": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",
"integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"punycode": "^2.3.1"
},
@@ -22917,19 +25657,11 @@
"url": "https://github.com/sponsors/lupomontero"
}
},
- "node_modules/psl/node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/public-encrypt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
"integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.1.0",
"browserify-rsa": "^4.0.0",
@@ -22942,21 +25674,28 @@
"node_modules/public-encrypt/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
- "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="
+ "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
+ "license": "MIT"
},
"node_modules/pump": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
"integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
+ "license": "MIT",
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"node_modules/punycode": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw=="
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
},
"node_modules/pure-rand": {
"version": "6.1.0",
@@ -22972,7 +25711,8 @@
"type": "opencollective",
"url": "https://opencollective.com/fast-check"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/q": {
"version": "1.5.1",
@@ -22980,6 +25720,7 @@
"integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
"deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.6.0",
"teleport": ">=0.2.0"
@@ -22989,6 +25730,7 @@
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
"integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
+ "license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.1.0"
},
@@ -23003,22 +25745,15 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz",
"integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==",
- "dev": true
- },
- "node_modules/querystring": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
- "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
- "engines": {
- "node": ">=0.4.x"
- }
+ "dev": true,
+ "license": "MIT"
},
"node_modules/querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/queue-microtask": {
"version": "1.2.3",
@@ -23037,18 +25772,21 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/quick-format-unescaped": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
"integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/quick-lru": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
"integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -23060,12 +25798,14 @@
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/ramda/-/ramda-0.18.0.tgz",
"integrity": "sha512-bSgBktaZE0uDH5KmMpbizsxSNcw9MumqtouUVUrxHZSunm+WdDc/UlzwWFtgqMfngX7TZ12d9QsyWkYK7OoJSw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "^5.1.0"
}
@@ -23074,6 +25814,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "license": "MIT",
"dependencies": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
@@ -23083,6 +25824,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -23091,18 +25833,61 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/raptor-args/-/raptor-args-1.0.3.tgz",
"integrity": "sha512-dxcvspDOzYGTF4lonon711avlxvcX5s/XTqNNGSaz59cy4Tik+Z6jDFDSVGpAaOL71cc01kc3u3AdxgPIKG+RQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/raw-body": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz",
- "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz",
+ "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
- "iconv-lite": "0.6.3",
+ "iconv-lite": "0.7.0",
"unpipe": "1.0.0"
},
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/raw-body/node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/iconv-lite": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/raw-body/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -23122,6 +25907,15 @@
"rc": "cli.js"
}
},
+ "node_modules/rc/node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/rc/node_modules/ini": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
@@ -23141,7 +25935,8 @@
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/read-installed": {
"version": "4.0.3",
@@ -23149,6 +25944,7 @@
"integrity": "sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==",
"deprecated": "This package is no longer supported.",
"dev": true,
+ "license": "ISC",
"dependencies": {
"debuglog": "^1.0.1",
"read-package-json": "^2.0.0",
@@ -23166,6 +25962,7 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver"
}
@@ -23176,6 +25973,7 @@
"integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==",
"deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^7.1.1",
"json-parse-even-better-errors": "^2.3.0",
@@ -23188,6 +25986,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -23199,6 +25998,7 @@
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -23212,19 +26012,14 @@
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/read-package-json/node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
+ }
},
"node_modules/read-package-json/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -23232,155 +26027,67 @@
"node": "*"
}
},
- "node_modules/read-package-json/node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/read-package-json/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/read-pkg": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz",
- "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/normalize-package-data": "^2.4.1",
- "normalize-package-data": "^6.0.0",
- "parse-json": "^7.0.0",
- "type-fest": "^4.2.0"
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
},
"engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
}
},
"node_modules/read-pkg-up": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz",
- "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "find-up": "^6.3.0",
- "read-pkg": "^8.1.0",
- "type-fest": "^4.2.0"
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
},
"engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
}
},
"node_modules/read-pkg-up/node_modules/find-up": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
- "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "locate-path": "^7.1.0",
- "path-exists": "^5.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "4.41.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
- "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
- "dev": true,
- "engines": {
- "node": ">=16"
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg/node_modules/json-parse-even-better-errors": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz",
- "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==",
- "dev": true,
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/read-pkg/node_modules/lines-and-columns": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz",
- "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==",
- "dev": true,
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/read-pkg/node_modules/parse-json": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz",
- "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==",
+ "node_modules/read-pkg-up/node_modules/path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.21.4",
- "error-ex": "^1.3.2",
- "json-parse-even-better-errors": "^3.0.0",
- "lines-and-columns": "^2.0.3",
- "type-fest": "^3.8.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
- "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
- "dev": true,
- "engines": {
- "node": ">=14.16"
+ "pinkie-promise": "^2.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg/node_modules/type-fest": {
- "version": "4.41.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
- "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
- "dev": true,
"engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
}
},
"node_modules/readable-stream": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
"integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
+ "license": "MIT",
"dependencies": {
"abort-controller": "^3.0.0",
"buffer": "^6.0.3",
@@ -23392,60 +26099,11 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/readable-stream/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
- "node_modules/readable-stream/node_modules/events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "engines": {
- "node": ">=0.8.x"
- }
- },
- "node_modules/readable-stream/node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
"node_modules/readdir-glob": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
"integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
+ "license": "Apache-2.0",
"dependencies": {
"minimatch": "^5.1.0"
}
@@ -23454,6 +26112,7 @@
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -23467,6 +26126,7 @@
"integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
"deprecated": "This functionality has been moved to @npmcli/fs",
"dev": true,
+ "license": "ISC",
"dependencies": {
"debuglog": "^1.0.1",
"dezalgo": "^1.0.0",
@@ -23478,6 +26138,7 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "license": "MIT",
"engines": {
"node": ">= 14.18.0"
},
@@ -23491,6 +26152,7 @@
"resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz",
"integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 12.13.0"
}
@@ -23500,6 +26162,7 @@
"resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz",
"integrity": "sha512-+nixG+3NugceyR8O1bLU45qs84JgI3+8EauyRZafLgC9XbdAOIVgwV1Pe2da0YzGo62KzWoZwUpVEQf6qNAXWA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ast-types": "0.9.6",
"esprima": "~3.1.0",
@@ -23515,6 +26178,7 @@
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz",
"integrity": "sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -23524,6 +26188,7 @@
"resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
"integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==",
"dev": true,
+ "license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
@@ -23537,6 +26202,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -23558,6 +26224,7 @@
"resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
"integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimatch": "^3.0.5"
},
@@ -23570,6 +26237,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -23580,6 +26248,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -23592,6 +26261,7 @@
"resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
"integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"define-properties": "^1.2.1",
@@ -23614,6 +26284,7 @@
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
"integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"define-properties": "^1.2.1",
@@ -23645,6 +26316,7 @@
"resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
"integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
@@ -23654,6 +26326,7 @@
"resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
"integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"css-select": "^4.1.3",
"dom-converter": "^0.2.0",
@@ -23665,12 +26338,14 @@
"node_modules/request-light": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/request-light/-/request-light-0.8.0.tgz",
- "integrity": "sha512-bH6E4PMmsEXYrLX6Kr1vu+xI3HproB1vECAwaPSJeroLE1kpWE3HR27uB4icx+6YORu1ajqBJXxuedv8ZQg5Lw=="
+ "integrity": "sha512-bH6E4PMmsEXYrLX6Kr1vu+xI3HproB1vECAwaPSJeroLE1kpWE3HR27uB4icx+6YORu1ajqBJXxuedv8ZQg5Lw==",
+ "license": "MIT"
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -23679,6 +26354,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -23687,20 +26363,23 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
"integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "license": "MIT"
},
"node_modules/resolve": {
- "version": "1.22.10",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
- "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "version": "1.22.11",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
+ "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-core-module": "^2.16.0",
+ "is-core-module": "^2.16.1",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -23717,13 +26396,15 @@
"node_modules/resolve-alpn": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
- "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "license": "MIT"
},
"node_modules/resolve-cwd": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
"integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"resolve-from": "^5.0.0"
},
@@ -23736,6 +26417,7 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -23745,6 +26427,7 @@
"resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
"integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
}
@@ -23754,6 +26437,7 @@
"resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz",
"integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
@@ -23762,6 +26446,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
"integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+ "license": "MIT",
"dependencies": {
"lowercase-keys": "^2.0.0"
},
@@ -23774,6 +26459,7 @@
"resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz",
"integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^2.0.1"
}
@@ -23782,12 +26468,24 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ret": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz",
+ "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
},
"node_modules/retry": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
"integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -23796,6 +26494,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "license": "MIT",
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
@@ -23805,13 +26504,15 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
"integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/rgb2hex": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz",
"integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/rimraf": {
"version": "3.0.2",
@@ -23819,6 +26520,7 @@
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"deprecated": "Rimraf versions prior to v4 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^7.1.3"
},
@@ -23834,6 +26536,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -23845,6 +26548,7 @@
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -23865,26 +26569,89 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
- "node": "*"
+ "node": "*"
+ }
+ },
+ "node_modules/ripemd160": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz",
+ "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==",
+ "license": "MIT",
+ "dependencies": {
+ "hash-base": "^3.1.2",
+ "inherits": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/ripemd160/node_modules/hash-base": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz",
+ "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^2.3.8",
+ "safe-buffer": "^5.2.1",
+ "to-buffer": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/ripemd160": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "node_modules/ripemd160/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
+ "node_modules/ripemd160/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
"dependencies": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/ripemd160/node_modules/readable-stream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "node_modules/ripemd160/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
}
},
+ "node_modules/ripemd160/node_modules/string_decoder/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
"node_modules/router": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
"integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.4.0",
"depd": "^2.0.0",
@@ -23900,12 +26667,14 @@
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz",
"integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/run-applescript": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
- "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
+ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -23914,10 +26683,11 @@
}
},
"node_modules/run-async": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz",
- "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==",
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz",
+ "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
@@ -23940,6 +26710,7 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"queue-microtask": "^1.2.2"
}
@@ -23948,6 +26719,7 @@
"version": "7.8.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
}
@@ -23957,6 +26729,7 @@
"resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-1.0.0.tgz",
"integrity": "sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18.0.0"
}
@@ -23966,6 +26739,7 @@
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
"integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"call-bound": "^1.0.2",
@@ -23980,12 +26754,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/safe-array-concat/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -24003,13 +26771,15 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/safe-push-apply": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
"integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"isarray": "^2.0.5"
@@ -24021,16 +26791,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/safe-push-apply/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
"node_modules/safe-regex-test": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
"integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
@@ -24043,11 +26809,32 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/safe-regex2": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz",
+ "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "ret": "~0.5.0"
+ }
+ },
"node_modules/safe-stable-stringify": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
"integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
@@ -24055,12 +26842,14 @@
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
},
"node_modules/sanitize-html": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.0.tgz",
"integrity": "sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==",
+ "license": "MIT",
"dependencies": {
"deepmerge": "^4.2.2",
"escape-string-regexp": "^4.0.0",
@@ -24074,6 +26863,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
@@ -24087,6 +26877,7 @@
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.3.0"
},
@@ -24101,6 +26892,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
"integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
@@ -24121,6 +26913,7 @@
"url": "https://github.com/sponsors/fb55"
}
],
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
@@ -24132,20 +26925,23 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sax": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
- "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA=="
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz",
+ "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==",
+ "license": "BlueOak-1.0.0"
},
"node_modules/saxes": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
"integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"xmlchars": "^2.2.0"
},
@@ -24154,9 +26950,10 @@
}
},
"node_modules/schema-utils": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz",
- "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
+ "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
+ "license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.9",
"ajv": "^8.9.0",
@@ -24171,15 +26968,34 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/schema-utils/node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
"node_modules/select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
- "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg=="
+ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
+ "license": "MIT"
},
"node_modules/selfsigned": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
"integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
+ "license": "MIT",
"dependencies": {
"@types/node-forge": "^1.3.0",
"node-forge": "^1"
@@ -24193,6 +27009,7 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
@@ -24201,6 +27018,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
"integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.5",
"encodeurl": "^2.0.0",
@@ -24219,27 +27037,29 @@
}
},
"node_modules/serialize-error": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz",
- "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==",
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz",
+ "integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "type-fest": "^2.12.2"
+ "type-fest": "^4.31.0"
},
"engines": {
- "node": ">=14.16"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/serialize-error/node_modules/type-fest": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
- "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
- "node": ">=12.20"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -24250,6 +27070,7 @@
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
"integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
"devOptional": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"randombytes": "^2.1.0"
}
@@ -24258,6 +27079,7 @@
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
"integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
+ "license": "MIT",
"dependencies": {
"accepts": "~1.3.4",
"batch": "0.6.1",
@@ -24275,6 +27097,7 @@
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "license": "MIT",
"dependencies": {
"mime-types": "~2.1.34",
"negotiator": "0.6.3"
@@ -24287,6 +27110,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -24295,6 +27119,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -24303,6 +27128,7 @@
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "license": "MIT",
"dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.3",
@@ -24316,12 +27142,14 @@
"node_modules/serve-index/node_modules/inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "license": "ISC"
},
"node_modules/serve-index/node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -24330,6 +27158,7 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -24340,12 +27169,14 @@
"node_modules/serve-index/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/serve-index/node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -24353,12 +27184,14 @@
"node_modules/serve-index/node_modules/setprototypeof": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "license": "ISC"
},
"node_modules/serve-index/node_modules/statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -24367,6 +27200,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
"integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
+ "license": "MIT",
"dependencies": {
"encodeurl": "^2.0.0",
"escape-html": "^1.0.3",
@@ -24387,6 +27221,7 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -24404,6 +27239,7 @@
"resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
"integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -24419,6 +27255,7 @@
"resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
"integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-errors": "^1.3.0",
@@ -24431,23 +27268,33 @@
"node_modules/setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+ "license": "MIT"
},
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
},
"node_modules/sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "version": "2.4.12",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz",
+ "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==",
+ "license": "(MIT AND BSD-3-Clause)",
"dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "inherits": "^2.0.4",
+ "safe-buffer": "^5.2.1",
+ "to-buffer": "^1.2.0"
},
"bin": {
"sha.js": "bin.js"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/shallow-clone": {
@@ -24455,6 +27302,7 @@
"resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
"integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"kind-of": "^6.0.2"
},
@@ -24466,6 +27314,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -24477,6 +27326,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -24485,6 +27335,7 @@
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
"integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -24497,6 +27348,7 @@
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
"integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"glob": "^7.0.0",
"interpret": "^1.0.0",
@@ -24514,6 +27366,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -24525,6 +27378,7 @@
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -24545,6 +27399,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -24555,13 +27410,15 @@
"node_modules/shlex": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/shlex/-/shlex-2.1.2.tgz",
- "integrity": "sha512-Nz6gtibMVgYeMEhUjp2KuwAgqaJA1K155dU/HuDaEJUGgnmYfVtVZah+uerVWdH8UGnyahhDCgABbYTbs254+w=="
+ "integrity": "sha512-Nz6gtibMVgYeMEhUjp2KuwAgqaJA1K155dU/HuDaEJUGgnmYfVtVZah+uerVWdH8UGnyahhDCgABbYTbs254+w==",
+ "license": "MIT"
},
"node_modules/shx": {
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz",
"integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.3",
"shelljs": "^0.8.5"
@@ -24577,6 +27434,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3",
@@ -24595,6 +27453,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3"
@@ -24610,6 +27469,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
@@ -24627,6 +27487,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
@@ -24645,6 +27506,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
"engines": {
"node": ">=14"
},
@@ -24722,6 +27584,7 @@
"resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.5.tgz",
"integrity": "sha512-r15s9/s+ub/d4bxNXqIUmwp6imVSdTorIRaxoecYjqTVLZ8RuoXr/4EDGwIBo6Waxn7f2gnURX9zuhAfCwaF6Q==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^3.0.1",
"@sinonjs/fake-timers": "^13.0.5",
@@ -24740,6 +27603,7 @@
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz",
"integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^3.0.1"
}
@@ -24748,12 +27612,14 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
"integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/skema": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/skema/-/skema-1.0.2.tgz",
"integrity": "sha512-5LWfF2RSW2B3xfOaY6j49X8aNwsnj9cRVrM5QMF7it+cZvpv5ufiOUT13ps2U52sIbAzs11bdRP6mi5qyg75VQ==",
+ "license": "MIT",
"dependencies": {
"async": "^0.9.0",
"make-array": "^0.1.2",
@@ -24763,13 +27629,15 @@
"node_modules/skema/node_modules/async": {
"version": "0.9.2",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
- "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw=="
+ "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==",
+ "license": "MIT"
},
"node_modules/slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -24779,6 +27647,7 @@
"resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
"integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "*"
}
@@ -24788,6 +27657,7 @@
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
"integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
@@ -24797,6 +27667,7 @@
"version": "0.3.24",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
"integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
+ "license": "MIT",
"dependencies": {
"faye-websocket": "^0.11.3",
"uuid": "^8.3.2",
@@ -24807,17 +27678,19 @@
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/socks": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz",
- "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==",
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ip-address": "^9.0.5",
+ "ip-address": "^10.0.1",
"smart-buffer": "^4.2.0"
},
"engines": {
@@ -24830,6 +27703,7 @@
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
"integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.2",
"debug": "^4.3.4",
@@ -24844,6 +27718,7 @@
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz",
"integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"atomic-sleep": "^1.0.0"
}
@@ -24853,6 +27728,7 @@
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
"integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-plain-obj": "^1.0.0"
},
@@ -24865,6 +27741,7 @@
"resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
"integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"sort-keys": "^1.0.0"
},
@@ -24872,20 +27749,12 @@
"node": ">=0.10.0"
}
},
- "node_modules/sort-keys/node_modules/is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"devOptional": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -24894,6 +27763,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -24903,6 +27773,7 @@
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
"integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -24922,7 +27793,8 @@
"type": "github",
"url": "https://github.com/hejny/spacetrim/blob/main/README.md#%EF%B8%8F-contributing"
}
- ]
+ ],
+ "license": "Apache-2.0"
},
"node_modules/spdx": {
"version": "0.5.2",
@@ -24930,6 +27802,7 @@
"integrity": "sha512-WQbfCQT2uKLsDllnO9ItpcGUiiF1O/ZvBGCyqFZRg122HgiZubpwpZiM7BkmH19HC3XR3Z+DFMGJNzXSPebG8A==",
"deprecated": "see spdx-expression-parse, spdx-satisfies, &c.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"spdx-exceptions": "^1.0.0",
"spdx-license-ids": "^1.0.0"
@@ -24940,6 +27813,7 @@
"resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz",
"integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-find-index": "^1.0.2",
"spdx-expression-parse": "^3.0.0",
@@ -24951,6 +27825,7 @@
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
"integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
@@ -24960,29 +27835,33 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
"integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
- "dev": true
+ "dev": true,
+ "license": "CC-BY-3.0"
},
"node_modules/spdx-expression-parse": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.21",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz",
- "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==",
- "dev": true
+ "version": "3.0.22",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
+ "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
+ "dev": true,
+ "license": "CC0-1.0"
},
"node_modules/spdx-licenses": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/spdx-licenses/-/spdx-licenses-0.0.3.tgz",
"integrity": "sha512-T9bEF+Q2ugCCyFp3c9t5ROjLFGTNxDJBobjK5muQlEM5ATKRDwjprTOwpwbrc/+WcBzHvPck/roTMfC9YHWbCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "0.7.4",
"is2": "0.0.11"
@@ -25001,13 +27880,15 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz",
"integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==",
- "dev": true
+ "dev": true,
+ "license": "(MIT AND CC-BY-3.0)"
},
"node_modules/spdx-satisfies": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz",
"integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"spdx-compare": "^1.0.0",
"spdx-expression-parse": "^3.0.0",
@@ -25018,18 +27899,21 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.5.tgz",
"integrity": "sha512-gJ2SzvQuUNno1/G6sDRHP2CN+Hfi+weHY9E+kTvB8zxH/CTkhazfYazuZcwhXtwWbDKl5CAJ1fBbqAgpkd8CCQ==",
- "dev": true
+ "dev": true,
+ "license": "CC-BY-3.0"
},
"node_modules/spdx/node_modules/spdx-license-ids": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
"integrity": "sha512-qIBFhkh6ILCWNeWEe3ODFPKDYhPJrZpqdNCI2Z+w9lNdH5hoVEkfRLLbRfoIi8fb4xRYmpEOaaMH4G2pwYp/iQ==",
- "dev": true
+ "dev": true,
+ "license": "Unlicense"
},
"node_modules/spdy": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
"integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.1.0",
"handle-thing": "^2.0.0",
@@ -25045,6 +27929,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
"integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.1.0",
"detect-node": "^2.0.4",
@@ -25058,6 +27943,7 @@
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -25071,6 +27957,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
"integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "license": "MIT",
"dependencies": {
"through": "2"
},
@@ -25083,6 +27970,7 @@
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">= 10.x"
}
@@ -25090,13 +27978,15 @@
"node_modules/sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "license": "BSD-3-Clause"
},
"node_modules/stack-utils": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
"integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "^2.0.0"
},
@@ -25109,6 +27999,7 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
"integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -25117,6 +28008,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -25126,6 +28018,7 @@
"resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
"integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"internal-slot": "^1.1.0"
@@ -25138,6 +28031,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
"integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
+ "license": "MIT",
"dependencies": {
"inherits": "~2.0.4",
"readable-stream": "^3.5.0"
@@ -25147,6 +28041,7 @@
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -25161,6 +28056,7 @@
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.3.tgz",
"integrity": "sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==",
"dev": true,
+ "license": "Unlicense",
"engines": {
"node": ">= 0.10.0"
}
@@ -25169,6 +28065,7 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz",
"integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
+ "license": "MIT",
"dependencies": {
"builtin-status-codes": "^3.0.0",
"inherits": "^2.0.4",
@@ -25180,6 +28077,7 @@
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -25193,24 +28091,25 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
"integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/streamx": {
- "version": "2.22.1",
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz",
- "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==",
+ "version": "2.23.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz",
+ "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==",
+ "license": "MIT",
"dependencies": {
+ "events-universal": "^1.0.0",
"fast-fifo": "^1.3.2",
"text-decoder": "^1.1.0"
- },
- "optionalDependencies": {
- "bare-events": "^2.2.0"
}
},
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.2.0"
}
@@ -25220,6 +28119,7 @@
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
"integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"char-regex": "^1.0.2",
"strip-ansi": "^6.0.0"
@@ -25232,6 +28132,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
@@ -25249,6 +28150,7 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -25261,12 +28163,14 @@
"node_modules/string-width-cjs/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
},
"node_modules/string-width/node_modules/ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -25275,9 +28179,10 @@
}
},
"node_modules/string-width/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -25293,6 +28198,7 @@
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
"integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"call-bound": "^1.0.2",
@@ -25314,6 +28220,7 @@
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
"integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"call-bound": "^1.0.2",
@@ -25332,6 +28239,7 @@
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
"integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -25348,6 +28256,7 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -25360,6 +28269,7 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -25372,6 +28282,7 @@
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
"integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -25381,6 +28292,7 @@
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -25390,6 +28302,7 @@
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -25406,12 +28319,14 @@
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -25424,6 +28339,7 @@
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -25435,13 +28351,15 @@
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/taim": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/taim/-/taim-1.1.0.tgz",
"integrity": "sha512-NvqllOkhHKSG6llRKhrRLIzXHnbfyfTdcObDGIEqea9098ierzuowZyYAuHHf+JbpOhfKSisbe2bIVuA2nEaRA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"chalk": "^1.1.1",
"pretty-hrtime": "^1.0.0",
@@ -25453,6 +28371,7 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -25462,6 +28381,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -25471,6 +28391,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
@@ -25487,6 +28408,7 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
@@ -25496,6 +28418,7 @@
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^2.0.0"
},
@@ -25508,6 +28431,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^2.0.0"
},
@@ -25520,23 +28444,29 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/tapable": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz",
- "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
+ "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
"devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
"node_modules/tar-fs": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz",
- "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
+ "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==",
"license": "MIT",
"dependencies": {
"chownr": "^1.1.1",
@@ -25579,6 +28509,7 @@
"version": "3.1.7",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
"integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "license": "MIT",
"dependencies": {
"b4a": "^1.6.4",
"fast-fifo": "^1.2.0",
@@ -25586,13 +28517,14 @@
}
},
"node_modules/terser": {
- "version": "5.43.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz",
- "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==",
+ "version": "5.44.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz",
+ "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==",
"devOptional": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.14.0",
+ "acorn": "^8.15.0",
"commander": "^2.20.0",
"source-map-support": "~0.5.20"
},
@@ -25608,6 +28540,7 @@
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz",
"integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.25",
"jest-worker": "^27.4.5",
@@ -25642,6 +28575,7 @@
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
"integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"merge-stream": "^2.0.0",
@@ -25656,6 +28590,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -25671,6 +28606,7 @@
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -25681,6 +28617,7 @@
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz",
"integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@istanbuljs/schema": "^0.1.2",
"glob": "^10.4.1",
@@ -25694,6 +28631,7 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
"integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
+ "license": "Apache-2.0",
"dependencies": {
"b4a": "^1.6.4"
}
@@ -25703,6 +28641,7 @@
"resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz",
"integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -25714,15 +28653,21 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/thingies": {
- "version": "1.21.0",
- "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz",
- "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz",
+ "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==",
+ "license": "MIT",
"engines": {
"node": ">=10.18"
},
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
"peerDependencies": {
"tslib": "^2"
}
@@ -25732,6 +28677,7 @@
"resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz",
"integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"real-require": "^0.1.0"
}
@@ -25739,21 +28685,30 @@
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "license": "MIT"
},
"node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "license": "MIT",
"dependencies": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
}
},
+ "node_modules/through2/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
"node_modules/through2/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -25767,12 +28722,14 @@
"node_modules/through2/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
},
"node_modules/through2/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
@@ -25780,45 +28737,41 @@
"node_modules/thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
- "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
+ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+ "license": "MIT"
},
"node_modules/tinyexec": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz",
- "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==",
- "dev": true
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz",
+ "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/tinyrainbow": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz",
"integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
- "dependencies": {
- "os-tmpdir": "~1.0.2"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/to-buffer": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz",
- "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz",
+ "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==",
+ "license": "MIT",
"dependencies": {
"isarray": "^2.0.5",
"safe-buffer": "^5.2.1",
@@ -25828,15 +28781,11 @@
"node": ">= 0.4"
}
},
- "node_modules/to-buffer/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
- },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
@@ -25848,6 +28797,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -25857,6 +28807,7 @@
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
"integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"psl": "^1.1.33",
"punycode": "^2.1.1",
@@ -25867,20 +28818,12 @@
"node": ">=6"
}
},
- "node_modules/tough-cookie/node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/tr46": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
"integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"punycode": "^2.3.1"
},
@@ -25888,19 +28831,11 @@
"node": ">=18"
}
},
- "node_modules/tr46/node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/tree-dump": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.3.tgz",
- "integrity": "sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz",
+ "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=10.0"
},
@@ -25917,6 +28852,7 @@
"resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
"integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -25926,6 +28862,7 @@
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
"integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18.12"
},
@@ -25934,18 +28871,19 @@
}
},
"node_modules/ts-jest": {
- "version": "29.4.0",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.0.tgz",
- "integrity": "sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==",
+ "version": "29.4.5",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz",
+ "integrity": "sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bs-logger": "^0.2.6",
- "ejs": "^3.1.10",
"fast-json-stable-stringify": "^2.1.0",
+ "handlebars": "^4.7.8",
"json5": "^2.2.3",
"lodash.memoize": "^4.1.2",
"make-error": "^1.3.6",
- "semver": "^7.7.2",
+ "semver": "^7.7.3",
"type-fest": "^4.41.0",
"yargs-parser": "^21.1.1"
},
@@ -25986,10 +28924,11 @@
}
},
"node_modules/ts-jest/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -26002,6 +28941,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
"integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
},
@@ -26010,10 +28950,11 @@
}
},
"node_modules/ts-loader": {
- "version": "9.5.2",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz",
- "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==",
+ "version": "9.5.4",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz",
+ "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.0",
"enhanced-resolve": "^5.0.0",
@@ -26034,6 +28975,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -26049,6 +28991,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -26061,10 +29004,11 @@
}
},
"node_modules/ts-loader/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -26073,12 +29017,13 @@
}
},
"node_modules/ts-loader/node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+ "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
- "node": ">= 8"
+ "node": ">= 12"
}
},
"node_modules/ts-lsp-client": {
@@ -26086,6 +29031,7 @@
"resolved": "https://registry.npmjs.org/ts-lsp-client/-/ts-lsp-client-1.0.3.tgz",
"integrity": "sha512-0ItrsqvNUM9KNFGbeT1N8jSi9gvasGOvxJUXjGf4P2TX0w250AUWLeRStaSrQbYcFDshDtE5d4BshUmYwodDgw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"json-rpc-2.0": "^1.7.0",
"pino": "^7.0.5",
@@ -26101,13 +29047,15 @@
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
- "dev": true
+ "dev": true,
+ "license": "0BSD"
},
"node_modules/ts-mocha": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-11.1.0.tgz",
"integrity": "sha512-yT7FfzNRCu8ZKkYvAOiH01xNma/vLq6Vit7yINKYFNVP8e5UyrYXSOMIipERTpzVKJQ4Qcos5bQo1tNERNZevQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"ts-mocha": "bin/ts-mocha"
},
@@ -26130,6 +29078,7 @@
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -26173,6 +29122,7 @@
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
@@ -26182,6 +29132,7 @@
"resolved": "https://registry.npmjs.org/ts-sinon/-/ts-sinon-2.0.2.tgz",
"integrity": "sha512-Eh6rXPQruACHPn+/e5HsIMaHZa17tGP/scGjUeW5eJ/Levn8hBV6zSP/6QkEDUP7wLkTyY0yeYikjpTzgC9Gew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^14.6.1",
"@types/sinon": "^9.0.5",
@@ -26194,6 +29145,7 @@
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
"integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"type-detect": "4.0.8"
}
@@ -26203,6 +29155,7 @@
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
"integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^1.7.0"
}
@@ -26212,6 +29165,7 @@
"resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz",
"integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^1.6.0",
"lodash.get": "^4.4.2",
@@ -26222,13 +29176,15 @@
"version": "14.18.63",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz",
"integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/ts-sinon/node_modules/@types/sinon": {
"version": "9.0.11",
"resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.11.tgz",
"integrity": "sha512-PwP4UY33SeeVKodNE37ZlOsR9cReypbMJOhZ7BVE0lB+Hix3efCOxiJWiE5Ia+yL9Cn2Ch72EjFTRze8RZsNtg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/sinonjs__fake-timers": "*"
}
@@ -26238,6 +29194,7 @@
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
@@ -26246,19 +29203,22 @@
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/ts-sinon/node_modules/just-extend": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
"integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/ts-sinon/node_modules/nise": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz",
"integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^1.7.0",
"@sinonjs/fake-timers": "^6.0.0",
@@ -26272,6 +29232,7 @@
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz",
"integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"isarray": "0.0.1"
}
@@ -26282,6 +29243,7 @@
"integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==",
"deprecated": "16.1.1",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^1.8.1",
"@sinonjs/fake-timers": "^6.0.1",
@@ -26300,6 +29262,7 @@
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -26309,8 +29272,8 @@
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
"integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
"dev": true,
+ "license": "MIT",
"optional": true,
- "peer": true,
"dependencies": {
"json5": "^2.2.2",
"minimist": "^1.2.6",
@@ -26325,8 +29288,8 @@
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
"integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
+ "license": "MIT",
"optional": true,
- "peer": true,
"engines": {
"node": ">=4"
}
@@ -26334,13 +29297,16 @@
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD",
+ "peer": true
},
"node_modules/tsx": {
- "version": "4.20.3",
- "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz",
- "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==",
+ "version": "4.20.6",
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz",
+ "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"esbuild": "~0.25.0",
"get-tsconfig": "^4.7.5"
@@ -26372,6 +29338,7 @@
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1"
},
@@ -26384,15 +29351,17 @@
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz",
"integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -26404,6 +29373,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
"integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
+ "license": "MIT",
"dependencies": {
"content-type": "^1.0.5",
"media-typer": "^1.1.0",
@@ -26417,6 +29387,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
"integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
"es-errors": "^1.3.0",
@@ -26431,6 +29402,7 @@
"resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
"integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
"for-each": "^0.3.3",
@@ -26450,6 +29422,7 @@
"resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
"integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.8",
@@ -26471,6 +29444,7 @@
"resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
"integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
@@ -26487,9 +29461,11 @@
}
},
"node_modules/typescript": {
- "version": "5.8.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
- "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "license": "Apache-2.0",
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -26501,13 +29477,29 @@
"node_modules/typescript-collections": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/typescript-collections/-/typescript-collections-1.3.3.tgz",
- "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ=="
+ "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==",
+ "license": "MIT"
+ },
+ "node_modules/uglify-js": {
+ "version": "3.19.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
+ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "optional": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
},
"node_modules/umd-compat-loader": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/umd-compat-loader/-/umd-compat-loader-2.1.2.tgz",
"integrity": "sha512-RkTlsfrCxUISWqiTtYFFJank7b2Hhl4V2pc29nl0xOEGvvuVkpy1xnufhXfTituxgpW0HSrDk0JHlvPYZxEXKQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"ast-types": "^0.9.2",
"loader-utils": "^1.0.3",
@@ -26519,6 +29511,7 @@
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.14.tgz",
"integrity": "sha512-Ebvx7/0lLboCdyEmAw/4GqwBeKIijPveXNiVGhCGCNxc7z26T5he7DC6ARxu8ByKuzUZZcLog+VP8GMyZrBzJw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -26528,6 +29521,7 @@
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.0"
},
@@ -26540,6 +29534,7 @@
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
"integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -26554,6 +29549,7 @@
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
"integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
"has-bigints": "^1.0.2",
@@ -26574,9 +29570,10 @@
"dev": true
},
"node_modules/undici": {
- "version": "6.21.3",
- "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz",
- "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==",
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz",
+ "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==",
+ "license": "MIT",
"engines": {
"node": ">=18.17"
}
@@ -26584,18 +29581,21 @@
"node_modules/undici-types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "license": "MIT"
},
"node_modules/unescape-html": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/unescape-html/-/unescape-html-1.1.0.tgz",
- "integrity": "sha512-O9/yBNqIkArjS597iHez5hAaAdn7b8/230SX8IncgXAX5tWI9XlEQYaz6Qbou0Sloa9n6lx9G5s6hg5qhJyzGg=="
+ "integrity": "sha512-O9/yBNqIkArjS597iHez5hAaAdn7b8/230SX8IncgXAX5tWI9XlEQYaz6Qbou0Sloa9n6lx9G5s6hg5qhJyzGg==",
+ "license": "MIT"
},
"node_modules/unicorn-magic": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
"integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -26608,6 +29608,7 @@
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
"integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4.0.0"
}
@@ -26616,6 +29617,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -26624,14 +29626,15 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
"integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/update-browserslist-db": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
- "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz",
+ "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
"devOptional": true,
"funding": [
{
@@ -26647,6 +29650,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
"escalade": "^3.2.0",
"picocolors": "^1.1.1"
@@ -26662,25 +29666,23 @@
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"punycode": "^2.1.0"
}
},
- "node_modules/uri-js/node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/url": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
- "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==",
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz",
+ "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==",
+ "license": "MIT",
"dependencies": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
+ "punycode": "^1.4.1",
+ "qs": "^6.12.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
"node_modules/url-parse": {
@@ -26688,22 +29690,31 @@
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
}
},
+ "node_modules/url/node_modules/punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "license": "MIT"
+ },
"node_modules/urlpattern-polyfill": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz",
"integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/userhome": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.1.tgz",
"integrity": "sha512-5cnLm4gseXjAclKowC4IjByaGsjtAoV6PrOQOljplNB54ReUYJP8HdAFq2muHinSDAh09PPX/uXDPfdxRHvuSA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
@@ -26712,6 +29723,8 @@
"version": "0.12.5",
"resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
"integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"is-arguments": "^1.0.4",
@@ -26723,24 +29736,28 @@
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
},
"node_modules/util-extend": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
"integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/utila": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
"integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4.0"
}
@@ -26753,6 +29770,7 @@
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
+ "license": "MIT",
"bin": {
"uuid": "dist/esm/bin/uuid"
}
@@ -26761,13 +29779,15 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/v8-to-istanbul": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
"integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.12",
"@types/istanbul-lib-coverage": "^2.0.1",
@@ -26782,6 +29802,7 @@
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
@@ -26791,6 +29812,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -26799,6 +29821,7 @@
"version": "4.1.8",
"resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz",
"integrity": "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==",
+ "license": "MIT",
"dependencies": {
"jsonc-parser": "^3.0.0",
"vscode-languageserver-textdocument": "^1.0.1",
@@ -26814,6 +29837,7 @@
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
"integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
+ "license": "MIT",
"engines": {
"node": ">=14.0.0"
}
@@ -26823,6 +29847,7 @@
"resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz",
"integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimatch": "^5.1.0",
"semver": "^7.3.7",
@@ -26837,6 +29862,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -26845,10 +29871,11 @@
}
},
"node_modules/vscode-languageclient/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -26860,6 +29887,7 @@
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz",
"integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==",
+ "license": "MIT",
"dependencies": {
"vscode-languageserver-protocol": "3.17.5"
},
@@ -26871,6 +29899,7 @@
"version": "3.17.5",
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
"integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
+ "license": "MIT",
"dependencies": {
"vscode-jsonrpc": "8.2.0",
"vscode-languageserver-types": "3.17.5"
@@ -26879,28 +29908,33 @@
"node_modules/vscode-languageserver-textdocument": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
- "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="
+ "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
+ "license": "MIT"
},
"node_modules/vscode-languageserver-types": {
"version": "3.17.5",
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
- "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
+ "license": "MIT"
},
"node_modules/vscode-nls": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz",
- "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng=="
+ "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==",
+ "license": "MIT"
},
"node_modules/vscode-uri": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz",
- "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ=="
+ "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==",
+ "license": "MIT"
},
"node_modules/w3c-xmlserializer": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
"integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"xml-name-validator": "^5.0.0"
},
@@ -26913,6 +29947,7 @@
"resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz",
"integrity": "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.2",
"commander": "^9.3.0",
@@ -26930,6 +29965,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -26945,6 +29981,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -26961,6 +29998,7 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
"integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || >=14"
}
@@ -26970,6 +30008,7 @@
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
"integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"makeerror": "1.0.12"
}
@@ -26979,6 +30018,7 @@
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
"integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -26991,6 +30031,7 @@
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
"integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "license": "MIT",
"dependencies": {
"minimalistic-assert": "^1.0.0"
}
@@ -27000,6 +30041,7 @@
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
"integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"defaults": "^1.0.3"
@@ -27010,6 +30052,7 @@
"resolved": "https://registry.npmjs.org/wdio/-/wdio-6.0.1.tgz",
"integrity": "sha512-mH5/Emi+F9gI7IQTuWA8/TRjS1oBg/gQonV0sSucgUMGEVU+e3Ng/wm9v86/OAHo4HAz/B5GA0+WW7cVHVo3eA==",
"deprecated": "This package got deprecated. Please use the 'create-wdio' starter toolkit via: 'npm init wdio ./path/to/project' or 'yarn create wdio ./path/to/project'.",
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.2",
"commander": "^8.2.0",
@@ -27024,6 +30067,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -27038,6 +30082,7 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -27053,14 +30098,16 @@
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "license": "MIT",
"engines": {
"node": ">= 12"
}
},
"node_modules/wdio/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -27073,6 +30120,7 @@
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
"integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
@@ -27080,23 +30128,26 @@
"node_modules/web-tree-sitter": {
"version": "0.22.6",
"resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.22.6.tgz",
- "integrity": "sha512-hS87TH71Zd6mGAmYCvlgxeGDjqd9GTeqXNqTT+u0Gs51uIozNIaaq/kUAbV/Zf56jb2ZOyG8BxZs2GG9wbLi6Q=="
+ "integrity": "sha512-hS87TH71Zd6mGAmYCvlgxeGDjqd9GTeqXNqTT+u0Gs51uIozNIaaq/kUAbV/Zf56jb2ZOyG8BxZs2GG9wbLi6Q==",
+ "license": "MIT"
},
"node_modules/webdriver": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.16.2.tgz",
- "integrity": "sha512-T7QKqD+N0hfvrxq/am5wqdOuyOy7F2tGS7X2f/7jyhrxSPG6Q0cNkSt4gCwla+q3nDMivCP0QIPc7mAVSx5AYQ==",
+ "version": "9.20.1",
+ "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.20.1.tgz",
+ "integrity": "sha512-QtvYqPai2NOnq7qePPH6kNSwk7+tnmSvnlOnY8dIT/Y24TPdQp44NjF/BUYAWIlqoBlZqHClQFTSVwT2qvO2Tw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0",
"@types/ws": "^8.5.3",
- "@wdio/config": "9.16.2",
- "@wdio/logger": "9.16.2",
+ "@wdio/config": "9.20.1",
+ "@wdio/logger": "9.18.0",
"@wdio/protocols": "9.16.2",
- "@wdio/types": "9.16.2",
- "@wdio/utils": "9.16.2",
+ "@wdio/types": "9.20.0",
+ "@wdio/utils": "9.20.1",
"deepmerge-ts": "^7.0.3",
- "undici": "^6.20.1",
+ "https-proxy-agent": "^7.0.6",
+ "undici": "^6.21.3",
"ws": "^8.8.0"
},
"engines": {
@@ -27104,35 +30155,38 @@
}
},
"node_modules/webdriver/node_modules/@types/node": {
- "version": "20.19.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.2.tgz",
- "integrity": "sha512-9pLGGwdzOUBDYi0GNjM97FIA+f92fqSke6joWeBjWXllfNxZBs7qeMF7tvtOIsbY45xkWkxrdwUfUf3MnQa9gA==",
+ "version": "20.19.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
+ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
},
"node_modules/webdriverio": {
- "version": "9.16.2",
- "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.16.2.tgz",
- "integrity": "sha512-aRcfBZyY+OFqz2DI0ZYmMahGlH3h/clAXXOQSFN5QfrHG4Cjuo5xy3lq4tVfszjEJ813+wwC4HJLbgDmMrPXkA==",
+ "version": "9.20.1",
+ "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.20.1.tgz",
+ "integrity": "sha512-QVM/asb5sDESz37ow/BAOA0z2HtUJsuAjPKHdw+Vx92PaQP3EfHwTgxK2T5rgwa0WRNh+c+n/0nEqIvqBl01sA==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"@types/node": "^20.11.30",
"@types/sinonjs__fake-timers": "^8.1.5",
- "@wdio/config": "9.16.2",
- "@wdio/logger": "9.16.2",
+ "@wdio/config": "9.20.1",
+ "@wdio/logger": "9.18.0",
"@wdio/protocols": "9.16.2",
"@wdio/repl": "9.16.2",
- "@wdio/types": "9.16.2",
- "@wdio/utils": "9.16.2",
+ "@wdio/types": "9.20.0",
+ "@wdio/utils": "9.20.1",
"archiver": "^7.0.1",
"aria-query": "^5.3.0",
"cheerio": "^1.0.0-rc.12",
"css-shorthand-properties": "^1.1.1",
"css-value": "^0.0.1",
"grapheme-splitter": "^1.0.4",
- "htmlfy": "^0.6.0",
+ "htmlfy": "^0.8.1",
"is-plain-obj": "^4.1.0",
"jszip": "^3.10.1",
"lodash.clonedeep": "^4.5.0",
@@ -27140,9 +30194,9 @@
"query-selector-shadow-dom": "^1.0.1",
"resq": "^1.11.0",
"rgb2hex": "0.2.5",
- "serialize-error": "^11.0.3",
+ "serialize-error": "^12.0.0",
"urlpattern-polyfill": "^10.0.0",
- "webdriver": "9.16.2"
+ "webdriver": "9.20.1"
},
"engines": {
"node": ">=18.20.0"
@@ -27157,19 +30211,28 @@
}
},
"node_modules/webdriverio/node_modules/@types/node": {
- "version": "20.19.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.2.tgz",
- "integrity": "sha512-9pLGGwdzOUBDYi0GNjM97FIA+f92fqSke6joWeBjWXllfNxZBs7qeMF7tvtOIsbY45xkWkxrdwUfUf3MnQa9gA==",
+ "version": "20.19.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
+ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
},
+ "node_modules/webdriverio/node_modules/@types/sinonjs__fake-timers": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz",
+ "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/webdriverio/node_modules/is-plain-obj": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
"integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -27182,40 +30245,44 @@
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
"integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=12"
}
},
"node_modules/webpack": {
- "version": "5.99.9",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz",
- "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==",
+ "version": "5.103.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.103.0.tgz",
+ "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==",
"devOptional": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
- "@types/estree": "^1.0.6",
+ "@types/estree": "^1.0.8",
"@types/json-schema": "^7.0.15",
"@webassemblyjs/ast": "^1.14.1",
"@webassemblyjs/wasm-edit": "^1.14.1",
"@webassemblyjs/wasm-parser": "^1.14.1",
- "acorn": "^8.14.0",
- "browserslist": "^4.24.0",
+ "acorn": "^8.15.0",
+ "acorn-import-phases": "^1.0.3",
+ "browserslist": "^4.26.3",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.1",
+ "enhanced-resolve": "^5.17.3",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.11",
"json-parse-even-better-errors": "^2.3.1",
- "loader-runner": "^4.2.0",
+ "loader-runner": "^4.3.1",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
- "schema-utils": "^4.3.2",
- "tapable": "^2.1.1",
+ "schema-utils": "^4.3.3",
+ "tapable": "^2.3.0",
"terser-webpack-plugin": "^5.3.11",
- "watchpack": "^2.4.1",
- "webpack-sources": "^3.2.3"
+ "watchpack": "^2.4.4",
+ "webpack-sources": "^3.3.3"
},
"bin": {
"webpack": "bin/webpack.js"
@@ -27238,6 +30305,8 @@
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz",
"integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"@discoveryjs/json-ext": "^0.6.1",
"@webpack-cli/configtest": "^3.0.1",
@@ -27280,6 +30349,7 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
"integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -27289,6 +30359,7 @@
"resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
"integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.13.0"
}
@@ -27298,6 +30369,7 @@
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
"integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"resolve": "^1.20.0"
},
@@ -27306,13 +30378,14 @@
}
},
"node_modules/webpack-dev-middleware": {
- "version": "7.4.2",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz",
- "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==",
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz",
+ "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==",
+ "license": "MIT",
"dependencies": {
"colorette": "^2.0.10",
- "memfs": "^4.6.0",
- "mime-types": "^2.1.31",
+ "memfs": "^4.43.1",
+ "mime-types": "^3.0.1",
"on-finished": "^2.4.1",
"range-parser": "^1.2.1",
"schema-utils": "^4.0.0"
@@ -27333,29 +30406,11 @@
}
}
},
- "node_modules/webpack-dev-middleware/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/webpack-dev-middleware/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/webpack-dev-server": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz",
"integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==",
+ "license": "MIT",
"dependencies": {
"@types/bonjour": "^3.5.13",
"@types/connect-history-api-fallback": "^1.5.4",
@@ -27412,6 +30467,7 @@
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "license": "MIT",
"dependencies": {
"mime-types": "~2.1.34",
"negotiator": "0.6.3"
@@ -27424,6 +30480,7 @@
"version": "1.20.3",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
"integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"content-type": "~1.0.5",
@@ -27447,6 +30504,7 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -27470,6 +30528,7 @@
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "5.2.1"
},
@@ -27481,6 +30540,7 @@
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
"integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -27488,12 +30548,14 @@
"node_modules/webpack-dev-server/node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "license": "MIT"
},
"node_modules/webpack-dev-server/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -27501,12 +30563,14 @@
"node_modules/webpack-dev-server/node_modules/debug/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/webpack-dev-server/node_modules/express": {
"version": "4.21.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
"integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
@@ -27552,6 +30616,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
"integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "license": "MIT",
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~2.0.0",
@@ -27569,6 +30634,7 @@
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -27577,6 +30643,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -27584,10 +30651,27 @@
"node": ">= 6"
}
},
+ "node_modules/webpack-dev-server/node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/webpack-dev-server/node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -27599,6 +30683,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz",
"integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==",
+ "license": "MIT",
"engines": {
"node": ">= 10"
}
@@ -27607,6 +30692,7 @@
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -27615,6 +30701,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
"integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
@@ -27623,6 +30710,7 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -27631,6 +30719,7 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -27642,6 +30731,7 @@
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -27649,12 +30739,14 @@
"node_modules/webpack-dev-server/node_modules/path-to-regexp": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
- "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
+ "license": "MIT"
},
"node_modules/webpack-dev-server/node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -27666,6 +30758,7 @@
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
"integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.0.6"
},
@@ -27680,6 +30773,7 @@
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
@@ -27694,6 +30788,7 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -27705,6 +30800,7 @@
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
"integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "license": "MIT",
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
@@ -27728,6 +30824,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -27736,6 +30833,7 @@
"version": "1.16.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
"integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "license": "MIT",
"dependencies": {
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
@@ -27750,6 +30848,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -27758,6 +30857,7 @@
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "license": "MIT",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
@@ -27771,6 +30871,7 @@
"resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz",
"integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clone-deep": "^4.0.1",
"flat": "^5.0.2",
@@ -27785,6 +30886,7 @@
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz",
"integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==",
"devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=10.13.0"
}
@@ -27794,6 +30896,7 @@
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"devOptional": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
@@ -27807,24 +30910,17 @@
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"devOptional": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
- "node_modules/webpack/node_modules/events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "devOptional": true,
- "engines": {
- "node": ">=0.8.x"
- }
- },
"node_modules/webpack/node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -27834,6 +30930,7 @@
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"devOptional": true,
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -27845,6 +30942,7 @@
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
"integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+ "license": "Apache-2.0",
"dependencies": {
"http-parser-js": ">=0.5.1",
"safe-buffer": ">=5.1.0",
@@ -27858,6 +30956,7 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=0.8.0"
}
@@ -27867,6 +30966,7 @@
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
"integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"iconv-lite": "0.6.3"
},
@@ -27879,6 +30979,7 @@
"resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
"integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -27888,6 +30989,7 @@
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
"integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tr46": "^5.1.0",
"webidl-conversions": "^7.0.0"
@@ -27900,6 +31002,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -27915,6 +31018,7 @@
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
"integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-bigint": "^1.1.0",
"is-boolean-object": "^1.2.1",
@@ -27934,6 +31038,7 @@
"resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
"integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
"function.prototype.name": "^1.1.6",
@@ -27956,17 +31061,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/which-builtin-type/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
"node_modules/which-collection": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
"integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-map": "^2.0.3",
"is-set": "^2.0.3",
@@ -27984,7 +31084,8 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
"integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/which-pm-runs": {
"version": "1.1.0",
@@ -27999,6 +31100,7 @@
"version": "1.1.19",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
"integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
+ "license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.8",
@@ -28048,13 +31150,15 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
"integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/win-ca": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/win-ca/-/win-ca-3.5.1.tgz",
"integrity": "sha512-RNy9gpBS6cxWHjfbqwBA7odaHyT+YQNhtdpJZwYCFoxB/Dq22oeOZ9YCXMwjhLytKpo7JJMnKdJ/ve7N12zzfQ==",
"hasInstallScript": true,
+ "license": "MIT",
"dependencies": {
"is-electron": "^2.2.0",
"make-dir": "^1.3.0",
@@ -28066,6 +31170,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
"integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "license": "MIT",
"dependencies": {
"pify": "^3.0.0"
},
@@ -28073,25 +31178,44 @@
"node": ">=4"
}
},
+ "node_modules/win-ca/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/workerpool": {
- "version": "9.3.3",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.3.tgz",
- "integrity": "sha512-slxCaKbYjEdFT/o2rH9xS1hf4uRDch1w7Uo+apxhZ+sf/1d9e0ZVkn42kPNGP2dgjIx6YFvSevj0zHvbWe2jdw==",
- "dev": true
+ "version": "9.3.4",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz",
+ "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==",
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
@@ -28109,6 +31233,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -28125,6 +31250,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -28138,12 +31264,14 @@
"node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
},
"node_modules/wrap-ansi-cjs/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -28154,9 +31282,10 @@
}
},
"node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -28165,9 +31294,10 @@
}
},
"node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -28176,9 +31306,10 @@
}
},
"node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -28192,13 +31323,15 @@
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
},
"node_modules/write-file-atomic": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
"integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4",
"signal-exit": "^3.0.7"
@@ -28211,12 +31344,14 @@
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/ws": {
"version": "8.18.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
"integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
},
@@ -28233,11 +31368,27 @@
}
}
},
+ "node_modules/wsl-utils": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
+ "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-wsl": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/xml-name-validator": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
"integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=18"
}
@@ -28246,6 +31397,7 @@
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
"integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
+ "license": "MIT",
"dependencies": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
@@ -28258,6 +31410,7 @@
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "license": "MIT",
"engines": {
"node": ">=4.0"
}
@@ -28266,6 +31419,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz",
"integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==",
+ "license": "MIT",
"dependencies": {
"@oozcitak/dom": "1.15.10",
"@oozcitak/infra": "1.0.8",
@@ -28280,6 +31434,7 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "license": "MIT",
"dependencies": {
"sprintf-js": "~1.0.2"
}
@@ -28288,6 +31443,7 @@
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "license": "MIT",
"dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -28300,12 +31456,14 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.4"
}
@@ -28314,6 +31472,7 @@
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
"engines": {
"node": ">=10"
}
@@ -28322,12 +31481,14 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/yaml": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
"integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
+ "license": "ISC",
"engines": {
"node": ">= 14"
}
@@ -28336,6 +31497,7 @@
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.13.0.tgz",
"integrity": "sha512-CzekVjFOUkiXI6tg3BPuSkxE60keDT4/+LjPLXwnt4gCRzaaWMCjT92NxOHv1derbBLHWoecay48tse/De181Q==",
+ "license": "MIT",
"dependencies": {
"ajv": "^8.11.0",
"lodash": "4.17.21",
@@ -28359,6 +31521,7 @@
"version": "2.8.7",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
+ "license": "MIT",
"optional": true,
"bin": {
"prettier": "bin-prettier.js"
@@ -28373,12 +31536,14 @@
"node_modules/yaml-language-server/node_modules/request-light": {
"version": "0.5.8",
"resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz",
- "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg=="
+ "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==",
+ "license": "MIT"
},
"node_modules/yaml-language-server/node_modules/vscode-jsonrpc": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz",
"integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==",
+ "license": "MIT",
"engines": {
"node": ">=8.0.0 || >=10.0.0"
}
@@ -28387,6 +31552,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz",
"integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==",
+ "license": "MIT",
"dependencies": {
"vscode-languageserver-protocol": "3.16.0"
},
@@ -28398,6 +31564,7 @@
"version": "3.16.0",
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz",
"integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==",
+ "license": "MIT",
"dependencies": {
"vscode-jsonrpc": "6.0.0",
"vscode-languageserver-types": "3.16.0"
@@ -28406,13 +31573,15 @@
"node_modules/yaml-language-server/node_modules/vscode-languageserver-types": {
"version": "3.16.0",
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
- "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA=="
+ "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
+ "license": "MIT"
},
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -28431,6 +31600,7 @@
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -28440,6 +31610,7 @@
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
"integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"camelcase": "^6.0.0",
"decamelize": "^4.0.0",
@@ -28455,6 +31626,7 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
"integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -28462,17 +31634,29 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/yargs-unparser/node_modules/is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/yargs/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/yargs/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -28487,6 +31671,7 @@
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
@@ -28512,6 +31697,7 @@
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
@@ -28521,6 +31707,7 @@
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -28530,6 +31717,7 @@
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -28538,10 +31726,11 @@
}
},
"node_modules/yoctocolors": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz",
- "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz",
+ "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -28550,10 +31739,11 @@
}
},
"node_modules/yoctocolors-cjs": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
- "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz",
+ "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -28565,6 +31755,7 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz",
"integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==",
+ "license": "MIT",
"dependencies": {
"archiver-utils": "^5.0.0",
"compress-commons": "^6.0.2",
@@ -28575,26 +31766,30 @@
}
},
"node_modules/zod": {
- "version": "3.25.67",
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz",
- "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==",
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "license": "MIT",
+ "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
},
"node_modules/zod-to-json-schema": {
- "version": "3.24.6",
- "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz",
- "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==",
+ "version": "3.25.0",
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz",
+ "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==",
+ "license": "ISC",
"peerDependencies": {
- "zod": "^3.24.1"
+ "zod": "^3.25 || ^4"
}
},
"node_modules/zx": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/zx/-/zx-8.6.0.tgz",
- "integrity": "sha512-CpOskNj7nNW19z5DkOTHX24Yh1qnnx1oANn8EnD3QbCUBnZpuennJaYkb4zea5GJCxT6/IdxeiA5nweQ1S2YtA==",
+ "version": "8.8.5",
+ "resolved": "https://registry.npmjs.org/zx/-/zx-8.8.5.tgz",
+ "integrity": "sha512-SNgDF5L0gfN7FwVOdEFguY3orU5AkfFZm9B5YSHog/UDHv+lvmd82ZAsOenOkQixigwH2+yyH198AwNdKhj+RA==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"zx": "build/cli.js"
},
@@ -28604,17 +31799,17 @@
},
"server/aws-lsp-antlr4": {
"name": "@aws/lsp-antlr4",
- "version": "0.1.18",
+ "version": "0.1.21",
"license": "Apache-2.0",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/lsp-core": "^0.0.14"
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-core": "^0.0.17"
},
"devDependencies": {
"@babel/plugin-transform-modules-commonjs": "^7.24.1",
"@types/jest": "29.5.14",
- "antlr4-c3": "3.4.2",
- "antlr4ng": "3.0.14",
+ "antlr4-c3": "3.4.4",
+ "antlr4ng": "3.0.16",
"antlr4ng-cli": "^2.0.0",
"babel-plugin-transform-import-meta": "^2.3.2",
"jest": "^29.7.0",
@@ -28635,6 +31830,7 @@
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"dev": true,
+ "license": "MIT",
"bin": {
"prettier": "bin-prettier.js"
},
@@ -28649,7 +31845,7 @@
"name": "@aws/lsp-buildspec",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-json": "*",
"@aws/lsp-yaml": "*",
"vscode-languageserver": "^9.0.1",
@@ -28660,7 +31856,7 @@
"name": "@aws/lsp-cloudformation",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-core": "*",
"@aws/lsp-json": "*",
"vscode-languageserver": "^9.0.1",
@@ -28669,8 +31865,10 @@
},
"server/aws-lsp-codewhisperer": {
"name": "@aws/lsp-codewhisperer",
- "version": "0.0.75",
+ "version": "0.0.93",
"bundleDependencies": [
+ "@amzn/codewhisperer",
+ "@amzn/codewhisperer-runtime",
"@amzn/codewhisperer-streaming",
"@amzn/amazon-q-developer-streaming-client"
],
@@ -28678,18 +31876,20 @@
"license": "Apache-2.0",
"dependencies": {
"@amzn/amazon-q-developer-streaming-client": "file:../../core/q-developer-streaming-client/amzn-amazon-q-developer-streaming-client-1.0.0.tgz",
+ "@amzn/codewhisperer": "file:../../core/codewhisperer/amzn-codewhisperer-1.0.0.tgz",
+ "@amzn/codewhisperer-runtime": "file:../../core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz",
"@amzn/codewhisperer-streaming": "file:../../core/codewhisperer-streaming/amzn-codewhisperer-streaming-1.0.0.tgz",
+ "@aws-sdk/types": "^3.734.0",
"@aws-sdk/util-arn-parser": "^3.723.0",
"@aws-sdk/util-retry": "^3.374.0",
- "@aws/chat-client-ui-types": "^0.1.56",
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/lsp-core": "^0.0.14",
+ "@aws/chat-client-ui-types": "0.1.68",
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-core": "^0.0.17",
"@modelcontextprotocol/sdk": "^1.15.0",
"@smithy/node-http-handler": "^2.5.0",
"adm-zip": "^0.5.10",
"archiver": "^7.0.1",
"async-mutex": "^0.5.0",
- "aws-sdk": "^2.1403.0",
"axios": "^1.8.4",
"chokidar": "^4.0.3",
"deepmerge": "^4.3.1",
@@ -28720,6 +31920,7 @@
"@types/archiver": "^6.0.2",
"@types/diff": "^7.0.2",
"@types/encoding-japanese": "^2.2.1",
+ "@types/escape-html": "^1.0.4",
"@types/ignore-walk": "^4.0.3",
"@types/local-indexing": "file:./types/types-local-indexing-1.1.0.tgz",
"@types/lokijs": "^1.5.14",
@@ -28745,6 +31946,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz",
"integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^2.12.0",
"tslib": "^2.6.2"
@@ -28757,6 +31959,7 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz",
"integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/abort-controller": "^2.2.0",
"@smithy/protocol-http": "^3.3.0",
@@ -28772,6 +31975,7 @@
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz",
"integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^2.12.0",
"tslib": "^2.6.2"
@@ -28784,6 +31988,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz",
"integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==",
+ "license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^2.12.0",
"@smithy/util-uri-escape": "^2.2.0",
@@ -28797,6 +32002,7 @@
"version": "2.12.0",
"resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz",
"integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -28808,6 +32014,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz",
"integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==",
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -28822,8 +32029,8 @@
"dependencies": {
"@aws-sdk/client-sso-oidc": "^3.616.0",
"@aws-sdk/token-providers": "^3.744.0",
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/lsp-core": "^0.0.12",
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-core": "0.0.17",
"@smithy/node-http-handler": "^3.2.5",
"@smithy/shared-ini-file-loader": "^4.0.1",
"https-proxy-agent": "^7.0.5",
@@ -28851,30 +32058,12 @@
"node": ">=18.0.0"
}
},
- "server/aws-lsp-identity/node_modules/@aws/lsp-core": {
- "version": "0.0.12",
- "resolved": "https://registry.npmjs.org/@aws/lsp-core/-/lsp-core-0.0.12.tgz",
- "integrity": "sha512-FNbbvzUZQKtUE/LHGsI8b05+M44h47f7ExlET1WeOnhfjDWu7n+wlHRkPZkdsEe1z5pbluGNBaiTO/cV9A2qQQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws/language-server-runtimes": "^0.2.109",
- "@gerhobbelt/gitignore-parser": "^0.2.0-9",
- "cross-spawn": "7.0.6",
- "jose": "^5.2.4",
- "request-light": "^0.8.0",
- "vscode-languageserver-textdocument": "^1.0.8",
- "vscode-languageserver-types": "^3.17.3",
- "vscode-uri": "^3.1.0"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"server/aws-lsp-identity/node_modules/@smithy/types": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
"integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -28884,16 +32073,17 @@
},
"server/aws-lsp-json": {
"name": "@aws/lsp-json",
- "version": "0.1.18",
+ "version": "0.1.22",
"license": "Apache-2.0",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/lsp-core": "^0.0.14",
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-core": "^0.0.17",
"vscode-languageserver": "^9.0.1",
"vscode-languageserver-textdocument": "^1.0.8"
},
"devDependencies": {
- "c8": "^10.1.2"
+ "c8": "^10.1.2",
+ "ts-mocha": "^11.1.0"
},
"engines": {
"node": ">=18.0.0"
@@ -28904,8 +32094,8 @@
"version": "0.0.1",
"license": "Apache-2.0",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/lsp-core": "^0.0.12",
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-core": "0.0.17",
"vscode-languageserver": "^9.0.1"
},
"devDependencies": {
@@ -28929,30 +32119,12 @@
"node": ">=18.0.0"
}
},
- "server/aws-lsp-notification/node_modules/@aws/lsp-core": {
- "version": "0.0.12",
- "resolved": "https://registry.npmjs.org/@aws/lsp-core/-/lsp-core-0.0.12.tgz",
- "integrity": "sha512-FNbbvzUZQKtUE/LHGsI8b05+M44h47f7ExlET1WeOnhfjDWu7n+wlHRkPZkdsEe1z5pbluGNBaiTO/cV9A2qQQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws/language-server-runtimes": "^0.2.109",
- "@gerhobbelt/gitignore-parser": "^0.2.0-9",
- "cross-spawn": "7.0.6",
- "jose": "^5.2.4",
- "request-light": "^0.8.0",
- "vscode-languageserver-textdocument": "^1.0.8",
- "vscode-languageserver-types": "^3.17.3",
- "vscode-uri": "^3.1.0"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"server/aws-lsp-notification/node_modules/@smithy/types": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
"integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -28962,12 +32134,12 @@
},
"server/aws-lsp-partiql": {
"name": "@aws/lsp-partiql",
- "version": "0.0.17",
+ "version": "0.0.19",
"license": "Apache-2.0",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
- "antlr4-c3": "3.4.2",
- "antlr4ng": "3.0.14",
+ "@aws/language-server-runtimes": "0.3.6",
+ "antlr4-c3": "3.4.4",
+ "antlr4ng": "3.0.16",
"web-tree-sitter": "0.22.6"
},
"devDependencies": {
@@ -28987,39 +32159,20 @@
"dependencies": {
"@aws-sdk/client-s3": "^3.623.0",
"@aws-sdk/types": "^3.734.0",
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/lsp-core": "^0.0.12",
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-core": "0.0.17",
"vscode-languageserver": "^9.0.1",
"vscode-languageserver-textdocument": "^1.0.8"
}
},
- "server/aws-lsp-s3/node_modules/@aws/lsp-core": {
- "version": "0.0.12",
- "resolved": "https://registry.npmjs.org/@aws/lsp-core/-/lsp-core-0.0.12.tgz",
- "integrity": "sha512-FNbbvzUZQKtUE/LHGsI8b05+M44h47f7ExlET1WeOnhfjDWu7n+wlHRkPZkdsEe1z5pbluGNBaiTO/cV9A2qQQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws/language-server-runtimes": "^0.2.109",
- "@gerhobbelt/gitignore-parser": "^0.2.0-9",
- "cross-spawn": "7.0.6",
- "jose": "^5.2.4",
- "request-light": "^0.8.0",
- "vscode-languageserver-textdocument": "^1.0.8",
- "vscode-languageserver-types": "^3.17.3",
- "vscode-uri": "^3.1.0"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"server/aws-lsp-yaml": {
"name": "@aws/lsp-yaml",
- "version": "0.1.18",
+ "version": "0.1.22",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/lsp-core": "^0.0.14",
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-core": "^0.0.17",
"vscode-languageserver": "^9.0.1",
"vscode-languageserver-textdocument": "^1.0.8",
"yaml-language-server": "1.13.0"
@@ -29032,7 +32185,7 @@
"name": "@amzn/device-sso-auth-lsp",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"vscode-languageserver": "^9.0.1"
},
"devDependencies": {
@@ -29043,12 +32196,13 @@
"name": "@aws/hello-world-lsp",
"version": "0.0.1",
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"vscode-languageserver": "^9.0.1"
},
"devDependencies": {
"c8": "^10.1.2",
"ts-loader": "^9.4.4",
+ "ts-mocha": "^11.1.0",
"webpack": "^5.94.0",
"webpack-cli": "^6.0.1"
}
diff --git a/package.json b/package.json
index 82468102ab..b5b627ef6e 100644
--- a/package.json
+++ b/package.json
@@ -36,7 +36,7 @@
"ci:generate:agentic:attribution": "ts-node ./script/prepare-agentic-attribution-dependencies.ts && ./script/generate-agentic-attribution.sh && git restore package.json"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.116",
+ "@aws/language-server-runtimes": "0.3.6",
"@smithy/types": "4.2.0",
"clean": "^4.0.2",
"typescript": "^5.8.2"
diff --git a/server/aws-lsp-antlr4/CHANGELOG.md b/server/aws-lsp-antlr4/CHANGELOG.md
index e1458575e1..8b2a658e9b 100644
--- a/server/aws-lsp-antlr4/CHANGELOG.md
+++ b/server/aws-lsp-antlr4/CHANGELOG.md
@@ -1,5 +1,42 @@
# Changelog
+## [0.1.21](https://github.com/aws/language-servers/compare/lsp-antlr4/v0.1.20...lsp-antlr4/v0.1.21) (2025-11-21)
+
+
+### Features
+
+* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811))
+
+
+### Dependencies
+
+* The following workspace dependencies were updated
+ * dependencies
+ * @aws/lsp-core bumped from ^0.0.16 to ^0.0.17
+
+## [0.1.20](https://github.com/aws/language-servers/compare/lsp-antlr4/v0.1.19...lsp-antlr4/v0.1.20) (2025-10-01)
+
+
+### Dependencies
+
+* The following workspace dependencies were updated
+ * dependencies
+ * @aws/lsp-core bumped from ^0.0.15 to ^0.0.16
+
+## [0.1.19](https://github.com/aws/language-servers/compare/lsp-antlr4/v0.1.18...lsp-antlr4/v0.1.19) (2025-09-09)
+
+
+### Features
+
+* add support for getSupplementalContext LSP API ([#2212](https://github.com/aws/language-servers/issues/2212)) ([2ddcae7](https://github.com/aws/language-servers/commit/2ddcae7a4fac6b89cbc9784911959743ea0a6d11))
+
+
+### Dependencies
+
+* The following workspace dependencies were updated
+ * dependencies
+ * @aws/lsp-core bumped from ^0.0.14 to ^0.0.15
+
## [0.1.18](https://github.com/aws/language-servers/compare/lsp-antlr4/v0.1.17...lsp-antlr4/v0.1.18) (2025-08-19)
diff --git a/server/aws-lsp-antlr4/package.json b/server/aws-lsp-antlr4/package.json
index 2ca49593d7..50dad13a69 100644
--- a/server/aws-lsp-antlr4/package.json
+++ b/server/aws-lsp-antlr4/package.json
@@ -1,6 +1,6 @@
{
"name": "@aws/lsp-antlr4",
- "version": "0.1.18",
+ "version": "0.1.21",
"description": "ANTLR4 language server",
"main": "out/index.js",
"repository": {
@@ -28,8 +28,8 @@
"clean": "rm -rf node_modules"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/lsp-core": "^0.0.14"
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-core": "^0.0.17"
},
"peerDependencies": {
"antlr4-c3": ">=3.4 < 4",
@@ -38,8 +38,8 @@
"devDependencies": {
"@babel/plugin-transform-modules-commonjs": "^7.24.1",
"@types/jest": "29.5.14",
- "antlr4-c3": "3.4.2",
- "antlr4ng": "3.0.14",
+ "antlr4-c3": "3.4.4",
+ "antlr4ng": "3.0.16",
"antlr4ng-cli": "^2.0.0",
"babel-plugin-transform-import-meta": "^2.3.2",
"jest": "^29.7.0",
diff --git a/server/aws-lsp-buildspec/package.json b/server/aws-lsp-buildspec/package.json
index 9754645b7d..4cc32177ce 100644
--- a/server/aws-lsp-buildspec/package.json
+++ b/server/aws-lsp-buildspec/package.json
@@ -7,7 +7,7 @@
"compile": "tsc --build"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-json": "*",
"@aws/lsp-yaml": "*",
"vscode-languageserver": "^9.0.1",
diff --git a/server/aws-lsp-cloudformation/package.json b/server/aws-lsp-cloudformation/package.json
index 13be6a4859..c023949f90 100644
--- a/server/aws-lsp-cloudformation/package.json
+++ b/server/aws-lsp-cloudformation/package.json
@@ -7,7 +7,7 @@
"compile": "tsc --build"
},
"dependencies": {
- "@aws/language-server-runtimes": "^0.2.127",
+ "@aws/language-server-runtimes": "0.3.6",
"@aws/lsp-core": "*",
"@aws/lsp-json": "*",
"vscode-languageserver": "^9.0.1",
diff --git a/server/aws-lsp-codewhisperer/.prettierignore b/server/aws-lsp-codewhisperer/.prettierignore
index f1287fa3c5..0dbb1b11cb 100644
--- a/server/aws-lsp-codewhisperer/.prettierignore
+++ b/server/aws-lsp-codewhisperer/.prettierignore
@@ -5,5 +5,4 @@ out/
**/bin/
**/obj/
src/client/sigv4/codewhisperersigv4client.d.ts
-src/client/token/codewhispererbearertokenclient.d.ts
**/*.md
diff --git a/server/aws-lsp-codewhisperer/CHANGELOG.md b/server/aws-lsp-codewhisperer/CHANGELOG.md
index a70284a4c2..1ede2ddcac 100644
--- a/server/aws-lsp-codewhisperer/CHANGELOG.md
+++ b/server/aws-lsp-codewhisperer/CHANGELOG.md
@@ -1,5 +1,282 @@
# Changelog
+## [0.0.93](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.92...lsp-codewhisperer/v0.0.93) (2025-11-21)
+
+
+### Bug Fixes
+
+* fix for permission update for servers ([#2517](https://github.com/aws/language-servers/issues/2517)) ([ef86b5c](https://github.com/aws/language-servers/commit/ef86b5ce474993265f9ffa8cb184e96eb1d0daee))
+
+## [0.0.92](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.91...lsp-codewhisperer/v0.0.92) (2025-11-21)
+
+
+### Features
+
+* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811))
+
+
+### Bug Fixes
+
+* **amazonq:** prevent base64 encoding error by passing undefined instead of empty object ([#2492](https://github.com/aws/language-servers/issues/2492)) ([30e28b7](https://github.com/aws/language-servers/commit/30e28b75499b1a55da904697fd446a30c6a87665))
+* incorrect error reference in previous fix ([9fddc8e](https://github.com/aws/language-servers/commit/9fddc8e11f583dbf089f93979e1602d8c8795a16))
+* preserve registry server config when updating permissions ([#2515](https://github.com/aws/language-servers/issues/2515)) ([49ca3bb](https://github.com/aws/language-servers/commit/49ca3bbb6dbf9eac4b281aa80cd5ff30b94b3a7e))
+* resolve process crash when managing BID subscription ([#2501](https://github.com/aws/language-servers/issues/2501)) ([5d6590a](https://github.com/aws/language-servers/commit/5d6590a1d8c7aeb80b75036eb0e1b3802afe5c08))
+
+
+### Dependencies
+
+* The following workspace dependencies were updated
+ * dependencies
+ * @aws/lsp-core bumped from ^0.0.16 to ^0.0.17
+
+## [0.0.91](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.90...lsp-codewhisperer/v0.0.91) (2025-11-18)
+
+
+### Bug Fixes
+
+* **amazonq:** handle large results ([#2497](https://github.com/aws/language-servers/issues/2497)) ([b3efa7c](https://github.com/aws/language-servers/commit/b3efa7cff0b23608dd0cca796c9c95a672c9321a))
+* resolve broken error handling in setPaidTierMode ([#2500](https://github.com/aws/language-servers/issues/2500)) ([8ccb067](https://github.com/aws/language-servers/commit/8ccb06768c4a386b0a4699d8b2e299f0aad110b1))
+
+## [0.0.90](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.89...lsp-codewhisperer/v0.0.90) (2025-11-13)
+
+
+### Bug Fixes
+
+* bearer client will not pick up telemetry optout and its always optout ([#2484](https://github.com/aws/language-servers/issues/2484)) ([ec6771f](https://github.com/aws/language-servers/commit/ec6771fc5dc162f9c65df4e979dcfc3ae4838f06))
+
+## [0.0.89](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.88...lsp-codewhisperer/v0.0.89) (2025-11-12)
+
+
+### Features
+
+* ab test setup for new repomap strategy ([#2474](https://github.com/aws/language-servers/issues/2474)) ([d28867f](https://github.com/aws/language-servers/commit/d28867f2a5e06693b83d0cfd0286f017cdc5e5b3))
+* differentiate implicit and explicit reject for inline completion ([#2475](https://github.com/aws/language-servers/issues/2475)) ([4b68eea](https://github.com/aws/language-servers/commit/4b68eea03374db79b8ad728aa048b623de8efa91))
+
+
+### Bug Fixes
+
+* McpManager not initialized error ([#2479](https://github.com/aws/language-servers/issues/2479)) ([7e2707b](https://github.com/aws/language-servers/commit/7e2707b8c2b4467aae1fe1c77bb419043e193ddc))
+
+## [0.0.88](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.87...lsp-codewhisperer/v0.0.88) (2025-10-28)
+
+
+### Bug Fixes
+
+* add venv in the common gitignore patterns ([#2445](https://github.com/aws/language-servers/issues/2445)) ([d030288](https://github.com/aws/language-servers/commit/d030288a2508356db337dfa34ee64c8be1deb8e9))
+* enforce MAX_TOOL_NAME_LENGTH check in createNamespacedToolName ([#2447](https://github.com/aws/language-servers/issues/2447)) ([6663f87](https://github.com/aws/language-servers/commit/6663f87e68c9645af6ffb004eaf725e5102fe5ab))
+* strenghen NEP trigger conditions ([#2438](https://github.com/aws/language-servers/issues/2438)) ([82e2340](https://github.com/aws/language-servers/commit/82e2340cf86a5eba20f8d18f1293c136c0022dd9))
+
+## [0.0.87](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.86...lsp-codewhisperer/v0.0.87) (2025-10-21)
+
+
+### Features
+
+* **amazonq:** add user requirement to zipfile for code review tool ([#2430](https://github.com/aws/language-servers/issues/2430)) ([2c33b38](https://github.com/aws/language-servers/commit/2c33b384a0e406bcd8d3888a911d5482ce1f38ef))
+* nep auto trigger ([#2424](https://github.com/aws/language-servers/issues/2424)) ([2292bd7](https://github.com/aws/language-servers/commit/2292bd75fded0848208de9401d15d3399a9c297b))
+* send pinned context button immediately with pending state ([#2353](https://github.com/aws/language-servers/issues/2353)) ([bee5cad](https://github.com/aws/language-servers/commit/bee5cadeaf8840a8af08acfe8b58442aac7ad567))
+
+
+### Bug Fixes
+
+* classifier last token sometimes fail to capture the right values ([#2434](https://github.com/aws/language-servers/issues/2434)) ([7420d59](https://github.com/aws/language-servers/commit/7420d591a0fcf5da834f0165696aa50b99fd4d3a))
+
+## [0.0.86](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.85...lsp-codewhisperer/v0.0.86) (2025-10-15)
+
+
+### Reverts
+
+* revert for mid-loop compaction ([3f48b12](https://github.com/aws/language-servers/commit/3f48b12bce4faba474404f7c74a9520c379552fe))
+
+## [0.0.85](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.84...lsp-codewhisperer/v0.0.85) (2025-10-14)
+
+
+### Bug Fixes
+
+* inline, nep telemetry not sent and throw sessionId not found ([#2419](https://github.com/aws/language-servers/issues/2419)) ([c96106d](https://github.com/aws/language-servers/commit/c96106d18c9e9d846765665ce2ee50304af4ff7f))
+
+## [0.0.84](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.83...lsp-codewhisperer/v0.0.84) (2025-10-09)
+
+
+### Features
+
+* add model description to dropdown ([#2374](https://github.com/aws/language-servers/issues/2374)) ([ed8c6dd](https://github.com/aws/language-servers/commit/ed8c6dda1312f728e9ee7472f7ca447196ad9d84))
+* **amazonq:** adding classification based retry strategy for chat ([#2234](https://github.com/aws/language-servers/issues/2234)) ([#2409](https://github.com/aws/language-servers/issues/2409)) ([15d1b1f](https://github.com/aws/language-servers/commit/15d1b1f5947a1b83dab65c9d3fef901ab8a033c9))
+* **amazonq:** env var change for JupyterLab conversation history on refresh support ([#2395](https://github.com/aws/language-servers/issues/2395)) ([a908195](https://github.com/aws/language-servers/commit/a9081954bcaf20b7d0fbe0af11e61b8f82c7e82f))
+* **amazonq:** support JupyterLab conversation history on refresh ([#2325](https://github.com/aws/language-servers/issues/2325)) ([0980351](https://github.com/aws/language-servers/commit/09803514d1ce31ca77a532161e071e1d037e3fb1))
+
+
+### Bug Fixes
+
+* add in-loop compaction ([#2387](https://github.com/aws/language-servers/issues/2387)) ([35f0795](https://github.com/aws/language-servers/commit/35f0795fa5d09f3610e6a29cb72d49f32cc5534e))
+* addonly EDITS should be handled as COMPLETIONS ([#2133](https://github.com/aws/language-servers/issues/2133)) ([4f5a9da](https://github.com/aws/language-servers/commit/4f5a9dacf3bfd68aeb40920fb800adf001ed43d5))
+* patch [#2133](https://github.com/aws/language-servers/issues/2133) and handle more variants of FIM suggestions ([#2407](https://github.com/aws/language-servers/issues/2407)) ([f3086d7](https://github.com/aws/language-servers/commit/f3086d71808bd49336e0df9ba30f5be5fda837c3))
+
+## [0.0.83](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.82...lsp-codewhisperer/v0.0.83) (2025-10-01)
+
+
+### Bug Fixes
+
+* **amazonq:** escaping user input to mitigate xss issue ([#2360](https://github.com/aws/language-servers/issues/2360)) ([45b86be](https://github.com/aws/language-servers/commit/45b86bef1a93cf9ced6fbf0c222cf5410de04c81))
+* **amazonq:** fix to add opt-out header to streaming client ([#2365](https://github.com/aws/language-servers/issues/2365)) ([692e77b](https://github.com/aws/language-servers/commit/692e77bc99770ac7d676928e95e3dc43bb91e7f0))
+* **amazonq:** handle IAM credentials expiration field to be aws sdk versions compatible and add refresh logic to codewhisperer IAM client ([#2349](https://github.com/aws/language-servers/issues/2349)) ([5eb3768](https://github.com/aws/language-servers/commit/5eb3768bf020d61d0ade767d62e13839048146e4))
+* **amazonq:** send full finding details to plugin, partial to agent ([#2356](https://github.com/aws/language-servers/issues/2356)) ([961e6ca](https://github.com/aws/language-servers/commit/961e6ca11b122481685f9f65b3da14c6a2497cc4))
+* improve history management ([#2312](https://github.com/aws/language-servers/issues/2312)) ([#2357](https://github.com/aws/language-servers/issues/2357)) ([e7aa2a6](https://github.com/aws/language-servers/commit/e7aa2a6545bcb1a8238abfde69a05432be0b6615))
+* optimize memory bank token usage and add new tab support ([#2366](https://github.com/aws/language-servers/issues/2366)) ([3057d56](https://github.com/aws/language-servers/commit/3057d56e4a3047d1715d6e3560e9f934d1de469c))
+* private package mapping during artifact generation ([#2348](https://github.com/aws/language-servers/issues/2348)) ([d56bfa1](https://github.com/aws/language-servers/commit/d56bfa191954fac8068e2bf390c2d0b88ef8b168))
+* trim new line when emitting error message ([#2359](https://github.com/aws/language-servers/issues/2359)) ([d8733a7](https://github.com/aws/language-servers/commit/d8733a75487f74815302b838802eccbf3ffec55e))
+
+
+### Reverts
+
+* fix to add opt-out header to streaming client ([#2365](https://github.com/aws/language-servers/issues/2365)) ([#2370](https://github.com/aws/language-servers/issues/2370)) ([b29478f](https://github.com/aws/language-servers/commit/b29478fa1ecc58e331ff330ff79f46b0d8c38d9e))
+
+
+### Dependencies
+
+* The following workspace dependencies were updated
+ * dependencies
+ * @aws/lsp-core bumped from ^0.0.15 to ^0.0.16
+
+## [0.0.82](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.81...lsp-codewhisperer/v0.0.82) (2025-09-24)
+
+
+### Features
+
+* memory bank support ([#2314](https://github.com/aws/language-servers/issues/2314)) ([0e215fc](https://github.com/aws/language-servers/commit/0e215fc0e475b4c40a8237492371716982d4d532))
+
+
+### Bug Fixes
+
+* **amazonq:** fix to emit event for same region profile switch ([#2320](https://github.com/aws/language-servers/issues/2320)) ([aa1a482](https://github.com/aws/language-servers/commit/aa1a4827871a1cfa9fcd76f7ba420107a5d44b01))
+* **amazonq:** reduce number of findings to 30 as a quick fix ([#2318](https://github.com/aws/language-servers/issues/2318)) ([b31cf67](https://github.com/aws/language-servers/commit/b31cf67ddc68a2ca2e0a4ebd9ee94d0545afc656))
+* **amazonq:** removing a bracket from full review message ([#2317](https://github.com/aws/language-servers/issues/2317)) ([6d321ac](https://github.com/aws/language-servers/commit/6d321ac6f318c27b01f9f97eee45a62798a60cf5))
+* emit error code on failed user messages ([#2322](https://github.com/aws/language-servers/issues/2322)) ([a949ac0](https://github.com/aws/language-servers/commit/a949ac0a9d7a4dbce5fb7c8480952cee0a674b55))
+* inline latency telemetry should account for preprocess time ([#2323](https://github.com/aws/language-servers/issues/2323)) ([68c6d14](https://github.com/aws/language-servers/commit/68c6d1465a3325612052740496cc1e6e50f56b9a))
+* userTriggerDecision STE suggestionType validation error ([#2313](https://github.com/aws/language-servers/issues/2313)) ([8f30ac0](https://github.com/aws/language-servers/commit/8f30ac0ec5f4f7b7c343f5e889aec64a282897ea))
+
+## [0.0.81](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.80...lsp-codewhisperer/v0.0.81) (2025-09-19)
+
+
+### Bug Fixes
+
+* **amazonq:** fix for delete mcp for mcp config, disable and create corresponding agent file ([#2298](https://github.com/aws/language-servers/issues/2298)) ([8641860](https://github.com/aws/language-servers/commit/8641860295c4e089d09154fa5411c305f2f4ecce))
+* **amazonq:** fix for legacy mcp permission consistentcy and config update ([#2300](https://github.com/aws/language-servers/issues/2300)) ([c8aa7bd](https://github.com/aws/language-servers/commit/c8aa7bd3e9d39ed327972bbc950ad72e8e401581))
+* **amazonq:** fix for mcp permissions read/write inconsistencies ([#2296](https://github.com/aws/language-servers/issues/2296)) ([c7a9a8e](https://github.com/aws/language-servers/commit/c7a9a8e1ba5c1a284d661e683dd46133860a1d3d))
+* **amazonq:** fix to add filewatcher for mcp config files ([#2295](https://github.com/aws/language-servers/issues/2295)) ([fcee77c](https://github.com/aws/language-servers/commit/fcee77c1b06e69f9096d8e98a0cfcc42d7fddb01))
+* **amazonq:** fix to normlize workspace paths in windows ([#2306](https://github.com/aws/language-servers/issues/2306)) ([fab073c](https://github.com/aws/language-servers/commit/fab073c855109b15005bfd880894471c35652ffc))
+* **amazonq:** improve messaging for code review ([#2303](https://github.com/aws/language-servers/issues/2303)) ([60bc68d](https://github.com/aws/language-servers/commit/60bc68d1d4d2ce8a0373be6ce7551e961fc2cdb8))
+* **amazonq:** support mcp config files for backwards compatbility ([#2292](https://github.com/aws/language-servers/issues/2292)) ([41c99af](https://github.com/aws/language-servers/commit/41c99af02b3f415e39898f11c3c21ac530f9c406))
+* inline UTD empty cases dont differentiate Edit and Completion ([#2287](https://github.com/aws/language-servers/issues/2287)) ([84e2c8c](https://github.com/aws/language-servers/commit/84e2c8c12f5d828192a302fa11483063d33b059c))
+* inline UTD telemetry empty cases dont differentiate Edit and Completion ([#2288](https://github.com/aws/language-servers/issues/2288)) ([d207b6e](https://github.com/aws/language-servers/commit/d207b6e9dfded650c6f65c675ee45c52f8222571))
+* quick fix for repeated logging from squashed commit ([#2291](https://github.com/aws/language-servers/issues/2291)) ([36f3eed](https://github.com/aws/language-servers/commit/36f3eedd1cad3fca4fc48792ba40b6470f733bfa))
+
+
+### Reverts
+
+* inline UTD telemetry empty cases dont differentiate Edit and Completion ([#2288](https://github.com/aws/language-servers/issues/2288)) ([#2297](https://github.com/aws/language-servers/issues/2297)) ([eb081e6](https://github.com/aws/language-servers/commit/eb081e6bc6bef4182ab89e295bff97c4e828096b))
+
+## [0.0.80](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.79...lsp-codewhisperer/v0.0.80) (2025-09-16)
+
+
+### Features
+
+* **amazonq:** semantic search tool integration ([#2283](https://github.com/aws/language-servers/issues/2283)) ([8eb3c34](https://github.com/aws/language-servers/commit/8eb3c340534f3c66fd9082a83b31e84a4d9348bb))
+* **amazonq:** support for wildcard permissions from agent config ([#2249](https://github.com/aws/language-servers/issues/2249)) ([2f6e86b](https://github.com/aws/language-servers/commit/2f6e86b0a676674744b962b0e335543c6c39e9e1))
+* support sending requests with the 'external_idp' type ([#2247](https://github.com/aws/language-servers/issues/2247)) ([4d3b938](https://github.com/aws/language-servers/commit/4d3b938b7e961def0db2a51fba57e8fe73ea0a01))
+
+
+### Bug Fixes
+
+* filetype filtering and consolidation of other filtering logic during artifact generation ([#2233](https://github.com/aws/language-servers/issues/2233)) ([a3e66f2](https://github.com/aws/language-servers/commit/a3e66f2d414060adde90cc7312f07c6359ae3246))
+
+## [0.0.79](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.78...lsp-codewhisperer/v0.0.79) (2025-09-10)
+
+
+### Features
+
+* feature to add iam inline suggestion support in codeWhispererservice ([#2223](https://github.com/aws/language-servers/issues/2223)) ([8e19f19](https://github.com/aws/language-servers/commit/8e19f19a71e63a1196f4cb67ded8360c8da8129e))
+
+## [0.0.78](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.77...lsp-codewhisperer/v0.0.78) (2025-09-09)
+
+
+### Features
+
+* add custom_transformation folder support to artifact.zip ([#2201](https://github.com/aws/language-servers/issues/2201)) ([1222905](https://github.com/aws/language-servers/commit/12229059421b773d3e99d28809fdff4abf242b26))
+* add support for getSupplementalContext LSP API ([#2212](https://github.com/aws/language-servers/issues/2212)) ([2ddcae7](https://github.com/aws/language-servers/commit/2ddcae7a4fac6b89cbc9784911959743ea0a6d11))
+* **amazonq:** default to diff-based scans ([#2195](https://github.com/aws/language-servers/issues/2195)) ([da4c3db](https://github.com/aws/language-servers/commit/da4c3db5329bd50cfe249bf8c1d59afa9bcb0157))
+* model selection for code review tool ([#2196](https://github.com/aws/language-servers/issues/2196)) ([34bc9bd](https://github.com/aws/language-servers/commit/34bc9bd1d3433bbb1d903eb0f212b10709ea8412))
+
+
+### Bug Fixes
+
+* **amazonq:** add IntelliSense autotriggerType ([#2199](https://github.com/aws/language-servers/issues/2199)) ([013aa59](https://github.com/aws/language-servers/commit/013aa5913c242451a91ed36b0dcf961a3f8ec697))
+* **amazonq:** fix to correct the client for getProfile request ([#2211](https://github.com/aws/language-servers/issues/2211)) ([8bde8c9](https://github.com/aws/language-servers/commit/8bde8c97e1e3bcd67d9816a3385c50c7765c3b2f))
+* **amazonq:** fix to update MCP servers list when last server is removed from agent config ([#2206](https://github.com/aws/language-servers/issues/2206)) ([512502a](https://github.com/aws/language-servers/commit/512502af947dcfed9288be2f67fc58affd4445fe))
+* **amazonq:** update to the agent config format to bring parity with Q CLI ([#2202](https://github.com/aws/language-servers/issues/2202)) ([698d06c](https://github.com/aws/language-servers/commit/698d06c643897da6ca37a49e6544b150b72678a3))
+* potential xss issue reported in `mynah-ui` ([#2209](https://github.com/aws/language-servers/issues/2209)) ([cf585cd](https://github.com/aws/language-servers/commit/cf585cd400dab6274f8220139ae94287c0d96824))
+
+
+### Dependencies
+
+* The following workspace dependencies were updated
+ * dependencies
+ * @aws/lsp-core bumped from ^0.0.14 to ^0.0.15
+
+## [0.0.77](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.76...lsp-codewhisperer/v0.0.77) (2025-09-02)
+
+
+### Features
+
+* passing suggestionTypes and pluginVersion/lspVersion to STE ([#2180](https://github.com/aws/language-servers/issues/2180)) ([66742ad](https://github.com/aws/language-servers/commit/66742adfc44f33efbd8dd33b803000e08241e5ce))
+
+
+### Bug Fixes
+
+* auto trigger should only respect previous decisions in the past 2mins ([#2189](https://github.com/aws/language-servers/issues/2189)) ([852b21b](https://github.com/aws/language-servers/commit/852b21b66f793102c52e35c2baec07a772e5134a))
+* compact UI is not updated correctly when multiple nudges are displayed ([#2192](https://github.com/aws/language-servers/issues/2192)) ([ef7d793](https://github.com/aws/language-servers/commit/ef7d7931954f5083e4a5c358e67c6dc652fa1a40))
+* emit acceptedLineCount metric and AgenticCodeAccepted interaction type ([#2167](https://github.com/aws/language-servers/issues/2167)) ([c53f672](https://github.com/aws/language-servers/commit/c53f672b6173ebda530917ccb4e0c2f26f5c8f79))
+* emit errorMessage in addMessage ([#2197](https://github.com/aws/language-servers/issues/2197)) ([58f2064](https://github.com/aws/language-servers/commit/58f20649d345f159080006120e23cde559826df1))
+* fix calculation for num-lines contributed by the LLM ([#2191](https://github.com/aws/language-servers/issues/2191)) ([fd71e6c](https://github.com/aws/language-servers/commit/fd71e6cf3fc843242936564061061418edf83f56))
+* should send classifier score after taking sigmoid ([#2188](https://github.com/aws/language-servers/issues/2188)) ([f4e2e6e](https://github.com/aws/language-servers/commit/f4e2e6e885e665834a5d7b7cbb5f4ba4ff9bbb65))
+
+
+### Performance Improvements
+
+* only process edit requests 1 at a time ([#2187](https://github.com/aws/language-servers/issues/2187)) ([b497540](https://github.com/aws/language-servers/commit/b4975409a3ed518550290b72ac310895a293be4b))
+
+
+### Reverts
+
+* PR 2172 dedupe openTabs supplemental contexts ([#2194](https://github.com/aws/language-servers/issues/2194)) ([94723d4](https://github.com/aws/language-servers/commit/94723d46073a1ea8211e7ae8f9dfce3fcb809604))
+
+## [0.0.76](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.75...lsp-codewhisperer/v0.0.76) (2025-08-27)
+
+
+### Features
+
+* add basic OAuth client for remote MCP ([#2136](https://github.com/aws/language-servers/issues/2136)) ([2fb896e](https://github.com/aws/language-servers/commit/2fb896e094de0bc5a1b4881067e7dcceb3826015))
+* **amazonq:** emit metric for each issue ([#2179](https://github.com/aws/language-servers/issues/2179)) ([5a3f481](https://github.com/aws/language-servers/commit/5a3f481ebe8c6033e3833abcd81799d26c2aa03e))
+* Auto fetch models from listAvailableModels API ([#2171](https://github.com/aws/language-servers/issues/2171)) ([8600c52](https://github.com/aws/language-servers/commit/8600c524877abb459e9338399352446c0dcff6f0))
+* disable pkce flow during plugin load ([#2153](https://github.com/aws/language-servers/issues/2153)) ([71b3595](https://github.com/aws/language-servers/commit/71b35952333e7581921644ce40fabbc1e6d3c02f))
+* update MCP manager and utilities ([#2158](https://github.com/aws/language-servers/issues/2158)) ([b99df82](https://github.com/aws/language-servers/commit/b99df82826d0ba1a1d52df578cb80674c90505b9))
+
+
+### Bug Fixes
+
+* adding streakTracker to track streakLength across Completions and Edits ([#2147](https://github.com/aws/language-servers/issues/2147)) ([a6c64f2](https://github.com/aws/language-servers/commit/a6c64f2995a17697e3d71d30a1f411f5cf0db279))
+* **amazonq:** dedupe openTabs supplemental contexts ([#2172](https://github.com/aws/language-servers/issues/2172)) ([aa87ae2](https://github.com/aws/language-servers/commit/aa87ae2bd95edc1f38bf90f56093c5bf5ff18c53))
+* **amazonq:** fix for mcp servers operations to edit server config only ([#2165](https://github.com/aws/language-servers/issues/2165)) ([d28df09](https://github.com/aws/language-servers/commit/d28df09ae41871430cd53064eac1f3050c95ea84))
+* **amazonq:** fix to add mcp server tool error handling and status for card ([#2176](https://github.com/aws/language-servers/issues/2176)) ([23f5ec3](https://github.com/aws/language-servers/commit/23f5ec343cb4e0de32926204dbcf99e51af829f9))
+* **amazonq:** status message update for mcp tool permission accpetance ([#2178](https://github.com/aws/language-servers/issues/2178)) ([4893344](https://github.com/aws/language-servers/commit/489334466fa084774d6e4737569468d654dc6359))
+* fix pkce windows url path ([#2173](https://github.com/aws/language-servers/issues/2173)) ([d7b184c](https://github.com/aws/language-servers/commit/d7b184cb12979877722fa0293e9aebec91ff2c18))
+* multiple fixes on auth flow edge cases ([#2155](https://github.com/aws/language-servers/issues/2155)) ([472220a](https://github.com/aws/language-servers/commit/472220a745cff4fe91a2cabae4ae059a164ceddd))
+* reduce auto trigger frequency for VSC ([#2168](https://github.com/aws/language-servers/issues/2168)) ([00e11ff](https://github.com/aws/language-servers/commit/00e11ff48eafaa0baec48177fa4aa6d60048af2f))
+
+
+### Reverts
+
+* reduce auto trigger frequency for VSC ([#2168](https://github.com/aws/language-servers/issues/2168))" ([#2177](https://github.com/aws/language-servers/issues/2177)) ([08720c6](https://github.com/aws/language-servers/commit/08720c6c3fa83f9b3b6775d4ae4d848ce145b94b))
+
## [0.0.75](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.74...lsp-codewhisperer/v0.0.75) (2025-08-21)
diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json
index 83ff1cdaee..c9ab39c0cc 100644
--- a/server/aws-lsp-codewhisperer/package.json
+++ b/server/aws-lsp-codewhisperer/package.json
@@ -1,6 +1,6 @@
{
"name": "@aws/lsp-codewhisperer",
- "version": "0.0.75",
+ "version": "0.0.93",
"description": "CodeWhisperer Language Server",
"main": "out/index.js",
"repository": {
@@ -14,8 +14,6 @@
},
"scripts": {
"compile": "tsc --build",
- "postcompile": "npm run copyServiceClient",
- "copyServiceClient": "copyfiles -u 1 --error ./src/client/sigv4/*.json out && copyfiles -u 1 --error ./src/client/token/*.json out",
"fix": "npm run fix:prettier",
"fix:prettier": "prettier . --write",
"lint": "npm run lint:src",
@@ -32,18 +30,20 @@
},
"dependencies": {
"@amzn/amazon-q-developer-streaming-client": "file:../../core/q-developer-streaming-client/amzn-amazon-q-developer-streaming-client-1.0.0.tgz",
+ "@amzn/codewhisperer": "file:../../core/codewhisperer/amzn-codewhisperer-1.0.0.tgz",
+ "@amzn/codewhisperer-runtime": "file:../../core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz",
"@amzn/codewhisperer-streaming": "file:../../core/codewhisperer-streaming/amzn-codewhisperer-streaming-1.0.0.tgz",
+ "@aws-sdk/types": "^3.734.0",
"@aws-sdk/util-arn-parser": "^3.723.0",
"@aws-sdk/util-retry": "^3.374.0",
- "@aws/chat-client-ui-types": "^0.1.56",
- "@aws/language-server-runtimes": "^0.2.127",
- "@aws/lsp-core": "^0.0.14",
+ "@aws/chat-client-ui-types": "0.1.68",
+ "@aws/language-server-runtimes": "0.3.6",
+ "@aws/lsp-core": "^0.0.17",
"@modelcontextprotocol/sdk": "^1.15.0",
"@smithy/node-http-handler": "^2.5.0",
"adm-zip": "^0.5.10",
"archiver": "^7.0.1",
"async-mutex": "^0.5.0",
- "aws-sdk": "^2.1403.0",
"axios": "^1.8.4",
"chokidar": "^4.0.3",
"deepmerge": "^4.3.1",
@@ -74,6 +74,7 @@
"@types/archiver": "^6.0.2",
"@types/diff": "^7.0.2",
"@types/encoding-japanese": "^2.2.1",
+ "@types/escape-html": "^1.0.4",
"@types/ignore-walk": "^4.0.3",
"@types/local-indexing": "file:./types/types-local-indexing-1.1.0.tgz",
"@types/lokijs": "^1.5.14",
@@ -102,6 +103,8 @@
"endOfLine": "lf"
},
"bundleDependencies": [
+ "@amzn/codewhisperer",
+ "@amzn/codewhisperer-runtime",
"@amzn/codewhisperer-streaming",
"@amzn/amazon-q-developer-streaming-client"
]
diff --git a/server/aws-lsp-codewhisperer/src/client/sigv4/codewhisperer.ts b/server/aws-lsp-codewhisperer/src/client/sigv4/codewhisperer.ts
index 0395a639f6..22bb8a5641 100644
--- a/server/aws-lsp-codewhisperer/src/client/sigv4/codewhisperer.ts
+++ b/server/aws-lsp-codewhisperer/src/client/sigv4/codewhisperer.ts
@@ -1,25 +1,68 @@
-import { Service } from 'aws-sdk'
-import { ServiceConfigurationOptions } from 'aws-sdk/lib/service'
-const apiConfig = require('./service.json')
-import CodeWhispererClient = require('./codewhisperersigv4client')
+import { CodeWhispererClient, CodeWhispererClientConfig } from '@amzn/codewhisperer'
import { SDKInitializator, Logging } from '@aws/language-server-runtimes/server-interface'
+import { HttpResponse } from '@smithy/types'
-export type CodeWhispererSigv4ClientConfigurationOptions = ServiceConfigurationOptions
+export type CodeWhispererSigv4ClientConfigurationOptions = CodeWhispererClientConfig
export function createCodeWhispererSigv4Client(
- options: ServiceConfigurationOptions,
+ options: CodeWhispererClientConfig,
sdkInitializator: SDKInitializator,
- logging: Logging
+ logging: Logging,
+ shareCodeWhispererContentWithAWS: boolean = false
): CodeWhispererClient {
- return createService(options, sdkInitializator, logging) as CodeWhispererClient
-}
+ logging.log(
+ `Passing client for class CodeWhispererClient to sdkInitializator (v3) for additional setup (e.g. proxy)`
+ )
+
+ const client = sdkInitializator(CodeWhispererClient, {
+ ...options,
+ })
+
+ // Add middleware to set opt-out header
+ client.middlewareStack.add(
+ next => async args => {
+ if (
+ args.request &&
+ typeof args.request === 'object' &&
+ args.request !== null &&
+ 'headers' in args.request
+ ) {
+ ;(args.request as any).headers['x-amzn-codewhisperer-optout'] = `${!shareCodeWhispererContentWithAWS}`
+ }
+ return next(args)
+ },
+ {
+ step: 'build',
+ name: 'addOptOutHeader',
+ priority: 'high',
+ }
+ )
+
+ // Add middleware to capture HTTP headers
+ client.middlewareStack.add(
+ next => async args => {
+ const result = await next(args)
+
+ // Store headers on the response metadata
+ if (result.response) {
+ const httpResponse = result.response as HttpResponse
+ if (httpResponse.headers && result.output?.$metadata) {
+ // Extend metadata to include headers
+ ;(result.output.$metadata as any).httpHeaders = httpResponse.headers
+ }
+ }
+
+ return result
+ },
+ {
+ step: 'deserialize',
+ name: 'captureHeaders',
+ priority: 'high',
+ }
+ )
-function createService(
- options: ServiceConfigurationOptions,
- sdkInitializator: SDKInitializator,
- logging: Logging
-): Service {
- logging.log(`Passing client for class Service to sdkInitializator (v2) for additional setup (e.g. proxy)`)
- const client = sdkInitializator.v2(Service, { apiConfig, ...options } as any)
return client
}
+
+// Export the V3 client type for compatibility
+export type CodeWhispererSigv4Client = CodeWhispererClient
diff --git a/server/aws-lsp-codewhisperer/src/client/sigv4/codewhisperersigv4client.d.ts b/server/aws-lsp-codewhisperer/src/client/sigv4/codewhisperersigv4client.d.ts
deleted file mode 100644
index 308ead42ee..0000000000
--- a/server/aws-lsp-codewhisperer/src/client/sigv4/codewhisperersigv4client.d.ts
+++ /dev/null
@@ -1,605 +0,0 @@
-
-/**
- * THIS FILE IS AUTOGENERATED BY 'generateServiceClient.ts'.
- * DO NOT EDIT BY HAND.
- */
-
-import {Request} from 'aws-sdk/lib/request';
-import {Response} from 'aws-sdk/lib/response';
-import {AWSError} from 'aws-sdk/lib/error';
-import {Service} from 'aws-sdk/lib/service';
-import {ServiceConfigurationOptions} from 'aws-sdk/lib/service';
-import {ConfigBase as Config} from 'aws-sdk/lib/config-base';
-interface Blob {}
-declare class CodeWhispererSigV4Client extends Service {
- /**
- * Constructs a service object. This object has one method for each API operation.
- */
- constructor(options?: CodeWhispererSigV4Client.Types.ClientConfiguration)
- config: Config & CodeWhispererSigV4Client.Types.ClientConfiguration;
- /**
- * Internal API to authorize a CodeWhisperer resource for vended log delivery.
- */
- allowVendedLogDeliveryForResource(params: CodeWhispererSigV4Client.Types.AllowVendedLogDeliveryForResourceRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.AllowVendedLogDeliveryForResourceResponse) => void): Request;
- /**
- * Internal API to authorize a CodeWhisperer resource for vended log delivery.
- */
- allowVendedLogDeliveryForResource(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.AllowVendedLogDeliveryForResourceResponse) => void): Request;
- /**
- * Add permission for an Identity Center User/Group to use the Customization.
- */
- associateCustomizationPermission(params: CodeWhispererSigV4Client.Types.AssociateCustomizationPermissionRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.AssociateCustomizationPermissionResponse) => void): Request;
- /**
- * Add permission for an Identity Center User/Group to use the Customization.
- */
- associateCustomizationPermission(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.AssociateCustomizationPermissionResponse) => void): Request;
- /**
- *
- */
- createCustomization(params: CodeWhispererSigV4Client.Types.CreateCustomizationRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.CreateCustomizationResponse) => void): Request;
- /**
- *
- */
- createCustomization(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.CreateCustomizationResponse) => void): Request;
- /**
- * Creates a CodeWhisperer profile which can then be associated to users/groups of an identity source
- */
- createProfile(params: CodeWhispererSigV4Client.Types.CreateProfileRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.CreateProfileResponse) => void): Request;
- /**
- * Creates a CodeWhisperer profile which can then be associated to users/groups of an identity source
- */
- createProfile(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.CreateProfileResponse) => void): Request;
- /**
- * Deletes CodeWhisperer Customization and associated resources
- */
- deleteCustomization(params: CodeWhispererSigV4Client.Types.DeleteCustomizationRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.DeleteCustomizationResponse) => void): Request;
- /**
- * Deletes CodeWhisperer Customization and associated resources
- */
- deleteCustomization(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.DeleteCustomizationResponse) => void): Request;
- /**
- * Deletes CodeWhisperer profile and associated resources
- */
- deleteProfile(params: CodeWhispererSigV4Client.Types.DeleteProfileRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.DeleteProfileResponse) => void): Request;
- /**
- * Deletes CodeWhisperer profile and associated resources
- */
- deleteProfile(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.DeleteProfileResponse) => void): Request;
- /**
- * Disassociate the permission for a Customization from an Identity Center User/Group.
- */
- disassociateCustomizationPermission(params: CodeWhispererSigV4Client.Types.DisassociateCustomizationPermissionRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.DisassociateCustomizationPermissionResponse) => void): Request;
- /**
- * Disassociate the permission for a Customization from an Identity Center User/Group.
- */
- disassociateCustomizationPermission(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.DisassociateCustomizationPermissionResponse) => void): Request;
- /**
- * Generates recommendations based on the provided file context.
- */
- generateRecommendations(params: CodeWhispererSigV4Client.Types.GenerateRecommendationsRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.GenerateRecommendationsResponse) => void): Request;
- /**
- * Generates recommendations based on the provided file context.
- */
- generateRecommendations(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.GenerateRecommendationsResponse) => void): Request;
- /**
- *
- */
- getCustomization(params: CodeWhispererSigV4Client.Types.GetCustomizationRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.GetCustomizationResponse) => void): Request;
- /**
- *
- */
- getCustomization(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.GetCustomizationResponse) => void): Request;
- /**
- * List User(s)/Group(s) who have permissions to use a Customization.
- */
- listCustomizationPermissions(params: CodeWhispererSigV4Client.Types.ListCustomizationPermissionsRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.ListCustomizationPermissionsResponse) => void): Request;
- /**
- * List User(s)/Group(s) who have permissions to use a Customization.
- */
- listCustomizationPermissions(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.ListCustomizationPermissionsResponse) => void): Request;
- /**
- * List actionable versions associated with a Customization.
- */
- listCustomizationVersions(params: CodeWhispererSigV4Client.Types.ListCustomizationVersionsRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.ListCustomizationVersionsResponse) => void): Request;
- /**
- * List actionable versions associated with a Customization.
- */
- listCustomizationVersions(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.ListCustomizationVersionsResponse) => void): Request;
- /**
- *
- */
- listCustomizations(params: CodeWhispererSigV4Client.Types.ListCustomizationsRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.ListCustomizationsResponse) => void): Request;
- /**
- *
- */
- listCustomizations(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.ListCustomizationsResponse) => void): Request;
- /**
- * Lists one or more CodeWhisperer profiles that you have created.
- */
- listProfiles(params: CodeWhispererSigV4Client.Types.ListProfilesRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.ListProfilesResponse) => void): Request;
- /**
- * Lists one or more CodeWhisperer profiles that you have created.
- */
- listProfiles(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.ListProfilesResponse) => void): Request;
- /**
- * List tags of an existing CodeWhisperer profile.
- */
- listTagsForResource(params: CodeWhispererSigV4Client.Types.ListTagsForResourceRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.ListTagsForResourceResponse) => void): Request;
- /**
- * List tags of an existing CodeWhisperer profile.
- */
- listTagsForResource(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.ListTagsForResourceResponse) => void): Request;
- /**
- * Add tags to an existing CodeWhisperer profile.
- */
- tagResource(params: CodeWhispererSigV4Client.Types.TagResourceRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.TagResourceResponse) => void): Request;
- /**
- * Add tags to an existing CodeWhisperer profile.
- */
- tagResource(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.TagResourceResponse) => void): Request;
- /**
- * Remove tags from an existing CodeWhisperer profile.
- */
- untagResource(params: CodeWhispererSigV4Client.Types.UntagResourceRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.UntagResourceResponse) => void): Request;
- /**
- * Remove tags from an existing CodeWhisperer profile.
- */
- untagResource(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.UntagResourceResponse) => void): Request;
- /**
- *
- */
- updateCustomization(params: CodeWhispererSigV4Client.Types.UpdateCustomizationRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.UpdateCustomizationResponse) => void): Request;
- /**
- *
- */
- updateCustomization(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.UpdateCustomizationResponse) => void): Request;
- /**
- * Updates an existing CodeWhisperer profile.
- */
- updateProfile(params: CodeWhispererSigV4Client.Types.UpdateProfileRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.UpdateProfileResponse) => void): Request;
- /**
- * Updates an existing CodeWhisperer profile.
- */
- updateProfile(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.UpdateProfileResponse) => void): Request;
- /**
- * Returns grant details associated with the profile under the input account Id Output includes cmk arn, grant token, and grant id
- */
- vendKeyGrant(params: CodeWhispererSigV4Client.Types.VendKeyGrantRequest, callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.VendKeyGrantResponse) => void): Request;
- /**
- * Returns grant details associated with the profile under the input account Id Output includes cmk arn, grant token, and grant id
- */
- vendKeyGrant(callback?: (err: AWSError, data: CodeWhispererSigV4Client.Types.VendKeyGrantResponse) => void): Request;
-}
-declare namespace CodeWhispererSigV4Client {
- export type AWSAccountId = string;
- export type ActiveFunctionalityList = FunctionalityName[];
- export interface AllowVendedLogDeliveryForResourceRequest {
- resourceArnBeingAuthorized: ResourceArn;
- deliverySourceArn: ResourceArn;
- }
- export interface AllowVendedLogDeliveryForResourceResponse {
- message?: String;
- }
- export interface ApplicationProperties {
- tenantId: TenantId;
- applicationArn: ResourceArn;
- tenantUrl: Url;
- applicationType: FunctionalityName;
- }
- export type ApplicationPropertiesList = ApplicationProperties[];
- export interface AssociateCustomizationPermissionRequest {
- identifier: CustomizationIdentifier;
- permission: CustomizationPermission;
- }
- export interface AssociateCustomizationPermissionResponse {
- }
- export type Base64EncodedPaginationToken = string;
- export type Boolean = boolean;
- export interface ByUserAnalytics {
- s3Uri?: S3Uri;
- toggle: OptInFeatureToggle;
- }
- export type ClientId = string;
- export interface CodeStarReference {
- connectionArn: ResourceArn;
- }
- export interface CreateCustomizationRequest {
- dataReference: DataReference;
- customizationName: CustomizationName;
- description?: Description;
- profileArn: ProfileArn;
- tags?: TagList;
- clientToken?: IdempotencyToken;
- includeRepos?: RepositoryList;
- }
- export interface CreateCustomizationResponse {
- customizationArn: CustomizationArn;
- }
- export interface CreateProfileRequest {
- identitySource?: IdentitySource;
- profileName: ProfileName;
- description?: ProfileDescription;
- referenceTrackerConfiguration: ReferenceTrackerConfiguration;
- activeFunctionalities?: ActiveFunctionalityList;
- clientToken?: IdempotencyToken;
- kmsKeyArn?: ResourceArn;
- tags?: TagList;
- resourcePolicy?: ResourcePolicy;
- optInFeatures?: OptInFeatures;
- }
- export interface CreateProfileResponse {
- profileArn: ProfileArn;
- }
- export type CustomizationArn = string;
- export type CustomizationIdentifier = string;
- export type CustomizationName = string;
- export interface CustomizationPermission {
- user?: IdentityCenterIdentifier;
- group?: IdentityCenterIdentifier;
- }
- export type CustomizationStatus = "CREATED"|"UPDATED"|"CREATING"|"UPDATING"|"DELETING"|"ACTIVATING"|"DEACTIVATING"|"ACTIVATED"|"CREATION_FAILED"|"UPDATE_FAILED"|"DELETION_FAILED"|"ACTIVATION_FAILED"|"DEACTIVATION_FAILED"|string;
- export interface CustomizationSummary {
- arn: CustomizationArn;
- version?: Version;
- customizationName: CustomizationName;
- description?: Description;
- status: CustomizationStatus;
- updatedAt: Timestamp;
- }
- export type CustomizationSummaryList = CustomizationSummary[];
- export interface CustomizationVersionSummary {
- version: Version;
- baseVersion?: Version;
- status: CustomizationStatus;
- dataReference: DataReference;
- updatedAt: Timestamp;
- evaluationMetrics?: EvaluationMetrics;
- }
- export type CustomizationVersionSummaryList = CustomizationVersionSummary[];
- export interface DashboardAnalytics {
- toggle: OptInFeatureToggle;
- }
- export interface DataReference {
- codeStarReference?: CodeStarReference;
- s3Reference?: S3Reference;
- }
- export interface DeleteCustomizationRequest {
- identifier: CustomizationIdentifier;
- clientToken?: IdempotencyToken;
- }
- export interface DeleteCustomizationResponse {
- }
- export interface DeleteProfileRequest {
- profileArn: ProfileArn;
- }
- export interface DeleteProfileResponse {
- }
- export type Description = string;
- export interface DisassociateCustomizationPermissionRequest {
- identifier: CustomizationIdentifier;
- permission: CustomizationPermission;
- }
- export interface DisassociateCustomizationPermissionResponse {
- }
- export type ErrorDetails = string;
- export interface EvaluationMetrics {
- compositeScore: Integer;
- }
- export interface ExternalIdentityDetails {
- issuerUrl?: IssuerUrl;
- clientId?: ClientId;
- scimEndpoint?: String;
- }
- export interface ExternalIdentitySource {
- issuerUrl: IssuerUrl;
- clientId: ClientId;
- }
- export type FeatureName = string;
- export interface FileContext {
- leftFileContent: FileContextLeftFileContentString;
- rightFileContent: FileContextRightFileContentString;
- filename: FileContextFilenameString;
- fileUri?: FileContextFileUriString;
- programmingLanguage: ProgrammingLanguage;
- }
- export type FileContextFileUriString = string;
- export type FileContextFilenameString = string;
- export type FileContextLeftFileContentString = string;
- export type FileContextRightFileContentString = string;
- export type FunctionalityName = "COMPLETIONS"|"ANALYSIS"|"CONVERSATIONS"|"TASK_ASSIST"|"TRANSFORMATIONS"|"CHAT_CUSTOMIZATION"|"TRANSFORMATIONS_WEBAPP"|"FEATURE_DEVELOPMENT"|string;
- export interface GenerateRecommendationsRequest {
- fileContext: FileContext;
- maxResults?: GenerateRecommendationsRequestMaxResultsInteger;
- nextToken?: GenerateRecommendationsRequestNextTokenString;
- referenceTrackerConfiguration?: ReferenceTrackerConfiguration;
- supplementalContexts?: SupplementalContextList;
- }
- export type GenerateRecommendationsRequestMaxResultsInteger = number;
- export type GenerateRecommendationsRequestNextTokenString = string;
- export interface GenerateRecommendationsResponse {
- recommendations?: RecommendationsList;
- nextToken?: String;
- }
- export interface GetCustomizationRequest {
- identifier: CustomizationIdentifier;
- }
- export interface GetCustomizationResponse {
- arn: CustomizationArn;
- version?: Version;
- status: CustomizationStatus;
- errorDetails?: ErrorDetails;
- dataReference: DataReference;
- customizationName: CustomizationName;
- description?: Description;
- profileArn: ProfileArn;
- updatedAt: Timestamp;
- evaluationMetrics?: EvaluationMetrics;
- includeRepos?: RepositoryList;
- }
- export type GrantId = string;
- export type GrantToken = string;
- export type IdempotencyToken = string;
- export type IdentityCenterIdentifier = string;
- export type IdentityCenterPermissions = CustomizationPermission[];
- export interface IdentityDetails {
- ssoIdentityDetails?: SSOIdentityDetails;
- externalIdentityDetails?: ExternalIdentityDetails;
- }
- export interface IdentitySource {
- ssoIdentitySource?: SSOIdentitySource;
- externalIdentitySource?: ExternalIdentitySource;
- }
- export interface Import {
- statement?: ImportStatementString;
- }
- export type ImportStatementString = string;
- export type Imports = Import[];
- export type Integer = number;
- export type IssuerUrl = string;
- export interface ListCustomizationPermissionsRequest {
- identifier: CustomizationIdentifier;
- maxResults?: ListCustomizationPermissionsRequestMaxResultsInteger;
- nextToken?: Base64EncodedPaginationToken;
- }
- export type ListCustomizationPermissionsRequestMaxResultsInteger = number;
- export interface ListCustomizationPermissionsResponse {
- permissions: IdentityCenterPermissions;
- nextToken?: Base64EncodedPaginationToken;
- }
- export interface ListCustomizationVersionsRequest {
- identifier: CustomizationIdentifier;
- maxResults?: ListCustomizationVersionsRequestMaxResultsInteger;
- nextToken?: Base64EncodedPaginationToken;
- }
- export type ListCustomizationVersionsRequestMaxResultsInteger = number;
- export interface ListCustomizationVersionsResponse {
- versions: CustomizationVersionSummaryList;
- nextToken?: Base64EncodedPaginationToken;
- }
- export interface ListCustomizationsRequest {
- maxResults?: ListCustomizationsRequestMaxResultsInteger;
- nextToken?: Base64EncodedPaginationToken;
- }
- export type ListCustomizationsRequestMaxResultsInteger = number;
- export interface ListCustomizationsResponse {
- customizations: CustomizationSummaryList;
- nextToken?: Base64EncodedPaginationToken;
- }
- export interface ListProfilesRequest {
- maxResults?: ListProfilesRequestMaxResultsInteger;
- includeManagementAccount?: Boolean;
- nextToken?: Base64EncodedPaginationToken;
- }
- export type ListProfilesRequestMaxResultsInteger = number;
- export interface ListProfilesResponse {
- profiles: ProfileList;
- nextToken?: Base64EncodedPaginationToken;
- }
- export interface ListTagsForResourceRequest {
- resourceArn: ResourceArn;
- }
- export interface ListTagsForResourceResponse {
- tags?: TagList;
- }
- export type Notifications = NotificationsFeature[];
- export interface NotificationsFeature {
- feature: FeatureName;
- toggle: OptInFeatureToggle;
- }
- export type OptInFeatureToggle = "ON"|"OFF"|string;
- export interface OptInFeatures {
- promptLogging?: PromptLogging;
- byUserAnalytics?: ByUserAnalytics;
- dashboardAnalytics?: DashboardAnalytics;
- notifications?: Notifications;
- workspaceContext?: WorkspaceContext;
- }
- export interface PreviousEditorStateMetadata {
- timeOffset: Integer;
- }
- export interface Profile {
- arn: ProfileArn;
- identityDetails?: IdentityDetails;
- profileName: ProfileName;
- description?: ProfileDescription;
- referenceTrackerConfiguration?: ReferenceTrackerConfiguration;
- kmsKeyArn?: ResourceArn;
- activeFunctionalities?: ActiveFunctionalityList;
- status?: ProfileStatus;
- errorDetails?: ErrorDetails;
- resourcePolicy?: ResourcePolicy;
- profileType?: ProfileType;
- optInFeatures?: OptInFeatures;
- permissionUpdateRequired?: Boolean;
- applicationProperties?: ApplicationPropertiesList;
- }
- export type ProfileArn = string;
- export type ProfileDescription = string;
- export type ProfileList = Profile[];
- export type ProfileName = string;
- export type ProfileStatus = "ACTIVE"|"CREATING"|"CREATE_FAILED"|"UPDATING"|"UPDATE_FAILED"|"DELETING"|"DELETE_FAILED"|string;
- export type ProfileType = "Q_DEVELOPER"|"CODEWHISPERER"|string;
- export interface ProgrammingLanguage {
- languageName: ProgrammingLanguageLanguageNameString;
- }
- export type ProgrammingLanguageLanguageNameString = string;
- export interface PromptLogging {
- s3Uri: S3Uri;
- toggle: OptInFeatureToggle;
- }
- export interface Recommendation {
- content: RecommendationContentString;
- references?: References;
- mostRelevantMissingImports?: Imports;
- }
- export type RecommendationContentString = string;
- export type RecommendationsList = Recommendation[];
- export type RecommendationsWithReferencesPreference = "BLOCK"|"ALLOW"|string;
- export interface Reference {
- /**
- * License name
- */
- licenseName?: ReferenceLicenseNameString;
- /**
- * Code Repsitory for the associated reference
- */
- repository?: ReferenceRepositoryString;
- /**
- * Respository URL
- */
- url?: ReferenceUrlString;
- /**
- * Span / Range for the Reference
- */
- recommendationContentSpan?: Span;
- }
- export type ReferenceLicenseNameString = string;
- export type ReferenceRepositoryString = string;
- export interface ReferenceTrackerConfiguration {
- recommendationsWithReferences: RecommendationsWithReferencesPreference;
- }
- export type ReferenceUrlString = string;
- export type References = Reference[];
- export type RepositoryId = string;
- export type RepositoryList = RepositoryId[];
- export type ResourceArn = string;
- export interface ResourcePolicy {
- effect: ResourcePolicyEffect;
- }
- export type ResourcePolicyEffect = "ALLOW"|"DENY"|string;
- export interface S3Reference {
- uri: S3Uri;
- }
- export type S3Uri = string;
- export interface SSOIdentityDetails {
- instanceArn: ResourceArn;
- oidcClientId: String;
- ssoRegion?: SSORegion;
- }
- export interface SSOIdentitySource {
- instanceArn: ResourceArn;
- ssoRegion?: SSORegion;
- }
- export type SSORegion = string;
- export interface Span {
- start?: SpanStartInteger;
- end?: SpanEndInteger;
- }
- export type SpanEndInteger = number;
- export type SpanStartInteger = number;
- export type String = string;
- export interface SupplementalContext {
- filePath: SupplementalContextFilePathString;
- content: SupplementalContextContentString;
- type?: SupplementalContextType;
- metadata?: SupplementalContextMetadata;
- }
- export type SupplementalContextContentString = string;
- export type SupplementalContextFilePathString = string;
- export type SupplementalContextList = SupplementalContext[];
- export interface SupplementalContextMetadata {
- previousEditorStateMetadata?: PreviousEditorStateMetadata;
- }
- export type SupplementalContextType = "PreviousEditorState"|"WorkspaceContext"|string;
- export interface Tag {
- key: TagKey;
- value: TagValue;
- }
- export type TagKey = string;
- export type TagKeyList = TagKey[];
- export type TagList = Tag[];
- export interface TagResourceRequest {
- resourceArn: ResourceArn;
- tags: TagList;
- }
- export interface TagResourceResponse {
- }
- export type TagValue = string;
- export type TenantId = string;
- export type Timestamp = Date;
- export interface UntagResourceRequest {
- resourceArn: ResourceArn;
- tagKeys: TagKeyList;
- }
- export interface UntagResourceResponse {
- }
- export interface UpdateCustomizationRequest {
- identifier: CustomizationIdentifier;
- operation: UpdateOperation;
- clientToken?: IdempotencyToken;
- dataReference?: DataReference;
- version?: Version;
- includeRepos?: RepositoryList;
- }
- export interface UpdateCustomizationResponse {
- }
- export type UpdateOperation = "ACTIVATE"|"DEACTIVATE"|"UPDATE"|string;
- export interface UpdateProfileRequest {
- profileArn: ProfileArn;
- identitySource?: IdentitySource;
- profileName?: ProfileName;
- description?: ProfileDescription;
- referenceTrackerConfiguration?: ReferenceTrackerConfiguration;
- activeFunctionalities?: ActiveFunctionalityList;
- kmsKeyArn?: ResourceArn;
- resourcePolicy?: ResourcePolicy;
- targetProfileType?: ProfileType;
- optInFeatures?: OptInFeatures;
- }
- export interface UpdateProfileResponse {
- profileArn: ProfileArn;
- }
- export type Url = string;
- export interface VendKeyGrantRequest {
- accountId: AWSAccountId;
- usecase: VendKeyGrantUseCase;
- }
- export interface VendKeyGrantResponse {
- cmkArn?: ResourceArn;
- grantId?: GrantToken;
- grantToken?: GrantId;
- }
- export type VendKeyGrantUseCase = "TEST"|"WEAVER_BIRD"|"ELASTIC_GUMBY"|"LOCHNESS"|"BOWER_BIRD"|"ELASTIC_GUMBY_V2_JOB"|"ELASTIC_GUMBY_V2_CHAT"|string;
- export type Version = number;
- export interface WorkspaceContext {
- toggle: OptInFeatureToggle;
- }
- /**
- * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version.
- */
- export type apiVersion = "2024-10-25"|"latest"|string;
- export interface ClientApiVersions {
- /**
- * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version.
- */
- apiVersion?: apiVersion;
- }
- export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions;
- /**
- * Contains interfaces for use with the CodeWhispererSigV4Client client.
- */
- export import Types = CodeWhispererSigV4Client;
-}
-export = CodeWhispererSigV4Client;
-
-
\ No newline at end of file
diff --git a/server/aws-lsp-codewhisperer/src/client/sigv4/service.json b/server/aws-lsp-codewhisperer/src/client/sigv4/service.json
deleted file mode 100644
index 26220aa7a0..0000000000
--- a/server/aws-lsp-codewhisperer/src/client/sigv4/service.json
+++ /dev/null
@@ -1,2145 +0,0 @@
-{
- "version": "2.0",
- "metadata": {
- "apiVersion": "2024-10-25",
- "auth": ["aws.auth#sigv4"],
- "endpointPrefix": "codewhisperer",
- "jsonVersion": "1.0",
- "protocol": "json",
- "protocols": ["json"],
- "serviceFullName": "AWS CodeWhisperer",
- "serviceId": "CodeWhisperer",
- "signatureVersion": "v4",
- "signingName": "codewhisperer",
- "targetPrefix": "AWSCodeWhispererService",
- "uid": "codewhisperer-2024-10-25"
- },
- "operations": {
- "AllowVendedLogDeliveryForResource": {
- "name": "AllowVendedLogDeliveryForResource",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "AllowVendedLogDeliveryForResourceRequest"
- },
- "output": {
- "shape": "AllowVendedLogDeliveryForResourceResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Internal API to authorize a CodeWhisperer resource for vended log delivery.
"
- },
- "AssociateCustomizationPermission": {
- "name": "AssociateCustomizationPermission",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "AssociateCustomizationPermissionRequest"
- },
- "output": {
- "shape": "AssociateCustomizationPermissionResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Add permission for an Identity Center User/Group to use the Customization.
"
- },
- "CreateCustomization": {
- "name": "CreateCustomization",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "CreateCustomizationRequest"
- },
- "output": {
- "shape": "CreateCustomizationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ]
- },
- "CreateProfile": {
- "name": "CreateProfile",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "CreateProfileRequest"
- },
- "output": {
- "shape": "CreateProfileResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Creates a CodeWhisperer profile which can then be associated to users/groups of an identity source
"
- },
- "DeleteCustomization": {
- "name": "DeleteCustomization",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "DeleteCustomizationRequest"
- },
- "output": {
- "shape": "DeleteCustomizationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Deletes CodeWhisperer Customization and associated resources
"
- },
- "DeleteProfile": {
- "name": "DeleteProfile",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "DeleteProfileRequest"
- },
- "output": {
- "shape": "DeleteProfileResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Deletes CodeWhisperer profile and associated resources
"
- },
- "DisassociateCustomizationPermission": {
- "name": "DisassociateCustomizationPermission",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "DisassociateCustomizationPermissionRequest"
- },
- "output": {
- "shape": "DisassociateCustomizationPermissionResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Disassociate the permission for a Customization from an Identity Center User/Group.
"
- },
- "GenerateRecommendations": {
- "name": "GenerateRecommendations",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GenerateRecommendationsRequest"
- },
- "output": {
- "shape": "GenerateRecommendationsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Generates recommendations based on the provided file context.
"
- },
- "GetCustomization": {
- "name": "GetCustomization",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GetCustomizationRequest"
- },
- "output": {
- "shape": "GetCustomizationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ]
- },
- "ListCustomizationPermissions": {
- "name": "ListCustomizationPermissions",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListCustomizationPermissionsRequest"
- },
- "output": {
- "shape": "ListCustomizationPermissionsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "List User(s)/Group(s) who have permissions to use a Customization.
"
- },
- "ListCustomizationVersions": {
- "name": "ListCustomizationVersions",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListCustomizationVersionsRequest"
- },
- "output": {
- "shape": "ListCustomizationVersionsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "List actionable versions associated with a Customization.
"
- },
- "ListCustomizations": {
- "name": "ListCustomizations",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListCustomizationsRequest"
- },
- "output": {
- "shape": "ListCustomizationsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ]
- },
- "ListProfiles": {
- "name": "ListProfiles",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListProfilesRequest"
- },
- "output": {
- "shape": "ListProfilesResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Lists one or more CodeWhisperer profiles that you have created.
"
- },
- "ListTagsForResource": {
- "name": "ListTagsForResource",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListTagsForResourceRequest"
- },
- "output": {
- "shape": "ListTagsForResourceResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "List tags of an existing CodeWhisperer profile.
"
- },
- "TagResource": {
- "name": "TagResource",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "TagResourceRequest"
- },
- "output": {
- "shape": "TagResourceResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Add tags to an existing CodeWhisperer profile.
"
- },
- "UntagResource": {
- "name": "UntagResource",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "UntagResourceRequest"
- },
- "output": {
- "shape": "UntagResourceResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Remove tags from an existing CodeWhisperer profile.
"
- },
- "UpdateCustomization": {
- "name": "UpdateCustomization",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "UpdateCustomizationRequest"
- },
- "output": {
- "shape": "UpdateCustomizationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ]
- },
- "UpdateProfile": {
- "name": "UpdateProfile",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "UpdateProfileRequest"
- },
- "output": {
- "shape": "UpdateProfileResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Updates an existing CodeWhisperer profile.
"
- },
- "VendKeyGrant": {
- "name": "VendKeyGrant",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "VendKeyGrantRequest"
- },
- "output": {
- "shape": "VendKeyGrantResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Returns grant details associated with the profile under the input account Id Output includes cmk arn, grant token, and grant id
"
- }
- },
- "shapes": {
- "AWSAccountId": {
- "type": "string",
- "documentation": "Represents the AWS account ID of the customer
",
- "pattern": "[0-9]{12}"
- },
- "AccessDeniedException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- },
- "reason": {
- "shape": "AccessDeniedExceptionReason"
- }
- },
- "documentation": "This exception is thrown when the user does not have sufficient access to perform this action.
",
- "exception": true
- },
- "AccessDeniedExceptionReason": {
- "type": "string",
- "documentation": "Reason for AccessDeniedException
",
- "enum": ["UNAUTHORIZED_CUSTOMIZATION_RESOURCE_ACCESS", "UNAUTHORIZED_WORKSPACE_CONTEXT_FEATURE_ACCESS"]
- },
- "ActiveFunctionalityList": {
- "type": "list",
- "member": {
- "shape": "FunctionalityName"
- },
- "max": 10,
- "min": 0
- },
- "AllowVendedLogDeliveryForResourceRequest": {
- "type": "structure",
- "required": ["resourceArnBeingAuthorized", "deliverySourceArn"],
- "members": {
- "resourceArnBeingAuthorized": {
- "shape": "ResourceArn"
- },
- "deliverySourceArn": {
- "shape": "ResourceArn"
- }
- }
- },
- "AllowVendedLogDeliveryForResourceResponse": {
- "type": "structure",
- "members": {
- "message": {
- "shape": "String"
- }
- }
- },
- "ApplicationProperties": {
- "type": "structure",
- "required": ["tenantId", "applicationArn", "tenantUrl", "applicationType"],
- "members": {
- "tenantId": {
- "shape": "TenantId"
- },
- "applicationArn": {
- "shape": "ResourceArn"
- },
- "tenantUrl": {
- "shape": "Url"
- },
- "applicationType": {
- "shape": "FunctionalityName"
- }
- }
- },
- "ApplicationPropertiesList": {
- "type": "list",
- "member": {
- "shape": "ApplicationProperties"
- }
- },
- "AssociateCustomizationPermissionRequest": {
- "type": "structure",
- "required": ["identifier", "permission"],
- "members": {
- "identifier": {
- "shape": "CustomizationIdentifier"
- },
- "permission": {
- "shape": "CustomizationPermission"
- }
- }
- },
- "AssociateCustomizationPermissionResponse": {
- "type": "structure",
- "members": {}
- },
- "Base64EncodedPaginationToken": {
- "type": "string",
- "max": 2048,
- "min": 1,
- "pattern": "(?:[A-Za-z0-9\\+/]{4})*(?:[A-Za-z0-9\\+/]{2}\\=\\=|[A-Za-z0-9\\+/]{3}\\=)?"
- },
- "Boolean": {
- "type": "boolean",
- "box": true
- },
- "ByUserAnalytics": {
- "type": "structure",
- "required": ["toggle"],
- "members": {
- "s3Uri": {
- "shape": "S3Uri"
- },
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- },
- "ClientId": {
- "type": "string",
- "max": 255,
- "min": 1
- },
- "CodeStarReference": {
- "type": "structure",
- "required": ["connectionArn"],
- "members": {
- "connectionArn": {
- "shape": "ResourceArn"
- }
- }
- },
- "ConflictException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- },
- "reason": {
- "shape": "ConflictExceptionReason"
- }
- },
- "documentation": "This exception is thrown when the action to perform could not be completed because the resource is in a conflicting state.
",
- "exception": true
- },
- "ConflictExceptionReason": {
- "type": "string",
- "documentation": "Reason for ConflictException
",
- "enum": ["CUSTOMER_KMS_KEY_INVALID_KEY_POLICY", "CUSTOMER_KMS_KEY_DISABLED", "MISMATCHED_KMS_KEY"]
- },
- "CreateCustomizationRequest": {
- "type": "structure",
- "required": ["dataReference", "customizationName", "profileArn"],
- "members": {
- "dataReference": {
- "shape": "DataReference"
- },
- "customizationName": {
- "shape": "CustomizationName"
- },
- "description": {
- "shape": "Description"
- },
- "profileArn": {
- "shape": "ProfileArn"
- },
- "tags": {
- "shape": "TagList"
- },
- "clientToken": {
- "shape": "IdempotencyToken"
- },
- "includeRepos": {
- "shape": "RepositoryList"
- }
- }
- },
- "CreateCustomizationResponse": {
- "type": "structure",
- "required": ["customizationArn"],
- "members": {
- "customizationArn": {
- "shape": "CustomizationArn"
- }
- }
- },
- "CreateProfileRequest": {
- "type": "structure",
- "required": ["profileName", "referenceTrackerConfiguration"],
- "members": {
- "identitySource": {
- "shape": "IdentitySource"
- },
- "profileName": {
- "shape": "ProfileName"
- },
- "description": {
- "shape": "ProfileDescription"
- },
- "referenceTrackerConfiguration": {
- "shape": "ReferenceTrackerConfiguration"
- },
- "activeFunctionalities": {
- "shape": "ActiveFunctionalityList"
- },
- "clientToken": {
- "shape": "IdempotencyToken",
- "idempotencyToken": true
- },
- "kmsKeyArn": {
- "shape": "ResourceArn"
- },
- "tags": {
- "shape": "TagList"
- },
- "resourcePolicy": {
- "shape": "ResourcePolicy"
- },
- "optInFeatures": {
- "shape": "OptInFeatures"
- }
- }
- },
- "CreateProfileResponse": {
- "type": "structure",
- "required": ["profileArn"],
- "members": {
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "CustomizationArn": {
- "type": "string",
- "max": 950,
- "min": 0,
- "pattern": "arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}"
- },
- "CustomizationIdentifier": {
- "type": "string",
- "max": 950,
- "min": 1,
- "pattern": ".*[a-zA-Z0-9-:/]*.*"
- },
- "CustomizationName": {
- "type": "string",
- "max": 100,
- "min": 1,
- "pattern": "[a-zA-Z][a-zA-Z0-9_-]*"
- },
- "CustomizationPermission": {
- "type": "structure",
- "members": {
- "user": {
- "shape": "IdentityCenterIdentifier"
- },
- "group": {
- "shape": "IdentityCenterIdentifier"
- }
- },
- "union": true
- },
- "CustomizationStatus": {
- "type": "string",
- "enum": [
- "CREATED",
- "UPDATED",
- "CREATING",
- "UPDATING",
- "DELETING",
- "ACTIVATING",
- "DEACTIVATING",
- "ACTIVATED",
- "CREATION_FAILED",
- "UPDATE_FAILED",
- "DELETION_FAILED",
- "ACTIVATION_FAILED",
- "DEACTIVATION_FAILED"
- ]
- },
- "CustomizationSummary": {
- "type": "structure",
- "required": ["arn", "customizationName", "status", "updatedAt"],
- "members": {
- "arn": {
- "shape": "CustomizationArn"
- },
- "version": {
- "shape": "Version"
- },
- "customizationName": {
- "shape": "CustomizationName"
- },
- "description": {
- "shape": "Description"
- },
- "status": {
- "shape": "CustomizationStatus"
- },
- "updatedAt": {
- "shape": "Timestamp"
- }
- }
- },
- "CustomizationSummaryList": {
- "type": "list",
- "member": {
- "shape": "CustomizationSummary"
- }
- },
- "CustomizationVersionSummary": {
- "type": "structure",
- "required": ["version", "status", "dataReference", "updatedAt"],
- "members": {
- "version": {
- "shape": "Version"
- },
- "baseVersion": {
- "shape": "Version"
- },
- "status": {
- "shape": "CustomizationStatus"
- },
- "dataReference": {
- "shape": "DataReference"
- },
- "updatedAt": {
- "shape": "Timestamp"
- },
- "evaluationMetrics": {
- "shape": "EvaluationMetrics"
- }
- }
- },
- "CustomizationVersionSummaryList": {
- "type": "list",
- "member": {
- "shape": "CustomizationVersionSummary"
- }
- },
- "DashboardAnalytics": {
- "type": "structure",
- "required": ["toggle"],
- "members": {
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- },
- "DataReference": {
- "type": "structure",
- "members": {
- "codeStarReference": {
- "shape": "CodeStarReference"
- },
- "s3Reference": {
- "shape": "S3Reference"
- }
- },
- "union": true
- },
- "DeleteCustomizationRequest": {
- "type": "structure",
- "required": ["identifier"],
- "members": {
- "identifier": {
- "shape": "CustomizationIdentifier"
- },
- "clientToken": {
- "shape": "IdempotencyToken"
- }
- }
- },
- "DeleteCustomizationResponse": {
- "type": "structure",
- "members": {}
- },
- "DeleteProfileRequest": {
- "type": "structure",
- "required": ["profileArn"],
- "members": {
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "DeleteProfileResponse": {
- "type": "structure",
- "members": {}
- },
- "Description": {
- "type": "string",
- "max": 256,
- "min": 0,
- "pattern": "[\\sa-zA-Z0-9_-]*"
- },
- "DisassociateCustomizationPermissionRequest": {
- "type": "structure",
- "required": ["identifier", "permission"],
- "members": {
- "identifier": {
- "shape": "CustomizationIdentifier"
- },
- "permission": {
- "shape": "CustomizationPermission"
- }
- }
- },
- "DisassociateCustomizationPermissionResponse": {
- "type": "structure",
- "members": {}
- },
- "ErrorDetails": {
- "type": "string",
- "max": 2048,
- "min": 0
- },
- "EvaluationMetrics": {
- "type": "structure",
- "required": ["compositeScore"],
- "members": {
- "compositeScore": {
- "shape": "Integer"
- }
- }
- },
- "ExternalIdentityDetails": {
- "type": "structure",
- "members": {
- "issuerUrl": {
- "shape": "IssuerUrl"
- },
- "clientId": {
- "shape": "ClientId"
- },
- "scimEndpoint": {
- "shape": "String"
- }
- }
- },
- "ExternalIdentitySource": {
- "type": "structure",
- "required": ["issuerUrl", "clientId"],
- "members": {
- "issuerUrl": {
- "shape": "IssuerUrl"
- },
- "clientId": {
- "shape": "ClientId"
- }
- }
- },
- "FeatureName": {
- "type": "string",
- "max": 128,
- "min": 1,
- "pattern": "[-a-zA-Z0-9._]*"
- },
- "FileContext": {
- "type": "structure",
- "required": ["leftFileContent", "rightFileContent", "filename", "programmingLanguage"],
- "members": {
- "leftFileContent": {
- "shape": "FileContextLeftFileContentString"
- },
- "rightFileContent": {
- "shape": "FileContextRightFileContentString"
- },
- "filename": {
- "shape": "FileContextFilenameString"
- },
- "fileUri": {
- "shape": "FileContextFileUriString"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- }
- }
- },
- "FileContextFileUriString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "FileContextFilenameString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "FileContextLeftFileContentString": {
- "type": "string",
- "max": 10240,
- "min": 0,
- "sensitive": true
- },
- "FileContextRightFileContentString": {
- "type": "string",
- "max": 10240,
- "min": 0,
- "sensitive": true
- },
- "FunctionalityName": {
- "type": "string",
- "enum": [
- "COMPLETIONS",
- "ANALYSIS",
- "CONVERSATIONS",
- "TASK_ASSIST",
- "TRANSFORMATIONS",
- "CHAT_CUSTOMIZATION",
- "TRANSFORMATIONS_WEBAPP",
- "FEATURE_DEVELOPMENT"
- ],
- "max": 64,
- "min": 1
- },
- "GenerateRecommendationsRequest": {
- "type": "structure",
- "required": ["fileContext"],
- "members": {
- "fileContext": {
- "shape": "FileContext"
- },
- "maxResults": {
- "shape": "GenerateRecommendationsRequestMaxResultsInteger"
- },
- "nextToken": {
- "shape": "GenerateRecommendationsRequestNextTokenString"
- },
- "referenceTrackerConfiguration": {
- "shape": "ReferenceTrackerConfiguration"
- },
- "supplementalContexts": {
- "shape": "SupplementalContextList"
- }
- }
- },
- "GenerateRecommendationsRequestMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 10,
- "min": 1
- },
- "GenerateRecommendationsRequestNextTokenString": {
- "type": "string",
- "max": 2048,
- "min": 0,
- "pattern": "(?:[A-Za-z0-9\\+/]{4})*(?:[A-Za-z0-9\\+/]{2}\\=\\=|[A-Za-z0-9\\+/]{3}\\=)?"
- },
- "GenerateRecommendationsResponse": {
- "type": "structure",
- "members": {
- "recommendations": {
- "shape": "RecommendationsList"
- },
- "nextToken": {
- "shape": "String"
- }
- }
- },
- "GetCustomizationRequest": {
- "type": "structure",
- "required": ["identifier"],
- "members": {
- "identifier": {
- "shape": "CustomizationIdentifier"
- }
- }
- },
- "GetCustomizationResponse": {
- "type": "structure",
- "required": ["arn", "status", "dataReference", "customizationName", "profileArn", "updatedAt"],
- "members": {
- "arn": {
- "shape": "CustomizationArn"
- },
- "version": {
- "shape": "Version"
- },
- "status": {
- "shape": "CustomizationStatus"
- },
- "errorDetails": {
- "shape": "ErrorDetails"
- },
- "dataReference": {
- "shape": "DataReference"
- },
- "customizationName": {
- "shape": "CustomizationName"
- },
- "description": {
- "shape": "Description"
- },
- "profileArn": {
- "shape": "ProfileArn"
- },
- "updatedAt": {
- "shape": "Timestamp"
- },
- "evaluationMetrics": {
- "shape": "EvaluationMetrics"
- },
- "includeRepos": {
- "shape": "RepositoryList"
- }
- }
- },
- "GrantId": {
- "type": "string",
- "max": 128,
- "min": 1
- },
- "GrantToken": {
- "type": "string",
- "max": 8192,
- "min": 1
- },
- "IdempotencyToken": {
- "type": "string",
- "max": 256,
- "min": 1
- },
- "IdentityCenterIdentifier": {
- "type": "string",
- "max": 64,
- "min": 1,
- "pattern": "([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}"
- },
- "IdentityCenterPermissions": {
- "type": "list",
- "member": {
- "shape": "CustomizationPermission"
- }
- },
- "IdentityDetails": {
- "type": "structure",
- "members": {
- "ssoIdentityDetails": {
- "shape": "SSOIdentityDetails"
- },
- "externalIdentityDetails": {
- "shape": "ExternalIdentityDetails"
- }
- },
- "union": true
- },
- "IdentitySource": {
- "type": "structure",
- "members": {
- "ssoIdentitySource": {
- "shape": "SSOIdentitySource"
- },
- "externalIdentitySource": {
- "shape": "ExternalIdentitySource"
- }
- },
- "union": true
- },
- "Import": {
- "type": "structure",
- "members": {
- "statement": {
- "shape": "ImportStatementString"
- }
- }
- },
- "ImportStatementString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "Imports": {
- "type": "list",
- "member": {
- "shape": "Import"
- },
- "max": 10,
- "min": 0
- },
- "Integer": {
- "type": "integer",
- "box": true
- },
- "InternalServerException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- },
- "reason": {
- "shape": "InternalServerExceptionReason"
- }
- },
- "documentation": "This exception is thrown when an unexpected error occurred during the processing of a request.
",
- "exception": true,
- "fault": true,
- "retryable": {
- "throttling": false
- }
- },
- "InternalServerExceptionReason": {
- "type": "string",
- "documentation": "Reason for InternalServerException
",
- "enum": ["MODEL_TEMPORARILY_UNAVAILABLE"]
- },
- "IssuerUrl": {
- "type": "string",
- "max": 255,
- "min": 1
- },
- "ListCustomizationPermissionsRequest": {
- "type": "structure",
- "required": ["identifier"],
- "members": {
- "identifier": {
- "shape": "CustomizationIdentifier"
- },
- "maxResults": {
- "shape": "ListCustomizationPermissionsRequestMaxResultsInteger"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListCustomizationPermissionsRequestMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 50,
- "min": 1
- },
- "ListCustomizationPermissionsResponse": {
- "type": "structure",
- "required": ["permissions"],
- "members": {
- "permissions": {
- "shape": "IdentityCenterPermissions"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListCustomizationVersionsRequest": {
- "type": "structure",
- "required": ["identifier"],
- "members": {
- "identifier": {
- "shape": "CustomizationIdentifier"
- },
- "maxResults": {
- "shape": "ListCustomizationVersionsRequestMaxResultsInteger"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListCustomizationVersionsRequestMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 100,
- "min": 1
- },
- "ListCustomizationVersionsResponse": {
- "type": "structure",
- "required": ["versions"],
- "members": {
- "versions": {
- "shape": "CustomizationVersionSummaryList"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListCustomizationsRequest": {
- "type": "structure",
- "members": {
- "maxResults": {
- "shape": "ListCustomizationsRequestMaxResultsInteger"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListCustomizationsRequestMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 100,
- "min": 1
- },
- "ListCustomizationsResponse": {
- "type": "structure",
- "required": ["customizations"],
- "members": {
- "customizations": {
- "shape": "CustomizationSummaryList"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListProfilesRequest": {
- "type": "structure",
- "members": {
- "maxResults": {
- "shape": "ListProfilesRequestMaxResultsInteger"
- },
- "includeManagementAccount": {
- "shape": "Boolean"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListProfilesRequestMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 100,
- "min": 1
- },
- "ListProfilesResponse": {
- "type": "structure",
- "required": ["profiles"],
- "members": {
- "profiles": {
- "shape": "ProfileList"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListTagsForResourceRequest": {
- "type": "structure",
- "required": ["resourceArn"],
- "members": {
- "resourceArn": {
- "shape": "ResourceArn"
- }
- }
- },
- "ListTagsForResourceResponse": {
- "type": "structure",
- "members": {
- "tags": {
- "shape": "TagList"
- }
- }
- },
- "Notifications": {
- "type": "list",
- "member": {
- "shape": "NotificationsFeature"
- },
- "max": 10,
- "min": 0
- },
- "NotificationsFeature": {
- "type": "structure",
- "required": ["feature", "toggle"],
- "members": {
- "feature": {
- "shape": "FeatureName"
- },
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- },
- "OptInFeatureToggle": {
- "type": "string",
- "enum": ["ON", "OFF"]
- },
- "OptInFeatures": {
- "type": "structure",
- "members": {
- "promptLogging": {
- "shape": "PromptLogging"
- },
- "byUserAnalytics": {
- "shape": "ByUserAnalytics"
- },
- "dashboardAnalytics": {
- "shape": "DashboardAnalytics"
- },
- "notifications": {
- "shape": "Notifications"
- },
- "workspaceContext": {
- "shape": "WorkspaceContext"
- }
- }
- },
- "PreviousEditorStateMetadata": {
- "type": "structure",
- "required": ["timeOffset"],
- "members": {
- "timeOffset": {
- "shape": "Integer"
- }
- }
- },
- "Profile": {
- "type": "structure",
- "required": ["arn", "profileName"],
- "members": {
- "arn": {
- "shape": "ProfileArn"
- },
- "identityDetails": {
- "shape": "IdentityDetails"
- },
- "profileName": {
- "shape": "ProfileName"
- },
- "description": {
- "shape": "ProfileDescription"
- },
- "referenceTrackerConfiguration": {
- "shape": "ReferenceTrackerConfiguration"
- },
- "kmsKeyArn": {
- "shape": "ResourceArn"
- },
- "activeFunctionalities": {
- "shape": "ActiveFunctionalityList"
- },
- "status": {
- "shape": "ProfileStatus"
- },
- "errorDetails": {
- "shape": "ErrorDetails"
- },
- "resourcePolicy": {
- "shape": "ResourcePolicy"
- },
- "profileType": {
- "shape": "ProfileType"
- },
- "optInFeatures": {
- "shape": "OptInFeatures"
- },
- "permissionUpdateRequired": {
- "shape": "Boolean"
- },
- "applicationProperties": {
- "shape": "ApplicationPropertiesList"
- }
- }
- },
- "ProfileArn": {
- "type": "string",
- "max": 950,
- "min": 0,
- "pattern": "arn:aws:(codewhisperer|transform):[-.a-z0-9]{1,63}:\\d{12}:profile/([a-zA-Z0-9]){12}"
- },
- "ProfileDescription": {
- "type": "string",
- "max": 256,
- "min": 1,
- "pattern": "[\\sa-zA-Z0-9_-]*"
- },
- "ProfileList": {
- "type": "list",
- "member": {
- "shape": "Profile"
- }
- },
- "ProfileName": {
- "type": "string",
- "max": 100,
- "min": 1,
- "pattern": "[a-zA-Z][a-zA-Z0-9_-]*"
- },
- "ProfileStatus": {
- "type": "string",
- "enum": ["ACTIVE", "CREATING", "CREATE_FAILED", "UPDATING", "UPDATE_FAILED", "DELETING", "DELETE_FAILED"]
- },
- "ProfileType": {
- "type": "string",
- "enum": ["Q_DEVELOPER", "CODEWHISPERER"]
- },
- "ProgrammingLanguage": {
- "type": "structure",
- "required": ["languageName"],
- "members": {
- "languageName": {
- "shape": "ProgrammingLanguageLanguageNameString"
- }
- },
- "documentation": "Programming Languages supported by CodeWhisperer
"
- },
- "ProgrammingLanguageLanguageNameString": {
- "type": "string",
- "max": 128,
- "min": 1,
- "pattern": "(python|javascript|java|csharp|typescript|c|cpp|go|kotlin|php|ruby|rust|scala|shell|sql|json|yaml|vue|tf|tsx|jsx|plaintext|systemverilog|dart|lua|swift|hcl|powershell|r|abap)"
- },
- "PromptLogging": {
- "type": "structure",
- "required": ["s3Uri", "toggle"],
- "members": {
- "s3Uri": {
- "shape": "S3Uri"
- },
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- },
- "Recommendation": {
- "type": "structure",
- "required": ["content"],
- "members": {
- "content": {
- "shape": "RecommendationContentString"
- },
- "references": {
- "shape": "References"
- },
- "mostRelevantMissingImports": {
- "shape": "Imports"
- }
- }
- },
- "RecommendationContentString": {
- "type": "string",
- "max": 5120,
- "min": 1,
- "sensitive": true
- },
- "RecommendationsList": {
- "type": "list",
- "member": {
- "shape": "Recommendation"
- },
- "max": 10,
- "min": 0
- },
- "RecommendationsWithReferencesPreference": {
- "type": "string",
- "documentation": "Recommendations with references setting for CodeWhisperer
",
- "enum": ["BLOCK", "ALLOW"]
- },
- "Reference": {
- "type": "structure",
- "members": {
- "licenseName": {
- "shape": "ReferenceLicenseNameString",
- "documentation": "License name
"
- },
- "repository": {
- "shape": "ReferenceRepositoryString",
- "documentation": "Code Repsitory for the associated reference
"
- },
- "url": {
- "shape": "ReferenceUrlString",
- "documentation": "Respository URL
"
- },
- "recommendationContentSpan": {
- "shape": "Span",
- "documentation": "Span / Range for the Reference
"
- }
- },
- "documentation": "Code Reference / Repository details
"
- },
- "ReferenceLicenseNameString": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "ReferenceRepositoryString": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "ReferenceTrackerConfiguration": {
- "type": "structure",
- "required": ["recommendationsWithReferences"],
- "members": {
- "recommendationsWithReferences": {
- "shape": "RecommendationsWithReferencesPreference"
- }
- }
- },
- "ReferenceUrlString": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "References": {
- "type": "list",
- "member": {
- "shape": "Reference"
- },
- "max": 10,
- "min": 0
- },
- "RepositoryId": {
- "type": "string",
- "max": 255,
- "min": 1,
- "pattern": ".*(?x)^([a-zA-Z0-9-_\\.\\s()]+/)+[\\w-\\.\\+_\\s]+",
- "sensitive": true
- },
- "RepositoryList": {
- "type": "list",
- "member": {
- "shape": "RepositoryId"
- },
- "max": 100,
- "min": 1,
- "sensitive": true
- },
- "ResourceArn": {
- "type": "string",
- "max": 1224,
- "min": 0,
- "pattern": "arn:([-.a-z0-9]{1,63}:){2}([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}"
- },
- "ResourceNotFoundException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- }
- },
- "documentation": "This exception is thrown when describing a resource that does not exist.
",
- "exception": true
- },
- "ResourcePolicy": {
- "type": "structure",
- "required": ["effect"],
- "members": {
- "effect": {
- "shape": "ResourcePolicyEffect"
- }
- }
- },
- "ResourcePolicyEffect": {
- "type": "string",
- "enum": ["ALLOW", "DENY"]
- },
- "S3Reference": {
- "type": "structure",
- "required": ["uri"],
- "members": {
- "uri": {
- "shape": "S3Uri"
- }
- }
- },
- "S3Uri": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "pattern": "s3://((?!xn--)[a-z0-9](?![^/]*[.]{2})[a-z0-9-.]{1,61}[a-z0-9](?Represents span in a text.
"
- },
- "SpanEndInteger": {
- "type": "integer",
- "box": true,
- "min": 0
- },
- "SpanStartInteger": {
- "type": "integer",
- "box": true,
- "min": 0
- },
- "String": {
- "type": "string"
- },
- "SupplementalContext": {
- "type": "structure",
- "required": ["filePath", "content"],
- "members": {
- "filePath": {
- "shape": "SupplementalContextFilePathString"
- },
- "content": {
- "shape": "SupplementalContextContentString"
- },
- "type": {
- "shape": "SupplementalContextType"
- },
- "metadata": {
- "shape": "SupplementalContextMetadata"
- }
- }
- },
- "SupplementalContextContentString": {
- "type": "string",
- "max": 10240,
- "min": 1,
- "sensitive": true
- },
- "SupplementalContextFilePathString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "SupplementalContextList": {
- "type": "list",
- "member": {
- "shape": "SupplementalContext"
- },
- "max": 20,
- "min": 0
- },
- "SupplementalContextMetadata": {
- "type": "structure",
- "members": {
- "previousEditorStateMetadata": {
- "shape": "PreviousEditorStateMetadata"
- }
- },
- "union": true
- },
- "SupplementalContextType": {
- "type": "string",
- "enum": ["PreviousEditorState", "WorkspaceContext"]
- },
- "Tag": {
- "type": "structure",
- "required": ["key", "value"],
- "members": {
- "key": {
- "shape": "TagKey"
- },
- "value": {
- "shape": "TagValue"
- }
- }
- },
- "TagKey": {
- "type": "string",
- "max": 128,
- "min": 1
- },
- "TagKeyList": {
- "type": "list",
- "member": {
- "shape": "TagKey"
- },
- "max": 50,
- "min": 0
- },
- "TagList": {
- "type": "list",
- "member": {
- "shape": "Tag"
- },
- "max": 50,
- "min": 0
- },
- "TagResourceRequest": {
- "type": "structure",
- "required": ["resourceArn", "tags"],
- "members": {
- "resourceArn": {
- "shape": "ResourceArn"
- },
- "tags": {
- "shape": "TagList"
- }
- }
- },
- "TagResourceResponse": {
- "type": "structure",
- "members": {}
- },
- "TagValue": {
- "type": "string",
- "max": 256,
- "min": 0
- },
- "TenantId": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "ThrottlingException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- },
- "reason": {
- "shape": "ThrottlingExceptionReason"
- }
- },
- "documentation": "This exception is thrown when request was denied due to request throttling.
",
- "exception": true,
- "retryable": {
- "throttling": true
- }
- },
- "ThrottlingExceptionReason": {
- "type": "string",
- "documentation": "Reason for ThrottlingException
",
- "enum": ["MONTHLY_REQUEST_COUNT"]
- },
- "Timestamp": {
- "type": "timestamp"
- },
- "UntagResourceRequest": {
- "type": "structure",
- "required": ["resourceArn", "tagKeys"],
- "members": {
- "resourceArn": {
- "shape": "ResourceArn"
- },
- "tagKeys": {
- "shape": "TagKeyList"
- }
- }
- },
- "UntagResourceResponse": {
- "type": "structure",
- "members": {}
- },
- "UpdateCustomizationRequest": {
- "type": "structure",
- "required": ["identifier", "operation"],
- "members": {
- "identifier": {
- "shape": "CustomizationIdentifier"
- },
- "operation": {
- "shape": "UpdateOperation"
- },
- "clientToken": {
- "shape": "IdempotencyToken"
- },
- "dataReference": {
- "shape": "DataReference"
- },
- "version": {
- "shape": "Version"
- },
- "includeRepos": {
- "shape": "RepositoryList"
- }
- }
- },
- "UpdateCustomizationResponse": {
- "type": "structure",
- "members": {}
- },
- "UpdateOperation": {
- "type": "string",
- "enum": ["ACTIVATE", "DEACTIVATE", "UPDATE"]
- },
- "UpdateProfileRequest": {
- "type": "structure",
- "required": ["profileArn"],
- "members": {
- "profileArn": {
- "shape": "ProfileArn"
- },
- "identitySource": {
- "shape": "IdentitySource"
- },
- "profileName": {
- "shape": "ProfileName"
- },
- "description": {
- "shape": "ProfileDescription"
- },
- "referenceTrackerConfiguration": {
- "shape": "ReferenceTrackerConfiguration"
- },
- "activeFunctionalities": {
- "shape": "ActiveFunctionalityList"
- },
- "kmsKeyArn": {
- "shape": "ResourceArn"
- },
- "resourcePolicy": {
- "shape": "ResourcePolicy"
- },
- "targetProfileType": {
- "shape": "ProfileType"
- },
- "optInFeatures": {
- "shape": "OptInFeatures"
- }
- }
- },
- "UpdateProfileResponse": {
- "type": "structure",
- "required": ["profileArn"],
- "members": {
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "Url": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "ValidationException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- },
- "reason": {
- "shape": "ValidationExceptionReason"
- }
- },
- "documentation": "This exception is thrown when the input fails to satisfy the constraints specified by the service.
",
- "exception": true
- },
- "ValidationExceptionReason": {
- "type": "string",
- "documentation": "Reason for ValidationException
",
- "enum": ["INVALID_CONVERSATION_ID", "CONTENT_LENGTH_EXCEEDS_THRESHOLD", "INVALID_KMS_GRANT"]
- },
- "VendKeyGrantRequest": {
- "type": "structure",
- "required": ["accountId", "usecase"],
- "members": {
- "accountId": {
- "shape": "AWSAccountId"
- },
- "usecase": {
- "shape": "VendKeyGrantUseCase"
- }
- }
- },
- "VendKeyGrantResponse": {
- "type": "structure",
- "members": {
- "cmkArn": {
- "shape": "ResourceArn"
- },
- "grantId": {
- "shape": "GrantToken"
- },
- "grantToken": {
- "shape": "GrantId"
- }
- }
- },
- "VendKeyGrantUseCase": {
- "type": "string",
- "enum": [
- "TEST",
- "WEAVER_BIRD",
- "ELASTIC_GUMBY",
- "LOCHNESS",
- "BOWER_BIRD",
- "ELASTIC_GUMBY_V2_JOB",
- "ELASTIC_GUMBY_V2_CHAT"
- ]
- },
- "Version": {
- "type": "long",
- "box": true
- },
- "WorkspaceContext": {
- "type": "structure",
- "required": ["toggle"],
- "members": {
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- }
- }
-}
diff --git a/server/aws-lsp-codewhisperer/src/client/token/bearer-token-service.json b/server/aws-lsp-codewhisperer/src/client/token/bearer-token-service.json
deleted file mode 100644
index a5704fca16..0000000000
--- a/server/aws-lsp-codewhisperer/src/client/token/bearer-token-service.json
+++ /dev/null
@@ -1,6656 +0,0 @@
-{
- "version": "2.0",
- "metadata": {
- "apiVersion": "2022-11-11",
- "auth": ["smithy.api#httpBearerAuth"],
- "endpointPrefix": "amazoncodewhispererservice",
- "jsonVersion": "1.0",
- "protocol": "json",
- "protocols": ["json"],
- "serviceFullName": "Amazon CodeWhisperer",
- "serviceId": "CodeWhispererRuntime",
- "signingName": "amazoncodewhispererservice",
- "targetPrefix": "AmazonCodeWhispererService",
- "uid": "codewhispererruntime-2022-11-11"
- },
- "operations": {
- "CreateArtifactUploadUrl": {
- "name": "CreateArtifactUploadUrl",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "CreateUploadUrlRequest"
- },
- "output": {
- "shape": "CreateUploadUrlResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Creates a pre-signed, S3 write URL for uploading a repository zip archive.
",
- "idempotent": true
- },
- "CreateSubscriptionToken": {
- "name": "CreateSubscriptionToken",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "CreateSubscriptionTokenRequest"
- },
- "output": {
- "shape": "CreateSubscriptionTokenResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "idempotent": true
- },
- "CreateTaskAssistConversation": {
- "name": "CreateTaskAssistConversation",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "CreateTaskAssistConversationRequest"
- },
- "output": {
- "shape": "CreateTaskAssistConversationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ServiceQuotaExceededException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to create task assist conversation.
"
- },
- "CreateUploadUrl": {
- "name": "CreateUploadUrl",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "CreateUploadUrlRequest"
- },
- "output": {
- "shape": "CreateUploadUrlResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ServiceQuotaExceededException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Creates a pre-signed, S3 write URL for uploading a repository zip archive.
",
- "idempotent": true
- },
- "CreateUserMemoryEntry": {
- "name": "CreateUserMemoryEntry",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "CreateUserMemoryEntryInput"
- },
- "output": {
- "shape": "CreateUserMemoryEntryOutput"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ServiceQuotaExceededException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to create a single user memory entry
",
- "idempotent": true
- },
- "CreateWorkspace": {
- "name": "CreateWorkspace",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "CreateWorkspaceRequest"
- },
- "output": {
- "shape": "CreateWorkspaceResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ServiceQuotaExceededException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Create a workspace based on a workspace root
"
- },
- "DeleteTaskAssistConversation": {
- "name": "DeleteTaskAssistConversation",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "DeleteTaskAssistConversationRequest"
- },
- "output": {
- "shape": "DeleteTaskAssistConversationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to delete task assist conversation.
"
- },
- "DeleteUserMemoryEntry": {
- "name": "DeleteUserMemoryEntry",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "DeleteUserMemoryEntryInput"
- },
- "output": {
- "shape": "DeleteUserMemoryEntryOutput"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to delete a single user memory entry
",
- "idempotent": true
- },
- "DeleteWorkspace": {
- "name": "DeleteWorkspace",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "DeleteWorkspaceRequest"
- },
- "output": {
- "shape": "DeleteWorkspaceResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Delete a workspace based on a workspaceId
"
- },
- "GenerateCompletions": {
- "name": "GenerateCompletions",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GenerateCompletionsRequest"
- },
- "output": {
- "shape": "GenerateCompletionsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Generate completions based on the provided file context in a paginated response.
"
- },
- "GetCodeAnalysis": {
- "name": "GetCodeAnalysis",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GetCodeAnalysisRequest"
- },
- "output": {
- "shape": "GetCodeAnalysisResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Gets the metadata of a code analysis job.
"
- },
- "GetCodeFixJob": {
- "name": "GetCodeFixJob",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GetCodeFixJobRequest"
- },
- "output": {
- "shape": "GetCodeFixJobResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ]
- },
- "GetTaskAssistCodeGeneration": {
- "name": "GetTaskAssistCodeGeneration",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GetTaskAssistCodeGenerationRequest"
- },
- "output": {
- "shape": "GetTaskAssistCodeGenerationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to get status of task assist code generation.
"
- },
- "GetTestGeneration": {
- "name": "GetTestGeneration",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GetTestGenerationRequest"
- },
- "output": {
- "shape": "GetTestGenerationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to get test generation job.
"
- },
- "GetTransformation": {
- "name": "GetTransformation",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GetTransformationRequest"
- },
- "output": {
- "shape": "GetTransformationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to get code transformation status.
"
- },
- "GetTransformationPlan": {
- "name": "GetTransformationPlan",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GetTransformationPlanRequest"
- },
- "output": {
- "shape": "GetTransformationPlanResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to get code transformation status.
"
- },
- "GetProfile": {
- "name": "GetProfile",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GetProfileRequest"
- },
- "output": {
- "shape": "GetProfileResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Get the requested CodeWhisperer profile.
"
- },
- "GetUsageLimits": {
- "name": "GetUsageLimits",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "GetUsageLimitsRequest"
- },
- "output": {
- "shape": "GetUsageLimitsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to get current usage limits
"
- },
- "ListAvailableCustomizations": {
- "name": "ListAvailableCustomizations",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListAvailableCustomizationsRequest"
- },
- "output": {
- "shape": "ListAvailableCustomizationsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ]
- },
- "ListAvailableModels": {
- "name": "ListAvailableModels",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListAvailableModelsRequest"
- },
- "output": {
- "shape": "ListAvailableModelsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ]
- },
- "ListAvailableProfiles": {
- "name": "ListAvailableProfiles",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListAvailableProfilesRequest"
- },
- "output": {
- "shape": "ListAvailableProfilesResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ]
- },
- "ListCodeAnalysisFindings": {
- "name": "ListCodeAnalysisFindings",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListCodeAnalysisFindingsRequest"
- },
- "output": {
- "shape": "ListCodeAnalysisFindingsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Lists the findings from a particular code analysis job.
"
- },
- "ListEvents": {
- "name": "ListEvents",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListEventsRequest"
- },
- "output": {
- "shape": "ListEventsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "List events for agent activity
"
- },
- "ListFeatureEvaluations": {
- "name": "ListFeatureEvaluations",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListFeatureEvaluationsRequest"
- },
- "output": {
- "shape": "ListFeatureEvaluationsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Return configruations for each feature that has been setup for A/B testing.
"
- },
- "ListUserMemoryEntries": {
- "name": "ListUserMemoryEntries",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListUserMemoryEntriesInput"
- },
- "output": {
- "shape": "ListUserMemoryEntriesOutput"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to list user memories
"
- },
- "ListWorkspaceMetadata": {
- "name": "ListWorkspaceMetadata",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ListWorkspaceMetadataRequest"
- },
- "output": {
- "shape": "ListWorkspaceMetadataResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "List workspace metadata based on a workspace root
"
- },
- "PushTelemetryEvent": {
- "name": "PushTelemetryEvent",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "PushTelemetryEventRequest"
- },
- "output": {
- "shape": "PushTelemetryEventResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to push telemetry events to CloudWatch, DataHub and EventBridge.
",
- "idempotent": true
- },
- "ResumeTransformation": {
- "name": "ResumeTransformation",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "ResumeTransformationRequest"
- },
- "output": {
- "shape": "ResumeTransformationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to resume transformation job.
"
- },
- "SendTelemetryEvent": {
- "name": "SendTelemetryEvent",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "SendTelemetryEventRequest"
- },
- "output": {
- "shape": "SendTelemetryEventResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to record telemetry events.
",
- "idempotent": true
- },
- "StartCodeAnalysis": {
- "name": "StartCodeAnalysis",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "StartCodeAnalysisRequest"
- },
- "output": {
- "shape": "StartCodeAnalysisResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "Starts a code analysis job
",
- "idempotent": true
- },
- "StartCodeFixJob": {
- "name": "StartCodeFixJob",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "StartCodeFixJobRequest"
- },
- "output": {
- "shape": "StartCodeFixJobResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ]
- },
- "StartTaskAssistCodeGeneration": {
- "name": "StartTaskAssistCodeGeneration",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "StartTaskAssistCodeGenerationRequest"
- },
- "output": {
- "shape": "StartTaskAssistCodeGenerationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "ServiceQuotaExceededException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to start task assist code generation.
"
- },
- "StartTestGeneration": {
- "name": "StartTestGeneration",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "StartTestGenerationRequest"
- },
- "output": {
- "shape": "StartTestGenerationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to start test generation.
",
- "idempotent": true
- },
- "StartTransformation": {
- "name": "StartTransformation",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "StartTransformationRequest"
- },
- "output": {
- "shape": "StartTransformationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ConflictException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to start code translation.
"
- },
- "StopTransformation": {
- "name": "StopTransformation",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "StopTransformationRequest"
- },
- "output": {
- "shape": "StopTransformationResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "ResourceNotFoundException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- }
- ],
- "documentation": "API to stop code transformation status.
"
- },
- "UpdateUsageLimits": {
- "name": "UpdateUsageLimits",
- "http": {
- "method": "POST",
- "requestUri": "/"
- },
- "input": {
- "shape": "UpdateUsageLimitsRequest"
- },
- "output": {
- "shape": "UpdateUsageLimitsResponse"
- },
- "errors": [
- {
- "shape": "ThrottlingException"
- },
- {
- "shape": "InternalServerException"
- },
- {
- "shape": "ValidationException"
- },
- {
- "shape": "AccessDeniedException"
- },
- {
- "shape": "UpdateUsageLimitQuotaExceededException"
- }
- ],
- "documentation": "API to update usage limits for enterprise customers
"
- }
- },
- "shapes": {
- "AccessDeniedException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- },
- "reason": {
- "shape": "AccessDeniedExceptionReason"
- }
- },
- "documentation": "This exception is thrown when the user does not have sufficient access to perform this action.
",
- "exception": true
- },
- "AccessDeniedExceptionReason": {
- "type": "string",
- "documentation": "Reason for AccessDeniedException
",
- "enum": ["UNAUTHORIZED_CUSTOMIZATION_RESOURCE_ACCESS", "UNAUTHORIZED_WORKSPACE_CONTEXT_FEATURE_ACCESS"]
- },
- "ActivationToken": {
- "type": "string",
- "max": 16,
- "min": 8
- },
- "ActiveFunctionalityList": {
- "type": "list",
- "member": {
- "shape": "FunctionalityName"
- },
- "max": 10,
- "min": 0
- },
- "AdditionalContentEntry": {
- "type": "structure",
- "required": ["name", "description"],
- "members": {
- "name": {
- "shape": "AdditionalContentEntryNameString",
- "documentation": "The name/identifier for this context entry
"
- },
- "description": {
- "shape": "AdditionalContentEntryDescriptionString",
- "documentation": "A description of what this context entry represents
"
- },
- "innerContext": {
- "shape": "AdditionalContentEntryInnerContextString",
- "documentation": "The actual contextual content
"
- }
- },
- "documentation": "Structure representing a single entry of additional contextual content
"
- },
- "AdditionalContentEntryDescriptionString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "AdditionalContentEntryInnerContextString": {
- "type": "string",
- "max": 8192,
- "min": 1,
- "sensitive": true
- },
- "AdditionalContentEntryNameString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "pattern": "[a-z]+(?:-[a-z0-9]+)*",
- "sensitive": true
- },
- "AdditionalContentList": {
- "type": "list",
- "member": {
- "shape": "AdditionalContentEntry"
- },
- "documentation": "A list of additional content entries, limited to 20 items
",
- "max": 20,
- "min": 0
- },
- "AgenticChatEventStatus": {
- "type": "string",
- "enum": ["SUCCEEDED", "CANCELLED", "FAILED"]
- },
- "AppStudioState": {
- "type": "structure",
- "required": ["namespace", "propertyName", "propertyContext"],
- "members": {
- "namespace": {
- "shape": "AppStudioStateNamespaceString",
- "documentation": "The namespace of the context. Examples: 'ui.Button', 'ui.Table.DataSource', 'ui.Table.RowActions.Button', 'logic.invokeAWS', 'logic.JavaScript'
"
- },
- "propertyName": {
- "shape": "AppStudioStatePropertyNameString",
- "documentation": "The name of the property. Examples: 'visibility', 'disability', 'value', 'code'
"
- },
- "propertyValue": {
- "shape": "AppStudioStatePropertyValueString",
- "documentation": "The value of the property.
"
- },
- "propertyContext": {
- "shape": "AppStudioStatePropertyContextString",
- "documentation": "Context about how the property is used
"
- }
- },
- "documentation": "Description of a user's context when they are calling Q Chat from AppStudio
"
- },
- "AppStudioStateNamespaceString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "AppStudioStatePropertyContextString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "AppStudioStatePropertyNameString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "AppStudioStatePropertyValueString": {
- "type": "string",
- "max": 10240,
- "min": 0,
- "sensitive": true
- },
- "ApplicationProperties": {
- "type": "structure",
- "required": ["tenantId", "applicationArn", "tenantUrl", "applicationType"],
- "members": {
- "tenantId": {
- "shape": "TenantId"
- },
- "applicationArn": {
- "shape": "ResourceArn"
- },
- "tenantUrl": {
- "shape": "Url"
- },
- "applicationType": {
- "shape": "FunctionalityName"
- }
- }
- },
- "ApplicationPropertiesList": {
- "type": "list",
- "member": {
- "shape": "ApplicationProperties"
- }
- },
- "ArtifactId": {
- "type": "string",
- "max": 126,
- "min": 1,
- "pattern": "[a-zA-Z0-9-_]+"
- },
- "ArtifactMap": {
- "type": "map",
- "key": {
- "shape": "ArtifactType"
- },
- "value": {
- "shape": "UploadId"
- },
- "max": 64,
- "min": 1
- },
- "ArtifactType": {
- "type": "string",
- "enum": ["SourceCode", "BuiltJars"]
- },
- "AssistantResponseMessage": {
- "type": "structure",
- "required": ["content"],
- "members": {
- "messageId": {
- "shape": "MessageId"
- },
- "content": {
- "shape": "AssistantResponseMessageContentString",
- "documentation": "The content of the text message in markdown format.
"
- },
- "supplementaryWebLinks": {
- "shape": "SupplementaryWebLinks",
- "documentation": "Web References
"
- },
- "references": {
- "shape": "References",
- "documentation": "Code References
"
- },
- "followupPrompt": {
- "shape": "FollowupPrompt",
- "documentation": "Followup Prompt
"
- },
- "toolUses": {
- "shape": "ToolUses",
- "documentation": "ToolUse Request
"
- }
- },
- "documentation": "Markdown text message.
"
- },
- "AssistantResponseMessageContentString": {
- "type": "string",
- "max": 100000,
- "min": 0,
- "sensitive": true
- },
- "AttributesMap": {
- "type": "map",
- "key": {
- "shape": "AttributesMapKeyString"
- },
- "value": {
- "shape": "StringList"
- },
- "documentation": "Attributes is a map of key-value pairs
"
- },
- "AttributesMapKeyString": {
- "type": "string",
- "max": 128,
- "min": 1
- },
- "Base64EncodedPaginationToken": {
- "type": "string",
- "max": 2048,
- "min": 1,
- "pattern": "(?:[A-Za-z0-9\\+/]{4})*(?:[A-Za-z0-9\\+/]{2}\\=\\=|[A-Za-z0-9\\+/]{3}\\=)?"
- },
- "Boolean": {
- "type": "boolean",
- "box": true
- },
- "ByUserAnalytics": {
- "type": "structure",
- "required": ["toggle"],
- "members": {
- "s3Uri": {
- "shape": "S3Uri"
- },
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- },
- "ChangeLogGranularityType": {
- "type": "string",
- "enum": ["STANDARD", "BUSINESS"]
- },
- "ChangeLogOptions": {
- "type": "structure",
- "required": ["granularity"],
- "members": {
- "granularity": {
- "shape": "ChangeLogGranularityType"
- }
- }
- },
- "ChatAddMessageEvent": {
- "type": "structure",
- "required": ["conversationId", "messageId"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "messageId": {
- "shape": "MessageId"
- },
- "customizationArn": {
- "shape": "CustomizationArn"
- },
- "userIntent": {
- "shape": "UserIntent"
- },
- "hasCodeSnippet": {
- "shape": "Boolean"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "activeEditorTotalCharacters": {
- "shape": "Integer"
- },
- "timeToFirstChunkMilliseconds": {
- "shape": "Double"
- },
- "timeBetweenChunks": {
- "shape": "timeBetweenChunks"
- },
- "fullResponselatency": {
- "shape": "Double"
- },
- "requestLength": {
- "shape": "Integer"
- },
- "responseLength": {
- "shape": "Integer"
- },
- "numberOfCodeBlocks": {
- "shape": "Integer"
- },
- "hasProjectLevelContext": {
- "shape": "Boolean"
- },
- "result": {
- "shape": "AgenticChatEventStatus"
- }
- }
- },
- "ChatHistory": {
- "type": "list",
- "member": {
- "shape": "ChatMessage"
- },
- "documentation": "Indicates Participant in Chat conversation
",
- "max": 250,
- "min": 0
- },
- "ChatInteractWithMessageEvent": {
- "type": "structure",
- "required": ["conversationId", "messageId"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "messageId": {
- "shape": "MessageId"
- },
- "customizationArn": {
- "shape": "CustomizationArn"
- },
- "interactionType": {
- "shape": "ChatMessageInteractionType"
- },
- "interactionTarget": {
- "shape": "ChatInteractWithMessageEventInteractionTargetString"
- },
- "acceptedCharacterCount": {
- "shape": "Integer"
- },
- "acceptedLineCount": {
- "shape": "Integer"
- },
- "acceptedSnippetHasReference": {
- "shape": "Boolean"
- },
- "hasProjectLevelContext": {
- "shape": "Boolean"
- },
- "userIntent": {
- "shape": "UserIntent"
- },
- "addedIdeDiagnostics": {
- "shape": "IdeDiagnosticList"
- },
- "removedIdeDiagnostics": {
- "shape": "IdeDiagnosticList"
- }
- }
- },
- "ChatInteractWithMessageEventInteractionTargetString": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "ChatMessage": {
- "type": "structure",
- "members": {
- "userInputMessage": {
- "shape": "UserInputMessage"
- },
- "assistantResponseMessage": {
- "shape": "AssistantResponseMessage"
- }
- },
- "union": true
- },
- "ChatMessageInteractionType": {
- "type": "string",
- "documentation": "Chat Message Interaction Type
",
- "enum": [
- "INSERT_AT_CURSOR",
- "COPY_SNIPPET",
- "COPY",
- "CLICK_LINK",
- "CLICK_BODY_LINK",
- "CLICK_FOLLOW_UP",
- "HOVER_REFERENCE",
- "UPVOTE",
- "DOWNVOTE"
- ]
- },
- "ChatTriggerType": {
- "type": "string",
- "documentation": "Trigger Reason for Chat
",
- "enum": ["MANUAL", "DIAGNOSTIC", "INLINE_CHAT"]
- },
- "ChatUserModificationEvent": {
- "type": "structure",
- "required": ["conversationId", "messageId", "modificationPercentage"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "customizationArn": {
- "shape": "CustomizationArn"
- },
- "messageId": {
- "shape": "MessageId"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "modificationPercentage": {
- "shape": "Double"
- },
- "hasProjectLevelContext": {
- "shape": "Boolean"
- }
- }
- },
- "ClientId": {
- "type": "string",
- "max": 255,
- "min": 1
- },
- "CodeAnalysisFindingsSchema": {
- "type": "string",
- "enum": ["codeanalysis/findings/1.0"]
- },
- "CodeAnalysisScope": {
- "type": "string",
- "enum": ["FILE", "PROJECT", "AGENTIC"]
- },
- "CodeAnalysisStatus": {
- "type": "string",
- "enum": ["Completed", "Pending", "Failed"]
- },
- "CodeAnalysisUploadContext": {
- "type": "structure",
- "required": ["codeScanName"],
- "members": {
- "codeScanName": {
- "shape": "CodeScanName"
- }
- }
- },
- "CodeCoverageEvent": {
- "type": "structure",
- "required": ["programmingLanguage", "acceptedCharacterCount", "totalCharacterCount", "timestamp"],
- "members": {
- "customizationArn": {
- "shape": "CustomizationArn"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "acceptedCharacterCount": {
- "shape": "PrimitiveInteger"
- },
- "totalCharacterCount": {
- "shape": "PrimitiveInteger"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "unmodifiedAcceptedCharacterCount": {
- "shape": "PrimitiveInteger"
- },
- "totalNewCodeCharacterCount": {
- "shape": "PrimitiveInteger"
- },
- "totalNewCodeLineCount": {
- "shape": "PrimitiveInteger"
- },
- "userWrittenCodeCharacterCount": {
- "shape": "CodeCoverageEventUserWrittenCodeCharacterCountInteger"
- },
- "userWrittenCodeLineCount": {
- "shape": "CodeCoverageEventUserWrittenCodeLineCountInteger"
- },
- "addedCharacterCount": {
- "shape": "CodeCoverageEventAddedCharacterCountInteger"
- }
- }
- },
- "CodeCoverageEventAddedCharacterCountInteger": {
- "type": "integer",
- "min": 0
- },
- "CodeCoverageEventUserWrittenCodeCharacterCountInteger": {
- "type": "integer",
- "min": 0
- },
- "CodeCoverageEventUserWrittenCodeLineCountInteger": {
- "type": "integer",
- "min": 0
- },
- "CodeDescription": {
- "type": "structure",
- "required": ["href"],
- "members": {
- "href": {
- "shape": "CodeDescriptionHrefString",
- "documentation": "An URI to open with more information about the diagnostic error.
"
- }
- },
- "documentation": "Structure to capture a description for an error code.
"
- },
- "CodeDescriptionHrefString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "CodeDiffMetadata": {
- "type": "structure",
- "members": {
- "codeDiffPath": {
- "shape": "CodeDiffPath"
- }
- }
- },
- "CodeDiffPath": {
- "type": "string",
- "max": 1024,
- "min": 0,
- "pattern": "/[\\S]+/"
- },
- "CodeFixAcceptanceEvent": {
- "type": "structure",
- "required": ["jobId"],
- "members": {
- "jobId": {
- "shape": "String"
- },
- "ruleId": {
- "shape": "String"
- },
- "detectorId": {
- "shape": "String"
- },
- "findingId": {
- "shape": "String"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "linesOfCodeAccepted": {
- "shape": "Integer"
- },
- "charsOfCodeAccepted": {
- "shape": "Integer"
- }
- }
- },
- "CodeFixGenerationEvent": {
- "type": "structure",
- "required": ["jobId"],
- "members": {
- "jobId": {
- "shape": "String"
- },
- "ruleId": {
- "shape": "String"
- },
- "detectorId": {
- "shape": "String"
- },
- "findingId": {
- "shape": "String"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "linesOfCodeGenerated": {
- "shape": "Integer"
- },
- "charsOfCodeGenerated": {
- "shape": "Integer"
- }
- }
- },
- "CodeFixJobStatus": {
- "type": "string",
- "enum": ["Succeeded", "InProgress", "Failed"]
- },
- "CodeFixName": {
- "type": "string",
- "documentation": "Code fix name
",
- "max": 128,
- "min": 1,
- "pattern": "[a-zA-Z0-9-_$:.]*"
- },
- "CodeFixUploadContext": {
- "type": "structure",
- "required": ["codeFixName"],
- "members": {
- "codeFixName": {
- "shape": "CodeFixName"
- }
- }
- },
- "CodeGenerationId": {
- "type": "string",
- "documentation": "ID which represents a single code generation in a conversation
",
- "max": 128,
- "min": 1
- },
- "CodeGenerationStatus": {
- "type": "structure",
- "required": ["status", "currentStage"],
- "members": {
- "status": {
- "shape": "CodeGenerationWorkflowStatus"
- },
- "currentStage": {
- "shape": "CodeGenerationWorkflowStage"
- }
- }
- },
- "CodeGenerationStatusDetail": {
- "type": "string",
- "documentation": "Detailed message about the code generation status
",
- "sensitive": true
- },
- "CodeGenerationWorkflowStage": {
- "type": "string",
- "enum": ["InitialCodeGeneration", "CodeRefinement"]
- },
- "CodeGenerationWorkflowStatus": {
- "type": "string",
- "enum": ["InProgress", "Complete", "Failed"]
- },
- "CodeScanEvent": {
- "type": "structure",
- "required": ["programmingLanguage", "codeScanJobId", "timestamp"],
- "members": {
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "codeScanJobId": {
- "shape": "CodeScanJobId"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "codeAnalysisScope": {
- "shape": "CodeAnalysisScope"
- }
- },
- "documentation": "Published when a security scan or code review starts
"
- },
- "CodeScanFailedEvent": {
- "type": "structure",
- "required": ["programmingLanguage", "codeScanJobId", "timestamp"],
- "members": {
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "codeScanJobId": {
- "shape": "CodeScanJobId"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "codeAnalysisScope": {
- "shape": "CodeAnalysisScope"
- }
- },
- "documentation": "Published when a security scan or code review fails
"
- },
- "CodeScanJobId": {
- "type": "string",
- "max": 128,
- "min": 1
- },
- "CodeScanName": {
- "type": "string",
- "documentation": "Code analysis scan name
",
- "max": 128,
- "min": 1
- },
- "CodeScanRemediationsEvent": {
- "type": "structure",
- "members": {
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "CodeScanRemediationsEventType": {
- "shape": "CodeScanRemediationsEventType"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "detectorId": {
- "shape": "String"
- },
- "findingId": {
- "shape": "String"
- },
- "ruleId": {
- "shape": "String"
- },
- "component": {
- "shape": "String"
- },
- "reason": {
- "shape": "String"
- },
- "result": {
- "shape": "String"
- },
- "includesFix": {
- "shape": "Boolean"
- }
- }
- },
- "CodeScanRemediationsEventType": {
- "type": "string",
- "documentation": "Code Scan Remediations Interaction Type
",
- "enum": ["CODESCAN_ISSUE_HOVER", "CODESCAN_ISSUE_APPLY_FIX", "CODESCAN_ISSUE_VIEW_DETAILS"]
- },
- "CodeScanSucceededEvent": {
- "type": "structure",
- "required": ["programmingLanguage", "codeScanJobId", "timestamp", "numberOfFindings"],
- "members": {
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "codeScanJobId": {
- "shape": "CodeScanJobId"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "numberOfFindings": {
- "shape": "PrimitiveInteger"
- },
- "codeAnalysisScope": {
- "shape": "CodeAnalysisScope"
- }
- },
- "documentation": "Published when a security scan or code review completes successfully
"
- },
- "Completion": {
- "type": "structure",
- "required": ["content"],
- "members": {
- "content": {
- "shape": "CompletionContentString"
- },
- "references": {
- "shape": "References"
- },
- "mostRelevantMissingImports": {
- "shape": "Imports"
- }
- }
- },
- "CompletionContentString": {
- "type": "string",
- "max": 5120,
- "min": 1,
- "sensitive": true
- },
- "CompletionType": {
- "type": "string",
- "enum": ["BLOCK", "LINE"]
- },
- "Completions": {
- "type": "list",
- "member": {
- "shape": "Completion"
- },
- "max": 10,
- "min": 0
- },
- "ConflictException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- },
- "reason": {
- "shape": "ConflictExceptionReason"
- }
- },
- "documentation": "This exception is thrown when the action to perform could not be completed because the resource is in a conflicting state.
",
- "exception": true
- },
- "ConflictExceptionReason": {
- "type": "string",
- "documentation": "Reason for ConflictException
",
- "enum": ["CUSTOMER_KMS_KEY_INVALID_KEY_POLICY", "CUSTOMER_KMS_KEY_DISABLED", "MISMATCHED_KMS_KEY"]
- },
- "ConsoleState": {
- "type": "structure",
- "members": {
- "region": {
- "shape": "String"
- },
- "consoleUrl": {
- "shape": "SensitiveString"
- },
- "serviceId": {
- "shape": "String"
- },
- "serviceConsolePage": {
- "shape": "String"
- },
- "serviceSubconsolePage": {
- "shape": "String"
- },
- "taskName": {
- "shape": "SensitiveString"
- }
- },
- "documentation": "Information about the state of the AWS management console page from which the user is calling
"
- },
- "ContentChecksumType": {
- "type": "string",
- "enum": ["SHA_256"]
- },
- "ContentType": {
- "type": "string",
- "documentation": "The type of content
",
- "enum": ["FILE", "PROMPT", "CODE", "WORKSPACE"]
- },
- "ContextTruncationScheme": {
- "type": "string",
- "documentation": "Workspace context truncation schemes based on usecase
",
- "enum": ["ANALYSIS", "GUMBY"]
- },
- "ConversationId": {
- "type": "string",
- "documentation": "ID which represents a multi-turn conversation
",
- "max": 128,
- "min": 1
- },
- "ConversationState": {
- "type": "structure",
- "required": ["currentMessage", "chatTriggerType"],
- "members": {
- "conversationId": {
- "shape": "ConversationId",
- "documentation": "Unique identifier for the chat conversation stream
"
- },
- "workspaceId": {
- "shape": "UUID",
- "documentation": "Unique identifier for remote workspace
"
- },
- "history": {
- "shape": "ChatHistory",
- "documentation": "Holds the history of chat messages.
"
- },
- "currentMessage": {
- "shape": "ChatMessage",
- "documentation": "Holds the current message being processed or displayed.
"
- },
- "chatTriggerType": {
- "shape": "ChatTriggerType",
- "documentation": "Trigger Reason for Chat
"
- },
- "customizationArn": {
- "shape": "ResourceArn"
- }
- },
- "documentation": "Structure to represent the current state of a chat conversation.
"
- },
- "CreateSubscriptionTokenRequest": {
- "type": "structure",
- "members": {
- "clientToken": {
- "shape": "IdempotencyToken",
- "idempotencyToken": true
- },
- "statusOnly": {
- "shape": "Boolean"
- }
- }
- },
- "CreateSubscriptionTokenResponse": {
- "type": "structure",
- "required": ["status"],
- "members": {
- "encodedVerificationUrl": {
- "shape": "EncodedVerificationUrl"
- },
- "token": {
- "shape": "ActivationToken"
- },
- "status": {
- "shape": "SubscriptionStatus"
- }
- }
- },
- "CreateTaskAssistConversationRequest": {
- "type": "structure",
- "members": {
- "profileArn": {
- "shape": "ProfileArn"
- }
- },
- "documentation": "Structure to represent bootstrap conversation request.
"
- },
- "CreateTaskAssistConversationResponse": {
- "type": "structure",
- "required": ["conversationId"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- }
- },
- "documentation": "Structure to represent bootstrap conversation response.
"
- },
- "CreateUploadUrlRequest": {
- "type": "structure",
- "members": {
- "contentMd5": {
- "shape": "CreateUploadUrlRequestContentMd5String"
- },
- "contentChecksum": {
- "shape": "CreateUploadUrlRequestContentChecksumString"
- },
- "contentChecksumType": {
- "shape": "ContentChecksumType"
- },
- "contentLength": {
- "shape": "CreateUploadUrlRequestContentLengthLong"
- },
- "artifactType": {
- "shape": "ArtifactType"
- },
- "uploadIntent": {
- "shape": "UploadIntent"
- },
- "uploadContext": {
- "shape": "UploadContext"
- },
- "uploadId": {
- "shape": "UploadId"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "CreateUploadUrlRequestContentChecksumString": {
- "type": "string",
- "max": 512,
- "min": 1,
- "sensitive": true
- },
- "CreateUploadUrlRequestContentLengthLong": {
- "type": "long",
- "box": true,
- "min": 1
- },
- "CreateUploadUrlRequestContentMd5String": {
- "type": "string",
- "max": 128,
- "min": 1,
- "sensitive": true
- },
- "CreateUploadUrlResponse": {
- "type": "structure",
- "required": ["uploadId", "uploadUrl"],
- "members": {
- "uploadId": {
- "shape": "UploadId"
- },
- "uploadUrl": {
- "shape": "PreSignedUrl"
- },
- "kmsKeyArn": {
- "shape": "ResourceArn"
- },
- "requestHeaders": {
- "shape": "RequestHeaders"
- }
- }
- },
- "CreateUserMemoryEntryInput": {
- "type": "structure",
- "required": ["memoryEntryString", "origin"],
- "members": {
- "memoryEntryString": {
- "shape": "CreateUserMemoryEntryInputMemoryEntryStringString"
- },
- "origin": {
- "shape": "Origin"
- },
- "profileArn": {
- "shape": "CreateUserMemoryEntryInputProfileArnString",
- "documentation": "ProfileArn for the managing Q Profile
"
- },
- "clientToken": {
- "shape": "IdempotencyToken",
- "idempotencyToken": true
- }
- }
- },
- "CreateUserMemoryEntryInputMemoryEntryStringString": {
- "type": "string",
- "max": 500,
- "min": 1,
- "sensitive": true
- },
- "CreateUserMemoryEntryInputProfileArnString": {
- "type": "string",
- "min": 1,
- "pattern": "arn:aws:(codewhisperer|transform):[-.a-z0-9]{1,63}:\\d{12}:profile/([a-zA-Z0-9]){12}"
- },
- "CreateUserMemoryEntryOutput": {
- "type": "structure",
- "required": ["memoryEntry"],
- "members": {
- "memoryEntry": {
- "shape": "MemoryEntry"
- }
- }
- },
- "CreateWorkspaceRequest": {
- "type": "structure",
- "required": ["workspaceRoot"],
- "members": {
- "workspaceRoot": {
- "shape": "CreateWorkspaceRequestWorkspaceRootString"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "CreateWorkspaceRequestWorkspaceRootString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "CreateWorkspaceResponse": {
- "type": "structure",
- "required": ["workspace"],
- "members": {
- "workspace": {
- "shape": "WorkspaceMetadata"
- }
- }
- },
- "CursorState": {
- "type": "structure",
- "members": {
- "position": {
- "shape": "Position",
- "documentation": "Represents a cursor position in a Text Document
"
- },
- "range": {
- "shape": "Range",
- "documentation": "Represents a text selection in a Text Document
"
- }
- },
- "documentation": "Represents the state of the Cursor in an Editor
",
- "union": true
- },
- "Customization": {
- "type": "structure",
- "required": ["arn"],
- "members": {
- "arn": {
- "shape": "CustomizationArn"
- },
- "name": {
- "shape": "CustomizationName"
- },
- "description": {
- "shape": "Description"
- },
- "modelId": {
- "shape": "ModelId"
- }
- }
- },
- "CustomizationArn": {
- "type": "string",
- "max": 950,
- "min": 0,
- "pattern": "arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}"
- },
- "CustomizationName": {
- "type": "string",
- "max": 100,
- "min": 1,
- "pattern": "[a-zA-Z][a-zA-Z0-9_-]*"
- },
- "Customizations": {
- "type": "list",
- "member": {
- "shape": "Customization"
- }
- },
- "DashboardAnalytics": {
- "type": "structure",
- "required": ["toggle"],
- "members": {
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- },
- "DeleteTaskAssistConversationRequest": {
- "type": "structure",
- "required": ["conversationId"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- },
- "documentation": "Structure to represent bootstrap conversation request.
"
- },
- "DeleteTaskAssistConversationResponse": {
- "type": "structure",
- "required": ["conversationId"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- }
- },
- "documentation": "Structure to represent bootstrap conversation response.
"
- },
- "DeleteUserMemoryEntryInput": {
- "type": "structure",
- "required": ["id"],
- "members": {
- "id": {
- "shape": "DeleteUserMemoryEntryInputIdString"
- },
- "profileArn": {
- "shape": "DeleteUserMemoryEntryInputProfileArnString",
- "documentation": "ProfileArn for the managing Q Profile
"
- }
- }
- },
- "DeleteUserMemoryEntryInputIdString": {
- "type": "string",
- "max": 36,
- "min": 36,
- "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"
- },
- "DeleteUserMemoryEntryInputProfileArnString": {
- "type": "string",
- "min": 1,
- "pattern": "arn:aws:(codewhisperer|transform):[-.a-z0-9]{1,63}:\\d{12}:profile/([a-zA-Z0-9]){12}"
- },
- "DeleteUserMemoryEntryOutput": {
- "type": "structure",
- "members": {}
- },
- "DeleteWorkspaceRequest": {
- "type": "structure",
- "required": ["workspaceId"],
- "members": {
- "workspaceId": {
- "shape": "UUID"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "DeleteWorkspaceResponse": {
- "type": "structure",
- "members": {}
- },
- "Description": {
- "type": "string",
- "max": 256,
- "min": 0,
- "pattern": "[\\sa-zA-Z0-9_-]*"
- },
- "Diagnostic": {
- "type": "structure",
- "members": {
- "textDocumentDiagnostic": {
- "shape": "TextDocumentDiagnostic",
- "documentation": "Diagnostics originating from a TextDocument
"
- },
- "runtimeDiagnostic": {
- "shape": "RuntimeDiagnostic",
- "documentation": "Diagnostics originating from a Runtime
"
- }
- },
- "documentation": "Represents a Diagnostic message
",
- "union": true
- },
- "DiagnosticLocation": {
- "type": "structure",
- "required": ["uri", "range"],
- "members": {
- "uri": {
- "shape": "DiagnosticLocationUriString"
- },
- "range": {
- "shape": "Range"
- }
- },
- "documentation": "Represents a location inside a resource, such as a line inside a text file.
"
- },
- "DiagnosticLocationUriString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "DiagnosticRelatedInformation": {
- "type": "structure",
- "required": ["location", "message"],
- "members": {
- "location": {
- "shape": "DiagnosticLocation",
- "documentation": "The location of this related diagnostic information.
"
- },
- "message": {
- "shape": "DiagnosticRelatedInformationMessageString",
- "documentation": "The message of this related diagnostic information.
"
- }
- },
- "documentation": "Represents a related message and source code location for a diagnostic.
"
- },
- "DiagnosticRelatedInformationList": {
- "type": "list",
- "member": {
- "shape": "DiagnosticRelatedInformation"
- },
- "documentation": "List of DiagnosticRelatedInformation
",
- "max": 1024,
- "min": 0
- },
- "DiagnosticRelatedInformationMessageString": {
- "type": "string",
- "max": 1024,
- "min": 0,
- "sensitive": true
- },
- "DiagnosticSeverity": {
- "type": "string",
- "documentation": "Diagnostic Error types
",
- "enum": ["ERROR", "WARNING", "INFORMATION", "HINT"]
- },
- "DiagnosticTag": {
- "type": "string",
- "documentation": "The diagnostic tags.
",
- "enum": ["UNNECESSARY", "DEPRECATED"]
- },
- "DiagnosticTagList": {
- "type": "list",
- "member": {
- "shape": "DiagnosticTag"
- },
- "documentation": "List of DiagnosticTag
",
- "max": 1024,
- "min": 0
- },
- "Dimension": {
- "type": "structure",
- "members": {
- "name": {
- "shape": "DimensionNameString"
- },
- "value": {
- "shape": "DimensionValueString"
- }
- }
- },
- "DimensionList": {
- "type": "list",
- "member": {
- "shape": "Dimension"
- },
- "max": 30,
- "min": 0
- },
- "DimensionNameString": {
- "type": "string",
- "max": 255,
- "min": 1,
- "pattern": "[-a-zA-Z0-9._]*"
- },
- "DimensionValueString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "pattern": "[-a-zA-Z0-9._]*"
- },
- "DocFolderLevel": {
- "type": "string",
- "documentation": "Specifies the folder depth level where the document should be generated
",
- "enum": ["SUB_FOLDER", "ENTIRE_WORKSPACE"]
- },
- "DocGenerationEvent": {
- "type": "structure",
- "required": ["conversationId"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "numberOfAddChars": {
- "shape": "PrimitiveInteger"
- },
- "numberOfAddLines": {
- "shape": "PrimitiveInteger"
- },
- "numberOfAddFiles": {
- "shape": "PrimitiveInteger"
- },
- "userDecision": {
- "shape": "DocUserDecision"
- },
- "interactionType": {
- "shape": "DocInteractionType"
- },
- "userIdentity": {
- "shape": "String"
- },
- "numberOfNavigation": {
- "shape": "PrimitiveInteger"
- },
- "folderLevel": {
- "shape": "DocFolderLevel"
- }
- },
- "documentation": "Deprecated: use DocV2AcceptanceEvent for tracking acceptance and DocV2GenerationEvent for tracking generation
"
- },
- "DocInteractionType": {
- "type": "string",
- "documentation": "Tracks whether user chose to generate a new document, update an existing one, or edit document
",
- "enum": ["GENERATE_README", "UPDATE_README", "EDIT_README"]
- },
- "DocUserDecision": {
- "type": "string",
- "enum": ["ACCEPT", "REJECT"]
- },
- "DocV2AcceptanceEvent": {
- "type": "structure",
- "required": [
- "conversationId",
- "numberOfAddedChars",
- "numberOfAddedLines",
- "numberOfAddedFiles",
- "userDecision",
- "interactionType",
- "numberOfNavigations",
- "folderLevel"
- ],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "numberOfAddedChars": {
- "shape": "DocV2AcceptanceEventNumberOfAddedCharsInteger"
- },
- "numberOfAddedLines": {
- "shape": "DocV2AcceptanceEventNumberOfAddedLinesInteger"
- },
- "numberOfAddedFiles": {
- "shape": "DocV2AcceptanceEventNumberOfAddedFilesInteger"
- },
- "userDecision": {
- "shape": "DocUserDecision"
- },
- "interactionType": {
- "shape": "DocInteractionType"
- },
- "numberOfNavigations": {
- "shape": "DocV2AcceptanceEventNumberOfNavigationsInteger"
- },
- "folderLevel": {
- "shape": "DocFolderLevel"
- }
- },
- "documentation": "Interaction event for /doc, emitted when user accepts or rejects the generated content
"
- },
- "DocV2AcceptanceEventNumberOfAddedCharsInteger": {
- "type": "integer",
- "min": 0
- },
- "DocV2AcceptanceEventNumberOfAddedFilesInteger": {
- "type": "integer",
- "min": 0
- },
- "DocV2AcceptanceEventNumberOfAddedLinesInteger": {
- "type": "integer",
- "min": 0
- },
- "DocV2AcceptanceEventNumberOfNavigationsInteger": {
- "type": "integer",
- "min": 0
- },
- "DocV2GenerationEvent": {
- "type": "structure",
- "required": [
- "conversationId",
- "numberOfGeneratedChars",
- "numberOfGeneratedLines",
- "numberOfGeneratedFiles"
- ],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "numberOfGeneratedChars": {
- "shape": "DocV2GenerationEventNumberOfGeneratedCharsInteger"
- },
- "numberOfGeneratedLines": {
- "shape": "DocV2GenerationEventNumberOfGeneratedLinesInteger"
- },
- "numberOfGeneratedFiles": {
- "shape": "DocV2GenerationEventNumberOfGeneratedFilesInteger"
- },
- "interactionType": {
- "shape": "DocInteractionType"
- },
- "numberOfNavigations": {
- "shape": "DocV2GenerationEventNumberOfNavigationsInteger"
- },
- "folderLevel": {
- "shape": "DocFolderLevel"
- }
- },
- "documentation": "Generation event for /doc, emitted when user requests document generation
"
- },
- "DocV2GenerationEventNumberOfGeneratedCharsInteger": {
- "type": "integer",
- "min": 0
- },
- "DocV2GenerationEventNumberOfGeneratedFilesInteger": {
- "type": "integer",
- "min": 0
- },
- "DocV2GenerationEventNumberOfGeneratedLinesInteger": {
- "type": "integer",
- "min": 0
- },
- "DocV2GenerationEventNumberOfNavigationsInteger": {
- "type": "integer",
- "min": 0
- },
- "Document": {
- "type": "structure",
- "members": {},
- "document": true
- },
- "DocumentSymbol": {
- "type": "structure",
- "required": ["name", "type"],
- "members": {
- "name": {
- "shape": "DocumentSymbolNameString",
- "documentation": "Name of the Document Symbol
"
- },
- "type": {
- "shape": "SymbolType",
- "documentation": "Symbol type - DECLARATION / USAGE
"
- },
- "source": {
- "shape": "DocumentSymbolSourceString",
- "documentation": "Symbol package / source for FullyQualified names
"
- }
- }
- },
- "DocumentSymbolNameString": {
- "type": "string",
- "max": 256,
- "min": 1
- },
- "DocumentSymbolSourceString": {
- "type": "string",
- "max": 256,
- "min": 1
- },
- "DocumentSymbols": {
- "type": "list",
- "member": {
- "shape": "DocumentSymbol"
- },
- "max": 1000,
- "min": 0
- },
- "DocumentationIntentContext": {
- "type": "structure",
- "required": ["type"],
- "members": {
- "scope": {
- "shape": "DocumentationIntentContextScopeString"
- },
- "type": {
- "shape": "DocumentationType"
- },
- "changeLogOptions": {
- "shape": "ChangeLogOptions"
- }
- }
- },
- "DocumentationIntentContextScopeString": {
- "type": "string",
- "max": 4096,
- "min": 1,
- "sensitive": true
- },
- "DocumentationType": {
- "type": "string",
- "enum": ["README", "CHANGE_LOG"]
- },
- "Double": {
- "type": "double",
- "box": true
- },
- "Edit": {
- "type": "structure",
- "required": ["content"],
- "members": {
- "content": {
- "shape": "EditContentString"
- },
- "references": {
- "shape": "References"
- }
- }
- },
- "EditContentString": {
- "type": "string",
- "max": 5120,
- "min": 1,
- "sensitive": true
- },
- "EditorState": {
- "type": "structure",
- "members": {
- "document": {
- "shape": "TextDocument",
- "documentation": "Represents currently edited file
"
- },
- "cursorState": {
- "shape": "CursorState",
- "documentation": "Position of the cursor
"
- },
- "relevantDocuments": {
- "shape": "RelevantDocumentList",
- "documentation": "Represents IDE provided relevant files
"
- },
- "useRelevantDocuments": {
- "shape": "Boolean",
- "documentation": "Whether service should use relevant document in prompt
"
- },
- "workspaceFolders": {
- "shape": "WorkspaceFolderList",
- "documentation": "Represents IDE provided list of workspace folders
"
- }
- },
- "documentation": "Represents the state of an Editor
"
- },
- "EncodedVerificationUrl": {
- "type": "string",
- "max": 8192,
- "min": 1
- },
- "EnvState": {
- "type": "structure",
- "members": {
- "operatingSystem": {
- "shape": "EnvStateOperatingSystemString",
- "documentation": "The name of the operating system in use
"
- },
- "currentWorkingDirectory": {
- "shape": "EnvStateCurrentWorkingDirectoryString",
- "documentation": "The current working directory of the environment
"
- },
- "environmentVariables": {
- "shape": "EnvironmentVariables",
- "documentation": "The environment variables set in the current environment
"
- },
- "timezoneOffset": {
- "shape": "EnvStateTimezoneOffsetInteger",
- "documentation": "Local timezone offset of the client. For more information, see documentation https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
"
- }
- },
- "documentation": "State related to the user's environment
"
- },
- "EnvStateCurrentWorkingDirectoryString": {
- "type": "string",
- "max": 256,
- "min": 1,
- "sensitive": true
- },
- "EnvStateOperatingSystemString": {
- "type": "string",
- "max": 32,
- "min": 1,
- "pattern": "(macos|linux|windows)"
- },
- "EnvStateTimezoneOffsetInteger": {
- "type": "integer",
- "box": true,
- "max": 1440,
- "min": -1440
- },
- "EnvironmentVariable": {
- "type": "structure",
- "members": {
- "key": {
- "shape": "EnvironmentVariableKeyString",
- "documentation": "The key of an environment variable
"
- },
- "value": {
- "shape": "EnvironmentVariableValueString",
- "documentation": "The value of an environment variable
"
- }
- },
- "documentation": "An environment variable
"
- },
- "EnvironmentVariableKeyString": {
- "type": "string",
- "max": 256,
- "min": 1,
- "sensitive": true
- },
- "EnvironmentVariableValueString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "EnvironmentVariables": {
- "type": "list",
- "member": {
- "shape": "EnvironmentVariable"
- },
- "documentation": "A list of environment variables
",
- "max": 100,
- "min": 0
- },
- "ErrorDetails": {
- "type": "string",
- "max": 2048,
- "min": 0
- },
- "Event": {
- "type": "structure",
- "required": ["eventId", "generationId", "eventTimestamp", "eventType", "eventBlob"],
- "members": {
- "eventId": {
- "shape": "UUID"
- },
- "generationId": {
- "shape": "UUID"
- },
- "eventTimestamp": {
- "shape": "SyntheticTimestamp_date_time"
- },
- "eventType": {
- "shape": "EventType"
- },
- "eventBlob": {
- "shape": "EventBlob"
- }
- }
- },
- "EventBlob": {
- "type": "blob",
- "max": 400000,
- "min": 1,
- "sensitive": true
- },
- "EventList": {
- "type": "list",
- "member": {
- "shape": "Event"
- },
- "max": 10,
- "min": 1
- },
- "EventType": {
- "type": "string",
- "max": 100,
- "min": 1
- },
- "ExternalIdentityDetails": {
- "type": "structure",
- "members": {
- "issuerUrl": {
- "shape": "IssuerUrl"
- },
- "clientId": {
- "shape": "ClientId"
- },
- "scimEndpoint": {
- "shape": "String"
- }
- }
- },
- "FeatureDevCodeAcceptanceEvent": {
- "type": "structure",
- "required": ["conversationId", "linesOfCodeAccepted", "charactersOfCodeAccepted"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "linesOfCodeAccepted": {
- "shape": "FeatureDevCodeAcceptanceEventLinesOfCodeAcceptedInteger"
- },
- "charactersOfCodeAccepted": {
- "shape": "FeatureDevCodeAcceptanceEventCharactersOfCodeAcceptedInteger"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- }
- }
- },
- "FeatureDevCodeAcceptanceEventCharactersOfCodeAcceptedInteger": {
- "type": "integer",
- "min": 0
- },
- "FeatureDevCodeAcceptanceEventLinesOfCodeAcceptedInteger": {
- "type": "integer",
- "min": 0
- },
- "FeatureDevCodeGenerationEvent": {
- "type": "structure",
- "required": ["conversationId", "linesOfCodeGenerated", "charactersOfCodeGenerated"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "linesOfCodeGenerated": {
- "shape": "FeatureDevCodeGenerationEventLinesOfCodeGeneratedInteger"
- },
- "charactersOfCodeGenerated": {
- "shape": "FeatureDevCodeGenerationEventCharactersOfCodeGeneratedInteger"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- }
- }
- },
- "FeatureDevCodeGenerationEventCharactersOfCodeGeneratedInteger": {
- "type": "integer",
- "min": 0
- },
- "FeatureDevCodeGenerationEventLinesOfCodeGeneratedInteger": {
- "type": "integer",
- "min": 0
- },
- "FeatureDevEvent": {
- "type": "structure",
- "required": ["conversationId"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- }
- }
- },
- "FeatureEvaluation": {
- "type": "structure",
- "required": ["feature", "variation", "value"],
- "members": {
- "feature": {
- "shape": "FeatureName"
- },
- "variation": {
- "shape": "FeatureVariation"
- },
- "value": {
- "shape": "FeatureValue"
- }
- }
- },
- "FeatureEvaluationsList": {
- "type": "list",
- "member": {
- "shape": "FeatureEvaluation"
- },
- "max": 50,
- "min": 0
- },
- "FeatureName": {
- "type": "string",
- "max": 128,
- "min": 1,
- "pattern": "[-a-zA-Z0-9._]*"
- },
- "FeatureValue": {
- "type": "structure",
- "members": {
- "boolValue": {
- "shape": "Boolean"
- },
- "doubleValue": {
- "shape": "Double"
- },
- "longValue": {
- "shape": "Long"
- },
- "stringValue": {
- "shape": "FeatureValueStringType"
- }
- },
- "union": true
- },
- "FeatureValueStringType": {
- "type": "string",
- "max": 512,
- "min": 0
- },
- "FeatureVariation": {
- "type": "string",
- "max": 128,
- "min": 1,
- "pattern": "[-a-zA-Z0-9._]*"
- },
- "FileContext": {
- "type": "structure",
- "required": ["leftFileContent", "rightFileContent", "filename", "programmingLanguage"],
- "members": {
- "leftFileContent": {
- "shape": "FileContextLeftFileContentString"
- },
- "rightFileContent": {
- "shape": "FileContextRightFileContentString"
- },
- "filename": {
- "shape": "FileContextFilenameString"
- },
- "fileUri": {
- "shape": "FileContextFileUriString"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- }
- }
- },
- "FileContextFileUriString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "FileContextFilenameString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "FileContextLeftFileContentString": {
- "type": "string",
- "max": 10240,
- "min": 0,
- "sensitive": true
- },
- "FileContextRightFileContentString": {
- "type": "string",
- "max": 10240,
- "min": 0,
- "sensitive": true
- },
- "FollowupPrompt": {
- "type": "structure",
- "required": ["content"],
- "members": {
- "content": {
- "shape": "FollowupPromptContentString",
- "documentation": "The content of the text message in markdown format.
"
- },
- "userIntent": {
- "shape": "UserIntent",
- "documentation": "User Intent
"
- }
- },
- "documentation": "Followup Prompt for the Assistant Response
"
- },
- "FollowupPromptContentString": {
- "type": "string",
- "max": 4096,
- "min": 0,
- "sensitive": true
- },
- "FunctionalityName": {
- "type": "string",
- "enum": [
- "COMPLETIONS",
- "ANALYSIS",
- "CONVERSATIONS",
- "TASK_ASSIST",
- "TRANSFORMATIONS",
- "CHAT_CUSTOMIZATION",
- "TRANSFORMATIONS_WEBAPP",
- "FEATURE_DEVELOPMENT"
- ],
- "max": 64,
- "min": 1
- },
- "GenerateCompletionsRequest": {
- "type": "structure",
- "required": ["fileContext"],
- "members": {
- "fileContext": {
- "shape": "FileContext"
- },
- "editorState": {
- "shape": "EditorState"
- },
- "maxResults": {
- "shape": "GenerateCompletionsRequestMaxResultsInteger"
- },
- "predictionTypes": {
- "shape": "PredictionTypes"
- },
- "nextToken": {
- "shape": "GenerateCompletionsRequestNextTokenString"
- },
- "referenceTrackerConfiguration": {
- "shape": "ReferenceTrackerConfiguration"
- },
- "supplementalContexts": {
- "shape": "SupplementalContextList"
- },
- "customizationArn": {
- "shape": "CustomizationArn"
- },
- "optOutPreference": {
- "shape": "OptOutPreference"
- },
- "userContext": {
- "shape": "UserContext"
- },
- "profileArn": {
- "shape": "ProfileArn"
- },
- "workspaceId": {
- "shape": "UUID"
- },
- "modelId": {
- "shape": "ModelId"
- }
- }
- },
- "GenerateCompletionsRequestMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 10,
- "min": 1
- },
- "GenerateCompletionsRequestNextTokenString": {
- "type": "string",
- "max": 2048,
- "min": 0,
- "pattern": "(?:[A-Za-z0-9\\+/]{4})*(?:[A-Za-z0-9\\+/]{2}\\=\\=|[A-Za-z0-9\\+/]{3}\\=)?",
- "sensitive": true
- },
- "GenerateCompletionsResponse": {
- "type": "structure",
- "members": {
- "predictions": {
- "shape": "Predictions"
- },
- "completions": {
- "shape": "Completions"
- },
- "nextToken": {
- "shape": "SensitiveString"
- },
- "modelId": {
- "shape": "ModelId"
- }
- }
- },
- "GetCodeAnalysisRequest": {
- "type": "structure",
- "required": ["jobId"],
- "members": {
- "jobId": {
- "shape": "GetCodeAnalysisRequestJobIdString"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "GetCodeAnalysisRequestJobIdString": {
- "type": "string",
- "max": 256,
- "min": 1
- },
- "GetCodeAnalysisResponse": {
- "type": "structure",
- "required": ["status"],
- "members": {
- "status": {
- "shape": "CodeAnalysisStatus"
- },
- "errorMessage": {
- "shape": "SensitiveString"
- }
- }
- },
- "GetCodeFixJobRequest": {
- "type": "structure",
- "required": ["jobId"],
- "members": {
- "jobId": {
- "shape": "GetCodeFixJobRequestJobIdString"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "GetCodeFixJobRequestJobIdString": {
- "type": "string",
- "max": 256,
- "min": 1,
- "pattern": ".*[A-Za-z0-9-:]+.*"
- },
- "GetCodeFixJobResponse": {
- "type": "structure",
- "members": {
- "jobStatus": {
- "shape": "CodeFixJobStatus"
- },
- "suggestedFix": {
- "shape": "SuggestedFix"
- }
- }
- },
- "GetProfileRequest": {
- "type": "structure",
- "required": ["profileArn"],
- "members": {
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "GetProfileResponse": {
- "type": "structure",
- "required": ["profile"],
- "members": {
- "profile": {
- "shape": "ProfileInfo"
- }
- }
- },
- "GetTaskAssistCodeGenerationRequest": {
- "type": "structure",
- "required": ["conversationId", "codeGenerationId"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "codeGenerationId": {
- "shape": "CodeGenerationId"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- },
- "documentation": "Request for getting task assist code generation.
"
- },
- "GetTaskAssistCodeGenerationResponse": {
- "type": "structure",
- "required": ["conversationId", "codeGenerationStatus"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "codeGenerationStatus": {
- "shape": "CodeGenerationStatus"
- },
- "codeGenerationStatusDetail": {
- "shape": "CodeGenerationStatusDetail"
- },
- "codeGenerationRemainingIterationCount": {
- "shape": "Integer"
- },
- "codeGenerationTotalIterationCount": {
- "shape": "Integer"
- }
- },
- "documentation": "Response for getting task assist code generation status.
"
- },
- "GetTestGenerationRequest": {
- "type": "structure",
- "required": ["testGenerationJobGroupName", "testGenerationJobId"],
- "members": {
- "testGenerationJobGroupName": {
- "shape": "TestGenerationJobGroupName"
- },
- "testGenerationJobId": {
- "shape": "UUID"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- },
- "documentation": "Structure to represent get test generation request.
"
- },
- "GetTestGenerationResponse": {
- "type": "structure",
- "members": {
- "testGenerationJob": {
- "shape": "TestGenerationJob"
- }
- },
- "documentation": "Structure to represent get test generation response.
"
- },
- "GetTransformationPlanRequest": {
- "type": "structure",
- "required": ["transformationJobId"],
- "members": {
- "transformationJobId": {
- "shape": "TransformationJobId"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- },
- "documentation": "Structure to represent get code transformation plan request.
"
- },
- "GetTransformationPlanResponse": {
- "type": "structure",
- "required": ["transformationPlan"],
- "members": {
- "transformationPlan": {
- "shape": "TransformationPlan"
- }
- },
- "documentation": "Structure to represent get code transformation plan response.
"
- },
- "GetTransformationRequest": {
- "type": "structure",
- "required": ["transformationJobId"],
- "members": {
- "transformationJobId": {
- "shape": "TransformationJobId"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- },
- "documentation": "Structure to represent get code transformation request.
"
- },
- "GetTransformationResponse": {
- "type": "structure",
- "required": ["transformationJob"],
- "members": {
- "transformationJob": {
- "shape": "TransformationJob"
- }
- },
- "documentation": "Structure to represent get code transformation response.
"
- },
- "GetUsageLimitsRequest": {
- "type": "structure",
- "members": {
- "profileArn": {
- "shape": "ProfileArn",
- "documentation": "The ARN of the Q Developer profile. Required for enterprise customers, optional for Builder ID users.
"
- }
- }
- },
- "GetUsageLimitsResponse": {
- "type": "structure",
- "required": ["limits", "daysUntilReset"],
- "members": {
- "limits": {
- "shape": "UsageLimits"
- },
- "daysUntilReset": {
- "shape": "Integer",
- "documentation": "Number of days remaining until the usage metrics reset
"
- }
- }
- },
- "GitState": {
- "type": "structure",
- "members": {
- "status": {
- "shape": "GitStateStatusString",
- "documentation": "The output of the command git status --porcelain=v1 -b
"
- }
- },
- "documentation": "State related to the Git VSC
"
- },
- "GitStateStatusString": {
- "type": "string",
- "max": 4096,
- "min": 0,
- "sensitive": true
- },
- "IdeCategory": {
- "type": "string",
- "enum": ["JETBRAINS", "VSCODE", "CLI", "JUPYTER_MD", "JUPYTER_SM", "ECLIPSE", "VISUAL_STUDIO"],
- "max": 64,
- "min": 1
- },
- "IdeDiagnostic": {
- "type": "structure",
- "required": ["ideDiagnosticType"],
- "members": {
- "range": {
- "shape": "Range",
- "documentation": "The range at which the message applies.
"
- },
- "source": {
- "shape": "IdeDiagnosticSourceString",
- "documentation": "A human-readable string describing the source of the diagnostic
"
- },
- "severity": {
- "shape": "DiagnosticSeverity",
- "documentation": "Diagnostic Error type
"
- },
- "ideDiagnosticType": {
- "shape": "IdeDiagnosticType",
- "documentation": "Type of the diagnostic
"
- }
- },
- "documentation": "Structure to represent metadata about a Diagnostic from user local IDE
"
- },
- "IdeDiagnosticList": {
- "type": "list",
- "member": {
- "shape": "IdeDiagnostic"
- },
- "documentation": "List of IDE Diagnostics
",
- "max": 1024,
- "min": 0
- },
- "IdeDiagnosticSourceString": {
- "type": "string",
- "max": 1024,
- "min": 0,
- "sensitive": true
- },
- "IdeDiagnosticType": {
- "type": "string",
- "enum": ["SYNTAX_ERROR", "TYPE_ERROR", "REFERENCE_ERROR", "BEST_PRACTICE", "SECURITY", "OTHER"]
- },
- "IdempotencyToken": {
- "type": "string",
- "max": 256,
- "min": 1
- },
- "IdentityDetails": {
- "type": "structure",
- "members": {
- "ssoIdentityDetails": {
- "shape": "SSOIdentityDetails"
- },
- "externalIdentityDetails": {
- "shape": "ExternalIdentityDetails"
- }
- },
- "union": true
- },
- "ImageBlock": {
- "type": "structure",
- "required": ["format", "source"],
- "members": {
- "format": {
- "shape": "ImageFormat"
- },
- "source": {
- "shape": "ImageSource"
- }
- },
- "documentation": "Represents the image source itself and the format of the image.
"
- },
- "ImageBlocks": {
- "type": "list",
- "member": {
- "shape": "ImageBlock"
- },
- "max": 10,
- "min": 0
- },
- "ImageFormat": {
- "type": "string",
- "enum": ["png", "jpeg", "gif", "webp"]
- },
- "ImageSource": {
- "type": "structure",
- "members": {
- "bytes": {
- "shape": "ImageSourceBytesBlob"
- }
- },
- "documentation": "Image bytes limited to ~10MB considering overhead of base64 encoding
",
- "sensitive": true,
- "union": true
- },
- "ImageSourceBytesBlob": {
- "type": "blob",
- "max": 2800000,
- "min": 1
- },
- "Import": {
- "type": "structure",
- "members": {
- "statement": {
- "shape": "ImportStatementString"
- }
- }
- },
- "ImportStatementString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "Imports": {
- "type": "list",
- "member": {
- "shape": "Import"
- },
- "max": 10,
- "min": 0
- },
- "InlineChatEvent": {
- "type": "structure",
- "required": ["requestId", "timestamp"],
- "members": {
- "requestId": {
- "shape": "UUID"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "inputLength": {
- "shape": "PrimitiveInteger"
- },
- "numSelectedLines": {
- "shape": "PrimitiveInteger"
- },
- "numSuggestionAddChars": {
- "shape": "PrimitiveInteger"
- },
- "numSuggestionAddLines": {
- "shape": "PrimitiveInteger"
- },
- "numSuggestionDelChars": {
- "shape": "PrimitiveInteger"
- },
- "numSuggestionDelLines": {
- "shape": "PrimitiveInteger"
- },
- "codeIntent": {
- "shape": "Boolean"
- },
- "userDecision": {
- "shape": "InlineChatUserDecision"
- },
- "responseStartLatency": {
- "shape": "Double"
- },
- "responseEndLatency": {
- "shape": "Double"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- }
- }
- },
- "InlineChatUserDecision": {
- "type": "string",
- "enum": ["ACCEPT", "REJECT", "DISMISS"]
- },
- "Integer": {
- "type": "integer",
- "box": true
- },
- "Intent": {
- "type": "string",
- "enum": ["DEV", "DOC"]
- },
- "IntentContext": {
- "type": "structure",
- "members": {
- "documentation": {
- "shape": "DocumentationIntentContext"
- }
- },
- "union": true
- },
- "InternalServerException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- },
- "reason": {
- "shape": "InternalServerExceptionReason"
- }
- },
- "documentation": "This exception is thrown when an unexpected error occurred during the processing of a request.
",
- "exception": true,
- "fault": true,
- "retryable": {
- "throttling": false
- }
- },
- "InternalServerExceptionReason": {
- "type": "string",
- "documentation": "Reason for InternalServerException
",
- "enum": ["MODEL_TEMPORARILY_UNAVAILABLE"]
- },
- "IssuerUrl": {
- "type": "string",
- "max": 255,
- "min": 1
- },
- "LineRangeList": {
- "type": "list",
- "member": {
- "shape": "Range"
- }
- },
- "ListAvailableCustomizationsRequest": {
- "type": "structure",
- "members": {
- "maxResults": {
- "shape": "ListAvailableCustomizationsRequestMaxResultsInteger"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "ListAvailableCustomizationsRequestMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 100,
- "min": 1
- },
- "ListAvailableCustomizationsResponse": {
- "type": "structure",
- "required": ["customizations"],
- "members": {
- "customizations": {
- "shape": "Customizations"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListAvailableModelsRequest": {
- "type": "structure",
- "required": ["origin"],
- "members": {
- "origin": {
- "shape": "Origin",
- "documentation": "The origin context for which to list available models
"
- },
- "maxResults": {
- "shape": "ListAvailableModelsRequestMaxResultsInteger",
- "documentation": "Maximum number of models to return in a single response
"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken",
- "documentation": "Token for retrieving the next page of results
"
- },
- "profileArn": {
- "shape": "ProfileArn",
- "documentation": "ARN of the profile to use for model filtering
"
- },
- "modelProvider": {
- "shape": "ModelProvider",
- "documentation": "Provider of AI models
"
- }
- }
- },
- "ListAvailableModelsRequestMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 100,
- "min": 1
- },
- "ListAvailableModelsResponse": {
- "type": "structure",
- "required": ["models"],
- "members": {
- "models": {
- "shape": "Models",
- "documentation": "List of available models
"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken",
- "documentation": "Token for retrieving the next page of results
"
- }
- }
- },
- "ListAvailableProfilesRequest": {
- "type": "structure",
- "members": {
- "maxResults": {
- "shape": "ListAvailableProfilesRequestMaxResultsInteger"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListAvailableProfilesRequestMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 10,
- "min": 1
- },
- "ListAvailableProfilesResponse": {
- "type": "structure",
- "required": ["profiles"],
- "members": {
- "profiles": {
- "shape": "ProfileList"
- },
- "nextToken": {
- "shape": "Base64EncodedPaginationToken"
- }
- }
- },
- "ListCodeAnalysisFindingsRequest": {
- "type": "structure",
- "required": ["jobId", "codeAnalysisFindingsSchema"],
- "members": {
- "jobId": {
- "shape": "ListCodeAnalysisFindingsRequestJobIdString"
- },
- "nextToken": {
- "shape": "PaginationToken"
- },
- "codeAnalysisFindingsSchema": {
- "shape": "CodeAnalysisFindingsSchema"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "ListCodeAnalysisFindingsRequestJobIdString": {
- "type": "string",
- "max": 256,
- "min": 1
- },
- "ListCodeAnalysisFindingsResponse": {
- "type": "structure",
- "required": ["codeAnalysisFindings"],
- "members": {
- "nextToken": {
- "shape": "PaginationToken"
- },
- "codeAnalysisFindings": {
- "shape": "SensitiveString"
- }
- }
- },
- "ListEventsRequest": {
- "type": "structure",
- "required": ["conversationId"],
- "members": {
- "conversationId": {
- "shape": "UUID"
- },
- "maxResults": {
- "shape": "ListEventsRequestMaxResultsInteger"
- },
- "nextToken": {
- "shape": "NextToken"
- }
- }
- },
- "ListEventsRequestMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 50,
- "min": 1
- },
- "ListEventsResponse": {
- "type": "structure",
- "required": ["conversationId", "events"],
- "members": {
- "conversationId": {
- "shape": "UUID"
- },
- "events": {
- "shape": "EventList"
- },
- "nextToken": {
- "shape": "NextToken"
- }
- }
- },
- "ListFeatureEvaluationsRequest": {
- "type": "structure",
- "required": ["userContext"],
- "members": {
- "userContext": {
- "shape": "UserContext"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "ListFeatureEvaluationsResponse": {
- "type": "structure",
- "required": ["featureEvaluations"],
- "members": {
- "featureEvaluations": {
- "shape": "FeatureEvaluationsList"
- }
- }
- },
- "ListUserMemoryEntriesInput": {
- "type": "structure",
- "members": {
- "maxResults": {
- "shape": "ListUserMemoryEntriesInputMaxResultsInteger"
- },
- "profileArn": {
- "shape": "ListUserMemoryEntriesInputProfileArnString",
- "documentation": "ProfileArn for the managing Q Profile
"
- },
- "nextToken": {
- "shape": "ListUserMemoryEntriesInputNextTokenString"
- }
- }
- },
- "ListUserMemoryEntriesInputMaxResultsInteger": {
- "type": "integer",
- "box": true,
- "max": 100,
- "min": 1
- },
- "ListUserMemoryEntriesInputNextTokenString": {
- "type": "string",
- "min": 1,
- "pattern": "[A-Za-z0-9_-]+"
- },
- "ListUserMemoryEntriesInputProfileArnString": {
- "type": "string",
- "min": 1,
- "pattern": "arn:aws:(codewhisperer|transform):[-.a-z0-9]{1,63}:\\d{12}:profile/([a-zA-Z0-9]){12}"
- },
- "ListUserMemoryEntriesOutput": {
- "type": "structure",
- "required": ["memoryEntries"],
- "members": {
- "memoryEntries": {
- "shape": "MemoryEntryList"
- },
- "nextToken": {
- "shape": "ListUserMemoryEntriesOutputNextTokenString"
- }
- }
- },
- "ListUserMemoryEntriesOutputNextTokenString": {
- "type": "string",
- "min": 1,
- "pattern": "[A-Za-z0-9_-]+"
- },
- "ListWorkspaceMetadataRequest": {
- "type": "structure",
- "members": {
- "workspaceRoot": {
- "shape": "ListWorkspaceMetadataRequestWorkspaceRootString"
- },
- "nextToken": {
- "shape": "String"
- },
- "maxResults": {
- "shape": "Integer"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "ListWorkspaceMetadataRequestWorkspaceRootString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "ListWorkspaceMetadataResponse": {
- "type": "structure",
- "required": ["workspaces"],
- "members": {
- "workspaces": {
- "shape": "WorkspaceList"
- },
- "nextToken": {
- "shape": "String"
- }
- }
- },
- "Long": {
- "type": "long",
- "box": true
- },
- "MCPConfiguration": {
- "type": "structure",
- "required": ["toggle"],
- "members": {
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- },
- "MemoryEntry": {
- "type": "structure",
- "required": ["id", "memoryEntryString", "metadata"],
- "members": {
- "id": {
- "shape": "MemoryEntryIdString",
- "documentation": "A unique identifier for a single memory entry
"
- },
- "memoryEntryString": {
- "shape": "MemoryEntryMemoryEntryStringString"
- },
- "metadata": {
- "shape": "MemoryEntryMetadata"
- }
- },
- "documentation": "MemoryEntry corresponds to a single user memory
"
- },
- "MemoryEntryIdString": {
- "type": "string",
- "max": 36,
- "min": 36,
- "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"
- },
- "MemoryEntryList": {
- "type": "list",
- "member": {
- "shape": "MemoryEntry"
- },
- "documentation": "List of user memories
"
- },
- "MemoryEntryMemoryEntryStringString": {
- "type": "string",
- "max": 500,
- "min": 1,
- "sensitive": true
- },
- "MemoryEntryMetadata": {
- "type": "structure",
- "required": ["origin", "createdAt", "updatedAt"],
- "members": {
- "origin": {
- "shape": "Origin"
- },
- "attributes": {
- "shape": "AttributesMap"
- },
- "createdAt": {
- "shape": "Timestamp"
- },
- "updatedAt": {
- "shape": "Timestamp"
- },
- "memoryStatus": {
- "shape": "MemoryStatus"
- }
- },
- "documentation": "Metadata for a single memory entry
"
- },
- "MemoryStatus": {
- "type": "string",
- "documentation": "Status of user memory
",
- "enum": ["DECRYPTION_FAILURE", "VALID"]
- },
- "MessageId": {
- "type": "string",
- "documentation": "Unique identifier for the chat message
",
- "max": 128,
- "min": 0
- },
- "MetricData": {
- "type": "structure",
- "required": ["metricName", "metricValue", "timestamp", "product"],
- "members": {
- "metricName": {
- "shape": "MetricDataMetricNameString"
- },
- "metricValue": {
- "shape": "Double"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "product": {
- "shape": "MetricDataProductString"
- },
- "dimensions": {
- "shape": "DimensionList"
- }
- }
- },
- "MetricDataMetricNameString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "pattern": "[-a-zA-Z0-9._]*"
- },
- "MetricDataProductString": {
- "type": "string",
- "max": 128,
- "min": 1,
- "pattern": "[-a-zA-Z0-9._]*"
- },
- "Model": {
- "type": "structure",
- "required": ["modelId"],
- "members": {
- "modelId": {
- "shape": "ModelId",
- "documentation": "Unique identifier for the model
"
- },
- "description": {
- "shape": "Description",
- "documentation": "Description of the model
"
- },
- "modelMetadata": {
- "shape": "ModelMetadata",
- "documentation": "Technical metadata and capabilities of the model
"
- }
- }
- },
- "ModelId": {
- "type": "string",
- "documentation": "Unique identifier for the model
",
- "max": 1024,
- "min": 1,
- "pattern": "[a-zA-Z0-9_:.-]+"
- },
- "ModelMetadata": {
- "type": "structure",
- "members": {
- "maxInputTokens": {
- "shape": "ModelMetadataMaxInputTokensInteger",
- "documentation": "Maximum number of input tokens the model can process
"
- },
- "supportsImages": {
- "shape": "Boolean",
- "documentation": "Whether the model supports image input processing
"
- }
- }
- },
- "ModelMetadataMaxInputTokensInteger": {
- "type": "integer",
- "box": true,
- "min": 1
- },
- "ModelProvider": {
- "type": "string",
- "documentation": "Provider of AI models
",
- "enum": ["DEFAULT"]
- },
- "Models": {
- "type": "list",
- "member": {
- "shape": "Model"
- }
- },
- "NextToken": {
- "type": "string",
- "max": 1000,
- "min": 0
- },
- "Notifications": {
- "type": "list",
- "member": {
- "shape": "NotificationsFeature"
- },
- "max": 10,
- "min": 0
- },
- "NotificationsFeature": {
- "type": "structure",
- "required": ["feature", "toggle"],
- "members": {
- "feature": {
- "shape": "FeatureName"
- },
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- },
- "OperatingSystem": {
- "type": "string",
- "enum": ["MAC", "WINDOWS", "LINUX"],
- "max": 64,
- "min": 1
- },
- "OptInFeatureToggle": {
- "type": "string",
- "enum": ["ON", "OFF"]
- },
- "OptInFeatures": {
- "type": "structure",
- "members": {
- "promptLogging": {
- "shape": "PromptLogging"
- },
- "byUserAnalytics": {
- "shape": "ByUserAnalytics"
- },
- "dashboardAnalytics": {
- "shape": "DashboardAnalytics"
- },
- "notifications": {
- "shape": "Notifications"
- },
- "workspaceContext": {
- "shape": "WorkspaceContext"
- },
- "mcpConfiguration": {
- "shape": "MCPConfiguration"
- }
- }
- },
- "OptOutPreference": {
- "type": "string",
- "enum": ["OPTIN", "OPTOUT"]
- },
- "Origin": {
- "type": "string",
- "documentation": "Enum to represent the origin application conversing with Sidekick.
",
- "enum": [
- "CHATBOT",
- "CONSOLE",
- "DOCUMENTATION",
- "MARKETING",
- "MOBILE",
- "SERVICE_INTERNAL",
- "UNIFIED_SEARCH",
- "UNKNOWN",
- "MD",
- "IDE",
- "SAGE_MAKER",
- "CLI",
- "AI_EDITOR",
- "OPENSEARCH_DASHBOARD",
- "GITLAB"
- ]
- },
- "PackageInfo": {
- "type": "structure",
- "members": {
- "executionCommand": {
- "shape": "SensitiveString"
- },
- "buildCommand": {
- "shape": "SensitiveString"
- },
- "buildOrder": {
- "shape": "PackageInfoBuildOrderInteger"
- },
- "testFramework": {
- "shape": "String"
- },
- "packageSummary": {
- "shape": "PackageInfoPackageSummaryString"
- },
- "packagePlan": {
- "shape": "PackageInfoPackagePlanString"
- },
- "targetFileInfoList": {
- "shape": "TargetFileInfoList"
- }
- }
- },
- "PackageInfoBuildOrderInteger": {
- "type": "integer",
- "box": true,
- "min": 0
- },
- "PackageInfoList": {
- "type": "list",
- "member": {
- "shape": "PackageInfo"
- }
- },
- "PackageInfoPackagePlanString": {
- "type": "string",
- "max": 30720,
- "min": 0,
- "sensitive": true
- },
- "PackageInfoPackageSummaryString": {
- "type": "string",
- "max": 30720,
- "min": 0,
- "sensitive": true
- },
- "PaginationToken": {
- "type": "string",
- "max": 2048,
- "min": 1,
- "pattern": "\\S+"
- },
- "Position": {
- "type": "structure",
- "required": ["line", "character"],
- "members": {
- "line": {
- "shape": "Integer",
- "documentation": "Line position in a document.
"
- },
- "character": {
- "shape": "Integer",
- "documentation": "Character offset on a line in a document (zero-based)
"
- }
- },
- "documentation": "Indicates Cursor postion in a Text Document
"
- },
- "PreSignedUrl": {
- "type": "string",
- "max": 2048,
- "min": 1,
- "sensitive": true
- },
- "Prediction": {
- "type": "structure",
- "members": {
- "completion": {
- "shape": "Completion"
- },
- "edit": {
- "shape": "Edit"
- }
- },
- "union": true
- },
- "PredictionType": {
- "type": "string",
- "enum": ["COMPLETIONS", "EDITS"]
- },
- "PredictionTypes": {
- "type": "list",
- "member": {
- "shape": "PredictionType"
- }
- },
- "Predictions": {
- "type": "list",
- "member": {
- "shape": "Prediction"
- },
- "max": 10,
- "min": 0
- },
- "PreviousEditorStateMetadata": {
- "type": "structure",
- "required": ["timeOffset"],
- "members": {
- "timeOffset": {
- "shape": "Integer"
- }
- }
- },
- "PrimitiveInteger": {
- "type": "integer"
- },
- "Profile": {
- "type": "structure",
- "required": ["arn", "profileName"],
- "members": {
- "arn": {
- "shape": "ProfileArn"
- },
- "identityDetails": {
- "shape": "IdentityDetails"
- },
- "profileName": {
- "shape": "ProfileName"
- },
- "description": {
- "shape": "ProfileDescription"
- },
- "referenceTrackerConfiguration": {
- "shape": "ReferenceTrackerConfiguration"
- },
- "kmsKeyArn": {
- "shape": "ResourceArn"
- },
- "activeFunctionalities": {
- "shape": "ActiveFunctionalityList"
- },
- "status": {
- "shape": "ProfileStatus"
- },
- "errorDetails": {
- "shape": "ErrorDetails"
- },
- "resourcePolicy": {
- "shape": "ResourcePolicy"
- },
- "profileType": {
- "shape": "ProfileType"
- },
- "optInFeatures": {
- "shape": "OptInFeatures"
- },
- "permissionUpdateRequired": {
- "shape": "Boolean"
- },
- "applicationProperties": {
- "shape": "ApplicationPropertiesList"
- }
- }
- },
- "ProfileInfo": {
- "type": "structure",
- "required": ["arn"],
- "members": {
- "arn": {
- "shape": "ProfileArn"
- },
- "profileName": {
- "shape": "ProfileName"
- },
- "description": {
- "shape": "ProfileDescription"
- },
- "status": {
- "shape": "ProfileStatus"
- },
- "profileType": {
- "shape": "ProfileType"
- },
- "optInFeatures": {
- "shape": "OptInFeatures"
- }
- }
- },
- "ProfileArn": {
- "type": "string",
- "max": 950,
- "min": 0,
- "pattern": "arn:aws:(codewhisperer|transform):[-.a-z0-9]{1,63}:\\d{12}:profile/([a-zA-Z0-9]){12}"
- },
- "ProfileDescription": {
- "type": "string",
- "max": 256,
- "min": 1,
- "pattern": "[\\sa-zA-Z0-9_-]*"
- },
- "ProfileList": {
- "type": "list",
- "member": {
- "shape": "Profile"
- }
- },
- "ProfileName": {
- "type": "string",
- "max": 100,
- "min": 1,
- "pattern": "[a-zA-Z][a-zA-Z0-9_-]*"
- },
- "ProfileStatus": {
- "type": "string",
- "enum": ["ACTIVE", "CREATING", "CREATE_FAILED", "UPDATING", "UPDATE_FAILED", "DELETING", "DELETE_FAILED"]
- },
- "ProfileType": {
- "type": "string",
- "enum": ["Q_DEVELOPER", "CODEWHISPERER"]
- },
- "ProgrammingLanguage": {
- "type": "structure",
- "required": ["languageName"],
- "members": {
- "languageName": {
- "shape": "ProgrammingLanguageLanguageNameString"
- }
- },
- "documentation": "Programming Languages supported by CodeWhisperer
"
- },
- "ProgrammingLanguageLanguageNameString": {
- "type": "string",
- "max": 128,
- "min": 1,
- "pattern": "(python|javascript|java|csharp|typescript|c|cpp|go|kotlin|php|ruby|rust|scala|shell|sql|json|yaml|vue|tf|tsx|jsx|plaintext|systemverilog|dart|lua|swift|hcl|powershell|r|abap)"
- },
- "ProgressUpdates": {
- "type": "list",
- "member": {
- "shape": "TransformationProgressUpdate"
- }
- },
- "PromptLogging": {
- "type": "structure",
- "required": ["s3Uri", "toggle"],
- "members": {
- "s3Uri": {
- "shape": "S3Uri"
- },
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- },
- "PushTelemetryEventRequest": {
- "type": "structure",
- "required": ["eventType", "event"],
- "members": {
- "clientToken": {
- "shape": "IdempotencyToken",
- "idempotencyToken": true
- },
- "eventType": {
- "shape": "String"
- },
- "event": {
- "shape": "Document"
- }
- }
- },
- "PushTelemetryEventResponse": {
- "type": "structure",
- "members": {}
- },
- "Range": {
- "type": "structure",
- "required": ["start", "end"],
- "members": {
- "start": {
- "shape": "Position",
- "documentation": "The range's start position.
"
- },
- "end": {
- "shape": "Position",
- "documentation": "The range's end position.
"
- }
- },
- "documentation": "Indicates Range / Span in a Text Document
"
- },
- "RecommendationsWithReferencesPreference": {
- "type": "string",
- "documentation": "Recommendations with references setting for CodeWhisperer
",
- "enum": ["BLOCK", "ALLOW"]
- },
- "Reference": {
- "type": "structure",
- "members": {
- "licenseName": {
- "shape": "ReferenceLicenseNameString",
- "documentation": "License name
"
- },
- "repository": {
- "shape": "ReferenceRepositoryString",
- "documentation": "Code Repsitory for the associated reference
"
- },
- "url": {
- "shape": "ReferenceUrlString",
- "documentation": "Respository URL
"
- },
- "recommendationContentSpan": {
- "shape": "Span",
- "documentation": "Span / Range for the Reference
"
- }
- },
- "documentation": "Code Reference / Repository details
"
- },
- "ReferenceLicenseNameString": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "ReferenceRepositoryString": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "ReferenceTrackerConfiguration": {
- "type": "structure",
- "required": ["recommendationsWithReferences"],
- "members": {
- "recommendationsWithReferences": {
- "shape": "RecommendationsWithReferencesPreference"
- }
- }
- },
- "ReferenceUrlString": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "References": {
- "type": "list",
- "member": {
- "shape": "Reference"
- },
- "max": 10,
- "min": 0
- },
- "RelevantDocumentList": {
- "type": "list",
- "member": {
- "shape": "RelevantTextDocument"
- },
- "max": 100,
- "min": 0
- },
- "RelevantTextDocument": {
- "type": "structure",
- "required": ["relativeFilePath"],
- "members": {
- "relativeFilePath": {
- "shape": "RelevantTextDocumentRelativeFilePathString",
- "documentation": "Filepath relative to the root of the workspace
"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage",
- "documentation": "The text document's language identifier.
"
- },
- "text": {
- "shape": "RelevantTextDocumentTextString",
- "documentation": "Content of the text document
"
- },
- "documentSymbols": {
- "shape": "DocumentSymbols",
- "documentation": "DocumentSymbols parsed from a text document
"
- },
- "type": {
- "shape": "ContentType",
- "documentation": "The type of content(file, prompt, symbol, or workspace)
"
- }
- },
- "documentation": "Represents an IDE retrieved relevant Text Document / File
"
- },
- "RelevantTextDocumentRelativeFilePathString": {
- "type": "string",
- "max": 4096,
- "min": 1,
- "sensitive": true
- },
- "RelevantTextDocumentTextString": {
- "type": "string",
- "max": 40960,
- "min": 0,
- "sensitive": true
- },
- "RequestHeaderKey": {
- "type": "string",
- "max": 64,
- "min": 1
- },
- "RequestHeaderValue": {
- "type": "string",
- "max": 256,
- "min": 1
- },
- "RequestHeaders": {
- "type": "map",
- "key": {
- "shape": "RequestHeaderKey"
- },
- "value": {
- "shape": "RequestHeaderValue"
- },
- "max": 16,
- "min": 1,
- "sensitive": true
- },
- "ResourceArn": {
- "type": "string",
- "max": 1224,
- "min": 0,
- "pattern": "arn:([-.a-z0-9]{1,63}:){2}([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}"
- },
- "ResourceNotFoundException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- }
- },
- "documentation": "This exception is thrown when describing a resource that does not exist.
",
- "exception": true
- },
- "ResourcePolicy": {
- "type": "structure",
- "required": ["effect"],
- "members": {
- "effect": {
- "shape": "ResourcePolicyEffect"
- }
- }
- },
- "ResourcePolicyEffect": {
- "type": "string",
- "enum": ["ALLOW", "DENY"]
- },
- "ResumeTransformationRequest": {
- "type": "structure",
- "required": ["transformationJobId"],
- "members": {
- "transformationJobId": {
- "shape": "TransformationJobId"
- },
- "userActionStatus": {
- "shape": "TransformationUserActionStatus"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- },
- "documentation": "Structure to represent stop code transformation request.
"
- },
- "ResumeTransformationResponse": {
- "type": "structure",
- "required": ["transformationStatus"],
- "members": {
- "transformationStatus": {
- "shape": "TransformationStatus"
- }
- },
- "documentation": "Structure to represent stop code transformation response.
"
- },
- "RuntimeDiagnostic": {
- "type": "structure",
- "required": ["source", "severity", "message"],
- "members": {
- "source": {
- "shape": "RuntimeDiagnosticSourceString",
- "documentation": "A human-readable string describing the source of the diagnostic
"
- },
- "severity": {
- "shape": "DiagnosticSeverity",
- "documentation": "Diagnostic Error type
"
- },
- "message": {
- "shape": "RuntimeDiagnosticMessageString",
- "documentation": "The diagnostic's message.
"
- }
- },
- "documentation": "Structure to represent metadata about a Runtime Diagnostics
"
- },
- "RuntimeDiagnosticMessageString": {
- "type": "string",
- "max": 1024,
- "min": 0,
- "sensitive": true
- },
- "RuntimeDiagnosticSourceString": {
- "type": "string",
- "max": 1024,
- "min": 0,
- "sensitive": true
- },
- "S3Uri": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "pattern": "s3://((?!xn--)[a-z0-9](?![^/]*[.]{2})[a-z0-9-.]{1,61}[a-z0-9](?This exception is thrown when request was denied due to caller exceeding their usage limits",
- "exception": true
- },
- "ServiceQuotaExceededExceptionReason": {
- "type": "string",
- "documentation": "Reason for ServiceQuotaExceededException
",
- "enum": ["CONVERSATION_LIMIT_EXCEEDED"]
- },
- "ShellHistory": {
- "type": "list",
- "member": {
- "shape": "ShellHistoryEntry"
- },
- "documentation": "A list of shell history entries
",
- "max": 20,
- "min": 0
- },
- "ShellHistoryEntry": {
- "type": "structure",
- "required": ["command"],
- "members": {
- "command": {
- "shape": "ShellHistoryEntryCommandString",
- "documentation": "The shell command that was run
"
- },
- "directory": {
- "shape": "ShellHistoryEntryDirectoryString",
- "documentation": "The directory the command was ran in
"
- },
- "exitCode": {
- "shape": "Integer",
- "documentation": "The exit code of the command after it finished
"
- },
- "stdout": {
- "shape": "ShellHistoryEntryStdoutString",
- "documentation": "The stdout from the command
"
- },
- "stderr": {
- "shape": "ShellHistoryEntryStderrString",
- "documentation": "The stderr from the command
"
- }
- },
- "documentation": "An single entry in the shell history
"
- },
- "ShellHistoryEntryCommandString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "ShellHistoryEntryDirectoryString": {
- "type": "string",
- "max": 256,
- "min": 1,
- "sensitive": true
- },
- "ShellHistoryEntryStderrString": {
- "type": "string",
- "max": 4096,
- "min": 0,
- "sensitive": true
- },
- "ShellHistoryEntryStdoutString": {
- "type": "string",
- "max": 4096,
- "min": 0,
- "sensitive": true
- },
- "ShellState": {
- "type": "structure",
- "required": ["shellName"],
- "members": {
- "shellName": {
- "shape": "ShellStateShellNameString",
- "documentation": "The name of the current shell
"
- },
- "shellHistory": {
- "shape": "ShellHistory",
- "documentation": "The history previous shell commands for the current shell
"
- }
- },
- "documentation": "Represents the state of a shell
"
- },
- "ShellStateShellNameString": {
- "type": "string",
- "max": 32,
- "min": 1,
- "pattern": "(zsh|bash|fish|pwsh|nu)"
- },
- "Span": {
- "type": "structure",
- "members": {
- "start": {
- "shape": "SpanStartInteger"
- },
- "end": {
- "shape": "SpanEndInteger"
- }
- },
- "documentation": "Represents span in a text.
"
- },
- "SpanEndInteger": {
- "type": "integer",
- "box": true,
- "min": 0
- },
- "SpanStartInteger": {
- "type": "integer",
- "box": true,
- "min": 0
- },
- "StartCodeAnalysisRequest": {
- "type": "structure",
- "required": ["artifacts", "programmingLanguage"],
- "members": {
- "artifacts": {
- "shape": "ArtifactMap"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "clientToken": {
- "shape": "StartCodeAnalysisRequestClientTokenString",
- "idempotencyToken": true
- },
- "scope": {
- "shape": "CodeAnalysisScope"
- },
- "codeScanName": {
- "shape": "CodeScanName"
- },
- "codeDiffMetadata": {
- "shape": "CodeDiffMetadata"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "StartCodeAnalysisRequestClientTokenString": {
- "type": "string",
- "max": 256,
- "min": 1
- },
- "StartCodeAnalysisResponse": {
- "type": "structure",
- "required": ["jobId", "status"],
- "members": {
- "jobId": {
- "shape": "StartCodeAnalysisResponseJobIdString"
- },
- "status": {
- "shape": "CodeAnalysisStatus"
- },
- "errorMessage": {
- "shape": "SensitiveString"
- }
- }
- },
- "StartCodeAnalysisResponseJobIdString": {
- "type": "string",
- "max": 256,
- "min": 1
- },
- "StartCodeFixJobRequest": {
- "type": "structure",
- "required": ["snippetRange", "uploadId"],
- "members": {
- "snippetRange": {
- "shape": "Range"
- },
- "uploadId": {
- "shape": "UploadId"
- },
- "description": {
- "shape": "StartCodeFixJobRequestDescriptionString"
- },
- "ruleId": {
- "shape": "StartCodeFixJobRequestRuleIdString"
- },
- "codeFixName": {
- "shape": "CodeFixName"
- },
- "referenceTrackerConfiguration": {
- "shape": "ReferenceTrackerConfiguration"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- }
- },
- "StartCodeFixJobRequestDescriptionString": {
- "type": "string",
- "max": 5000,
- "min": 1,
- "sensitive": true
- },
- "StartCodeFixJobRequestRuleIdString": {
- "type": "string",
- "max": 256,
- "min": 1,
- "pattern": ".*[A-Za-z0-9-]+.*"
- },
- "StartCodeFixJobResponse": {
- "type": "structure",
- "members": {
- "jobId": {
- "shape": "StartCodeFixJobResponseJobIdString"
- },
- "status": {
- "shape": "CodeFixJobStatus"
- }
- }
- },
- "StartCodeFixJobResponseJobIdString": {
- "type": "string",
- "max": 256,
- "min": 1,
- "pattern": ".*[A-Za-z0-9-:]+.*"
- },
- "StartTaskAssistCodeGenerationRequest": {
- "type": "structure",
- "required": ["conversationState", "workspaceState"],
- "members": {
- "conversationState": {
- "shape": "ConversationState"
- },
- "workspaceState": {
- "shape": "WorkspaceState"
- },
- "taskAssistPlan": {
- "shape": "TaskAssistPlan"
- },
- "codeGenerationId": {
- "shape": "CodeGenerationId"
- },
- "currentCodeGenerationId": {
- "shape": "CodeGenerationId"
- },
- "intent": {
- "shape": "Intent"
- },
- "intentContext": {
- "shape": "IntentContext"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- },
- "documentation": "Structure to represent start code generation request.
"
- },
- "StartTaskAssistCodeGenerationResponse": {
- "type": "structure",
- "required": ["conversationId", "codeGenerationId"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- },
- "codeGenerationId": {
- "shape": "CodeGenerationId"
- }
- },
- "documentation": "Structure to represent start code generation response.
"
- },
- "StartTestGenerationRequest": {
- "type": "structure",
- "required": ["uploadId", "targetCodeList", "userInput"],
- "members": {
- "uploadId": {
- "shape": "UploadId"
- },
- "targetCodeList": {
- "shape": "TargetCodeList"
- },
- "userInput": {
- "shape": "StartTestGenerationRequestUserInputString",
- "documentation": "The content of user input.
"
- },
- "testGenerationJobGroupName": {
- "shape": "TestGenerationJobGroupName"
- },
- "clientToken": {
- "shape": "StartTestGenerationRequestClientTokenString",
- "idempotencyToken": true
- },
- "profileArn": {
- "shape": "ProfileArn"
- },
- "referenceTrackerConfiguration": {
- "shape": "ReferenceTrackerConfiguration"
- }
- },
- "documentation": "Structure to represent test generation request.
"
- },
- "StartTestGenerationRequestClientTokenString": {
- "type": "string",
- "max": 256,
- "min": 1
- },
- "StartTestGenerationRequestUserInputString": {
- "type": "string",
- "max": 4096,
- "min": 0,
- "sensitive": true
- },
- "StartTestGenerationResponse": {
- "type": "structure",
- "members": {
- "testGenerationJob": {
- "shape": "TestGenerationJob"
- }
- },
- "documentation": "Structure to represent code transformation response.
"
- },
- "StartTransformationRequest": {
- "type": "structure",
- "required": ["workspaceState", "transformationSpec"],
- "members": {
- "workspaceState": {
- "shape": "WorkspaceState"
- },
- "transformationSpec": {
- "shape": "TransformationSpec"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- },
- "documentation": "Structure to represent code transformation request.
"
- },
- "StartTransformationResponse": {
- "type": "structure",
- "required": ["transformationJobId"],
- "members": {
- "transformationJobId": {
- "shape": "TransformationJobId"
- }
- },
- "documentation": "Structure to represent code transformation response.
"
- },
- "StepId": {
- "type": "string",
- "max": 126,
- "min": 1
- },
- "StopTransformationRequest": {
- "type": "structure",
- "required": ["transformationJobId"],
- "members": {
- "transformationJobId": {
- "shape": "TransformationJobId"
- },
- "profileArn": {
- "shape": "ProfileArn"
- }
- },
- "documentation": "Structure to represent stop code transformation request.
"
- },
- "StopTransformationResponse": {
- "type": "structure",
- "required": ["transformationStatus"],
- "members": {
- "transformationStatus": {
- "shape": "TransformationStatus"
- }
- },
- "documentation": "Structure to represent stop code transformation response.
"
- },
- "String": {
- "type": "string"
- },
- "StringList": {
- "type": "list",
- "member": {
- "shape": "StringListMemberString"
- },
- "documentation": "A list of strings
",
- "max": 50,
- "min": 0
- },
- "StringListMemberString": {
- "type": "string",
- "max": 256,
- "min": 1,
- "sensitive": true
- },
- "SubscriptionStatus": {
- "type": "string",
- "enum": ["INACTIVE", "ACTIVE"]
- },
- "SuggestedFix": {
- "type": "structure",
- "members": {
- "codeDiff": {
- "shape": "SuggestedFixCodeDiffString"
- },
- "description": {
- "shape": "SuggestedFixDescriptionString"
- },
- "references": {
- "shape": "References"
- }
- }
- },
- "SuggestedFixCodeDiffString": {
- "type": "string",
- "max": 200000,
- "min": 0,
- "sensitive": true
- },
- "SuggestedFixDescriptionString": {
- "type": "string",
- "max": 2000,
- "min": 1,
- "sensitive": true
- },
- "SuggestionState": {
- "type": "string",
- "enum": ["ACCEPT", "REJECT", "DISCARD", "EMPTY", "MERGE"]
- },
- "SupplementalContext": {
- "type": "structure",
- "required": ["filePath", "content"],
- "members": {
- "filePath": {
- "shape": "SupplementalContextFilePathString"
- },
- "content": {
- "shape": "SupplementalContextContentString"
- },
- "type": {
- "shape": "SupplementalContextType"
- },
- "metadata": {
- "shape": "SupplementalContextMetadata"
- }
- }
- },
- "SupplementalContextContentString": {
- "type": "string",
- "max": 10240,
- "min": 1,
- "sensitive": true
- },
- "SupplementalContextFilePathString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "SupplementalContextList": {
- "type": "list",
- "member": {
- "shape": "SupplementalContext"
- },
- "max": 20,
- "min": 0
- },
- "SupplementalContextMetadata": {
- "type": "structure",
- "members": {
- "previousEditorStateMetadata": {
- "shape": "PreviousEditorStateMetadata"
- }
- },
- "union": true
- },
- "SupplementalContextType": {
- "type": "string",
- "enum": ["PreviousEditorState", "WorkspaceContext"]
- },
- "SupplementaryWebLink": {
- "type": "structure",
- "required": ["url", "title"],
- "members": {
- "url": {
- "shape": "SupplementaryWebLinkUrlString",
- "documentation": "URL of the web reference link.
"
- },
- "title": {
- "shape": "SupplementaryWebLinkTitleString",
- "documentation": "Title of the web reference link.
"
- },
- "snippet": {
- "shape": "SupplementaryWebLinkSnippetString",
- "documentation": "Relevant text snippet from the link.
"
- }
- },
- "documentation": "Represents an additional reference link retured with the Chat message
"
- },
- "SupplementaryWebLinkSnippetString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "SupplementaryWebLinkTitleString": {
- "type": "string",
- "max": 1024,
- "min": 1,
- "sensitive": true
- },
- "SupplementaryWebLinkUrlString": {
- "type": "string",
- "max": 2048,
- "min": 1,
- "sensitive": true
- },
- "SupplementaryWebLinks": {
- "type": "list",
- "member": {
- "shape": "SupplementaryWebLink"
- },
- "max": 10,
- "min": 0
- },
- "SymbolType": {
- "type": "string",
- "enum": ["DECLARATION", "USAGE"]
- },
- "SyntheticTimestamp_date_time": {
- "type": "timestamp",
- "timestampFormat": "iso8601"
- },
- "TargetCode": {
- "type": "structure",
- "required": ["relativeTargetPath"],
- "members": {
- "relativeTargetPath": {
- "shape": "TargetCodeRelativeTargetPathString",
- "documentation": "The file path relative to the root of the workspace, could be a single file or a folder.
"
- },
- "targetLineRangeList": {
- "shape": "LineRangeList"
- }
- }
- },
- "TargetCodeList": {
- "type": "list",
- "member": {
- "shape": "TargetCode"
- },
- "min": 1
- },
- "TargetCodeRelativeTargetPathString": {
- "type": "string",
- "max": 4096,
- "min": 1,
- "sensitive": true
- },
- "TargetFileInfo": {
- "type": "structure",
- "members": {
- "filePath": {
- "shape": "SensitiveString"
- },
- "testFilePath": {
- "shape": "SensitiveString"
- },
- "testCoverage": {
- "shape": "TargetFileInfoTestCoverageInteger"
- },
- "fileSummary": {
- "shape": "TargetFileInfoFileSummaryString"
- },
- "filePlan": {
- "shape": "TargetFileInfoFilePlanString"
- },
- "codeReferences": {
- "shape": "References"
- },
- "numberOfTestMethods": {
- "shape": "TargetFileInfoNumberOfTestMethodsInteger"
- }
- }
- },
- "TargetFileInfoFilePlanString": {
- "type": "string",
- "max": 30720,
- "min": 0,
- "sensitive": true
- },
- "TargetFileInfoFileSummaryString": {
- "type": "string",
- "max": 30720,
- "min": 0,
- "sensitive": true
- },
- "TargetFileInfoList": {
- "type": "list",
- "member": {
- "shape": "TargetFileInfo"
- }
- },
- "TargetFileInfoNumberOfTestMethodsInteger": {
- "type": "integer",
- "box": true,
- "min": 0
- },
- "TargetFileInfoTestCoverageInteger": {
- "type": "integer",
- "box": true,
- "max": 100,
- "min": 0
- },
- "TaskAssistPlan": {
- "type": "list",
- "member": {
- "shape": "TaskAssistPlanStep"
- },
- "min": 0
- },
- "TaskAssistPlanStep": {
- "type": "structure",
- "required": ["filePath", "description"],
- "members": {
- "filePath": {
- "shape": "TaskAssistPlanStepFilePathString",
- "documentation": "File path on which the step is working on.
"
- },
- "description": {
- "shape": "TaskAssistPlanStepDescriptionString",
- "documentation": "Description on the step.
"
- },
- "startLine": {
- "shape": "TaskAssistPlanStepStartLineInteger",
- "documentation": "Start line number of the related changes.
"
- },
- "endLine": {
- "shape": "TaskAssistPlanStepEndLineInteger",
- "documentation": "End line number of the related changes.
"
- },
- "action": {
- "shape": "TaskAssistPlanStepAction",
- "documentation": "Type of the action.
"
- }
- },
- "documentation": "Structured plan step for a task assist plan.
"
- },
- "TaskAssistPlanStepAction": {
- "type": "string",
- "documentation": "Action for task assist plan step
",
- "enum": ["MODIFY", "CREATE", "DELETE", "UNKNOWN"]
- },
- "TaskAssistPlanStepDescriptionString": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "TaskAssistPlanStepEndLineInteger": {
- "type": "integer",
- "box": true,
- "min": 0
- },
- "TaskAssistPlanStepFilePathString": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "TaskAssistPlanStepStartLineInteger": {
- "type": "integer",
- "box": true,
- "min": 0
- },
- "TaskAssistPlanningUploadContext": {
- "type": "structure",
- "required": ["conversationId"],
- "members": {
- "conversationId": {
- "shape": "ConversationId"
- }
- }
- },
- "TelemetryEvent": {
- "type": "structure",
- "members": {
- "userTriggerDecisionEvent": {
- "shape": "UserTriggerDecisionEvent"
- },
- "codeCoverageEvent": {
- "shape": "CodeCoverageEvent"
- },
- "userModificationEvent": {
- "shape": "UserModificationEvent"
- },
- "codeScanEvent": {
- "shape": "CodeScanEvent"
- },
- "codeScanSucceededEvent": {
- "shape": "CodeScanSucceededEvent"
- },
- "codeScanFailedEvent": {
- "shape": "CodeScanFailedEvent"
- },
- "codeScanRemediationsEvent": {
- "shape": "CodeScanRemediationsEvent"
- },
- "codeFixGenerationEvent": {
- "shape": "CodeFixGenerationEvent"
- },
- "codeFixAcceptanceEvent": {
- "shape": "CodeFixAcceptanceEvent"
- },
- "metricData": {
- "shape": "MetricData"
- },
- "chatAddMessageEvent": {
- "shape": "ChatAddMessageEvent"
- },
- "chatInteractWithMessageEvent": {
- "shape": "ChatInteractWithMessageEvent"
- },
- "chatUserModificationEvent": {
- "shape": "ChatUserModificationEvent"
- },
- "terminalUserInteractionEvent": {
- "shape": "TerminalUserInteractionEvent"
- },
- "featureDevEvent": {
- "shape": "FeatureDevEvent"
- },
- "featureDevCodeGenerationEvent": {
- "shape": "FeatureDevCodeGenerationEvent"
- },
- "featureDevCodeAcceptanceEvent": {
- "shape": "FeatureDevCodeAcceptanceEvent"
- },
- "inlineChatEvent": {
- "shape": "InlineChatEvent"
- },
- "transformEvent": {
- "shape": "TransformEvent"
- },
- "docGenerationEvent": {
- "shape": "DocGenerationEvent"
- },
- "docV2GenerationEvent": {
- "shape": "DocV2GenerationEvent"
- },
- "docV2AcceptanceEvent": {
- "shape": "DocV2AcceptanceEvent"
- },
- "testGenerationEvent": {
- "shape": "TestGenerationEvent"
- }
- },
- "union": true
- },
- "TenantId": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "TerminalUserInteractionEvent": {
- "type": "structure",
- "members": {
- "terminalUserInteractionEventType": {
- "shape": "TerminalUserInteractionEventType"
- },
- "terminal": {
- "shape": "String"
- },
- "terminalVersion": {
- "shape": "String"
- },
- "shell": {
- "shape": "String"
- },
- "shellVersion": {
- "shape": "String"
- },
- "duration": {
- "shape": "Integer"
- },
- "timeToSuggestion": {
- "shape": "Integer"
- },
- "isCompletionAccepted": {
- "shape": "Boolean"
- },
- "cliToolCommand": {
- "shape": "String"
- }
- }
- },
- "TerminalUserInteractionEventType": {
- "type": "string",
- "documentation": "CodeWhisperer terminal Interaction Type
",
- "enum": ["CODEWHISPERER_TERMINAL_TRANSLATION_ACTION", "CODEWHISPERER_TERMINAL_COMPLETION_INSERTED"]
- },
- "TestGenerationEvent": {
- "type": "structure",
- "required": ["jobId", "groupName"],
- "members": {
- "jobId": {
- "shape": "UUID"
- },
- "groupName": {
- "shape": "TestGenerationJobGroupName"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "ideCategory": {
- "shape": "IdeCategory"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "numberOfUnitTestCasesGenerated": {
- "shape": "Integer"
- },
- "numberOfUnitTestCasesAccepted": {
- "shape": "Integer"
- },
- "linesOfCodeGenerated": {
- "shape": "Integer"
- },
- "linesOfCodeAccepted": {
- "shape": "Integer"
- },
- "charsOfCodeGenerated": {
- "shape": "Integer"
- },
- "charsOfCodeAccepted": {
- "shape": "Integer"
- }
- }
- },
- "TestGenerationJob": {
- "type": "structure",
- "required": ["testGenerationJobId", "testGenerationJobGroupName", "status", "creationTime"],
- "members": {
- "testGenerationJobId": {
- "shape": "UUID"
- },
- "testGenerationJobGroupName": {
- "shape": "TestGenerationJobGroupName"
- },
- "status": {
- "shape": "TestGenerationJobStatus"
- },
- "shortAnswer": {
- "shape": "SensitiveString"
- },
- "creationTime": {
- "shape": "Timestamp"
- },
- "progressRate": {
- "shape": "TestGenerationJobProgressRateInteger"
- },
- "jobStatusReason": {
- "shape": "String"
- },
- "jobSummary": {
- "shape": "TestGenerationJobJobSummaryString"
- },
- "jobPlan": {
- "shape": "TestGenerationJobJobPlanString"
- },
- "packageInfoList": {
- "shape": "PackageInfoList"
- }
- },
- "documentation": "Represents a test generation job
"
- },
- "TestGenerationJobGroupName": {
- "type": "string",
- "documentation": "Test generation job group name
",
- "max": 128,
- "min": 1,
- "pattern": "[a-zA-Z0-9-_]+"
- },
- "TestGenerationJobJobPlanString": {
- "type": "string",
- "max": 30720,
- "min": 0,
- "sensitive": true
- },
- "TestGenerationJobJobSummaryString": {
- "type": "string",
- "max": 30720,
- "min": 0,
- "sensitive": true
- },
- "TestGenerationJobProgressRateInteger": {
- "type": "integer",
- "box": true,
- "max": 100,
- "min": 0
- },
- "TestGenerationJobStatus": {
- "type": "string",
- "enum": ["IN_PROGRESS", "FAILED", "COMPLETED"]
- },
- "TextDocument": {
- "type": "structure",
- "required": ["relativeFilePath"],
- "members": {
- "relativeFilePath": {
- "shape": "TextDocumentRelativeFilePathString",
- "documentation": "Filepath relative to the root of the workspace
"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage",
- "documentation": "The text document's language identifier.
"
- },
- "text": {
- "shape": "TextDocumentTextString",
- "documentation": "Content of the text document
"
- },
- "documentSymbols": {
- "shape": "DocumentSymbols",
- "documentation": "DocumentSymbols parsed from a text document
"
- }
- },
- "documentation": "Represents a Text Document / File
"
- },
- "TextDocumentDiagnostic": {
- "type": "structure",
- "required": ["document", "range", "source", "severity", "message"],
- "members": {
- "document": {
- "shape": "TextDocument",
- "documentation": "Represents a Text Document associated with Diagnostic
"
- },
- "range": {
- "shape": "Range",
- "documentation": "The range at which the message applies.
"
- },
- "source": {
- "shape": "SensitiveString",
- "documentation": "A human-readable string describing the source of the diagnostic
"
- },
- "severity": {
- "shape": "DiagnosticSeverity",
- "documentation": "Diagnostic Error type
"
- },
- "message": {
- "shape": "TextDocumentDiagnosticMessageString",
- "documentation": "The diagnostic's message.
"
- },
- "code": {
- "shape": "TextDocumentDiagnosticCodeString",
- "documentation": "The diagnostic's code, which might appear in the user interface.
"
- },
- "codeDescription": {
- "shape": "CodeDescription",
- "documentation": "An optional property to describe the error code.
"
- },
- "tags": {
- "shape": "DiagnosticTagList",
- "documentation": "Additional metadata about the diagnostic.
"
- },
- "relatedInformation": {
- "shape": "DiagnosticRelatedInformationList",
- "documentation": "an array of related diagnostic information, e.g. when symbol-names within a scope collide all definitions can be marked via this property.
"
- },
- "data": {
- "shape": "TextDocumentDiagnosticDataString",
- "documentation": "A data entry field that is preserved between a textDocument/publishDiagnostics notification and textDocument/codeAction request.
"
- }
- },
- "documentation": "Structure to represent metadata about a TextDocument Diagnostic
"
- },
- "TextDocumentDiagnosticCodeString": {
- "type": "string",
- "max": 1024,
- "min": 0,
- "sensitive": true
- },
- "TextDocumentDiagnosticDataString": {
- "type": "string",
- "max": 4096,
- "min": 0,
- "sensitive": true
- },
- "TextDocumentDiagnosticMessageString": {
- "type": "string",
- "max": 1024,
- "min": 0,
- "sensitive": true
- },
- "TextDocumentRelativeFilePathString": {
- "type": "string",
- "max": 4096,
- "min": 1,
- "sensitive": true
- },
- "TextDocumentTextString": {
- "type": "string",
- "max": 40000,
- "min": 0,
- "sensitive": true
- },
- "ThrottlingException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- },
- "reason": {
- "shape": "ThrottlingExceptionReason"
- }
- },
- "documentation": "This exception is thrown when request was denied due to request throttling.
",
- "exception": true,
- "retryable": {
- "throttling": true
- }
- },
- "ThrottlingExceptionReason": {
- "type": "string",
- "documentation": "Reason for ThrottlingException
",
- "enum": ["MONTHLY_REQUEST_COUNT"]
- },
- "Timestamp": {
- "type": "timestamp"
- },
- "Tool": {
- "type": "structure",
- "members": {
- "toolSpecification": {
- "shape": "ToolSpecification"
- }
- },
- "documentation": "Information about a tool that can be used.
",
- "union": true
- },
- "ToolDescription": {
- "type": "string",
- "documentation": "The description for the tool.
",
- "max": 10240,
- "min": 1,
- "sensitive": true
- },
- "ToolInputSchema": {
- "type": "structure",
- "members": {
- "json": {
- "shape": "SensitiveDocument"
- }
- },
- "documentation": "The input schema for the tool in JSON format.
"
- },
- "ToolName": {
- "type": "string",
- "documentation": "The name for the tool.
",
- "max": 64,
- "min": 0,
- "pattern": "[a-zA-Z0-9_-]+",
- "sensitive": true
- },
- "ToolResult": {
- "type": "structure",
- "required": ["toolUseId", "content"],
- "members": {
- "toolUseId": {
- "shape": "ToolUseId"
- },
- "content": {
- "shape": "ToolResultContent",
- "documentation": "Content of the tool result.
"
- },
- "status": {
- "shape": "ToolResultStatus"
- }
- },
- "documentation": "A tool result that contains the results for a tool request that was previously made.
"
- },
- "ToolResultContent": {
- "type": "list",
- "member": {
- "shape": "ToolResultContentBlock"
- }
- },
- "ToolResultContentBlock": {
- "type": "structure",
- "members": {
- "text": {
- "shape": "ToolResultContentBlockTextString",
- "documentation": "A tool result that is text.
"
- },
- "json": {
- "shape": "SensitiveDocument",
- "documentation": "A tool result that is JSON format data.
"
- }
- },
- "union": true
- },
- "ToolResultContentBlockTextString": {
- "type": "string",
- "max": 800000,
- "min": 0,
- "sensitive": true
- },
- "ToolResultStatus": {
- "type": "string",
- "documentation": "Status of the tools result.
",
- "enum": ["success", "error"]
- },
- "ToolResults": {
- "type": "list",
- "member": {
- "shape": "ToolResult"
- },
- "max": 10,
- "min": 0
- },
- "ToolSpecification": {
- "type": "structure",
- "required": ["inputSchema", "name"],
- "members": {
- "inputSchema": {
- "shape": "ToolInputSchema"
- },
- "name": {
- "shape": "ToolName"
- },
- "description": {
- "shape": "ToolDescription"
- }
- },
- "documentation": "The specification for the tool.
"
- },
- "ToolUse": {
- "type": "structure",
- "required": ["toolUseId", "name", "input"],
- "members": {
- "toolUseId": {
- "shape": "ToolUseId"
- },
- "name": {
- "shape": "ToolName"
- },
- "input": {
- "shape": "SensitiveDocument",
- "documentation": "The input to pass to the tool.
"
- }
- },
- "documentation": "Contains information about a tool that the model is requesting be run. The model uses the result from the tool to generate a response.
"
- },
- "ToolUseId": {
- "type": "string",
- "documentation": "The ID for the tool request.
",
- "max": 64,
- "min": 0,
- "pattern": "[a-zA-Z0-9_-]+"
- },
- "ToolUses": {
- "type": "list",
- "member": {
- "shape": "ToolUse"
- },
- "max": 10,
- "min": 0
- },
- "Tools": {
- "type": "list",
- "member": {
- "shape": "Tool"
- }
- },
- "TransformEvent": {
- "type": "structure",
- "required": ["jobId"],
- "members": {
- "jobId": {
- "shape": "TransformationJobId"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "ideCategory": {
- "shape": "IdeCategory"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "linesOfCodeChanged": {
- "shape": "Integer"
- },
- "charsOfCodeChanged": {
- "shape": "Integer"
- },
- "linesOfCodeSubmitted": {
- "shape": "Integer"
- }
- }
- },
- "TransformationDotNetRuntimeEnv": {
- "type": "string",
- "enum": ["NET_5_0", "NET_6_0", "NET_7_0", "NET_8_0", "NET_9_0", "NET_STANDARD_2_0"]
- },
- "TransformationDownloadArtifact": {
- "type": "structure",
- "members": {
- "downloadArtifactType": {
- "shape": "TransformationDownloadArtifactType"
- },
- "downloadArtifactId": {
- "shape": "ArtifactId"
- }
- }
- },
- "TransformationDownloadArtifactType": {
- "type": "string",
- "enum": ["ClientInstructions", "Logs", "GeneratedCode"]
- },
- "TransformationDownloadArtifacts": {
- "type": "list",
- "member": {
- "shape": "TransformationDownloadArtifact"
- },
- "max": 10,
- "min": 0
- },
- "TransformationJavaRuntimeEnv": {
- "type": "string",
- "enum": ["JVM_8", "JVM_11", "JVM_17", "JVM_21"]
- },
- "TransformationJob": {
- "type": "structure",
- "members": {
- "jobId": {
- "shape": "TransformationJobId"
- },
- "transformationSpec": {
- "shape": "TransformationSpec"
- },
- "status": {
- "shape": "TransformationStatus"
- },
- "reason": {
- "shape": "String"
- },
- "creationTime": {
- "shape": "Timestamp"
- },
- "startExecutionTime": {
- "shape": "Timestamp"
- },
- "endExecutionTime": {
- "shape": "Timestamp"
- }
- },
- "documentation": "Represent a Transformation Job
"
- },
- "TransformationJobId": {
- "type": "string",
- "documentation": "Identifier for the Transformation Job
",
- "max": 128,
- "min": 1
- },
- "TransformationLanguage": {
- "type": "string",
- "enum": ["JAVA_8", "JAVA_11", "JAVA_17", "JAVA_21", "C_SHARP", "COBOL", "PL_I", "JCL"]
- },
- "TransformationLanguages": {
- "type": "list",
- "member": {
- "shape": "TransformationLanguage"
- }
- },
- "TransformationMainframeRuntimeEnv": {
- "type": "string",
- "enum": ["MAINFRAME"]
- },
- "TransformationOperatingSystemFamily": {
- "type": "string",
- "enum": ["WINDOWS", "LINUX"]
- },
- "TransformationPlan": {
- "type": "structure",
- "required": ["transformationSteps"],
- "members": {
- "transformationSteps": {
- "shape": "TransformationSteps"
- }
- }
- },
- "TransformationPlatformConfig": {
- "type": "structure",
- "members": {
- "operatingSystemFamily": {
- "shape": "TransformationOperatingSystemFamily"
- }
- }
- },
- "TransformationProgressUpdate": {
- "type": "structure",
- "required": ["name", "status"],
- "members": {
- "name": {
- "shape": "String"
- },
- "status": {
- "shape": "TransformationProgressUpdateStatus"
- },
- "description": {
- "shape": "String"
- },
- "startTime": {
- "shape": "Timestamp"
- },
- "endTime": {
- "shape": "Timestamp"
- },
- "downloadArtifacts": {
- "shape": "TransformationDownloadArtifacts"
- }
- }
- },
- "TransformationProgressUpdateStatus": {
- "type": "string",
- "enum": ["IN_PROGRESS", "COMPLETED", "FAILED", "PAUSED", "AWAITING_CLIENT_ACTION", "SKIPPED"]
- },
- "TransformationProjectArtifactDescriptor": {
- "type": "structure",
- "members": {
- "sourceCodeArtifact": {
- "shape": "TransformationSourceCodeArtifactDescriptor"
- }
- },
- "union": true
- },
- "TransformationProjectState": {
- "type": "structure",
- "members": {
- "language": {
- "shape": "TransformationLanguage"
- },
- "runtimeEnv": {
- "shape": "TransformationRuntimeEnv"
- },
- "platformConfig": {
- "shape": "TransformationPlatformConfig"
- },
- "projectArtifact": {
- "shape": "TransformationProjectArtifactDescriptor"
- }
- }
- },
- "TransformationRuntimeEnv": {
- "type": "structure",
- "members": {
- "java": {
- "shape": "TransformationJavaRuntimeEnv"
- },
- "dotNet": {
- "shape": "TransformationDotNetRuntimeEnv"
- },
- "mainframe": {
- "shape": "TransformationMainframeRuntimeEnv"
- }
- },
- "union": true
- },
- "TransformationSourceCodeArtifactDescriptor": {
- "type": "structure",
- "members": {
- "languages": {
- "shape": "TransformationLanguages"
- },
- "runtimeEnv": {
- "shape": "TransformationRuntimeEnv"
- }
- }
- },
- "TransformationSpec": {
- "type": "structure",
- "members": {
- "transformationType": {
- "shape": "TransformationType"
- },
- "source": {
- "shape": "TransformationProjectState"
- },
- "target": {
- "shape": "TransformationProjectState"
- }
- }
- },
- "TransformationStatus": {
- "type": "string",
- "enum": [
- "CREATED",
- "ACCEPTED",
- "REJECTED",
- "STARTED",
- "PREPARING",
- "PREPARED",
- "PLANNING",
- "PLANNED",
- "TRANSFORMING",
- "TRANSFORMED",
- "FAILED",
- "COMPLETED",
- "PARTIALLY_COMPLETED",
- "STOPPING",
- "STOPPED",
- "PAUSED",
- "RESUMED"
- ]
- },
- "TransformationStep": {
- "type": "structure",
- "required": ["id", "name", "description", "status"],
- "members": {
- "id": {
- "shape": "StepId"
- },
- "name": {
- "shape": "String"
- },
- "description": {
- "shape": "String"
- },
- "status": {
- "shape": "TransformationStepStatus"
- },
- "progressUpdates": {
- "shape": "ProgressUpdates"
- },
- "startTime": {
- "shape": "Timestamp"
- },
- "endTime": {
- "shape": "Timestamp"
- }
- }
- },
- "TransformationStepStatus": {
- "type": "string",
- "enum": ["CREATED", "COMPLETED", "PARTIALLY_COMPLETED", "STOPPED", "FAILED", "PAUSED", "SKIPPED"]
- },
- "TransformationSteps": {
- "type": "list",
- "member": {
- "shape": "TransformationStep"
- }
- },
- "TransformationType": {
- "type": "string",
- "enum": ["LANGUAGE_UPGRADE", "DOCUMENT_GENERATION"]
- },
- "TransformationUploadArtifactType": {
- "type": "string",
- "enum": ["Dependencies", "ClientBuildResult"]
- },
- "TransformationUploadContext": {
- "type": "structure",
- "required": ["jobId", "uploadArtifactType"],
- "members": {
- "jobId": {
- "shape": "TransformationJobId"
- },
- "uploadArtifactType": {
- "shape": "TransformationUploadArtifactType"
- }
- }
- },
- "TransformationUserActionStatus": {
- "type": "string",
- "enum": ["COMPLETED", "REJECTED"]
- },
- "UUID": {
- "type": "string",
- "max": 36,
- "min": 36
- },
- "UpdateUsageLimitQuotaExceededException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- }
- },
- "documentation": "Exception thrown when the number of usage limit update requests exceeds the monthly quota (default 3 requests per month)
",
- "exception": true
- },
- "UpdateUsageLimitsRequest": {
- "type": "structure",
- "required": ["accountId", "featureType", "requestedLimit"],
- "members": {
- "accountId": {
- "shape": "String"
- },
- "accountlessUserId": {
- "shape": "String"
- },
- "featureType": {
- "shape": "UsageLimitType"
- },
- "requestedLimit": {
- "shape": "Long"
- },
- "justification": {
- "shape": "String"
- }
- }
- },
- "UpdateUsageLimitsResponse": {
- "type": "structure",
- "required": ["status"],
- "members": {
- "status": {
- "shape": "UsageLimitUpdateRequestStatus"
- },
- "approvedLimit": {
- "shape": "Long"
- },
- "remainingRequestsThisMonth": {
- "shape": "Integer"
- }
- }
- },
- "UploadContext": {
- "type": "structure",
- "members": {
- "taskAssistPlanningUploadContext": {
- "shape": "TaskAssistPlanningUploadContext"
- },
- "transformationUploadContext": {
- "shape": "TransformationUploadContext"
- },
- "codeAnalysisUploadContext": {
- "shape": "CodeAnalysisUploadContext"
- },
- "codeFixUploadContext": {
- "shape": "CodeFixUploadContext"
- },
- "workspaceContextUploadContext": {
- "shape": "WorkspaceContextUploadContext"
- }
- },
- "union": true
- },
- "UploadId": {
- "type": "string",
- "documentation": "Upload ID returned by CreateUploadUrl API
",
- "max": 128,
- "min": 1
- },
- "UploadIntent": {
- "type": "string",
- "documentation": "Upload Intent
",
- "enum": [
- "TRANSFORMATION",
- "TASK_ASSIST_PLANNING",
- "AUTOMATIC_FILE_SECURITY_SCAN",
- "FULL_PROJECT_SECURITY_SCAN",
- "UNIT_TESTS_GENERATION",
- "CODE_FIX_GENERATION",
- "WORKSPACE_CONTEXT",
- "AGENTIC_CODE_REVIEW"
- ]
- },
- "Url": {
- "type": "string",
- "max": 1024,
- "min": 1
- },
- "UsageLimitList": {
- "type": "structure",
- "required": ["type", "currentUsage", "totalUsageLimit"],
- "members": {
- "type": {
- "shape": "UsageLimitType"
- },
- "currentUsage": {
- "shape": "Long"
- },
- "totalUsageLimit": {
- "shape": "Long"
- },
- "percentUsed": {
- "shape": "Double"
- }
- }
- },
- "UsageLimitType": {
- "type": "string",
- "enum": ["CODE_COMPLETIONS", "AGENTIC_REQUEST", "AI_EDITOR", "TRANSFORM"]
- },
- "UsageLimitUpdateRequestStatus": {
- "type": "string",
- "enum": ["APPROVED", "PENDING_REVIEW", "REJECTED"]
- },
- "UsageLimits": {
- "type": "list",
- "member": {
- "shape": "UsageLimitList"
- },
- "max": 10,
- "min": 0
- },
- "UserContext": {
- "type": "structure",
- "required": ["ideCategory", "operatingSystem", "product"],
- "members": {
- "ideCategory": {
- "shape": "IdeCategory"
- },
- "operatingSystem": {
- "shape": "OperatingSystem"
- },
- "product": {
- "shape": "UserContextProductString"
- },
- "clientId": {
- "shape": "UUID"
- },
- "ideVersion": {
- "shape": "String"
- }
- }
- },
- "UserContextProductString": {
- "type": "string",
- "max": 128,
- "min": 1,
- "pattern": "[-a-zA-Z0-9._]*"
- },
- "UserInputMessage": {
- "type": "structure",
- "required": ["content"],
- "members": {
- "content": {
- "shape": "UserInputMessageContentString",
- "documentation": "The content of the chat message.
"
- },
- "userInputMessageContext": {
- "shape": "UserInputMessageContext",
- "documentation": "Chat message context associated with the Chat Message.
"
- },
- "userIntent": {
- "shape": "UserIntent",
- "documentation": "User Intent.
"
- },
- "origin": {
- "shape": "Origin",
- "documentation": "User Input Origin.
"
- },
- "images": {
- "shape": "ImageBlocks",
- "documentation": "Images associated with the Chat Message.
"
- },
- "modelId": {
- "shape": "ModelId",
- "documentation": "Unique identifier for the model used in this conversation
"
- }
- },
- "documentation": "Structure to represent a chat input message from User.
"
- },
- "UserInputMessageContentString": {
- "type": "string",
- "max": 600000,
- "min": 0,
- "sensitive": true
- },
- "UserInputMessageContext": {
- "type": "structure",
- "members": {
- "editorState": {
- "shape": "EditorState",
- "documentation": "Editor state chat message context.
"
- },
- "shellState": {
- "shape": "ShellState",
- "documentation": "Shell state chat message context.
"
- },
- "gitState": {
- "shape": "GitState",
- "documentation": "Git state chat message context.
"
- },
- "envState": {
- "shape": "EnvState",
- "documentation": "Environment state chat message context.
"
- },
- "appStudioContext": {
- "shape": "AppStudioState",
- "documentation": "The state of a user's AppStudio UI when sending a message.
"
- },
- "diagnostic": {
- "shape": "Diagnostic",
- "documentation": "Diagnostic chat message context.
"
- },
- "consoleState": {
- "shape": "ConsoleState",
- "documentation": "Contextual information about the environment from which the user is calling.
"
- },
- "userSettings": {
- "shape": "UserSettings",
- "documentation": "Settings information, e.g., whether the user has enabled cross-region API calls.
"
- },
- "additionalContext": {
- "shape": "AdditionalContentList",
- "documentation": "List of additional contextual content entries that can be included with the message.
"
- },
- "toolResults": {
- "shape": "ToolResults",
- "documentation": "ToolResults for the requested ToolUses.
"
- },
- "tools": {
- "shape": "Tools",
- "documentation": "Tools that can be used.
"
- }
- },
- "documentation": "Additional Chat message context associated with the Chat Message
"
- },
- "UserIntent": {
- "type": "string",
- "documentation": "User Intent
",
- "enum": [
- "SUGGEST_ALTERNATE_IMPLEMENTATION",
- "APPLY_COMMON_BEST_PRACTICES",
- "IMPROVE_CODE",
- "SHOW_EXAMPLES",
- "CITE_SOURCES",
- "EXPLAIN_LINE_BY_LINE",
- "EXPLAIN_CODE_SELECTION",
- "GENERATE_CLOUDFORMATION_TEMPLATE",
- "GENERATE_UNIT_TESTS",
- "CODE_GENERATION"
- ]
- },
- "UserModificationEvent": {
- "type": "structure",
- "required": [
- "sessionId",
- "requestId",
- "programmingLanguage",
- "modificationPercentage",
- "timestamp",
- "acceptedCharacterCount",
- "unmodifiedAcceptedCharacterCount"
- ],
- "members": {
- "sessionId": {
- "shape": "UUID"
- },
- "requestId": {
- "shape": "UUID"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "modificationPercentage": {
- "shape": "Double"
- },
- "customizationArn": {
- "shape": "CustomizationArn"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "acceptedCharacterCount": {
- "shape": "PrimitiveInteger"
- },
- "unmodifiedAcceptedCharacterCount": {
- "shape": "PrimitiveInteger"
- },
- "addedCharacterCount": {
- "shape": "UserModificationEventAddedCharacterCountInteger"
- },
- "unmodifiedAddedCharacterCount": {
- "shape": "UserModificationEventUnmodifiedAddedCharacterCountInteger"
- }
- }
- },
- "UserModificationEventAddedCharacterCountInteger": {
- "type": "integer",
- "min": 0
- },
- "UserModificationEventUnmodifiedAddedCharacterCountInteger": {
- "type": "integer",
- "min": 0
- },
- "UserSettings": {
- "type": "structure",
- "members": {
- "hasConsentedToCrossRegionCalls": {
- "shape": "Boolean"
- }
- },
- "documentation": "Settings information passed by the Q widget
"
- },
- "UserTriggerDecisionEvent": {
- "type": "structure",
- "required": [
- "sessionId",
- "requestId",
- "programmingLanguage",
- "completionType",
- "suggestionState",
- "recommendationLatencyMilliseconds",
- "timestamp"
- ],
- "members": {
- "sessionId": {
- "shape": "UUID"
- },
- "requestId": {
- "shape": "UUID"
- },
- "customizationArn": {
- "shape": "CustomizationArn"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- },
- "completionType": {
- "shape": "CompletionType"
- },
- "suggestionState": {
- "shape": "SuggestionState"
- },
- "recommendationLatencyMilliseconds": {
- "shape": "Double"
- },
- "timestamp": {
- "shape": "Timestamp"
- },
- "triggerToResponseLatencyMilliseconds": {
- "shape": "Double"
- },
- "suggestionReferenceCount": {
- "shape": "PrimitiveInteger"
- },
- "generatedLine": {
- "shape": "PrimitiveInteger"
- },
- "numberOfRecommendations": {
- "shape": "PrimitiveInteger"
- },
- "perceivedLatencyMilliseconds": {
- "shape": "Double"
- },
- "acceptedCharacterCount": {
- "shape": "PrimitiveInteger"
- },
- "addedIdeDiagnostics": {
- "shape": "IdeDiagnosticList"
- },
- "removedIdeDiagnostics": {
- "shape": "IdeDiagnosticList"
- },
- "addedCharacterCount": {
- "shape": "UserTriggerDecisionEventAddedCharacterCountInteger"
- },
- "deletedCharacterCount": {
- "shape": "UserTriggerDecisionEventDeletedCharacterCountInteger"
- },
- "streakLength": {
- "shape": "UserTriggerDecisionEventStreakLengthInteger"
- }
- }
- },
- "UserTriggerDecisionEventAddedCharacterCountInteger": {
- "type": "integer",
- "min": 0
- },
- "UserTriggerDecisionEventDeletedCharacterCountInteger": {
- "type": "integer",
- "min": 0
- },
- "UserTriggerDecisionEventStreakLengthInteger": {
- "type": "integer",
- "min": -1
- },
- "ValidationException": {
- "type": "structure",
- "required": ["message"],
- "members": {
- "message": {
- "shape": "String"
- },
- "reason": {
- "shape": "ValidationExceptionReason"
- }
- },
- "documentation": "This exception is thrown when the input fails to satisfy the constraints specified by the service.
",
- "exception": true
- },
- "ValidationExceptionReason": {
- "type": "string",
- "documentation": "Reason for ValidationException
",
- "enum": ["INVALID_CONVERSATION_ID", "CONTENT_LENGTH_EXCEEDS_THRESHOLD", "INVALID_KMS_GRANT"]
- },
- "WorkspaceContext": {
- "type": "structure",
- "required": ["toggle"],
- "members": {
- "toggle": {
- "shape": "OptInFeatureToggle"
- }
- }
- },
- "WorkspaceContextUploadContext": {
- "type": "structure",
- "required": ["workspaceId", "relativePath", "programmingLanguage"],
- "members": {
- "workspaceId": {
- "shape": "UUID"
- },
- "relativePath": {
- "shape": "SensitiveString"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage"
- }
- }
- },
- "WorkspaceFolderList": {
- "type": "list",
- "member": {
- "shape": "WorkspaceFolderListMemberString"
- },
- "max": 100,
- "min": 0
- },
- "WorkspaceFolderListMemberString": {
- "type": "string",
- "max": 4096,
- "min": 1,
- "sensitive": true
- },
- "WorkspaceList": {
- "type": "list",
- "member": {
- "shape": "WorkspaceMetadata"
- }
- },
- "WorkspaceMetadata": {
- "type": "structure",
- "required": ["workspaceId", "workspaceStatus"],
- "members": {
- "workspaceId": {
- "shape": "UUID"
- },
- "workspaceStatus": {
- "shape": "WorkspaceStatus"
- },
- "environmentAddress": {
- "shape": "SensitiveString"
- },
- "environmentId": {
- "shape": "SensitiveString"
- }
- }
- },
- "WorkspaceState": {
- "type": "structure",
- "required": ["uploadId", "programmingLanguage"],
- "members": {
- "uploadId": {
- "shape": "UploadId",
- "documentation": "Upload ID representing an Upload using a PreSigned URL
"
- },
- "programmingLanguage": {
- "shape": "ProgrammingLanguage",
- "documentation": "Primary programming language of the Workspace
"
- },
- "contextTruncationScheme": {
- "shape": "ContextTruncationScheme",
- "documentation": "Workspace context truncation schemes based on usecase
"
- }
- },
- "documentation": "Represents a Workspace state uploaded to S3 for Async Code Actions
"
- },
- "WorkspaceStatus": {
- "type": "string",
- "enum": ["CREATED", "PENDING", "READY", "CONNECTED", "DELETING"]
- },
- "timeBetweenChunks": {
- "type": "list",
- "member": {
- "shape": "Double"
- },
- "max": 100,
- "min": 0
- }
- }
-}
diff --git a/server/aws-lsp-codewhisperer/src/client/token/codewhisperer.ts b/server/aws-lsp-codewhisperer/src/client/token/codewhisperer.ts
index 145073a7ba..5db4f949c5 100644
--- a/server/aws-lsp-codewhisperer/src/client/token/codewhisperer.ts
+++ b/server/aws-lsp-codewhisperer/src/client/token/codewhisperer.ts
@@ -1,49 +1,66 @@
-import { AWSError, Request, Service } from 'aws-sdk'
-import { ServiceConfigurationOptions } from 'aws-sdk/lib/service'
-const apiConfig = require('./bearer-token-service.json')
-import CodeWhispererClient = require('./codewhispererbearertokenclient')
-import { SDKInitializator, Logging } from '@aws/language-server-runtimes/server-interface'
-// PROOF OF CONCEPT
-// This client fiddling was copied from the AWS Toolkit for VS Code
-// https://github.com/aws/aws-toolkit-vscode/blob/5d621c8405a8b20ffe571ad0ba10ae700178e051/src/shared/awsClientBuilder.ts#L68
-// We'll want to give this a common shape down in one of the core packages so
-// that we can re-use it in other bearer token based clients.
-export interface RequestExtras {
- readonly service: AWS.Service
- readonly operation: string
- readonly params?: any
-}
+import { CodeWhispererRuntimeClient, CodeWhispererRuntimeClientConfig } from '@amzn/codewhisperer-runtime'
+import { SDKInitializator, Logging, CredentialsProvider } from '@aws/language-server-runtimes/server-interface'
+import { HttpResponse, HttpRequest } from '@smithy/types'
-type RequestListener = (request: AWS.Request & RequestExtras) => void
-export interface CodeWhispererTokenClientConfigurationOptions extends ServiceConfigurationOptions {
- onRequestSetup?: RequestListener | RequestListener[]
+export interface CodeWhispererTokenClientConfigurationOptions extends CodeWhispererRuntimeClientConfig {
+ // Add any custom options if needed
}
export function createCodeWhispererTokenClient(
options: CodeWhispererTokenClientConfigurationOptions,
sdkInitializator: SDKInitializator,
- logging: Logging
-): CodeWhispererClient {
- return createService(options, sdkInitializator, logging) as CodeWhispererClient
-}
+ logging: Logging,
+ credentialsProvider: CredentialsProvider,
+ shareCodeWhispererContentWithAWS: () => boolean
+): CodeWhispererRuntimeClient {
+ logging.log(
+ `Passing client for class CodeWhispererRuntimeClient to sdkInitializator (v3) for additional setup (e.g. proxy)`
+ )
-function createService(
- options: CodeWhispererTokenClientConfigurationOptions,
- sdkInitializator: SDKInitializator,
- logging: Logging
-): Service {
- const onRequest = options?.onRequestSetup ?? []
- const listeners = Array.isArray(onRequest) ? onRequest : [onRequest]
- const opt = { ...options }
- delete opt.onRequestSetup
- logging.log(`Passing client for class Service to sdkInitializator (v2) for additional setup (e.g. proxy)`)
- const client = sdkInitializator.v2(Service, { apiConfig, ...options } as any)
- const originalClient = client.setupRequestListeners.bind(client)
-
- client.setupRequestListeners = (request: Request) => {
- originalClient(request)
- listeners.forEach(l => l(request as AWS.Request & RequestExtras))
- }
+ const client = sdkInitializator(CodeWhispererRuntimeClient, {
+ ...options,
+ })
+
+ // Add middleware for custom headers
+ client.middlewareStack.add(
+ next => async args => {
+ const request = args.request as HttpRequest
+ request.headers['x-amzn-codewhisperer-optout'] = `${!shareCodeWhispererContentWithAWS()}`
+
+ if (credentialsProvider.getConnectionType() === 'external_idp') {
+ request.headers['TokenType'] = 'EXTERNAL_IDP'
+ }
+
+ return next(args)
+ },
+ { step: 'build', priority: 'high' }
+ )
+
+ // Add middleware to capture HTTP headers
+ client.middlewareStack.add(
+ next => async args => {
+ const result = await next(args)
+
+ // Store headers on the response metadata
+ if (result.response) {
+ const httpResponse = result.response as HttpResponse
+ if (httpResponse.headers && result.output?.$metadata) {
+ // Extend metadata to include headers
+ ;(result.output.$metadata as any).httpHeaders = httpResponse.headers
+ }
+ }
+
+ return result
+ },
+ {
+ step: 'deserialize',
+ name: 'captureHeaders',
+ priority: 'high',
+ }
+ )
return client
}
+
+// Export the V3 client type for compatibility
+export type CodeWhispererTokenClient = CodeWhispererRuntimeClient
diff --git a/server/aws-lsp-codewhisperer/src/client/token/codewhispererbearertokenclient.d.ts b/server/aws-lsp-codewhisperer/src/client/token/codewhispererbearertokenclient.d.ts
deleted file mode 100644
index c885612888..0000000000
--- a/server/aws-lsp-codewhisperer/src/client/token/codewhispererbearertokenclient.d.ts
+++ /dev/null
@@ -1,2175 +0,0 @@
-
-/**
- * THIS FILE IS AUTOGENERATED BY 'generateServiceClient.ts'.
- * DO NOT EDIT BY HAND.
- */
-import {Request} from 'aws-sdk/lib/request';
-import {Response} from 'aws-sdk/lib/response';
-import {AWSError} from 'aws-sdk/lib/error';
-import {Service} from 'aws-sdk/lib/service';
-import {ServiceConfigurationOptions} from 'aws-sdk/lib/service';
-import {ConfigBase as Config} from 'aws-sdk/lib/config-base';
-interface Blob {}
-declare class CodeWhispererBearerTokenClient extends Service {
- /**
- * Constructs a service object. This object has one method for each API operation.
- */
- constructor(options?: CodeWhispererBearerTokenClient.Types.ClientConfiguration)
- config: Config & CodeWhispererBearerTokenClient.Types.ClientConfiguration;
- /**
- * Creates a pre-signed, S3 write URL for uploading a repository zip archive.
- */
- createArtifactUploadUrl(params: CodeWhispererBearerTokenClient.Types.CreateUploadUrlRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateUploadUrlResponse) => void): Request;
- /**
- * Creates a pre-signed, S3 write URL for uploading a repository zip archive.
- */
- createArtifactUploadUrl(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateUploadUrlResponse) => void): Request;
- /**
- *
- */
- createSubscriptionToken(params: CodeWhispererBearerTokenClient.Types.CreateSubscriptionTokenRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateSubscriptionTokenResponse) => void): Request;
- /**
- *
- */
- createSubscriptionToken(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateSubscriptionTokenResponse) => void): Request;
- /**
- * API to create task assist conversation.
- */
- createTaskAssistConversation(params: CodeWhispererBearerTokenClient.Types.CreateTaskAssistConversationRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateTaskAssistConversationResponse) => void): Request;
- /**
- * API to create task assist conversation.
- */
- createTaskAssistConversation(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateTaskAssistConversationResponse) => void): Request;
- /**
- * Creates a pre-signed, S3 write URL for uploading a repository zip archive.
- */
- createUploadUrl(params: CodeWhispererBearerTokenClient.Types.CreateUploadUrlRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateUploadUrlResponse) => void): Request;
- /**
- * Creates a pre-signed, S3 write URL for uploading a repository zip archive.
- */
- createUploadUrl(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateUploadUrlResponse) => void): Request;
- /**
- * API to create a single user memory entry
- */
- createUserMemoryEntry(params: CodeWhispererBearerTokenClient.Types.CreateUserMemoryEntryInput, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateUserMemoryEntryOutput) => void): Request;
- /**
- * API to create a single user memory entry
- */
- createUserMemoryEntry(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateUserMemoryEntryOutput) => void): Request;
- /**
- * Create a workspace based on a workspace root
- */
- createWorkspace(params: CodeWhispererBearerTokenClient.Types.CreateWorkspaceRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateWorkspaceResponse) => void): Request;
- /**
- * Create a workspace based on a workspace root
- */
- createWorkspace(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.CreateWorkspaceResponse) => void): Request;
- /**
- * API to delete task assist conversation.
- */
- deleteTaskAssistConversation(params: CodeWhispererBearerTokenClient.Types.DeleteTaskAssistConversationRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.DeleteTaskAssistConversationResponse) => void): Request;
- /**
- * API to delete task assist conversation.
- */
- deleteTaskAssistConversation(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.DeleteTaskAssistConversationResponse) => void): Request;
- /**
- * API to delete a single user memory entry
- */
- deleteUserMemoryEntry(params: CodeWhispererBearerTokenClient.Types.DeleteUserMemoryEntryInput, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.DeleteUserMemoryEntryOutput) => void): Request;
- /**
- * API to delete a single user memory entry
- */
- deleteUserMemoryEntry(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.DeleteUserMemoryEntryOutput) => void): Request;
- /**
- * Delete a workspace based on a workspaceId
- */
- deleteWorkspace(params: CodeWhispererBearerTokenClient.Types.DeleteWorkspaceRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.DeleteWorkspaceResponse) => void): Request;
- /**
- * Delete a workspace based on a workspaceId
- */
- deleteWorkspace(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.DeleteWorkspaceResponse) => void): Request;
- /**
- * Generate completions based on the provided file context in a paginated response.
- */
- generateCompletions(params: CodeWhispererBearerTokenClient.Types.GenerateCompletionsRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GenerateCompletionsResponse) => void): Request;
- /**
- * Generate completions based on the provided file context in a paginated response.
- */
- generateCompletions(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GenerateCompletionsResponse) => void): Request;
- /**
- * Gets the metadata of a code analysis job.
- */
- getCodeAnalysis(params: CodeWhispererBearerTokenClient.Types.GetCodeAnalysisRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetCodeAnalysisResponse) => void): Request;
- /**
- * Gets the metadata of a code analysis job.
- */
- getCodeAnalysis(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetCodeAnalysisResponse) => void): Request;
- /**
- *
- */
- getCodeFixJob(params: CodeWhispererBearerTokenClient.Types.GetCodeFixJobRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetCodeFixJobResponse) => void): Request;
- /**
- *
- */
- getCodeFixJob(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetCodeFixJobResponse) => void): Request;
- /**
- * API to get status of task assist code generation.
- */
- getTaskAssistCodeGeneration(params: CodeWhispererBearerTokenClient.Types.GetTaskAssistCodeGenerationRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetTaskAssistCodeGenerationResponse) => void): Request;
- /**
- * API to get status of task assist code generation.
- */
- getTaskAssistCodeGeneration(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetTaskAssistCodeGenerationResponse) => void): Request;
- /**
- * API to get test generation job.
- */
- getTestGeneration(params: CodeWhispererBearerTokenClient.Types.GetTestGenerationRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetTestGenerationResponse) => void): Request;
- /**
- * API to get test generation job.
- */
- getTestGeneration(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetTestGenerationResponse) => void): Request;
- /**
- * API to get code transformation status.
- */
- getTransformation(params: CodeWhispererBearerTokenClient.Types.GetTransformationRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetTransformationResponse) => void): Request;
- /**
- * API to get code transformation status.
- */
- getTransformation(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetTransformationResponse) => void): Request;
- /**
- * API to get code transformation status.
- */
- getTransformationPlan(params: CodeWhispererBearerTokenClient.Types.GetTransformationPlanRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetTransformationPlanResponse) => void): Request;
- /**
- * API to get code transformation status.
- */
- getTransformationPlan(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetTransformationPlanResponse) => void): Request;
- /**
- * Get the requested CodeWhisperer profile.
- */
- getProfile(params: CodeWhispererBearerTokenClient.Types.GetProfileRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetProfileResponse) => void): Request;
- /**
- * Get the requested CodeWhisperer profile.
- */
- getProfile(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetProfileResponse) => void): Request;
- /**
- * API to get current usage limits
- */
- getUsageLimits(params: CodeWhispererBearerTokenClient.Types.GetUsageLimitsRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetUsageLimitsResponse) => void): Request;
- /**
- * API to get current usage limits
- */
- getUsageLimits(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.GetUsageLimitsResponse) => void): Request;
- /**
- *
- */
- listAvailableCustomizations(params: CodeWhispererBearerTokenClient.Types.ListAvailableCustomizationsRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListAvailableCustomizationsResponse) => void): Request;
- /**
- *
- */
- listAvailableCustomizations(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListAvailableCustomizationsResponse) => void): Request;
- /**
- *
- */
- listAvailableModels(params: CodeWhispererBearerTokenClient.Types.ListAvailableModelsRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListAvailableModelsResponse) => void): Request;
- /**
- *
- */
- listAvailableModels(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListAvailableModelsResponse) => void): Request;
- /**
- *
- */
- listAvailableProfiles(params: CodeWhispererBearerTokenClient.Types.ListAvailableProfilesRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListAvailableProfilesResponse) => void): Request;
- /**
- *
- */
- listAvailableProfiles(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListAvailableProfilesResponse) => void): Request;
- /**
- * Lists the findings from a particular code analysis job.
- */
- listCodeAnalysisFindings(params: CodeWhispererBearerTokenClient.Types.ListCodeAnalysisFindingsRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListCodeAnalysisFindingsResponse) => void): Request;
- /**
- * Lists the findings from a particular code analysis job.
- */
- listCodeAnalysisFindings(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListCodeAnalysisFindingsResponse) => void): Request;
- /**
- * List events for agent activity
- */
- listEvents(params: CodeWhispererBearerTokenClient.Types.ListEventsRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListEventsResponse) => void): Request;
- /**
- * List events for agent activity
- */
- listEvents(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListEventsResponse) => void): Request;
- /**
- * Return configruations for each feature that has been setup for A/B testing.
- */
- listFeatureEvaluations(params: CodeWhispererBearerTokenClient.Types.ListFeatureEvaluationsRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListFeatureEvaluationsResponse) => void): Request;
- /**
- * Return configruations for each feature that has been setup for A/B testing.
- */
- listFeatureEvaluations(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListFeatureEvaluationsResponse) => void): Request;
- /**
- * API to list user memories
- */
- listUserMemoryEntries(params: CodeWhispererBearerTokenClient.Types.ListUserMemoryEntriesInput, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListUserMemoryEntriesOutput) => void): Request;
- /**
- * API to list user memories
- */
- listUserMemoryEntries(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListUserMemoryEntriesOutput) => void): Request;
- /**
- * List workspace metadata based on a workspace root
- */
- listWorkspaceMetadata(params: CodeWhispererBearerTokenClient.Types.ListWorkspaceMetadataRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListWorkspaceMetadataResponse) => void): Request;
- /**
- * List workspace metadata based on a workspace root
- */
- listWorkspaceMetadata(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ListWorkspaceMetadataResponse) => void): Request;
- /**
- * API to push telemetry events to CloudWatch, DataHub and EventBridge.
- */
- pushTelemetryEvent(params: CodeWhispererBearerTokenClient.Types.PushTelemetryEventRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.PushTelemetryEventResponse) => void): Request;
- /**
- * API to push telemetry events to CloudWatch, DataHub and EventBridge.
- */
- pushTelemetryEvent(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.PushTelemetryEventResponse) => void): Request;
- /**
- * API to resume transformation job.
- */
- resumeTransformation(params: CodeWhispererBearerTokenClient.Types.ResumeTransformationRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ResumeTransformationResponse) => void): Request;
- /**
- * API to resume transformation job.
- */
- resumeTransformation(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.ResumeTransformationResponse) => void): Request;
- /**
- * API to record telemetry events.
- */
- sendTelemetryEvent(params: CodeWhispererBearerTokenClient.Types.SendTelemetryEventRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.SendTelemetryEventResponse) => void): Request;
- /**
- * API to record telemetry events.
- */
- sendTelemetryEvent(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.SendTelemetryEventResponse) => void): Request;
- /**
- * Starts a code analysis job
- */
- startCodeAnalysis(params: CodeWhispererBearerTokenClient.Types.StartCodeAnalysisRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StartCodeAnalysisResponse) => void): Request;
- /**
- * Starts a code analysis job
- */
- startCodeAnalysis(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StartCodeAnalysisResponse) => void): Request;
- /**
- *
- */
- startCodeFixJob(params: CodeWhispererBearerTokenClient.Types.StartCodeFixJobRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StartCodeFixJobResponse) => void): Request;
- /**
- *
- */
- startCodeFixJob(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StartCodeFixJobResponse) => void): Request;
- /**
- * API to start task assist code generation.
- */
- startTaskAssistCodeGeneration(params: CodeWhispererBearerTokenClient.Types.StartTaskAssistCodeGenerationRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StartTaskAssistCodeGenerationResponse) => void): Request;
- /**
- * API to start task assist code generation.
- */
- startTaskAssistCodeGeneration(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StartTaskAssistCodeGenerationResponse) => void): Request;
- /**
- * API to start test generation.
- */
- startTestGeneration(params: CodeWhispererBearerTokenClient.Types.StartTestGenerationRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StartTestGenerationResponse) => void): Request;
- /**
- * API to start test generation.
- */
- startTestGeneration(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StartTestGenerationResponse) => void): Request;
- /**
- * API to start code translation.
- */
- startTransformation(params: CodeWhispererBearerTokenClient.Types.StartTransformationRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StartTransformationResponse) => void): Request;
- /**
- * API to start code translation.
- */
- startTransformation(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StartTransformationResponse) => void): Request;
- /**
- * API to stop code transformation status.
- */
- stopTransformation(params: CodeWhispererBearerTokenClient.Types.StopTransformationRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StopTransformationResponse) => void): Request;
- /**
- * API to stop code transformation status.
- */
- stopTransformation(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.StopTransformationResponse) => void): Request;
- /**
- * API to update usage limits for enterprise customers
- */
- updateUsageLimits(params: CodeWhispererBearerTokenClient.Types.UpdateUsageLimitsRequest, callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.UpdateUsageLimitsResponse) => void): Request;
- /**
- * API to update usage limits for enterprise customers
- */
- updateUsageLimits(callback?: (err: AWSError, data: CodeWhispererBearerTokenClient.Types.UpdateUsageLimitsResponse) => void): Request;
-}
-declare namespace CodeWhispererBearerTokenClient {
- export type ActivationToken = string;
- export type ActiveFunctionalityList = FunctionalityName[];
- export interface AdditionalContentEntry {
- /**
- * The name/identifier for this context entry
- */
- name: AdditionalContentEntryNameString;
- /**
- * A description of what this context entry represents
- */
- description: AdditionalContentEntryDescriptionString;
- /**
- * The actual contextual content
- */
- innerContext?: AdditionalContentEntryInnerContextString;
- }
- export type AdditionalContentEntryDescriptionString = string;
- export type AdditionalContentEntryInnerContextString = string;
- export type AdditionalContentEntryNameString = string;
- export type AdditionalContentList = AdditionalContentEntry[];
- export type AgenticChatEventStatus = "SUCCEEDED"|"CANCELLED"|"FAILED"|string;
- export interface AppStudioState {
- /**
- * The namespace of the context. Examples: 'ui.Button', 'ui.Table.DataSource', 'ui.Table.RowActions.Button', 'logic.invokeAWS', 'logic.JavaScript'
- */
- namespace: AppStudioStateNamespaceString;
- /**
- * The name of the property. Examples: 'visibility', 'disability', 'value', 'code'
- */
- propertyName: AppStudioStatePropertyNameString;
- /**
- * The value of the property.
- */
- propertyValue?: AppStudioStatePropertyValueString;
- /**
- * Context about how the property is used
- */
- propertyContext: AppStudioStatePropertyContextString;
- }
- export type AppStudioStateNamespaceString = string;
- export type AppStudioStatePropertyContextString = string;
- export type AppStudioStatePropertyNameString = string;
- export type AppStudioStatePropertyValueString = string;
- export interface ApplicationProperties {
- tenantId: TenantId;
- applicationArn: ResourceArn;
- tenantUrl: Url;
- applicationType: FunctionalityName;
- }
- export type ApplicationPropertiesList = ApplicationProperties[];
- export type ArtifactId = string;
- export type ArtifactMap = {[key: string]: UploadId};
- export type ArtifactType = "SourceCode"|"BuiltJars"|string;
- export interface AssistantResponseMessage {
- messageId?: MessageId;
- /**
- * The content of the text message in markdown format.
- */
- content: AssistantResponseMessageContentString;
- /**
- * Web References
- */
- supplementaryWebLinks?: SupplementaryWebLinks;
- /**
- * Code References
- */
- references?: References;
- /**
- * Followup Prompt
- */
- followupPrompt?: FollowupPrompt;
- /**
- * ToolUse Request
- */
- toolUses?: ToolUses;
- }
- export type AssistantResponseMessageContentString = string;
- export type AttributesMap = {[key: string]: StringList};
- export type AttributesMapKeyString = string;
- export type Base64EncodedPaginationToken = string;
- export type Boolean = boolean;
- export interface ByUserAnalytics {
- s3Uri?: S3Uri;
- toggle: OptInFeatureToggle;
- }
- export type ChangeLogGranularityType = "STANDARD"|"BUSINESS"|string;
- export interface ChangeLogOptions {
- granularity: ChangeLogGranularityType;
- }
- export interface ChatAddMessageEvent {
- conversationId: ConversationId;
- messageId: MessageId;
- customizationArn?: CustomizationArn;
- userIntent?: UserIntent;
- hasCodeSnippet?: Boolean;
- programmingLanguage?: ProgrammingLanguage;
- activeEditorTotalCharacters?: Integer;
- timeToFirstChunkMilliseconds?: Double;
- timeBetweenChunks?: timeBetweenChunks;
- fullResponselatency?: Double;
- requestLength?: Integer;
- responseLength?: Integer;
- numberOfCodeBlocks?: Integer;
- hasProjectLevelContext?: Boolean;
- result?: AgenticChatEventStatus;
- }
- export type ChatHistory = ChatMessage[];
- export interface ChatInteractWithMessageEvent {
- conversationId: ConversationId;
- messageId: MessageId;
- customizationArn?: CustomizationArn;
- interactionType?: ChatMessageInteractionType;
- interactionTarget?: ChatInteractWithMessageEventInteractionTargetString;
- acceptedCharacterCount?: Integer;
- acceptedLineCount?: Integer;
- acceptedSnippetHasReference?: Boolean;
- hasProjectLevelContext?: Boolean;
- userIntent?: UserIntent;
- addedIdeDiagnostics?: IdeDiagnosticList;
- removedIdeDiagnostics?: IdeDiagnosticList;
- }
- export type ChatInteractWithMessageEventInteractionTargetString = string;
- export interface ChatMessage {
- userInputMessage?: UserInputMessage;
- assistantResponseMessage?: AssistantResponseMessage;
- }
- export type ChatMessageInteractionType = "INSERT_AT_CURSOR"|"COPY_SNIPPET"|"COPY"|"CLICK_LINK"|"CLICK_BODY_LINK"|"CLICK_FOLLOW_UP"|"HOVER_REFERENCE"|"UPVOTE"|"DOWNVOTE"|string;
- export type ChatTriggerType = "MANUAL"|"DIAGNOSTIC"|"INLINE_CHAT"|string;
- export interface ChatUserModificationEvent {
- conversationId: ConversationId;
- customizationArn?: CustomizationArn;
- messageId: MessageId;
- programmingLanguage?: ProgrammingLanguage;
- modificationPercentage: Double;
- hasProjectLevelContext?: Boolean;
- }
- export type ClientId = string;
- export type CodeAnalysisFindingsSchema = "codeanalysis/findings/1.0"|string;
- export type CodeAnalysisScope = "FILE"|"PROJECT"|"AGENTIC"|string;
- export type CodeAnalysisStatus = "Completed"|"Pending"|"Failed"|string;
- export interface CodeAnalysisUploadContext {
- codeScanName: CodeScanName;
- }
- export interface CodeCoverageEvent {
- customizationArn?: CustomizationArn;
- programmingLanguage: ProgrammingLanguage;
- acceptedCharacterCount: PrimitiveInteger;
- totalCharacterCount: PrimitiveInteger;
- timestamp: Timestamp;
- unmodifiedAcceptedCharacterCount?: PrimitiveInteger;
- totalNewCodeCharacterCount?: PrimitiveInteger;
- totalNewCodeLineCount?: PrimitiveInteger;
- userWrittenCodeCharacterCount?: CodeCoverageEventUserWrittenCodeCharacterCountInteger;
- userWrittenCodeLineCount?: CodeCoverageEventUserWrittenCodeLineCountInteger;
- addedCharacterCount?: CodeCoverageEventAddedCharacterCountInteger;
- }
- export type CodeCoverageEventAddedCharacterCountInteger = number;
- export type CodeCoverageEventUserWrittenCodeCharacterCountInteger = number;
- export type CodeCoverageEventUserWrittenCodeLineCountInteger = number;
- export interface CodeDescription {
- /**
- * An URI to open with more information about the diagnostic error.
- */
- href: CodeDescriptionHrefString;
- }
- export type CodeDescriptionHrefString = string;
- export interface CodeDiffMetadata {
- codeDiffPath?: CodeDiffPath;
- }
- export type CodeDiffPath = string;
- export interface CodeFixAcceptanceEvent {
- jobId: String;
- ruleId?: String;
- detectorId?: String;
- findingId?: String;
- programmingLanguage?: ProgrammingLanguage;
- linesOfCodeAccepted?: Integer;
- charsOfCodeAccepted?: Integer;
- }
- export interface CodeFixGenerationEvent {
- jobId: String;
- ruleId?: String;
- detectorId?: String;
- findingId?: String;
- programmingLanguage?: ProgrammingLanguage;
- linesOfCodeGenerated?: Integer;
- charsOfCodeGenerated?: Integer;
- }
- export type CodeFixJobStatus = "Succeeded"|"InProgress"|"Failed"|string;
- export type CodeFixName = string;
- export interface CodeFixUploadContext {
- codeFixName: CodeFixName;
- }
- export type CodeGenerationId = string;
- export interface CodeGenerationStatus {
- status: CodeGenerationWorkflowStatus;
- currentStage: CodeGenerationWorkflowStage;
- }
- export type CodeGenerationStatusDetail = string;
- export type CodeGenerationWorkflowStage = "InitialCodeGeneration"|"CodeRefinement"|string;
- export type CodeGenerationWorkflowStatus = "InProgress"|"Complete"|"Failed"|string;
- export interface CodeScanEvent {
- programmingLanguage: ProgrammingLanguage;
- codeScanJobId: CodeScanJobId;
- timestamp: Timestamp;
- codeAnalysisScope?: CodeAnalysisScope;
- }
- export interface CodeScanFailedEvent {
- programmingLanguage: ProgrammingLanguage;
- codeScanJobId: CodeScanJobId;
- timestamp: Timestamp;
- codeAnalysisScope?: CodeAnalysisScope;
- }
- export type CodeScanJobId = string;
- export type CodeScanName = string;
- export interface CodeScanRemediationsEvent {
- programmingLanguage?: ProgrammingLanguage;
- CodeScanRemediationsEventType?: CodeScanRemediationsEventType;
- timestamp?: Timestamp;
- detectorId?: String;
- findingId?: String;
- ruleId?: String;
- component?: String;
- reason?: String;
- result?: String;
- includesFix?: Boolean;
- }
- export type CodeScanRemediationsEventType = "CODESCAN_ISSUE_HOVER"|"CODESCAN_ISSUE_APPLY_FIX"|"CODESCAN_ISSUE_VIEW_DETAILS"|string;
- export interface CodeScanSucceededEvent {
- programmingLanguage: ProgrammingLanguage;
- codeScanJobId: CodeScanJobId;
- timestamp: Timestamp;
- numberOfFindings: PrimitiveInteger;
- codeAnalysisScope?: CodeAnalysisScope;
- }
- export interface Completion {
- content: CompletionContentString;
- references?: References;
- mostRelevantMissingImports?: Imports;
- }
- export type CompletionContentString = string;
- export type CompletionType = "BLOCK"|"LINE"|string;
- export type Completions = Completion[];
- export interface ConsoleState {
- region?: String;
- consoleUrl?: SensitiveString;
- serviceId?: String;
- serviceConsolePage?: String;
- serviceSubconsolePage?: String;
- taskName?: SensitiveString;
- }
- export type ContentChecksumType = "SHA_256"|string;
- export type ContentType = "FILE"|"PROMPT"|"CODE"|"WORKSPACE"|string;
- export type ContextTruncationScheme = "ANALYSIS"|"GUMBY"|string;
- export type ConversationId = string;
- export interface ConversationState {
- /**
- * Unique identifier for the chat conversation stream
- */
- conversationId?: ConversationId;
- /**
- * Unique identifier for remote workspace
- */
- workspaceId?: UUID;
- /**
- * Holds the history of chat messages.
- */
- history?: ChatHistory;
- /**
- * Holds the current message being processed or displayed.
- */
- currentMessage: ChatMessage;
- /**
- * Trigger Reason for Chat
- */
- chatTriggerType: ChatTriggerType;
- customizationArn?: ResourceArn;
- }
- export interface CreateSubscriptionTokenRequest {
- clientToken?: IdempotencyToken;
- statusOnly?: Boolean;
- }
- export interface CreateSubscriptionTokenResponse {
- encodedVerificationUrl?: EncodedVerificationUrl;
- token?: ActivationToken;
- status: SubscriptionStatus;
- }
- export interface CreateTaskAssistConversationRequest {
- profileArn?: ProfileArn;
- }
- export interface CreateTaskAssistConversationResponse {
- conversationId: ConversationId;
- }
- export interface CreateUploadUrlRequest {
- contentMd5?: CreateUploadUrlRequestContentMd5String;
- contentChecksum?: CreateUploadUrlRequestContentChecksumString;
- contentChecksumType?: ContentChecksumType;
- contentLength?: CreateUploadUrlRequestContentLengthLong;
- artifactType?: ArtifactType;
- uploadIntent?: UploadIntent;
- uploadContext?: UploadContext;
- uploadId?: UploadId;
- profileArn?: ProfileArn;
- }
- export type CreateUploadUrlRequestContentChecksumString = string;
- export type CreateUploadUrlRequestContentLengthLong = number;
- export type CreateUploadUrlRequestContentMd5String = string;
- export interface CreateUploadUrlResponse {
- uploadId: UploadId;
- uploadUrl: PreSignedUrl;
- kmsKeyArn?: ResourceArn;
- requestHeaders?: RequestHeaders;
- }
- export interface CreateUserMemoryEntryInput {
- memoryEntryString: CreateUserMemoryEntryInputMemoryEntryStringString;
- origin: Origin;
- /**
- * ProfileArn for the managing Q Profile
- */
- profileArn?: CreateUserMemoryEntryInputProfileArnString;
- clientToken?: IdempotencyToken;
- }
- export type CreateUserMemoryEntryInputMemoryEntryStringString = string;
- export type CreateUserMemoryEntryInputProfileArnString = string;
- export interface CreateUserMemoryEntryOutput {
- memoryEntry: MemoryEntry;
- }
- export interface CreateWorkspaceRequest {
- workspaceRoot: CreateWorkspaceRequestWorkspaceRootString;
- profileArn?: ProfileArn;
- }
- export type CreateWorkspaceRequestWorkspaceRootString = string;
- export interface CreateWorkspaceResponse {
- workspace: WorkspaceMetadata;
- }
- export interface CursorState {
- /**
- * Represents a cursor position in a Text Document
- */
- position?: Position;
- /**
- * Represents a text selection in a Text Document
- */
- range?: Range;
- }
- export interface Customization {
- arn: CustomizationArn;
- name?: CustomizationName;
- description?: Description;
- modelId?: ModelId;
- }
- export type CustomizationArn = string;
- export type CustomizationName = string;
- export type Customizations = Customization[];
- export interface DashboardAnalytics {
- toggle: OptInFeatureToggle;
- }
- export interface DeleteTaskAssistConversationRequest {
- conversationId: ConversationId;
- profileArn?: ProfileArn;
- }
- export interface DeleteTaskAssistConversationResponse {
- conversationId: ConversationId;
- }
- export interface DeleteUserMemoryEntryInput {
- id: DeleteUserMemoryEntryInputIdString;
- /**
- * ProfileArn for the managing Q Profile
- */
- profileArn?: DeleteUserMemoryEntryInputProfileArnString;
- }
- export type DeleteUserMemoryEntryInputIdString = string;
- export type DeleteUserMemoryEntryInputProfileArnString = string;
- export interface DeleteUserMemoryEntryOutput {
- }
- export interface DeleteWorkspaceRequest {
- workspaceId: UUID;
- profileArn?: ProfileArn;
- }
- export interface DeleteWorkspaceResponse {
- }
- export type Description = string;
- export interface Diagnostic {
- /**
- * Diagnostics originating from a TextDocument
- */
- textDocumentDiagnostic?: TextDocumentDiagnostic;
- /**
- * Diagnostics originating from a Runtime
- */
- runtimeDiagnostic?: RuntimeDiagnostic;
- }
- export interface DiagnosticLocation {
- uri: DiagnosticLocationUriString;
- range: Range;
- }
- export type DiagnosticLocationUriString = string;
- export interface DiagnosticRelatedInformation {
- /**
- * The location of this related diagnostic information.
- */
- location: DiagnosticLocation;
- /**
- * The message of this related diagnostic information.
- */
- message: DiagnosticRelatedInformationMessageString;
- }
- export type DiagnosticRelatedInformationList = DiagnosticRelatedInformation[];
- export type DiagnosticRelatedInformationMessageString = string;
- export type DiagnosticSeverity = "ERROR"|"WARNING"|"INFORMATION"|"HINT"|string;
- export type DiagnosticTag = "UNNECESSARY"|"DEPRECATED"|string;
- export type DiagnosticTagList = DiagnosticTag[];
- export interface Dimension {
- name?: DimensionNameString;
- value?: DimensionValueString;
- }
- export type DimensionList = Dimension[];
- export type DimensionNameString = string;
- export type DimensionValueString = string;
- export type DocFolderLevel = "SUB_FOLDER"|"ENTIRE_WORKSPACE"|string;
- export interface DocGenerationEvent {
- conversationId: ConversationId;
- numberOfAddChars?: PrimitiveInteger;
- numberOfAddLines?: PrimitiveInteger;
- numberOfAddFiles?: PrimitiveInteger;
- userDecision?: DocUserDecision;
- interactionType?: DocInteractionType;
- userIdentity?: String;
- numberOfNavigation?: PrimitiveInteger;
- folderLevel?: DocFolderLevel;
- }
- export type DocInteractionType = "GENERATE_README"|"UPDATE_README"|"EDIT_README"|string;
- export type DocUserDecision = "ACCEPT"|"REJECT"|string;
- export interface DocV2AcceptanceEvent {
- conversationId: ConversationId;
- numberOfAddedChars: DocV2AcceptanceEventNumberOfAddedCharsInteger;
- numberOfAddedLines: DocV2AcceptanceEventNumberOfAddedLinesInteger;
- numberOfAddedFiles: DocV2AcceptanceEventNumberOfAddedFilesInteger;
- userDecision: DocUserDecision;
- interactionType: DocInteractionType;
- numberOfNavigations: DocV2AcceptanceEventNumberOfNavigationsInteger;
- folderLevel: DocFolderLevel;
- }
- export type DocV2AcceptanceEventNumberOfAddedCharsInteger = number;
- export type DocV2AcceptanceEventNumberOfAddedFilesInteger = number;
- export type DocV2AcceptanceEventNumberOfAddedLinesInteger = number;
- export type DocV2AcceptanceEventNumberOfNavigationsInteger = number;
- export interface DocV2GenerationEvent {
- conversationId: ConversationId;
- numberOfGeneratedChars: DocV2GenerationEventNumberOfGeneratedCharsInteger;
- numberOfGeneratedLines: DocV2GenerationEventNumberOfGeneratedLinesInteger;
- numberOfGeneratedFiles: DocV2GenerationEventNumberOfGeneratedFilesInteger;
- interactionType?: DocInteractionType;
- numberOfNavigations?: DocV2GenerationEventNumberOfNavigationsInteger;
- folderLevel?: DocFolderLevel;
- }
- export type DocV2GenerationEventNumberOfGeneratedCharsInteger = number;
- export type DocV2GenerationEventNumberOfGeneratedFilesInteger = number;
- export type DocV2GenerationEventNumberOfGeneratedLinesInteger = number;
- export type DocV2GenerationEventNumberOfNavigationsInteger = number;
- export interface Document {
- }
- export interface DocumentSymbol {
- /**
- * Name of the Document Symbol
- */
- name: DocumentSymbolNameString;
- /**
- * Symbol type - DECLARATION / USAGE
- */
- type: SymbolType;
- /**
- * Symbol package / source for FullyQualified names
- */
- source?: DocumentSymbolSourceString;
- }
- export type DocumentSymbolNameString = string;
- export type DocumentSymbolSourceString = string;
- export type DocumentSymbols = DocumentSymbol[];
- export interface DocumentationIntentContext {
- scope?: DocumentationIntentContextScopeString;
- type: DocumentationType;
- changeLogOptions?: ChangeLogOptions;
- }
- export type DocumentationIntentContextScopeString = string;
- export type DocumentationType = "README"|"CHANGE_LOG"|string;
- export type Double = number;
- export interface Edit {
- content: EditContentString;
- references?: References;
- }
- export type EditContentString = string;
- export interface EditorState {
- /**
- * Represents currently edited file
- */
- document?: TextDocument;
- /**
- * Position of the cursor
- */
- cursorState?: CursorState;
- /**
- * Represents IDE provided relevant files
- */
- relevantDocuments?: RelevantDocumentList;
- /**
- * Whether service should use relevant document in prompt
- */
- useRelevantDocuments?: Boolean;
- /**
- * Represents IDE provided list of workspace folders
- */
- workspaceFolders?: WorkspaceFolderList;
- }
- export type EncodedVerificationUrl = string;
- export interface EnvState {
- /**
- * The name of the operating system in use
- */
- operatingSystem?: EnvStateOperatingSystemString;
- /**
- * The current working directory of the environment
- */
- currentWorkingDirectory?: EnvStateCurrentWorkingDirectoryString;
- /**
- * The environment variables set in the current environment
- */
- environmentVariables?: EnvironmentVariables;
- /**
- * Local timezone offset of the client. For more information, see documentation https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
- */
- timezoneOffset?: EnvStateTimezoneOffsetInteger;
- }
- export type EnvStateCurrentWorkingDirectoryString = string;
- export type EnvStateOperatingSystemString = string;
- export type EnvStateTimezoneOffsetInteger = number;
- export interface EnvironmentVariable {
- /**
- * The key of an environment variable
- */
- key?: EnvironmentVariableKeyString;
- /**
- * The value of an environment variable
- */
- value?: EnvironmentVariableValueString;
- }
- export type EnvironmentVariableKeyString = string;
- export type EnvironmentVariableValueString = string;
- export type EnvironmentVariables = EnvironmentVariable[];
- export type ErrorDetails = string;
- export interface Event {
- eventId: UUID;
- generationId: UUID;
- eventTimestamp: SyntheticTimestamp_date_time;
- eventType: EventType;
- eventBlob: EventBlob;
- }
- export type EventBlob = Buffer|Uint8Array|Blob|string;
- export type EventList = Event[];
- export type EventType = string;
- export interface ExternalIdentityDetails {
- issuerUrl?: IssuerUrl;
- clientId?: ClientId;
- scimEndpoint?: String;
- }
- export interface FeatureDevCodeAcceptanceEvent {
- conversationId: ConversationId;
- linesOfCodeAccepted: FeatureDevCodeAcceptanceEventLinesOfCodeAcceptedInteger;
- charactersOfCodeAccepted: FeatureDevCodeAcceptanceEventCharactersOfCodeAcceptedInteger;
- programmingLanguage?: ProgrammingLanguage;
- }
- export type FeatureDevCodeAcceptanceEventCharactersOfCodeAcceptedInteger = number;
- export type FeatureDevCodeAcceptanceEventLinesOfCodeAcceptedInteger = number;
- export interface FeatureDevCodeGenerationEvent {
- conversationId: ConversationId;
- linesOfCodeGenerated: FeatureDevCodeGenerationEventLinesOfCodeGeneratedInteger;
- charactersOfCodeGenerated: FeatureDevCodeGenerationEventCharactersOfCodeGeneratedInteger;
- programmingLanguage?: ProgrammingLanguage;
- }
- export type FeatureDevCodeGenerationEventCharactersOfCodeGeneratedInteger = number;
- export type FeatureDevCodeGenerationEventLinesOfCodeGeneratedInteger = number;
- export interface FeatureDevEvent {
- conversationId: ConversationId;
- }
- export interface FeatureEvaluation {
- feature: FeatureName;
- variation: FeatureVariation;
- value: FeatureValue;
- }
- export type FeatureEvaluationsList = FeatureEvaluation[];
- export type FeatureName = string;
- export interface FeatureValue {
- boolValue?: Boolean;
- doubleValue?: Double;
- longValue?: Long;
- stringValue?: FeatureValueStringType;
- }
- export type FeatureValueStringType = string;
- export type FeatureVariation = string;
- export interface FileContext {
- leftFileContent: FileContextLeftFileContentString;
- rightFileContent: FileContextRightFileContentString;
- filename: FileContextFilenameString;
- fileUri?: FileContextFileUriString;
- programmingLanguage: ProgrammingLanguage;
- }
- export type FileContextFileUriString = string;
- export type FileContextFilenameString = string;
- export type FileContextLeftFileContentString = string;
- export type FileContextRightFileContentString = string;
- export interface FollowupPrompt {
- /**
- * The content of the text message in markdown format.
- */
- content: FollowupPromptContentString;
- /**
- * User Intent
- */
- userIntent?: UserIntent;
- }
- export type FollowupPromptContentString = string;
- export type FunctionalityName = "COMPLETIONS"|"ANALYSIS"|"CONVERSATIONS"|"TASK_ASSIST"|"TRANSFORMATIONS"|"CHAT_CUSTOMIZATION"|"TRANSFORMATIONS_WEBAPP"|"FEATURE_DEVELOPMENT"|string;
- export interface GenerateCompletionsRequest {
- fileContext: FileContext;
- editorState?: EditorState;
- maxResults?: GenerateCompletionsRequestMaxResultsInteger;
- predictionTypes?: PredictionTypes;
- nextToken?: GenerateCompletionsRequestNextTokenString;
- referenceTrackerConfiguration?: ReferenceTrackerConfiguration;
- supplementalContexts?: SupplementalContextList;
- customizationArn?: CustomizationArn;
- optOutPreference?: OptOutPreference;
- userContext?: UserContext;
- profileArn?: ProfileArn;
- workspaceId?: UUID;
- modelId?: ModelId;
- }
- export type GenerateCompletionsRequestMaxResultsInteger = number;
- export type GenerateCompletionsRequestNextTokenString = string;
- export interface GenerateCompletionsResponse {
- predictions?: Predictions;
- completions?: Completions;
- nextToken?: SensitiveString;
- modelId?: ModelId;
- }
- export interface GetCodeAnalysisRequest {
- jobId: GetCodeAnalysisRequestJobIdString;
- profileArn?: ProfileArn;
- }
- export type GetCodeAnalysisRequestJobIdString = string;
- export interface GetCodeAnalysisResponse {
- status: CodeAnalysisStatus;
- errorMessage?: SensitiveString;
- }
- export interface GetCodeFixJobRequest {
- jobId: GetCodeFixJobRequestJobIdString;
- profileArn?: ProfileArn;
- }
- export type GetCodeFixJobRequestJobIdString = string;
- export interface GetCodeFixJobResponse {
- jobStatus?: CodeFixJobStatus;
- suggestedFix?: SuggestedFix;
- }
- export interface GetProfileRequest {
- profileArn: ProfileArn;
- }
- export interface GetProfileResponse {
- profile: ProfileInfo;
- }
- export interface GetTaskAssistCodeGenerationRequest {
- conversationId: ConversationId;
- codeGenerationId: CodeGenerationId;
- profileArn?: ProfileArn;
- }
- export interface GetTaskAssistCodeGenerationResponse {
- conversationId: ConversationId;
- codeGenerationStatus: CodeGenerationStatus;
- codeGenerationStatusDetail?: CodeGenerationStatusDetail;
- codeGenerationRemainingIterationCount?: Integer;
- codeGenerationTotalIterationCount?: Integer;
- }
- export interface GetTestGenerationRequest {
- testGenerationJobGroupName: TestGenerationJobGroupName;
- testGenerationJobId: UUID;
- profileArn?: ProfileArn;
- }
- export interface GetTestGenerationResponse {
- testGenerationJob?: TestGenerationJob;
- }
- export interface GetTransformationPlanRequest {
- transformationJobId: TransformationJobId;
- profileArn?: ProfileArn;
- }
- export interface GetTransformationPlanResponse {
- transformationPlan: TransformationPlan;
- }
- export interface GetTransformationRequest {
- transformationJobId: TransformationJobId;
- profileArn?: ProfileArn;
- }
- export interface GetTransformationResponse {
- transformationJob: TransformationJob;
- }
- export interface GetUsageLimitsRequest {
- /**
- * The ARN of the Q Developer profile. Required for enterprise customers, optional for Builder ID users.
- */
- profileArn?: ProfileArn;
- }
- export interface GetUsageLimitsResponse {
- limits: UsageLimits;
- /**
- * Number of days remaining until the usage metrics reset
- */
- daysUntilReset: Integer;
- }
- export interface GitState {
- /**
- * The output of the command git status --porcelain=v1 -b
- */
- status?: GitStateStatusString;
- }
- export type GitStateStatusString = string;
- export type IdeCategory = "JETBRAINS"|"VSCODE"|"CLI"|"JUPYTER_MD"|"JUPYTER_SM"|"ECLIPSE"|"VISUAL_STUDIO"|string;
- export interface IdeDiagnostic {
- /**
- * The range at which the message applies.
- */
- range?: Range;
- /**
- * A human-readable string describing the source of the diagnostic
- */
- source?: IdeDiagnosticSourceString;
- /**
- * Diagnostic Error type
- */
- severity?: DiagnosticSeverity;
- /**
- * Type of the diagnostic
- */
- ideDiagnosticType: IdeDiagnosticType;
- }
- export type IdeDiagnosticList = IdeDiagnostic[];
- export type IdeDiagnosticSourceString = string;
- export type IdeDiagnosticType = "SYNTAX_ERROR"|"TYPE_ERROR"|"REFERENCE_ERROR"|"BEST_PRACTICE"|"SECURITY"|"OTHER"|string;
- export type IdempotencyToken = string;
- export interface IdentityDetails {
- ssoIdentityDetails?: SSOIdentityDetails;
- externalIdentityDetails?: ExternalIdentityDetails;
- }
- export interface ImageBlock {
- format: ImageFormat;
- source: ImageSource;
- }
- export type ImageBlocks = ImageBlock[];
- export type ImageFormat = "png"|"jpeg"|"gif"|"webp"|string;
- export interface ImageSource {
- bytes?: ImageSourceBytesBlob;
- }
- export type ImageSourceBytesBlob = Buffer|Uint8Array|Blob|string;
- export interface Import {
- statement?: ImportStatementString;
- }
- export type ImportStatementString = string;
- export type Imports = Import[];
- export interface InlineChatEvent {
- requestId: UUID;
- timestamp: Timestamp;
- inputLength?: PrimitiveInteger;
- numSelectedLines?: PrimitiveInteger;
- numSuggestionAddChars?: PrimitiveInteger;
- numSuggestionAddLines?: PrimitiveInteger;
- numSuggestionDelChars?: PrimitiveInteger;
- numSuggestionDelLines?: PrimitiveInteger;
- codeIntent?: Boolean;
- userDecision?: InlineChatUserDecision;
- responseStartLatency?: Double;
- responseEndLatency?: Double;
- programmingLanguage?: ProgrammingLanguage;
- }
- export type InlineChatUserDecision = "ACCEPT"|"REJECT"|"DISMISS"|string;
- export type Integer = number;
- export type Intent = "DEV"|"DOC"|string;
- export interface IntentContext {
- documentation?: DocumentationIntentContext;
- }
- export type IssuerUrl = string;
- export type LineRangeList = Range[];
- export interface ListAvailableCustomizationsRequest {
- maxResults?: ListAvailableCustomizationsRequestMaxResultsInteger;
- nextToken?: Base64EncodedPaginationToken;
- profileArn?: ProfileArn;
- }
- export type ListAvailableCustomizationsRequestMaxResultsInteger = number;
- export interface ListAvailableCustomizationsResponse {
- customizations: Customizations;
- nextToken?: Base64EncodedPaginationToken;
- }
- export interface ListAvailableModelsRequest {
- /**
- * The origin context for which to list available models
- */
- origin: Origin;
- /**
- * Maximum number of models to return in a single response
- */
- maxResults?: ListAvailableModelsRequestMaxResultsInteger;
- /**
- * Token for retrieving the next page of results
- */
- nextToken?: Base64EncodedPaginationToken;
- /**
- * ARN of the profile to use for model filtering
- */
- profileArn?: ProfileArn;
- /**
- * Provider of AI models
- */
- modelProvider?: ModelProvider;
- }
- export type ListAvailableModelsRequestMaxResultsInteger = number;
- export interface ListAvailableModelsResponse {
- /**
- * List of available models
- */
- models: Models;
- /**
- * Token for retrieving the next page of results
- */
- nextToken?: Base64EncodedPaginationToken;
- }
- export interface ListAvailableProfilesRequest {
- maxResults?: ListAvailableProfilesRequestMaxResultsInteger;
- nextToken?: Base64EncodedPaginationToken;
- }
- export type ListAvailableProfilesRequestMaxResultsInteger = number;
- export interface ListAvailableProfilesResponse {
- profiles: ProfileList;
- nextToken?: Base64EncodedPaginationToken;
- }
- export interface ListCodeAnalysisFindingsRequest {
- jobId: ListCodeAnalysisFindingsRequestJobIdString;
- nextToken?: PaginationToken;
- codeAnalysisFindingsSchema: CodeAnalysisFindingsSchema;
- profileArn?: ProfileArn;
- }
- export type ListCodeAnalysisFindingsRequestJobIdString = string;
- export interface ListCodeAnalysisFindingsResponse {
- nextToken?: PaginationToken;
- codeAnalysisFindings: SensitiveString;
- }
- export interface ListEventsRequest {
- conversationId: UUID;
- maxResults?: ListEventsRequestMaxResultsInteger;
- nextToken?: NextToken;
- }
- export type ListEventsRequestMaxResultsInteger = number;
- export interface ListEventsResponse {
- conversationId: UUID;
- events: EventList;
- nextToken?: NextToken;
- }
- export interface ListFeatureEvaluationsRequest {
- userContext: UserContext;
- profileArn?: ProfileArn;
- }
- export interface ListFeatureEvaluationsResponse {
- featureEvaluations: FeatureEvaluationsList;
- }
- export interface ListUserMemoryEntriesInput {
- maxResults?: ListUserMemoryEntriesInputMaxResultsInteger;
- /**
- * ProfileArn for the managing Q Profile
- */
- profileArn?: ListUserMemoryEntriesInputProfileArnString;
- nextToken?: ListUserMemoryEntriesInputNextTokenString;
- }
- export type ListUserMemoryEntriesInputMaxResultsInteger = number;
- export type ListUserMemoryEntriesInputNextTokenString = string;
- export type ListUserMemoryEntriesInputProfileArnString = string;
- export interface ListUserMemoryEntriesOutput {
- memoryEntries: MemoryEntryList;
- nextToken?: ListUserMemoryEntriesOutputNextTokenString;
- }
- export type ListUserMemoryEntriesOutputNextTokenString = string;
- export interface ListWorkspaceMetadataRequest {
- workspaceRoot?: ListWorkspaceMetadataRequestWorkspaceRootString;
- nextToken?: String;
- maxResults?: Integer;
- profileArn?: ProfileArn;
- }
- export type ListWorkspaceMetadataRequestWorkspaceRootString = string;
- export interface ListWorkspaceMetadataResponse {
- workspaces: WorkspaceList;
- nextToken?: String;
- }
- export type Long = number;
- export interface MCPConfiguration {
- toggle: OptInFeatureToggle;
- }
- export interface MemoryEntry {
- /**
- * A unique identifier for a single memory entry
- */
- id: MemoryEntryIdString;
- memoryEntryString: MemoryEntryMemoryEntryStringString;
- metadata: MemoryEntryMetadata;
- }
- export type MemoryEntryIdString = string;
- export type MemoryEntryList = MemoryEntry[];
- export type MemoryEntryMemoryEntryStringString = string;
- export interface MemoryEntryMetadata {
- origin: Origin;
- attributes?: AttributesMap;
- createdAt: Timestamp;
- updatedAt: Timestamp;
- memoryStatus?: MemoryStatus;
- }
- export type MemoryStatus = "DECRYPTION_FAILURE"|"VALID"|string;
- export type MessageId = string;
- export interface MetricData {
- metricName: MetricDataMetricNameString;
- metricValue: Double;
- timestamp: Timestamp;
- product: MetricDataProductString;
- dimensions?: DimensionList;
- }
- export type MetricDataMetricNameString = string;
- export type MetricDataProductString = string;
- export interface Model {
- /**
- * Unique identifier for the model
- */
- modelId: ModelId;
- /**
- * Description of the model
- */
- description?: Description;
- /**
- * Technical metadata and capabilities of the model
- */
- modelMetadata?: ModelMetadata;
- }
- export type ModelId = string;
- export interface ModelMetadata {
- /**
- * Maximum number of input tokens the model can process
- */
- maxInputTokens?: ModelMetadataMaxInputTokensInteger;
- /**
- * Whether the model supports image input processing
- */
- supportsImages?: Boolean;
- }
- export type ModelMetadataMaxInputTokensInteger = number;
- export type ModelProvider = "DEFAULT"|string;
- export type Models = Model[];
- export type NextToken = string;
- export type Notifications = NotificationsFeature[];
- export interface NotificationsFeature {
- feature: FeatureName;
- toggle: OptInFeatureToggle;
- }
- export type OperatingSystem = "MAC"|"WINDOWS"|"LINUX"|string;
- export type OptInFeatureToggle = "ON"|"OFF"|string;
- export interface OptInFeatures {
- promptLogging?: PromptLogging;
- byUserAnalytics?: ByUserAnalytics;
- dashboardAnalytics?: DashboardAnalytics;
- notifications?: Notifications;
- workspaceContext?: WorkspaceContext;
- mcpConfiguration?: MCPConfiguration;
- }
- export type OptOutPreference = "OPTIN"|"OPTOUT"|string;
- export type Origin = "CHATBOT"|"CONSOLE"|"DOCUMENTATION"|"MARKETING"|"MOBILE"|"SERVICE_INTERNAL"|"UNIFIED_SEARCH"|"UNKNOWN"|"MD"|"IDE"|"SAGE_MAKER"|"CLI"|"AI_EDITOR"|"OPENSEARCH_DASHBOARD"|"GITLAB"|string;
- export interface PackageInfo {
- executionCommand?: SensitiveString;
- buildCommand?: SensitiveString;
- buildOrder?: PackageInfoBuildOrderInteger;
- testFramework?: String;
- packageSummary?: PackageInfoPackageSummaryString;
- packagePlan?: PackageInfoPackagePlanString;
- targetFileInfoList?: TargetFileInfoList;
- }
- export type PackageInfoBuildOrderInteger = number;
- export type PackageInfoList = PackageInfo[];
- export type PackageInfoPackagePlanString = string;
- export type PackageInfoPackageSummaryString = string;
- export type PaginationToken = string;
- export interface Position {
- /**
- * Line position in a document.
- */
- line: Integer;
- /**
- * Character offset on a line in a document (zero-based)
- */
- character: Integer;
- }
- export type PreSignedUrl = string;
- export interface Prediction {
- completion?: Completion;
- edit?: Edit;
- }
- export type PredictionType = "COMPLETIONS"|"EDITS"|string;
- export type PredictionTypes = PredictionType[];
- export type Predictions = Prediction[];
- export interface PreviousEditorStateMetadata {
- timeOffset: Integer;
- }
- export type PrimitiveInteger = number;
- export interface Profile {
- arn: ProfileArn;
- identityDetails?: IdentityDetails;
- profileName: ProfileName;
- description?: ProfileDescription;
- referenceTrackerConfiguration?: ReferenceTrackerConfiguration;
- kmsKeyArn?: ResourceArn;
- activeFunctionalities?: ActiveFunctionalityList;
- status?: ProfileStatus;
- errorDetails?: ErrorDetails;
- resourcePolicy?: ResourcePolicy;
- profileType?: ProfileType;
- optInFeatures?: OptInFeatures;
- permissionUpdateRequired?: Boolean;
- applicationProperties?: ApplicationPropertiesList;
- }
- export interface ProfileInfo {
- arn: ProfileArn;
- profileName?: ProfileName;
- description?: ProfileDescription;
- status?: ProfileStatus;
- profileType?: ProfileType;
- optInFeatures?: OptInFeatures;
- }
- export type ProfileArn = string;
- export type ProfileDescription = string;
- export type ProfileList = Profile[];
- export type ProfileName = string;
- export type ProfileStatus = "ACTIVE"|"CREATING"|"CREATE_FAILED"|"UPDATING"|"UPDATE_FAILED"|"DELETING"|"DELETE_FAILED"|string;
- export type ProfileType = "Q_DEVELOPER"|"CODEWHISPERER"|string;
- export interface ProgrammingLanguage {
- languageName: ProgrammingLanguageLanguageNameString;
- }
- export type ProgrammingLanguageLanguageNameString = string;
- export type ProgressUpdates = TransformationProgressUpdate[];
- export interface PromptLogging {
- s3Uri: S3Uri;
- toggle: OptInFeatureToggle;
- }
- export interface PushTelemetryEventRequest {
- clientToken?: IdempotencyToken;
- eventType: String;
- event: Document;
- }
- export interface PushTelemetryEventResponse {
- }
- export interface Range {
- /**
- * The range's start position.
- */
- start: Position;
- /**
- * The range's end position.
- */
- end: Position;
- }
- export type RecommendationsWithReferencesPreference = "BLOCK"|"ALLOW"|string;
- export interface Reference {
- /**
- * License name
- */
- licenseName?: ReferenceLicenseNameString;
- /**
- * Code Repsitory for the associated reference
- */
- repository?: ReferenceRepositoryString;
- /**
- * Respository URL
- */
- url?: ReferenceUrlString;
- /**
- * Span / Range for the Reference
- */
- recommendationContentSpan?: Span;
- }
- export type ReferenceLicenseNameString = string;
- export type ReferenceRepositoryString = string;
- export interface ReferenceTrackerConfiguration {
- recommendationsWithReferences: RecommendationsWithReferencesPreference;
- }
- export type ReferenceUrlString = string;
- export type References = Reference[];
- export type RelevantDocumentList = RelevantTextDocument[];
- export interface RelevantTextDocument {
- /**
- * Filepath relative to the root of the workspace
- */
- relativeFilePath: RelevantTextDocumentRelativeFilePathString;
- /**
- * The text document's language identifier.
- */
- programmingLanguage?: ProgrammingLanguage;
- /**
- * Content of the text document
- */
- text?: RelevantTextDocumentTextString;
- /**
- * DocumentSymbols parsed from a text document
- */
- documentSymbols?: DocumentSymbols;
- /**
- * The type of content(file, prompt, symbol, or workspace)
- */
- type?: ContentType;
- }
- export type RelevantTextDocumentRelativeFilePathString = string;
- export type RelevantTextDocumentTextString = string;
- export type RequestHeaderKey = string;
- export type RequestHeaderValue = string;
- export type RequestHeaders = {[key: string]: RequestHeaderValue};
- export type ResourceArn = string;
- export interface ResourcePolicy {
- effect: ResourcePolicyEffect;
- }
- export type ResourcePolicyEffect = "ALLOW"|"DENY"|string;
- export interface ResumeTransformationRequest {
- transformationJobId: TransformationJobId;
- userActionStatus?: TransformationUserActionStatus;
- profileArn?: ProfileArn;
- }
- export interface ResumeTransformationResponse {
- transformationStatus: TransformationStatus;
- }
- export interface RuntimeDiagnostic {
- /**
- * A human-readable string describing the source of the diagnostic
- */
- source: RuntimeDiagnosticSourceString;
- /**
- * Diagnostic Error type
- */
- severity: DiagnosticSeverity;
- /**
- * The diagnostic's message.
- */
- message: RuntimeDiagnosticMessageString;
- }
- export type RuntimeDiagnosticMessageString = string;
- export type RuntimeDiagnosticSourceString = string;
- export type S3Uri = string;
- export interface SSOIdentityDetails {
- instanceArn: ResourceArn;
- oidcClientId: String;
- ssoRegion?: SSORegion;
- }
- export type SSORegion = string;
- export interface SendTelemetryEventRequest {
- clientToken?: IdempotencyToken;
- telemetryEvent: TelemetryEvent;
- optOutPreference?: OptOutPreference;
- userContext?: UserContext;
- profileArn?: ProfileArn;
- modelId?: ModelId;
- }
- export interface SendTelemetryEventResponse {
- }
- export interface SensitiveDocument {
- }
- export type SensitiveString = string;
- export type ShellHistory = ShellHistoryEntry[];
- export interface ShellHistoryEntry {
- /**
- * The shell command that was run
- */
- command: ShellHistoryEntryCommandString;
- /**
- * The directory the command was ran in
- */
- directory?: ShellHistoryEntryDirectoryString;
- /**
- * The exit code of the command after it finished
- */
- exitCode?: Integer;
- /**
- * The stdout from the command
- */
- stdout?: ShellHistoryEntryStdoutString;
- /**
- * The stderr from the command
- */
- stderr?: ShellHistoryEntryStderrString;
- }
- export type ShellHistoryEntryCommandString = string;
- export type ShellHistoryEntryDirectoryString = string;
- export type ShellHistoryEntryStderrString = string;
- export type ShellHistoryEntryStdoutString = string;
- export interface ShellState {
- /**
- * The name of the current shell
- */
- shellName: ShellStateShellNameString;
- /**
- * The history previous shell commands for the current shell
- */
- shellHistory?: ShellHistory;
- }
- export type ShellStateShellNameString = string;
- export interface Span {
- start?: SpanStartInteger;
- end?: SpanEndInteger;
- }
- export type SpanEndInteger = number;
- export type SpanStartInteger = number;
- export interface StartCodeAnalysisRequest {
- artifacts: ArtifactMap;
- programmingLanguage: ProgrammingLanguage;
- clientToken?: StartCodeAnalysisRequestClientTokenString;
- scope?: CodeAnalysisScope;
- codeScanName?: CodeScanName;
- codeDiffMetadata?: CodeDiffMetadata;
- profileArn?: ProfileArn;
- }
- export type StartCodeAnalysisRequestClientTokenString = string;
- export interface StartCodeAnalysisResponse {
- jobId: StartCodeAnalysisResponseJobIdString;
- status: CodeAnalysisStatus;
- errorMessage?: SensitiveString;
- }
- export type StartCodeAnalysisResponseJobIdString = string;
- export interface StartCodeFixJobRequest {
- snippetRange: Range;
- uploadId: UploadId;
- description?: StartCodeFixJobRequestDescriptionString;
- ruleId?: StartCodeFixJobRequestRuleIdString;
- codeFixName?: CodeFixName;
- referenceTrackerConfiguration?: ReferenceTrackerConfiguration;
- profileArn?: ProfileArn;
- }
- export type StartCodeFixJobRequestDescriptionString = string;
- export type StartCodeFixJobRequestRuleIdString = string;
- export interface StartCodeFixJobResponse {
- jobId?: StartCodeFixJobResponseJobIdString;
- status?: CodeFixJobStatus;
- }
- export type StartCodeFixJobResponseJobIdString = string;
- export interface StartTaskAssistCodeGenerationRequest {
- conversationState: ConversationState;
- workspaceState: WorkspaceState;
- taskAssistPlan?: TaskAssistPlan;
- codeGenerationId?: CodeGenerationId;
- currentCodeGenerationId?: CodeGenerationId;
- intent?: Intent;
- intentContext?: IntentContext;
- profileArn?: ProfileArn;
- }
- export interface StartTaskAssistCodeGenerationResponse {
- conversationId: ConversationId;
- codeGenerationId: CodeGenerationId;
- }
- export interface StartTestGenerationRequest {
- uploadId: UploadId;
- targetCodeList: TargetCodeList;
- /**
- * The content of user input.
- */
- userInput: StartTestGenerationRequestUserInputString;
- testGenerationJobGroupName?: TestGenerationJobGroupName;
- clientToken?: StartTestGenerationRequestClientTokenString;
- profileArn?: ProfileArn;
- referenceTrackerConfiguration?: ReferenceTrackerConfiguration;
- }
- export type StartTestGenerationRequestClientTokenString = string;
- export type StartTestGenerationRequestUserInputString = string;
- export interface StartTestGenerationResponse {
- testGenerationJob?: TestGenerationJob;
- }
- export interface StartTransformationRequest {
- workspaceState: WorkspaceState;
- transformationSpec: TransformationSpec;
- profileArn?: ProfileArn;
- }
- export interface StartTransformationResponse {
- transformationJobId: TransformationJobId;
- }
- export type StepId = string;
- export interface StopTransformationRequest {
- transformationJobId: TransformationJobId;
- profileArn?: ProfileArn;
- }
- export interface StopTransformationResponse {
- transformationStatus: TransformationStatus;
- }
- export type String = string;
- export type StringList = StringListMemberString[];
- export type StringListMemberString = string;
- export type SubscriptionStatus = "INACTIVE"|"ACTIVE"|string;
- export interface SuggestedFix {
- codeDiff?: SuggestedFixCodeDiffString;
- description?: SuggestedFixDescriptionString;
- references?: References;
- }
- export type SuggestedFixCodeDiffString = string;
- export type SuggestedFixDescriptionString = string;
- export type SuggestionState = "ACCEPT"|"REJECT"|"DISCARD"|"EMPTY"|"MERGE"|string;
- export interface SupplementalContext {
- filePath: SupplementalContextFilePathString;
- content: SupplementalContextContentString;
- type?: SupplementalContextType;
- metadata?: SupplementalContextMetadata;
- }
- export type SupplementalContextContentString = string;
- export type SupplementalContextFilePathString = string;
- export type SupplementalContextList = SupplementalContext[];
- export interface SupplementalContextMetadata {
- previousEditorStateMetadata?: PreviousEditorStateMetadata;
- }
- export type SupplementalContextType = "PreviousEditorState"|"WorkspaceContext"|string;
- export interface SupplementaryWebLink {
- /**
- * URL of the web reference link.
- */
- url: SupplementaryWebLinkUrlString;
- /**
- * Title of the web reference link.
- */
- title: SupplementaryWebLinkTitleString;
- /**
- * Relevant text snippet from the link.
- */
- snippet?: SupplementaryWebLinkSnippetString;
- }
- export type SupplementaryWebLinkSnippetString = string;
- export type SupplementaryWebLinkTitleString = string;
- export type SupplementaryWebLinkUrlString = string;
- export type SupplementaryWebLinks = SupplementaryWebLink[];
- export type SymbolType = "DECLARATION"|"USAGE"|string;
- export type SyntheticTimestamp_date_time = Date;
- export interface TargetCode {
- /**
- * The file path relative to the root of the workspace, could be a single file or a folder.
- */
- relativeTargetPath: TargetCodeRelativeTargetPathString;
- targetLineRangeList?: LineRangeList;
- }
- export type TargetCodeList = TargetCode[];
- export type TargetCodeRelativeTargetPathString = string;
- export interface TargetFileInfo {
- filePath?: SensitiveString;
- testFilePath?: SensitiveString;
- testCoverage?: TargetFileInfoTestCoverageInteger;
- fileSummary?: TargetFileInfoFileSummaryString;
- filePlan?: TargetFileInfoFilePlanString;
- codeReferences?: References;
- numberOfTestMethods?: TargetFileInfoNumberOfTestMethodsInteger;
- }
- export type TargetFileInfoFilePlanString = string;
- export type TargetFileInfoFileSummaryString = string;
- export type TargetFileInfoList = TargetFileInfo[];
- export type TargetFileInfoNumberOfTestMethodsInteger = number;
- export type TargetFileInfoTestCoverageInteger = number;
- export type TaskAssistPlan = TaskAssistPlanStep[];
- export interface TaskAssistPlanStep {
- /**
- * File path on which the step is working on.
- */
- filePath: TaskAssistPlanStepFilePathString;
- /**
- * Description on the step.
- */
- description: TaskAssistPlanStepDescriptionString;
- /**
- * Start line number of the related changes.
- */
- startLine?: TaskAssistPlanStepStartLineInteger;
- /**
- * End line number of the related changes.
- */
- endLine?: TaskAssistPlanStepEndLineInteger;
- /**
- * Type of the action.
- */
- action?: TaskAssistPlanStepAction;
- }
- export type TaskAssistPlanStepAction = "MODIFY"|"CREATE"|"DELETE"|"UNKNOWN"|string;
- export type TaskAssistPlanStepDescriptionString = string;
- export type TaskAssistPlanStepEndLineInteger = number;
- export type TaskAssistPlanStepFilePathString = string;
- export type TaskAssistPlanStepStartLineInteger = number;
- export interface TaskAssistPlanningUploadContext {
- conversationId: ConversationId;
- }
- export interface TelemetryEvent {
- userTriggerDecisionEvent?: UserTriggerDecisionEvent;
- codeCoverageEvent?: CodeCoverageEvent;
- userModificationEvent?: UserModificationEvent;
- codeScanEvent?: CodeScanEvent;
- codeScanSucceededEvent?: CodeScanSucceededEvent;
- codeScanFailedEvent?: CodeScanFailedEvent;
- codeScanRemediationsEvent?: CodeScanRemediationsEvent;
- codeFixGenerationEvent?: CodeFixGenerationEvent;
- codeFixAcceptanceEvent?: CodeFixAcceptanceEvent;
- metricData?: MetricData;
- chatAddMessageEvent?: ChatAddMessageEvent;
- chatInteractWithMessageEvent?: ChatInteractWithMessageEvent;
- chatUserModificationEvent?: ChatUserModificationEvent;
- terminalUserInteractionEvent?: TerminalUserInteractionEvent;
- featureDevEvent?: FeatureDevEvent;
- featureDevCodeGenerationEvent?: FeatureDevCodeGenerationEvent;
- featureDevCodeAcceptanceEvent?: FeatureDevCodeAcceptanceEvent;
- inlineChatEvent?: InlineChatEvent;
- transformEvent?: TransformEvent;
- docGenerationEvent?: DocGenerationEvent;
- docV2GenerationEvent?: DocV2GenerationEvent;
- docV2AcceptanceEvent?: DocV2AcceptanceEvent;
- testGenerationEvent?: TestGenerationEvent;
- }
- export type TenantId = string;
- export interface TerminalUserInteractionEvent {
- terminalUserInteractionEventType?: TerminalUserInteractionEventType;
- terminal?: String;
- terminalVersion?: String;
- shell?: String;
- shellVersion?: String;
- duration?: Integer;
- timeToSuggestion?: Integer;
- isCompletionAccepted?: Boolean;
- cliToolCommand?: String;
- }
- export type TerminalUserInteractionEventType = "CODEWHISPERER_TERMINAL_TRANSLATION_ACTION"|"CODEWHISPERER_TERMINAL_COMPLETION_INSERTED"|string;
- export interface TestGenerationEvent {
- jobId: UUID;
- groupName: TestGenerationJobGroupName;
- timestamp?: Timestamp;
- ideCategory?: IdeCategory;
- programmingLanguage?: ProgrammingLanguage;
- numberOfUnitTestCasesGenerated?: Integer;
- numberOfUnitTestCasesAccepted?: Integer;
- linesOfCodeGenerated?: Integer;
- linesOfCodeAccepted?: Integer;
- charsOfCodeGenerated?: Integer;
- charsOfCodeAccepted?: Integer;
- }
- export interface TestGenerationJob {
- testGenerationJobId: UUID;
- testGenerationJobGroupName: TestGenerationJobGroupName;
- status: TestGenerationJobStatus;
- shortAnswer?: SensitiveString;
- creationTime: Timestamp;
- progressRate?: TestGenerationJobProgressRateInteger;
- jobStatusReason?: String;
- jobSummary?: TestGenerationJobJobSummaryString;
- jobPlan?: TestGenerationJobJobPlanString;
- packageInfoList?: PackageInfoList;
- }
- export type TestGenerationJobGroupName = string;
- export type TestGenerationJobJobPlanString = string;
- export type TestGenerationJobJobSummaryString = string;
- export type TestGenerationJobProgressRateInteger = number;
- export type TestGenerationJobStatus = "IN_PROGRESS"|"FAILED"|"COMPLETED"|string;
- export interface TextDocument {
- /**
- * Filepath relative to the root of the workspace
- */
- relativeFilePath: TextDocumentRelativeFilePathString;
- /**
- * The text document's language identifier.
- */
- programmingLanguage?: ProgrammingLanguage;
- /**
- * Content of the text document
- */
- text?: TextDocumentTextString;
- /**
- * DocumentSymbols parsed from a text document
- */
- documentSymbols?: DocumentSymbols;
- }
- export interface TextDocumentDiagnostic {
- /**
- * Represents a Text Document associated with Diagnostic
- */
- document: TextDocument;
- /**
- * The range at which the message applies.
- */
- range: Range;
- /**
- * A human-readable string describing the source of the diagnostic
- */
- source: SensitiveString;
- /**
- * Diagnostic Error type
- */
- severity: DiagnosticSeverity;
- /**
- * The diagnostic's message.
- */
- message: TextDocumentDiagnosticMessageString;
- /**
- * The diagnostic's code, which might appear in the user interface.
- */
- code?: TextDocumentDiagnosticCodeString;
- /**
- * An optional property to describe the error code.
- */
- codeDescription?: CodeDescription;
- /**
- * Additional metadata about the diagnostic.
- */
- tags?: DiagnosticTagList;
- /**
- * an array of related diagnostic information, e.g. when symbol-names within a scope collide all definitions can be marked via this property.
- */
- relatedInformation?: DiagnosticRelatedInformationList;
- /**
- * A data entry field that is preserved between a textDocument/publishDiagnostics notification and textDocument/codeAction request.
- */
- data?: TextDocumentDiagnosticDataString;
- }
- export type TextDocumentDiagnosticCodeString = string;
- export type TextDocumentDiagnosticDataString = string;
- export type TextDocumentDiagnosticMessageString = string;
- export type TextDocumentRelativeFilePathString = string;
- export type TextDocumentTextString = string;
- export type Timestamp = Date;
- export interface Tool {
- toolSpecification?: ToolSpecification;
- }
- export type ToolDescription = string;
- export interface ToolInputSchema {
- json?: SensitiveDocument;
- }
- export type ToolName = string;
- export interface ToolResult {
- toolUseId: ToolUseId;
- /**
- * Content of the tool result.
- */
- content: ToolResultContent;
- status?: ToolResultStatus;
- }
- export type ToolResultContent = ToolResultContentBlock[];
- export interface ToolResultContentBlock {
- /**
- * A tool result that is text.
- */
- text?: ToolResultContentBlockTextString;
- /**
- * A tool result that is JSON format data.
- */
- json?: SensitiveDocument;
- }
- export type ToolResultContentBlockTextString = string;
- export type ToolResultStatus = "success"|"error"|string;
- export type ToolResults = ToolResult[];
- export interface ToolSpecification {
- inputSchema: ToolInputSchema;
- name: ToolName;
- description?: ToolDescription;
- }
- export interface ToolUse {
- toolUseId: ToolUseId;
- name: ToolName;
- /**
- * The input to pass to the tool.
- */
- input: SensitiveDocument;
- }
- export type ToolUseId = string;
- export type ToolUses = ToolUse[];
- export type Tools = Tool[];
- export interface TransformEvent {
- jobId: TransformationJobId;
- timestamp?: Timestamp;
- ideCategory?: IdeCategory;
- programmingLanguage?: ProgrammingLanguage;
- linesOfCodeChanged?: Integer;
- charsOfCodeChanged?: Integer;
- linesOfCodeSubmitted?: Integer;
- }
- export type TransformationDotNetRuntimeEnv = "NET_5_0"|"NET_6_0"|"NET_7_0"|"NET_8_0"|"NET_9_0"|"NET_STANDARD_2_0"|string;
- export interface TransformationDownloadArtifact {
- downloadArtifactType?: TransformationDownloadArtifactType;
- downloadArtifactId?: ArtifactId;
- }
- export type TransformationDownloadArtifactType = "ClientInstructions"|"Logs"|"GeneratedCode"|string;
- export type TransformationDownloadArtifacts = TransformationDownloadArtifact[];
- export type TransformationJavaRuntimeEnv = "JVM_8"|"JVM_11"|"JVM_17"|"JVM_21"|string;
- export interface TransformationJob {
- jobId?: TransformationJobId;
- transformationSpec?: TransformationSpec;
- status?: TransformationStatus;
- reason?: String;
- creationTime?: Timestamp;
- startExecutionTime?: Timestamp;
- endExecutionTime?: Timestamp;
- }
- export type TransformationJobId = string;
- export type TransformationLanguage = "JAVA_8"|"JAVA_11"|"JAVA_17"|"JAVA_21"|"C_SHARP"|"COBOL"|"PL_I"|"JCL"|string;
- export type TransformationLanguages = TransformationLanguage[];
- export type TransformationMainframeRuntimeEnv = "MAINFRAME"|string;
- export type TransformationOperatingSystemFamily = "WINDOWS"|"LINUX"|string;
- export interface TransformationPlan {
- transformationSteps: TransformationSteps;
- }
- export interface TransformationPlatformConfig {
- operatingSystemFamily?: TransformationOperatingSystemFamily;
- }
- export interface TransformationProgressUpdate {
- name: String;
- status: TransformationProgressUpdateStatus;
- description?: String;
- startTime?: Timestamp;
- endTime?: Timestamp;
- downloadArtifacts?: TransformationDownloadArtifacts;
- }
- export type TransformationProgressUpdateStatus = "IN_PROGRESS"|"COMPLETED"|"FAILED"|"PAUSED"|"AWAITING_CLIENT_ACTION"|"SKIPPED"|string;
- export interface TransformationProjectArtifactDescriptor {
- sourceCodeArtifact?: TransformationSourceCodeArtifactDescriptor;
- }
- export interface TransformationProjectState {
- language?: TransformationLanguage;
- runtimeEnv?: TransformationRuntimeEnv;
- platformConfig?: TransformationPlatformConfig;
- projectArtifact?: TransformationProjectArtifactDescriptor;
- }
- export interface TransformationRuntimeEnv {
- java?: TransformationJavaRuntimeEnv;
- dotNet?: TransformationDotNetRuntimeEnv;
- mainframe?: TransformationMainframeRuntimeEnv;
- }
- export interface TransformationSourceCodeArtifactDescriptor {
- languages?: TransformationLanguages;
- runtimeEnv?: TransformationRuntimeEnv;
- }
- export interface TransformationSpec {
- transformationType?: TransformationType;
- source?: TransformationProjectState;
- target?: TransformationProjectState;
- }
- export type TransformationStatus = "CREATED"|"ACCEPTED"|"REJECTED"|"STARTED"|"PREPARING"|"PREPARED"|"PLANNING"|"PLANNED"|"TRANSFORMING"|"TRANSFORMED"|"FAILED"|"COMPLETED"|"PARTIALLY_COMPLETED"|"STOPPING"|"STOPPED"|"PAUSED"|"RESUMED"|string;
- export interface TransformationStep {
- id: StepId;
- name: String;
- description: String;
- status: TransformationStepStatus;
- progressUpdates?: ProgressUpdates;
- startTime?: Timestamp;
- endTime?: Timestamp;
- }
- export type TransformationStepStatus = "CREATED"|"COMPLETED"|"PARTIALLY_COMPLETED"|"STOPPED"|"FAILED"|"PAUSED"|"SKIPPED"|string;
- export type TransformationSteps = TransformationStep[];
- export type TransformationType = "LANGUAGE_UPGRADE"|"DOCUMENT_GENERATION"|string;
- export type TransformationUploadArtifactType = "Dependencies"|"ClientBuildResult"|string;
- export interface TransformationUploadContext {
- jobId: TransformationJobId;
- uploadArtifactType: TransformationUploadArtifactType;
- }
- export type TransformationUserActionStatus = "COMPLETED"|"REJECTED"|string;
- export type UUID = string;
- export interface UpdateUsageLimitsRequest {
- accountId: String;
- accountlessUserId?: String;
- featureType: UsageLimitType;
- requestedLimit: Long;
- justification?: String;
- }
- export interface UpdateUsageLimitsResponse {
- status: UsageLimitUpdateRequestStatus;
- approvedLimit?: Long;
- remainingRequestsThisMonth?: Integer;
- }
- export interface UploadContext {
- taskAssistPlanningUploadContext?: TaskAssistPlanningUploadContext;
- transformationUploadContext?: TransformationUploadContext;
- codeAnalysisUploadContext?: CodeAnalysisUploadContext;
- codeFixUploadContext?: CodeFixUploadContext;
- workspaceContextUploadContext?: WorkspaceContextUploadContext;
- }
- export type UploadId = string;
- export type UploadIntent = "TRANSFORMATION"|"TASK_ASSIST_PLANNING"|"AUTOMATIC_FILE_SECURITY_SCAN"|"FULL_PROJECT_SECURITY_SCAN"|"UNIT_TESTS_GENERATION"|"CODE_FIX_GENERATION"|"WORKSPACE_CONTEXT"|"AGENTIC_CODE_REVIEW"|string;
- export type Url = string;
- export interface UsageLimitList {
- type: UsageLimitType;
- currentUsage: Long;
- totalUsageLimit: Long;
- percentUsed?: Double;
- }
- export type UsageLimitType = "CODE_COMPLETIONS"|"AGENTIC_REQUEST"|"AI_EDITOR"|"TRANSFORM"|string;
- export type UsageLimitUpdateRequestStatus = "APPROVED"|"PENDING_REVIEW"|"REJECTED"|string;
- export type UsageLimits = UsageLimitList[];
- export interface UserContext {
- ideCategory: IdeCategory;
- operatingSystem: OperatingSystem;
- product: UserContextProductString;
- clientId?: UUID;
- ideVersion?: String;
- }
- export type UserContextProductString = string;
- export interface UserInputMessage {
- /**
- * The content of the chat message.
- */
- content: UserInputMessageContentString;
- /**
- * Chat message context associated with the Chat Message.
- */
- userInputMessageContext?: UserInputMessageContext;
- /**
- * User Intent.
- */
- userIntent?: UserIntent;
- /**
- * User Input Origin.
- */
- origin?: Origin;
- /**
- * Images associated with the Chat Message.
- */
- images?: ImageBlocks;
- /**
- * Unique identifier for the model used in this conversation
- */
- modelId?: ModelId;
- }
- export type UserInputMessageContentString = string;
- export interface UserInputMessageContext {
- /**
- * Editor state chat message context.
- */
- editorState?: EditorState;
- /**
- * Shell state chat message context.
- */
- shellState?: ShellState;
- /**
- * Git state chat message context.
- */
- gitState?: GitState;
- /**
- * Environment state chat message context.
- */
- envState?: EnvState;
- /**
- * The state of a user's AppStudio UI when sending a message.
- */
- appStudioContext?: AppStudioState;
- /**
- * Diagnostic chat message context.
- */
- diagnostic?: Diagnostic;
- /**
- * Contextual information about the environment from which the user is calling.
- */
- consoleState?: ConsoleState;
- /**
- * Settings information, e.g., whether the user has enabled cross-region API calls.
- */
- userSettings?: UserSettings;
- /**
- * List of additional contextual content entries that can be included with the message.
- */
- additionalContext?: AdditionalContentList;
- /**
- * ToolResults for the requested ToolUses.
- */
- toolResults?: ToolResults;
- /**
- * Tools that can be used.
- */
- tools?: Tools;
- }
- export type UserIntent = "SUGGEST_ALTERNATE_IMPLEMENTATION"|"APPLY_COMMON_BEST_PRACTICES"|"IMPROVE_CODE"|"SHOW_EXAMPLES"|"CITE_SOURCES"|"EXPLAIN_LINE_BY_LINE"|"EXPLAIN_CODE_SELECTION"|"GENERATE_CLOUDFORMATION_TEMPLATE"|"GENERATE_UNIT_TESTS"|"CODE_GENERATION"|string;
- export interface UserModificationEvent {
- sessionId: UUID;
- requestId: UUID;
- programmingLanguage: ProgrammingLanguage;
- modificationPercentage: Double;
- customizationArn?: CustomizationArn;
- timestamp: Timestamp;
- acceptedCharacterCount: PrimitiveInteger;
- unmodifiedAcceptedCharacterCount: PrimitiveInteger;
- addedCharacterCount?: UserModificationEventAddedCharacterCountInteger;
- unmodifiedAddedCharacterCount?: UserModificationEventUnmodifiedAddedCharacterCountInteger;
- }
- export type UserModificationEventAddedCharacterCountInteger = number;
- export type UserModificationEventUnmodifiedAddedCharacterCountInteger = number;
- export interface UserSettings {
- hasConsentedToCrossRegionCalls?: Boolean;
- }
- export interface UserTriggerDecisionEvent {
- sessionId: UUID;
- requestId: UUID;
- customizationArn?: CustomizationArn;
- programmingLanguage: ProgrammingLanguage;
- completionType: CompletionType;
- suggestionState: SuggestionState;
- recommendationLatencyMilliseconds: Double;
- timestamp: Timestamp;
- triggerToResponseLatencyMilliseconds?: Double;
- suggestionReferenceCount?: PrimitiveInteger;
- generatedLine?: PrimitiveInteger;
- numberOfRecommendations?: PrimitiveInteger;
- perceivedLatencyMilliseconds?: Double;
- acceptedCharacterCount?: PrimitiveInteger;
- addedIdeDiagnostics?: IdeDiagnosticList;
- removedIdeDiagnostics?: IdeDiagnosticList;
- addedCharacterCount?: UserTriggerDecisionEventAddedCharacterCountInteger;
- deletedCharacterCount?: UserTriggerDecisionEventDeletedCharacterCountInteger;
- streakLength?: UserTriggerDecisionEventStreakLengthInteger;
- }
- export type UserTriggerDecisionEventAddedCharacterCountInteger = number;
- export type UserTriggerDecisionEventDeletedCharacterCountInteger = number;
- export type UserTriggerDecisionEventStreakLengthInteger = number;
- export interface WorkspaceContext {
- toggle: OptInFeatureToggle;
- }
- export interface WorkspaceContextUploadContext {
- workspaceId: UUID;
- relativePath: SensitiveString;
- programmingLanguage: ProgrammingLanguage;
- }
- export type WorkspaceFolderList = WorkspaceFolderListMemberString[];
- export type WorkspaceFolderListMemberString = string;
- export type WorkspaceList = WorkspaceMetadata[];
- export interface WorkspaceMetadata {
- workspaceId: UUID;
- workspaceStatus: WorkspaceStatus;
- environmentAddress?: SensitiveString;
- environmentId?: SensitiveString;
- }
- export interface WorkspaceState {
- /**
- * Upload ID representing an Upload using a PreSigned URL
- */
- uploadId: UploadId;
- /**
- * Primary programming language of the Workspace
- */
- programmingLanguage: ProgrammingLanguage;
- /**
- * Workspace context truncation schemes based on usecase
- */
- contextTruncationScheme?: ContextTruncationScheme;
- }
- export type WorkspaceStatus = "CREATED"|"PENDING"|"READY"|"CONNECTED"|"DELETING"|string;
- export type timeBetweenChunks = Double[];
- /**
- * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version.
- */
- export type apiVersion = "2022-11-11"|"latest"|string;
- export interface ClientApiVersions {
- /**
- * A string in YYYY-MM-DD format that represents the latest possible API version that can be used in this service. Specify 'latest' to use the latest possible version.
- */
- apiVersion?: apiVersion;
- }
- export type ClientConfiguration = ServiceConfigurationOptions & ClientApiVersions;
- /**
- * Contains interfaces for use with the CodeWhispererBearerTokenClient client.
- */
- export import Types = CodeWhispererBearerTokenClient;
-}
-export = CodeWhispererBearerTokenClient;
-
-
\ No newline at end of file
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.test.ts
index a307ce3fc6..b8eeffad42 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.test.ts
@@ -32,6 +32,7 @@ import {
InlineChatResult,
CancellationTokenSource,
ContextCommand,
+ ChatUpdateParams,
} from '@aws/language-server-runtimes/server-interface'
import { TestFeatures } from '@aws/language-server-runtimes/testing'
import * as assert from 'assert'
@@ -368,17 +369,6 @@ describe('AgenticChatController', () => {
sinon.assert.calledWithExactly(activeTabSpy.set, mockTabId)
})
- it('onTabAdd updates model ID in chat options and session', () => {
- const modelId = 'test-model-id'
- sinon.stub(ChatDatabase.prototype, 'getModelId').returns(modelId)
- chatController.onTabAdd({ tabId: mockTabId })
-
- sinon.assert.calledWithExactly(testFeatures.chat.chatOptionsUpdate, { modelId, tabId: mockTabId })
-
- const session = chatSessionManagementService.getSession(mockTabId).data
- assert.strictEqual(session!.modelId, modelId)
- })
-
it('onTabChange sets active tab id in telemetryController and emits metrics', () => {
chatController.onTabChange({ tabId: mockTabId })
@@ -3003,153 +2993,259 @@ ${' '.repeat(8)}}
})
describe('onListAvailableModels', () => {
- let tokenServiceManagerStub: sinon.SinonStub
+ let isCachedModelsValidStub: sinon.SinonStub
+ let getCachedModelsStub: sinon.SinonStub
+ let setCachedModelsStub: sinon.SinonStub
+ let getConnectionTypeStub: sinon.SinonStub
+ let getActiveProfileArnStub: sinon.SinonStub
+ let getCodewhispererServiceStub: sinon.SinonStub
+ let listAvailableModelsStub: sinon.SinonStub
beforeEach(() => {
- // Create a session with a model ID
+ // Create a session
chatController.onTabAdd({ tabId: mockTabId })
- const session = chatSessionManagementService.getSession(mockTabId).data!
- session.modelId = 'CLAUDE_3_7_SONNET_20250219_V1_0'
- // Stub the getRegion method
- tokenServiceManagerStub = sinon.stub(AmazonQTokenServiceManager.prototype, 'getRegion')
+ // Stub ChatDatabase methods
+ isCachedModelsValidStub = sinon.stub(ChatDatabase.prototype, 'isCachedModelsValid')
+ getCachedModelsStub = sinon.stub(ChatDatabase.prototype, 'getCachedModels')
+ setCachedModelsStub = sinon.stub(ChatDatabase.prototype, 'setCachedModels')
+
+ // Stub AmazonQTokenServiceManager methods
+ getConnectionTypeStub = sinon.stub(AmazonQTokenServiceManager.prototype, 'getConnectionType')
+ getActiveProfileArnStub = sinon.stub(AmazonQTokenServiceManager.prototype, 'getActiveProfileArn')
+ getCodewhispererServiceStub = sinon.stub(AmazonQTokenServiceManager.prototype, 'getCodewhispererService')
+
+ // Mock listAvailableModels method
+ listAvailableModelsStub = sinon.stub()
+ getCodewhispererServiceStub.returns({
+ listAvailableModels: listAvailableModelsStub,
+ })
})
afterEach(() => {
- tokenServiceManagerStub.restore()
- })
+ isCachedModelsValidStub.restore()
+ getCachedModelsStub.restore()
+ setCachedModelsStub.restore()
+ getConnectionTypeStub.restore()
+ getActiveProfileArnStub.restore()
+ getCodewhispererServiceStub.restore()
+ })
+
+ describe('ListAvailableModels Cache scenarios', () => {
+ it('should return cached models when cache is valid', async () => {
+ // Setup valid cache
+ isCachedModelsValidStub.returns(true)
+ const cachedData = {
+ models: [
+ { id: 'model1', name: 'Model 1', description: 'Test description 1' },
+ { id: 'model2', name: 'Model 2', description: 'Test description 2' },
+ ],
+ defaultModelId: 'model1',
+ timestamp: Date.now(),
+ }
+ getCachedModelsStub.returns(cachedData)
- it('should return all available models for us-east-1 region', async () => {
- // Set up the region to be us-east-1
- tokenServiceManagerStub.returns('us-east-1')
+ const session = chatSessionManagementService.getSession(mockTabId).data!
+ session.modelId = 'model1'
- // Call the method
- const params = { tabId: mockTabId }
- const result = await chatController.onListAvailableModels(params)
+ const result = await chatController.onListAvailableModels({ tabId: mockTabId })
- // Verify the result
- assert.strictEqual(result.tabId, mockTabId)
- assert.strictEqual(result.models.length, 2)
- assert.strictEqual(result.selectedModelId, 'CLAUDE_SONNET_4_20250514_V1_0')
+ // Verify cached data is used
+ assert.strictEqual(result.tabId, mockTabId)
+ assert.deepStrictEqual(result.models, cachedData.models)
+ assert.strictEqual(result.selectedModelId, 'model1')
- // Check that the models include both Claude versions
- const modelIds = result.models.map(model => model.id)
- assert.ok(modelIds.includes('CLAUDE_SONNET_4_20250514_V1_0'))
- assert.ok(modelIds.includes('CLAUDE_3_7_SONNET_20250219_V1_0'))
- })
+ // Verify API was not called
+ sinon.assert.notCalled(listAvailableModelsStub)
+ sinon.assert.notCalled(setCachedModelsStub)
+ })
- it('should return all available models for eu-central-1 region', async () => {
- // Set up the region to be eu-central-1
- tokenServiceManagerStub.returns('eu-central-1')
+ it('should return cached models when cache is valid but has empty models array', async () => {
+ // Setup cache with empty models
+ isCachedModelsValidStub.returns(true)
+ const cachedData = {
+ models: [],
+ defaultModelId: undefined,
+ timestamp: Date.now(),
+ }
+ getCachedModelsStub.returns(cachedData)
- // Call the method
- const params = { tabId: mockTabId }
- const result = await chatController.onListAvailableModels(params)
+ // Should fall back to API call since models array is empty
+ getConnectionTypeStub.returns('builderId')
+ getActiveProfileArnStub.returns('test-arn')
+ listAvailableModelsStub.resolves({
+ models: {
+ model1: { modelId: 'model1' },
+ model2: { modelId: 'model2' },
+ },
+ defaultModel: { modelId: 'model1' },
+ })
- // Verify the result
- assert.strictEqual(result.tabId, mockTabId)
- assert.strictEqual(result.models.length, 2)
- assert.strictEqual(result.selectedModelId, 'CLAUDE_SONNET_4_20250514_V1_0')
+ await chatController.onListAvailableModels({ tabId: mockTabId })
- // Check that the models include both Claude versions
- const modelIds = result.models.map(model => model.id)
- assert.ok(modelIds.includes('CLAUDE_SONNET_4_20250514_V1_0'))
- assert.ok(modelIds.includes('CLAUDE_3_7_SONNET_20250219_V1_0'))
- })
+ // Verify API was called due to empty cached models
+ sinon.assert.calledOnce(listAvailableModelsStub)
+ sinon.assert.calledOnce(setCachedModelsStub)
+ })
+
+ it('should return cached models when cache is valid but cachedData is null', async () => {
+ // Setup cache as valid but returns null
+ isCachedModelsValidStub.returns(true)
+ getCachedModelsStub.returns(null)
- it('should return all models when region is unknown', async () => {
- // Set up the region to be unknown
- tokenServiceManagerStub.returns('unknown-region')
+ // Should fall back to API call
+ getConnectionTypeStub.returns('builderId')
+ getActiveProfileArnStub.returns('test-arn')
+ listAvailableModelsStub.resolves({
+ models: {
+ model1: { modelId: 'model1' },
+ },
+ defaultModel: { modelId: 'model1' },
+ })
- // Call the method
- const params = { tabId: mockTabId }
- const result = await chatController.onListAvailableModels(params)
+ await chatController.onListAvailableModels({ tabId: mockTabId })
- // Verify the result
- assert.strictEqual(result.tabId, mockTabId)
- assert.strictEqual(result.models.length, 2)
- assert.strictEqual(result.selectedModelId, 'CLAUDE_SONNET_4_20250514_V1_0')
+ // Verify API was called
+ sinon.assert.calledOnce(listAvailableModelsStub)
+ })
})
- it('should return undefined for selectedModelId when no session data exists', async () => {
- // Set up the session to return no session (failure case)
- const getSessionStub = sinon.stub(chatSessionManagementService, 'getSession')
- getSessionStub.returns({
- data: undefined,
- success: false,
- error: 'error',
+ describe('ListAvailableModels API call scenarios', () => {
+ beforeEach(() => {
+ // Setup invalid cache to force API call
+ isCachedModelsValidStub.returns(false)
})
- // Call the method
- const params = { tabId: 'non-existent-tab' }
- const result = await chatController.onListAvailableModels(params)
+ it('should fetch models from API when cache is invalid', async () => {
+ getConnectionTypeStub.returns('builderId')
+ getActiveProfileArnStub.returns('test-profile-arn')
- // Verify the result
- assert.strictEqual(result.tabId, 'non-existent-tab')
- assert.strictEqual(result.models.length, 2)
- assert.strictEqual(result.selectedModelId, undefined)
+ const mockApiResponse = {
+ models: {
+ 'claude-3-sonnet': {
+ modelId: 'claude-3-sonnet',
+ modelName: 'Claude 3 Sonnet',
+ description: 'Advanced AI model',
+ },
+ 'claude-4-sonnet': {
+ modelId: 'claude-4-sonnet',
+ modelName: 'Claude 4 Sonnet',
+ description: 'Latest AI model',
+ },
+ },
+ defaultModel: { modelId: 'claude-3-sonnet' },
+ }
+ listAvailableModelsStub.resolves(mockApiResponse)
- getSessionStub.restore()
- })
+ const result = await chatController.onListAvailableModels({ tabId: mockTabId })
- it('should fallback to latest available model when saved model is not available in current region', async () => {
- // Import the module to stub
- const modelSelection = await import('./constants/modelSelection')
+ // Verify API call was made with correct parameters
+ sinon.assert.calledOnceWithExactly(listAvailableModelsStub, {
+ origin: 'IDE',
+ profileArn: 'test-profile-arn',
+ })
- // Create a mock region with only Claude 3.7
- const mockModelOptionsForRegion = {
- ...modelSelection.MODEL_OPTIONS_FOR_REGION,
- 'test-region-limited': [
- {
- id: 'CLAUDE_3_7_SONNET_20250219_V1_0',
- name: 'Claude Sonnet 3.7',
- },
- ],
- }
+ // Verify result structure
+ assert.strictEqual(result.tabId, mockTabId)
+ assert.strictEqual(result.models.length, 2)
+ assert.deepStrictEqual(result.models, [
+ { id: 'claude-3-sonnet', name: 'Claude 3 Sonnet', description: 'Advanced AI model' },
+ { id: 'claude-4-sonnet', name: 'Claude 4 Sonnet', description: 'Latest AI model' },
+ ])
+
+ // Verify cache was updated
+ sinon.assert.calledOnceWithExactly(setCachedModelsStub, result.models, 'claude-3-sonnet')
+ })
+
+ it('should fall back to hardcoded models when API call fails', async () => {
+ getConnectionTypeStub.returns('builderId')
+ listAvailableModelsStub.rejects(new Error('API Error'))
- // Stub the MODEL_OPTIONS_FOR_REGION
- const modelOptionsStub = sinon
- .stub(modelSelection, 'MODEL_OPTIONS_FOR_REGION')
- .value(mockModelOptionsForRegion)
+ const result = await chatController.onListAvailableModels({ tabId: mockTabId })
- // Set up the region to be the test region (which only has Claude 3.7)
- tokenServiceManagerStub.returns('test-region-limited')
+ // Verify fallback to FALLBACK_MODEL_OPTIONS
+ assert.strictEqual(result.tabId, mockTabId)
+ assert.strictEqual(result.models.length, 1) // FALLBACK_MODEL_OPTIONS length
- // Mock database to return Claude Sonnet 4 (not available in test-region-limited)
- const getModelIdStub = sinon.stub(ChatDatabase.prototype, 'getModelId')
- getModelIdStub.returns('CLAUDE_SONNET_4_20250514_V1_0')
+ // Verify cache was not updated due to error
+ sinon.assert.notCalled(setCachedModelsStub)
+ })
+
+ it('should handle API response with no defaultModel', async () => {
+ getConnectionTypeStub.returns('builderId')
- // Call the method
- const params = { tabId: mockTabId }
- const result = await chatController.onListAvailableModels(params)
+ const mockApiResponse = {
+ models: {
+ model1: { modelId: 'model1' },
+ },
+ defaultModel: undefined, // No default model
+ }
+ listAvailableModelsStub.resolves(mockApiResponse)
- // Verify the result falls back to available model
- assert.strictEqual(result.tabId, mockTabId)
- assert.strictEqual(result.models.length, 1)
- assert.strictEqual(result.selectedModelId, 'CLAUDE_3_7_SONNET_20250219_V1_0')
+ const result = await chatController.onListAvailableModels({ tabId: mockTabId })
- getModelIdStub.restore()
- modelOptionsStub.restore()
+ // Verify cache was updated with undefined defaultModelId
+ sinon.assert.calledOnceWithExactly(setCachedModelsStub, result.models, undefined)
+ })
})
- it('should use saved model when it is available in current region', async () => {
- // Set up the region to be us-east-1 (which has both models)
- tokenServiceManagerStub.returns('us-east-1')
+ describe('Session and model selection scenarios', () => {
+ beforeEach(() => {
+ // Setup cache to avoid API calls in these tests
+ isCachedModelsValidStub.returns(true)
+ getCachedModelsStub.returns({
+ models: [
+ { id: 'model1', name: 'Model 1' },
+ { id: 'model2', name: 'Model 2' },
+ ],
+ defaultModelId: 'model1',
+ timestamp: Date.now(),
+ })
+ })
+
+ it('should return default model when session fails to load', async () => {
+ const getSessionStub = sinon.stub(chatSessionManagementService, 'getSession')
+ getSessionStub.returns({
+ data: undefined,
+ success: false,
+ error: 'Session not found',
+ })
+
+ const result = await chatController.onListAvailableModels({ tabId: 'invalid-tab' })
- // Mock database to return Claude 3.7 (available in us-east-1)
- const getModelIdStub = sinon.stub(ChatDatabase.prototype, 'getModelId')
- getModelIdStub.returns('CLAUDE_3_7_SONNET_20250219_V1_0')
+ assert.strictEqual(result.tabId, 'invalid-tab')
+ assert.strictEqual(result.selectedModelId, 'model1')
- // Call the method
- const params = { tabId: mockTabId }
- const result = await chatController.onListAvailableModels(params)
+ getSessionStub.restore()
+ })
+
+ it('should use defaultModelId from cache when session has no modelId', async () => {
+ const session = chatSessionManagementService.getSession(mockTabId).data!
+ session.modelId = undefined
- // Verify the result uses the saved model
- assert.strictEqual(result.tabId, mockTabId)
- assert.strictEqual(result.models.length, 2)
- assert.strictEqual(result.selectedModelId, 'CLAUDE_3_7_SONNET_20250219_V1_0')
+ const result = await chatController.onListAvailableModels({ tabId: mockTabId })
- getModelIdStub.restore()
+ assert.strictEqual(result.selectedModelId, 'model1') // defaultModelId from cache
+ // Verify session modelId is updated
+ assert.strictEqual(session.modelId, 'model1')
+ })
+
+ it('should fall back to default model when session has no modelId and no defaultModelId in cache', async () => {
+ getCachedModelsStub.returns({
+ models: [{ id: 'model1', name: 'Model 1', description: 'Test model' }],
+ defaultModelId: undefined, // No default model
+ timestamp: Date.now(),
+ })
+
+ const session = chatSessionManagementService.getSession(mockTabId).data!
+ session.modelId = undefined
+
+ const result = await chatController.onListAvailableModels({ tabId: mockTabId })
+
+ assert.strictEqual(result.selectedModelId, 'claude-sonnet-4') // FALLBACK_MODEL_RECORD[DEFAULT_MODEL_ID].label
+ // Verify session modelId is updated
+ assert.strictEqual(session.modelId, 'claude-sonnet-4')
+ })
})
})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts
index 991d95a6ad..f9471c153f 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts
@@ -24,7 +24,6 @@ import {
GREP_SEARCH,
FILE_SEARCH,
EXECUTE_BASH,
- CODE_REVIEW,
BUTTON_RUN_SHELL_COMMAND,
BUTTON_REJECT_SHELL_COMMAND,
BUTTON_REJECT_MCP_TOOL,
@@ -67,8 +66,6 @@ import {
ListAvailableModelsResult,
OpenFileDialogParams,
OpenFileDialogResult,
-} from '@aws/language-server-runtimes/protocol'
-import {
ApplyWorkspaceEditParams,
ErrorCodes,
FeedbackParams,
@@ -83,6 +80,7 @@ import {
TabBarActionParams,
CreatePromptParams,
FileClickParams,
+ Model,
} from '@aws/language-server-runtimes/protocol'
import {
CancellationToken,
@@ -139,7 +137,7 @@ import { AmazonQBaseServiceManager } from '../../shared/amazonQServiceManager/Ba
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'
import { AmazonQWorkspaceConfig } from '../../shared/amazonQServiceManager/configurationUtils'
import { TabBarController } from './tabBarController'
-import { ChatDatabase, MaxOverallCharacters, ToolResultValidationError } from './tools/chatDb/chatDb'
+import { ChatDatabase, ToolResultValidationError } from './tools/chatDb/chatDb'
import {
AgenticChatEventParser,
ChatResultWithMetadata as AgenticChatResultWithMetadata,
@@ -168,6 +166,7 @@ import { FsWrite, FsWriteParams } from './tools/fsWrite'
import { ExecuteBash, ExecuteBashParams } from './tools/executeBash'
import { ExplanatoryParams, InvokeOutput, ToolApprovalException } from './tools/toolShared'
import { validatePathBasic, validatePathExists, validatePaths as validatePathsSync } from './utils/pathValidation'
+import { calculateModifiedLines } from './utils/fileModificationMetrics'
import { GrepSearch, SanitizedRipgrepOutput } from './tools/grepSearch'
import { FileSearch, FileSearchParams, isFileSearchParams } from './tools/fileSearch'
import { FsReplace, FsReplaceParams } from './tools/fsReplace'
@@ -180,7 +179,6 @@ import {
OUTPUT_LIMIT_EXCEEDS_PARTIAL_MSG,
RESPONSE_TIMEOUT_MS,
RESPONSE_TIMEOUT_PARTIAL_MSG,
- DEFAULT_MODEL_ID,
COMPACTION_BODY,
COMPACTION_HEADER_BODY,
DEFAULT_MACOS_RUN_SHORTCUT,
@@ -189,6 +187,10 @@ import {
DEFAULT_WINDOW_REJECT_SHORTCUT,
DEFAULT_MACOS_STOP_SHORTCUT,
DEFAULT_WINDOW_STOP_SHORTCUT,
+ COMPACTION_CHARACTER_THRESHOLD,
+ MAX_OVERALL_CHARACTERS,
+ FSREAD_MEMORY_BANK_MAX_PER_FILE,
+ FSREAD_MEMORY_BANK_MAX_TOTAL,
} from './constants/constants'
import {
AgenticChatError,
@@ -202,6 +204,7 @@ import { URI } from 'vscode-uri'
import { CommandCategory } from './tools/executeBash'
import { UserWrittenCodeTracker } from '../../shared/userWrittenCodeTracker'
import { CodeReview } from './tools/qCodeAnalysis/codeReview'
+import { CodeReviewResult } from './tools/qCodeAnalysis/codeReviewTypes'
import {
CODE_REVIEW_FINDINGS_MESSAGE_SUFFIX,
DISPLAY_FINDINGS_MESSAGE_SUFFIX,
@@ -222,15 +225,17 @@ import {
Message as DbMessage,
messageToStreamingMessage,
} from './tools/chatDb/util'
-import { MODEL_OPTIONS, MODEL_OPTIONS_FOR_REGION } from './constants/modelSelection'
+import { FALLBACK_MODEL_OPTIONS, FALLBACK_MODEL_RECORD, BEDROCK_MODEL_TO_MODEL_ID } from './constants/modelSelection'
import { DEFAULT_IMAGE_VERIFICATION_OPTIONS, verifyServerImage } from '../../shared/imageVerification'
import { sanitize } from '@aws/lsp-core/out/util/path'
-import { getLatestAvailableModel } from './utils/agenticChatControllerHelper'
import { ActiveUserTracker } from '../../shared/activeUserTracker'
-import { UserContext } from '../../client/token/codewhispererbearertokenclient'
+import { UserContext } from '@amzn/codewhisperer-runtime'
import { CodeWhispererServiceToken } from '../../shared/codeWhispererService'
import { DisplayFindings } from './tools/qCodeAnalysis/displayFindings'
+import { IDE } from '../../shared/constants'
import { IdleWorkspaceManager } from '../workspaceContext/IdleWorkspaceManager'
+import { SemanticSearch } from './tools/workspaceContext/semanticSearch'
+import { MemoryBankController } from './context/memorybank/memoryBankController'
type ChatHandlers = Omit<
LspHandlers,
@@ -267,6 +272,7 @@ export class AgenticChatController implements ChatHandlers {
#chatHistoryDb: ChatDatabase
#additionalContextProvider: AdditionalContextProvider
#contextCommandsProvider: ContextCommandsProvider
+ #memoryBankController: MemoryBankController
#stoppedToolUses = new Set()
#userWrittenCodeTracker: UserWrittenCodeTracker | undefined
#toolUseStartTimes: Record = {}
@@ -352,7 +358,7 @@ export class AgenticChatController implements ChatHandlers {
// @ts-ignore
this.#features.chat.chatOptionsUpdate({ region })
})
- this.#chatHistoryDb = new ChatDatabase(features)
+ this.#chatHistoryDb = ChatDatabase.getInstance(features)
this.#tabBarController = new TabBarController(
features,
this.#chatHistoryDb,
@@ -370,6 +376,7 @@ export class AgenticChatController implements ChatHandlers {
this.#mcpEventHandler = new McpEventHandler(features, telemetryService)
this.#origin = getOriginFromClientInfo(getClientName(this.#features.lsp.getClientInitializeParams()))
this.#activeUserTracker = ActiveUserTracker.getInstance(this.#features)
+ this.#memoryBankController = MemoryBankController.getInstance(features)
}
async onExecuteCommand(params: ExecuteCommandParams, _token: CancellationToken): Promise {
@@ -681,25 +688,136 @@ export class AgenticChatController implements ChatHandlers {
return this.#mcpEventHandler.onMcpServerClick(params)
}
+ /**
+ * Fetches available models either from cache or API
+ * If cache is valid (less than 5 minutes old), returns cached models
+ * If cache is invalid or empty, makes an API call and stores results in cache
+ * If the API throws errors (e.g., throttling), falls back to default models
+ */
+ async #fetchModelsWithCache(): Promise<{ models: Model[]; defaultModelId?: string; errorFromAPI: boolean }> {
+ let models: Model[] = []
+ let defaultModelId: string | undefined
+ let errorFromAPI = false
+
+ // Check if cache is valid (less than 5 minutes old)
+ if (this.#chatHistoryDb.isCachedModelsValid()) {
+ const cachedData = this.#chatHistoryDb.getCachedModels()
+ if (cachedData && cachedData.models && cachedData.models.length > 0) {
+ this.#log('Using cached models, last updated at:', new Date(cachedData.timestamp).toISOString())
+ return {
+ models: cachedData.models,
+ defaultModelId: cachedData.defaultModelId,
+ errorFromAPI: false,
+ }
+ }
+ }
+
+ // If cache is invalid or empty, make an API call
+ this.#log('Cache miss or expired, fetching models from API')
+ try {
+ const client = AmazonQTokenServiceManager.getInstance().getCodewhispererService()
+ const responseResult = await client.listAvailableModels({
+ origin: IDE,
+ profileArn: AmazonQTokenServiceManager.getInstance().getConnectionType()
+ ? AmazonQTokenServiceManager.getInstance().getActiveProfileArn()
+ : undefined,
+ })
+
+ // Wait for the response to be completed before proceeding
+ this.#log('Model Response: ', JSON.stringify(responseResult, null, 2))
+ if (responseResult.models) {
+ models = Object.values(responseResult.models).map(({ modelId, modelName, description }) => ({
+ id: modelId ?? 'unknown',
+ name: modelName ?? modelId ?? 'unknown',
+ description: description ?? '',
+ }))
+ }
+ defaultModelId = responseResult.defaultModel?.modelId
+
+ // Cache the models with defaultModelId
+ this.#chatHistoryDb.setCachedModels(models, defaultModelId)
+ } catch (err) {
+ // In case of API throttling or other errors, fall back to hardcoded models
+ this.#log('Error fetching models from API, using fallback models:', fmtError(err))
+ errorFromAPI = true
+ models = FALLBACK_MODEL_OPTIONS
+ }
+
+ return {
+ models,
+ defaultModelId,
+ errorFromAPI,
+ }
+ }
+
+ /**
+ * This function handles the model selection process for the chat interface.
+ * It first attempts to retrieve models from cache or API, then determines the appropriate model to select
+ * based on the following priority:
+ * 1. When errors occur or session is invalid: Use the default model as a fallback
+ * 2. When user has previously selected a model: Use that model (or its mapped version if the model ID has changed)
+ * 3. When there's a default model from the API: Use the server-recommended default model
+ * 4. Last resort: Use the newest model defined in modelSelection constants
+ *
+ * This ensures users maintain consistent model selection across sessions while also handling
+ * API failures and model ID migrations gracefully.
+ */
async onListAvailableModels(params: ListAvailableModelsParams): Promise {
- const region = AmazonQTokenServiceManager.getInstance().getRegion()
- const models = region && MODEL_OPTIONS_FOR_REGION[region] ? MODEL_OPTIONS_FOR_REGION[region] : MODEL_OPTIONS
+ // Get models from cache or API
+ const { models, defaultModelId, errorFromAPI } = await this.#fetchModelsWithCache()
+
+ // Get the first fallback model option as default
+ const defaultModelOption = FALLBACK_MODEL_OPTIONS[0]
+ const DEFAULT_MODEL_ID = defaultModelId || defaultModelOption?.id
const sessionResult = this.#chatSessionManagementService.getSession(params.tabId)
const { data: session, success } = sessionResult
- if (!success) {
+
+ // Handle error cases by returning default model
+ if (!success || errorFromAPI) {
return {
tabId: params.tabId,
models: models,
+ selectedModelId: DEFAULT_MODEL_ID,
}
}
- const savedModelId = this.#chatHistoryDb.getModelId()
- const selectedModelId =
- savedModelId && models.some(model => model.id === savedModelId)
- ? savedModelId
- : getLatestAvailableModel(region).id
+ // Determine selected model ID based on priority
+ let selectedModelId: string
+ let modelId = this.#chatHistoryDb.getModelId()
+
+ // Helper function to get model label from FALLBACK_MODEL_RECORD
+ const getModelLabel = (modelKey: string) =>
+ FALLBACK_MODEL_RECORD[modelKey as keyof typeof FALLBACK_MODEL_RECORD]?.label || modelKey
+
+ // Helper function to map enum model ID to API model ID
+ const getMappedModelId = (modelKey: string) =>
+ BEDROCK_MODEL_TO_MODEL_ID[modelKey as keyof typeof BEDROCK_MODEL_TO_MODEL_ID] || modelKey
+
+ // Determine selected model ID based on priority
+ if (modelId) {
+ const mappedModelId = getMappedModelId(modelId)
+
+ // Priority 1: Use mapped modelId if it exists in available models from backend
+ if (models.some(model => model.id === mappedModelId)) {
+ selectedModelId = mappedModelId
+ }
+ // Priority 2: Use mapped version if modelId exists in FALLBACK_MODEL_RECORD and no backend models available
+ else if (models.length === 0 && modelId in FALLBACK_MODEL_RECORD) {
+ selectedModelId = getModelLabel(modelId)
+ }
+ // Priority 3: Fall back to default or system default
+ else {
+ selectedModelId = defaultModelId || getMappedModelId(DEFAULT_MODEL_ID)
+ }
+ } else {
+ // No user-selected model - use API default or system default
+ selectedModelId = defaultModelId || getMappedModelId(DEFAULT_MODEL_ID)
+ }
+
+ // Store the selected model in the session
session.modelId = selectedModelId
+
return {
tabId: params.tabId,
models: models,
@@ -721,23 +839,112 @@ export class AgenticChatController implements ChatHandlers {
async onChatPrompt(params: ChatParams, token: CancellationToken): Promise> {
// Phase 1: Initial Setup - This happens only once
- params.prompt.prompt = sanitizeInput(params.prompt.prompt || '')
+ params.prompt.prompt = sanitizeInput(params.prompt.prompt || '', true)
IdleWorkspaceManager.recordActivityTimestamp()
- const maybeDefaultResponse = !params.prompt.command && getDefaultChatResponse(params.prompt.prompt)
- if (maybeDefaultResponse) {
- return maybeDefaultResponse
- }
-
const sessionResult = this.#chatSessionManagementService.getSession(params.tabId)
-
const { data: session, success } = sessionResult
if (!success) {
return new ResponseError(ErrorCodes.InternalError, sessionResult.error)
}
+ // Memory Bank Creation Flow - Delegate to MemoryBankController
+ if (this.#memoryBankController.isMemoryBankCreationRequest(params.prompt.prompt)) {
+ this.#features.logging.info(`Memory Bank creation request detected for tabId: ${params.tabId}`)
+ session.isMemoryBankGeneration = true
+
+ // Store original prompt to prevent data loss on failure
+ const originalPrompt = params.prompt.prompt
+
+ try {
+ const workspaceFolders = workspaceUtils.getWorkspaceFolderPaths(this.#features.workspace)
+ const workspaceUri = workspaceFolders.length > 0 ? workspaceFolders[0] : ''
+
+ if (!workspaceUri) {
+ throw new Error('No workspace folder found for Memory Bank creation')
+ }
+
+ // Check if memory bank already exists to provide appropriate user feedback
+ const memoryBankExists = await this.#memoryBankController.memoryBankExists(workspaceUri)
+ const actionType = memoryBankExists ? 'Regenerating' : 'Generating'
+ this.#features.logging.info(`${actionType} Memory Bank for workspace: ${workspaceUri}`)
+
+ const resultStream = this.#getChatResultStream(params.partialResultToken)
+ await resultStream.writeResultBlock({
+ body: `Preparing to analyze your project...`,
+ type: 'answer',
+ messageId: crypto.randomUUID(),
+ })
+
+ const comprehensivePrompt = await this.#memoryBankController.prepareComprehensiveMemoryBankPrompt(
+ workspaceUri,
+ async (prompt: string) => {
+ // Direct LLM call for ranking - no agentic loop
+ try {
+ if (!this.#serviceManager) {
+ throw new Error('amazonQServiceManager is not initialized')
+ }
+
+ const client = this.#serviceManager.getStreamingClient()
+ const requestInput: SendMessageCommandInput = {
+ conversationState: {
+ chatTriggerType: ChatTriggerType.MANUAL,
+ currentMessage: {
+ userInputMessage: {
+ content: prompt,
+ },
+ },
+ },
+ }
+
+ const response = await client.sendMessage(requestInput)
+
+ let responseContent = ''
+ const maxResponseSize = 50000 // 50KB limit
+
+ if (response.sendMessageResponse) {
+ for await (const chatEvent of response.sendMessageResponse) {
+ if (chatEvent.assistantResponseEvent?.content) {
+ responseContent += chatEvent.assistantResponseEvent.content
+ if (responseContent.length > maxResponseSize) {
+ this.#features.logging.warn('LLM response exceeded size limit, truncating')
+ break
+ }
+ }
+ }
+ }
+
+ return responseContent.trim()
+ } catch (error) {
+ this.#features.logging.error(`Memory Bank LLM ranking failed: ${error}`)
+ return '' // Empty string triggers TF-IDF fallback
+ }
+ }
+ )
+
+ // Only update prompt if we got a valid comprehensive prompt
+ if (comprehensivePrompt && comprehensivePrompt.trim().length > 0) {
+ params.prompt.prompt = comprehensivePrompt
+ } else {
+ this.#features.logging.warn('Empty comprehensive prompt received, using original prompt')
+ params.prompt.prompt = originalPrompt
+ }
+ } catch (error) {
+ this.#features.logging.error(`Memory Bank preparation failed: ${error}`)
+ // Restore original prompt to ensure no data loss
+ params.prompt.prompt = originalPrompt
+ // Reset memory bank flag since preparation failed
+ session.isMemoryBankGeneration = false
+ }
+ }
+
+ const maybeDefaultResponse = !params.prompt.command && getDefaultChatResponse(params.prompt.prompt)
+ if (maybeDefaultResponse) {
+ return maybeDefaultResponse
+ }
+
const compactIds = session.getAllDeferredCompactMessageIds()
await this.#invalidateCompactCommand(params.tabId, compactIds)
session.rejectAllDeferredToolExecutions(new ToolApprovalException('Command ignored: new prompt', false))
@@ -798,10 +1005,19 @@ export class AgenticChatController implements ChatHandlers {
})
session.setConversationType('AgenticChat')
+ // Set up delay notification callback to show retry progress to users
+ session.setDelayNotificationCallback(notification => {
+ if (notification.thresholdExceeded) {
+ this.#log(`Updating progress message: ${notification.message}`)
+ void chatResultStream.updateProgressMessage(notification.message)
+ }
+ })
+
const additionalContext = await this.#additionalContextProvider.getAdditionalContext(
triggerContext,
params.tabId,
- params.context
+ params.context,
+ params.prompt.prompt
)
// Add active file to context list if it's not already there
const activeFile =
@@ -980,8 +1196,7 @@ export class AgenticChatController implements ChatHandlers {
* Runs the compaction, making requests and processing tool uses until completion
*/
#shouldCompact(currentRequestCount: number): boolean {
- // 80% of 570K limit
- if (currentRequestCount > 456_000) {
+ if (currentRequestCount > COMPACTION_CHARACTER_THRESHOLD) {
this.#debug(`Current request total character count is: ${currentRequestCount}, prompting user to compact`)
return true
} else {
@@ -1026,7 +1241,7 @@ export class AgenticChatController implements ChatHandlers {
// Get and process the messages from history DB to maintain invariants for service requests
try {
const { history: historyMessages, historyCount: historyCharCount } =
- this.#chatHistoryDb.fixAndGetHistory(tabId, conversationIdentifier ?? '', currentMessage, [])
+ this.#chatHistoryDb.fixAndGetHistory(tabId, currentMessage, [])
messages = historyMessages
characterCount = historyCharCount
} catch (err) {
@@ -1132,7 +1347,7 @@ export class AgenticChatController implements ChatHandlers {
if (result.data?.chatResult.body !== undefined) {
this.#chatHistoryDb.replaceWithSummary(tabId, 'cwc', conversationIdentifier ?? '', {
body: result.data?.chatResult.body,
- type: 'prompt' as any,
+ type: 'prompt' as ChatMessage['type'],
shouldDisplayMessage: true,
timestamp: new Date(),
})
@@ -1204,12 +1419,7 @@ export class AgenticChatController implements ChatHandlers {
history: historyMessages,
historyCount: historyCharacterCount,
currentCount: currentInputCount,
- } = this.#chatHistoryDb.fixAndGetHistory(
- tabId,
- conversationId,
- currentMessage,
- pinnedContextMessages
- )
+ } = this.#chatHistoryDb.fixAndGetHistory(tabId, currentMessage, pinnedContextMessages)
messages = historyMessages
currentRequestCount = currentInputCount + historyCharacterCount
this.#debug(`Request total character count: ${currentRequestCount}`)
@@ -1257,7 +1467,7 @@ export class AgenticChatController implements ChatHandlers {
} else {
this.#chatHistoryDb.addMessage(tabId, 'cwc', conversationIdentifier, {
body: currentMessage.userInputMessage?.content ?? '',
- type: 'prompt' as any,
+ type: 'prompt' as ChatMessage['type'],
userIntent: currentMessage.userInputMessage?.userIntent,
origin: currentMessage.userInputMessage?.origin,
userInputMessageContext: currentMessage.userInputMessage?.userInputMessageContext,
@@ -1333,7 +1543,7 @@ export class AgenticChatController implements ChatHandlers {
} else {
this.#chatHistoryDb.addMessage(tabId, 'cwc', conversationIdentifier ?? '', {
body: result.data?.chatResult.body,
- type: 'answer' as any,
+ type: 'answer' as ChatMessage['type'],
codeReference: result.data.chatResult.codeReference,
relatedContent:
result.data.chatResult.relatedContent?.content &&
@@ -1736,7 +1946,14 @@ export class AgenticChatController implements ChatHandlers {
}
const { Tool } = toolMap[toolUse.name as keyof typeof toolMap]
- const tool = new Tool(this.#features)
+ const tool =
+ toolUse.name === FS_READ && session.isMemoryBankGeneration
+ ? new Tool(
+ this.#features,
+ FSREAD_MEMORY_BANK_MAX_PER_FILE,
+ FSREAD_MEMORY_BANK_MAX_TOTAL
+ )
+ : new Tool(this.#features)
// For MCP tools, get the permission from McpManager
// const permission = McpManager.instance.getToolPerm('Built-in', toolUse.name)
@@ -1799,12 +2016,23 @@ export class AgenticChatController implements ChatHandlers {
}
case CodeReview.toolName:
case DisplayFindings.toolName:
- // no need to write tool message for CodeReview or DisplayFindings
+ // no need to write tool message for CodeReview or DisplayFindings
+ case SemanticSearch.toolName:
+ // For internal A/B we don't need tool message
break
// — DEFAULT ⇒ Only MCP tools, but can also handle generic tool execution messages
default:
// Get original server and tool names from the mapping
- const originalNames = McpManager.instance.getOriginalToolNames(toolUse.name)
+ let originalNames
+ try {
+ originalNames = McpManager.instance.getOriginalToolNames(toolUse.name)
+ } catch (error) {
+ // McpManager not initialized, skip MCP tool handling
+ this.#features.logging.debug(
+ `McpManager not initialized, skipping MCP tool handling with error: ${error}`
+ )
+ originalNames = undefined
+ }
// Remove explanation field from toolUse.input for MCP tools
// many MCP servers do not support explanation field and it will break the tool if this is altered
@@ -1820,9 +2048,17 @@ export class AgenticChatController implements ChatHandlers {
if (originalNames) {
const { serverName, toolName } = originalNames
- const def = McpManager.instance
- .getAllTools()
- .find(d => d.serverName === serverName && d.toolName === toolName)
+ let def
+ try {
+ def = McpManager.instance
+ .getAllTools()
+ .find(d => d.serverName === serverName && d.toolName === toolName)
+ } catch (error) {
+ this.#features.logging.debug(
+ `McpManager not initialized, cannot get tool definitions with error: ${error}`
+ )
+ def = undefined
+ }
if (def) {
const mcpTool = new McpTool(this.#features, def)
const { requiresAcceptance, warning } = await mcpTool.requiresAcceptance(
@@ -1882,6 +2118,7 @@ export class AgenticChatController implements ChatHandlers {
.filter(c => c.type === 'rule')
.map(c => ({ path: c.path }))
}
+ initialInput['modelId'] = session.modelId
toolUse.input = initialInput
} catch (e) {
this.#features.logging.warn(`could not parse CodeReview tool input: ${e}`)
@@ -1899,6 +2136,31 @@ export class AgenticChatController implements ChatHandlers {
let toolResultContent: ToolResultContentBlock
+ if (toolUse.name === CodeReview.toolName) {
+ // no need to write tool result for code review, this is handled by model via chat
+ // Push result in message so that it is picked by IDE plugin to show in issues panel
+ const codeReviewResult = result as InvokeOutput
+ if (
+ codeReviewResult?.output?.kind === 'json' &&
+ codeReviewResult.output.success &&
+ (codeReviewResult.output.content as CodeReviewResult)?.findingsByFile
+ ) {
+ await chatResultStream.writeResultBlock({
+ type: 'tool',
+ messageId: toolUse.toolUseId + CODE_REVIEW_FINDINGS_MESSAGE_SUFFIX,
+ body: (codeReviewResult.output.content as CodeReviewResult).findingsByFile,
+ })
+ if ((codeReviewResult.output.content as CodeReviewResult).findingsExceededLimit) {
+ codeReviewResult.output.content = {
+ codeReviewId: (codeReviewResult.output.content as CodeReviewResult).codeReviewId,
+ message: (codeReviewResult.output.content as CodeReviewResult).message,
+ findingsExceededLimit: (codeReviewResult.output.content as CodeReviewResult)
+ .findingsExceededLimit,
+ }
+ }
+ }
+ }
+
if (typeof result === 'string') {
toolResultContent = { text: result }
} else if (Array.isArray(result)) {
@@ -1970,23 +2232,20 @@ export class AgenticChatController implements ChatHandlers {
this.#abTestingAllocation?.experimentName,
this.#abTestingAllocation?.userVariation
)
+ // Emit acceptedLineCount when write tool is used and code changes are accepted
+ const acceptedLineCount = calculateModifiedLines(toolUse, doc?.getText())
+ await this.#telemetryController.emitInteractWithMessageMetric(
+ tabId,
+ {
+ cwsprChatMessageId: chatResult.messageId ?? toolUse.toolUseId,
+ cwsprChatInteractionType: ChatInteractionType.AgenticCodeAccepted,
+ codewhispererCustomizationArn: this.#customizationArn,
+ },
+ acceptedLineCount
+ )
await chatResultStream.writeResultBlock(chatResult)
break
case CodeReview.toolName:
- // no need to write tool result for code review, this is handled by model via chat
- // Push result in message so that it is picked by IDE plugin to show in issues panel
- const codeReviewResult = result as InvokeOutput
- if (
- codeReviewResult?.output?.kind === 'json' &&
- codeReviewResult.output.success &&
- (codeReviewResult.output.content as any)?.findingsByFile
- ) {
- await chatResultStream.writeResultBlock({
- type: 'tool',
- messageId: toolUse.toolUseId + CODE_REVIEW_FINDINGS_MESSAGE_SUFFIX,
- body: (codeReviewResult.output.content as any).findingsByFile,
- })
- }
break
case DisplayFindings.toolName:
// no need to write tool result for code review, this is handled by model via chat
@@ -2004,6 +2263,9 @@ export class AgenticChatController implements ChatHandlers {
})
}
break
+ case SemanticSearch.toolName:
+ await this.#handleSemanticSearchToolResult(toolUse, result, session, chatResultStream)
+ break
// — DEFAULT ⇒ MCP tools
default:
await this.#handleMcpToolResult(toolUse, result, session, chatResultStream)
@@ -2086,6 +2348,59 @@ export class AgenticChatController implements ChatHandlers {
)
}
+ // Handle MCP tool failures
+ let originalNames
+ try {
+ originalNames = McpManager.instance.getOriginalToolNames(toolUse.name)
+ } catch (error) {
+ // McpManager not initialized, skip MCP error handling
+ this.#features.logging.debug(
+ `McpManager not initialized, skipping MCP error handling with error: ${error}`
+ )
+ originalNames = undefined
+ }
+ if (originalNames && toolUse.toolUseId) {
+ const { toolName } = originalNames
+ const cachedToolUse = session.toolUseLookup.get(toolUse.toolUseId)
+ const cachedButtonBlockId = (cachedToolUse as any)?.cachedButtonBlockId
+ const customerFacingError = getCustomerFacingErrorMessage(err)
+
+ const errorResult = {
+ type: 'tool',
+ messageId: toolUse.toolUseId,
+ summary: {
+ content: {
+ header: {
+ icon: 'tools',
+ body: `${toolName}`,
+ status: {
+ status: 'error',
+ icon: 'cancel-circle',
+ text: 'Error',
+ description: customerFacingError,
+ },
+ },
+ },
+ collapsedContent: [
+ {
+ header: { body: 'Parameters' },
+ body: `\`\`\`json\n${JSON.stringify(toolUse.input, null, 2)}\n\`\`\``,
+ },
+ {
+ header: { body: 'Error' },
+ body: customerFacingError,
+ },
+ ],
+ },
+ } as ChatResult
+
+ if (cachedButtonBlockId !== undefined) {
+ await chatResultStream.overwriteResultBlock(errorResult, cachedButtonBlockId)
+ } else {
+ await chatResultStream.writeResultBlock(errorResult)
+ }
+ }
+
// display fs write failure status in the UX of that file card
if ((toolUse.name === FS_WRITE || toolUse.name === FS_REPLACE) && toolUse.toolUseId) {
const existingCard = chatResultStream.getMessageBlockId(toolUse.toolUseId)
@@ -2457,7 +2772,7 @@ export class AgenticChatController implements ChatHandlers {
status: {
status: isAccept ? 'success' : 'error',
icon: isAccept ? 'ok' : 'cancel',
- text: isAccept ? 'Completed' : 'Rejected',
+ text: isAccept ? 'Accepted' : 'Rejected',
},
fileList: undefined,
},
@@ -2519,7 +2834,7 @@ export class AgenticChatController implements ChatHandlers {
body: COMPACTION_HEADER_BODY,
buttons,
} as any
- const body = COMPACTION_BODY(Math.round((characterCount / MaxOverallCharacters) * 100))
+ const body = COMPACTION_BODY(Math.round((characterCount / MAX_OVERALL_CHARACTERS) * 100))
return {
type: 'tool',
messageId,
@@ -2544,6 +2859,7 @@ export class AgenticChatController implements ChatHandlers {
session.setDeferredToolExecution(messageId, deferred.resolve, deferred.reject)
this.#log(`Prompting for compaction approval for messageId: ${messageId}`)
await deferred.promise
+ session.removeDeferredToolExecution(messageId)
// Note: we want to overwrite the button block because it already exists in the stream.
await resultStream.overwriteResultBlock(this.#getUpdateCompactConfirmResult(messageId), promptBlockId)
}
@@ -3194,6 +3510,9 @@ export class AgenticChatController implements ChatHandlers {
},
})
+ // Reset memory bank flag after completion
+ session.isMemoryBankGeneration = false
+
return chatResultStream.getResult()
}
@@ -3208,7 +3527,7 @@ export class AgenticChatController implements ChatHandlers {
metric: Metric,
agenticCodingMode: boolean
): Promise> {
- const errorMessage = getErrorMsg(err)
+ const errorMessage = (getErrorMsg(err) ?? GENERIC_ERROR_MS).replace(/[\r\n]+/g, ' ') // replace new lines with empty space
const requestID = getRequestID(err) ?? ''
metric.setDimension('cwsprChatResponseCode', getHttpStatusCode(err) ?? 0)
metric.setDimension('languageServerVersion', this.#features.runtime.serverInfo.version)
@@ -3218,7 +3537,14 @@ export class AgenticChatController implements ChatHandlers {
metric.metric.requestIds = [requestID]
metric.metric.cwsprChatMessageId = errorMessageId
metric.metric.cwsprChatConversationId = conversationId
- await this.#telemetryController.emitAddMessageMetric(tabId, metric.metric, 'Failed')
+ const errorCode = err.code ?? ''
+ await this.#telemetryController.emitAddMessageMetric(tabId, metric.metric, 'Failed', errorMessage, errorCode)
+
+ // Reset memory bank flag on request error
+ const sessionResult = this.#chatSessionManagementService.getSession(tabId)
+ if (sessionResult.success) {
+ sessionResult.data.isMemoryBankGeneration = false
+ }
if (isUsageLimitError(err)) {
if (this.#paidTierMode !== 'paidtier') {
@@ -3263,7 +3589,7 @@ export class AgenticChatController implements ChatHandlers {
tabId,
metric.metric,
requestID,
- errorMessage ?? GENERIC_ERROR_MS,
+ errorMessage,
agenticCodingMode
)
}
@@ -3551,9 +3877,11 @@ export class AgenticChatController implements ChatHandlers {
*/
async onReady() {
await this.restorePreviousChats()
+ this.#contextCommandsProvider.onReady()
try {
const localProjectContextController = await LocalProjectContextController.getInstance()
const contextItems = await localProjectContextController.getContextCommandItems()
+ this.#contextCommandsProvider.setFilesAndFoldersPending(false)
await this.#contextCommandsProvider.processContextCommandUpdate(contextItems)
void this.#contextCommandsProvider.maybeUpdateCodeSymbols()
} catch (error) {
@@ -3580,25 +3908,6 @@ export class AgenticChatController implements ChatHandlers {
onSourceLinkClick() {}
- /**
- * @deprecated use aws/chat/listAvailableModels server request instead
- */
- #legacySetModelId(tabId: string, session: ChatSessionService) {
- // Since model selection is mandatory, the only time modelId is not set is when the chat history is empty.
- // In that case, we use the default modelId.
- let modelId = this.#chatHistoryDb.getModelId() ?? DEFAULT_MODEL_ID
-
- const region = AmazonQTokenServiceManager.getInstance().getRegion()
- if (region === 'eu-central-1') {
- // Only 3.7 Sonnet is available in eu-central-1 for now
- modelId = 'CLAUDE_3_7_SONNET_20250219_V1_0'
- // @ts-ignore
- this.#features.chat.chatOptionsUpdate({ region })
- }
- this.#features.chat.chatOptionsUpdate({ modelId: modelId, tabId: tabId })
- session.modelId = modelId
- }
-
onTabAdd(params: TabAddParams) {
this.#telemetryController.activeTabId = params.tabId
@@ -3611,11 +3920,14 @@ export class AgenticChatController implements ChatHandlers {
if (!success) {
return new ResponseError(ErrorCodes.InternalError, sessionResult.error)
}
- this.#legacySetModelId(params.tabId, session)
// Get the saved pair programming mode from the database or default to true if not found
const savedPairProgrammingMode = this.#chatHistoryDb.getPairProgrammingMode()
session.pairProgrammingMode = savedPairProgrammingMode !== undefined ? savedPairProgrammingMode : true
+ if (session) {
+ // Set the logging object on the session
+ session.setLogging(this.#features.logging)
+ }
// Update the client with the initial pair programming mode
this.#features.chat.chatOptionsUpdate({
@@ -3623,11 +3935,6 @@ export class AgenticChatController implements ChatHandlers {
// Type assertion to support pairProgrammingMode
...(session.pairProgrammingMode !== undefined ? { pairProgrammingMode: session.pairProgrammingMode } : {}),
} as ChatUpdateParams)
-
- if (success && session) {
- // Set the logging object on the session
- session.setLogging(this.#features.logging)
- }
this.setPaidTierMode(params.tabId)
}
@@ -3885,7 +4192,7 @@ export class AgenticChatController implements ChatHandlers {
this.setPaidTierMode(tabId, o.status !== 'none' ? 'paidtier' : 'freetier')
})
.catch(err => {
- this.#log(`setPaidTierMode: getSubscriptionStatus failed: ${JSON.stringify(err)}`)
+ this.#log(`setPaidTierMode: getSubscriptionStatus failed: ${(err as Error).message}`)
})
// mode = isFreeTierUser ? 'freetier' : 'paidtier'
return
@@ -4029,7 +4336,7 @@ export class AgenticChatController implements ChatHandlers {
}
})
.catch(e => {
- this.#log(`onManageSubscription: getSubscriptionStatus failed: ${JSON.stringify(e)}`)
+ this.#log(`onManageSubscription: getSubscriptionStatus failed: ${(e as Error).message}`)
// TOOD: for visibility, the least-bad option is showMessage, which appears as an IDE notification.
// But it likely makes sense to route this to chat ERROR_MESSAGE mynahApi.showError(), so the message will appear in chat.
// https://github.com/aws/language-servers/blob/1b154570c9cf1eb1d56141095adea4459426b774/chat-client/src/client/chat.ts#L176-L178
@@ -4373,7 +4680,17 @@ export class AgenticChatController implements ChatHandlers {
}
// Clear tool name mapping to avoid conflicts from previous registrations
- McpManager.instance.clearToolNameMapping()
+ try {
+ McpManager.instance.clearToolNameMapping()
+ } catch (error) {
+ // McpManager not initialized, return tools without MCP
+ this.#features.logging.debug(
+ `McpManager not initialized in #getTools, returning non-MCP tools with error: ${error}`
+ )
+ return session.pairProgrammingMode
+ ? allTools
+ : allTools.filter(tool => !builtInWriteTools.has(tool.toolSpecification?.name || ''))
+ }
const tempMapping = new Map()
@@ -4381,13 +4698,30 @@ export class AgenticChatController implements ChatHandlers {
// TODO: mcp tool spec name will be server___tool.
// TODO: Will also need to handle rare edge cases of long server name + long tool name > 64 char
const allNamespacedTools = new Set()
- const mcpToolSpecNames = new Set(
- McpManager.instance
- .getAllTools()
- .map(tool => createNamespacedToolName(tool.serverName, tool.toolName, allNamespacedTools, tempMapping))
- )
+ let mcpToolSpecNames: Set
+ try {
+ mcpToolSpecNames = new Set(
+ McpManager.instance
+ .getAllTools()
+ .map(tool =>
+ createNamespacedToolName(tool.serverName, tool.toolName, allNamespacedTools, tempMapping)
+ )
+ )
+ } catch (error) {
+ // McpManager not initialized, use empty set
+ this.#features.logging.debug(`McpManager not initialized, cannot get MCP tools because of error: ${error}`)
+ mcpToolSpecNames = new Set()
+ }
+
+ try {
+ McpManager.instance.setToolNameMapping(tempMapping)
+ } catch (error) {
+ // McpManager not initialized, skip setting mapping
+ this.#features.logging.debug(
+ `McpManager not initialized, cannot set tool name mapping because of error: ${error}`
+ )
+ }
- McpManager.instance.setToolNameMapping(tempMapping)
const restrictedToolNames = new Set([...mcpToolSpecNames, ...builtInWriteTools])
const readOnlyTools = allTools.filter(tool => {
@@ -4435,12 +4769,30 @@ export class AgenticChatController implements ChatHandlers {
}
// Get original server and tool names from the mapping
- const originalNames = McpManager.instance.getOriginalToolNames(toolUse.name)
+ let originalNames
+ try {
+ originalNames = McpManager.instance.getOriginalToolNames(toolUse.name)
+ } catch (error) {
+ // McpManager not initialized, skip MCP tool result handling
+ this.#features.logging.debug(
+ `McpManager not initialized, cannot handle MCP tool result because of error: ${error}`
+ )
+ originalNames = undefined
+ }
+
if (originalNames) {
const { serverName, toolName } = originalNames
- const def = McpManager.instance
- .getAllTools()
- .find(d => d.serverName === serverName && d.toolName === toolName)
+ let def
+ try {
+ def = McpManager.instance
+ .getAllTools()
+ .find(d => d.serverName === serverName && d.toolName === toolName)
+ } catch (error) {
+ this.#features.logging.debug(
+ `McpManager not initialized, cannot get tool definitions because of error: ${error}`
+ )
+ def = undefined
+ }
if (def) {
// Format the tool result and input as JSON strings
const toolInput = JSON.stringify(toolUse.input, null, 2)
@@ -4483,6 +4835,13 @@ export class AgenticChatController implements ChatHandlers {
await chatResultStream.overwriteResultBlock(toolResultCard, cachedButtonBlockId)
} else {
// Fallback to creating a new card
+ if (toolResultCard.summary?.content?.header) {
+ toolResultCard.summary.content.header.status = {
+ status: 'success',
+ icon: 'ok',
+ text: 'Completed',
+ }
+ }
this.#log(`Warning: No blockId found for tool use ${toolUse.toolUseId}, creating new card`)
await chatResultStream.writeResultBlock(toolResultCard)
}
@@ -4498,6 +4857,64 @@ export class AgenticChatController implements ChatHandlers {
})
}
+ async #handleSemanticSearchToolResult(
+ toolUse: ToolUse,
+ result: any,
+ session: ChatSessionService,
+ chatResultStream: AgenticChatResultStream
+ ): Promise {
+ // Early return if toolUseId is undefined
+ if (!toolUse.toolUseId) {
+ this.#log(`Cannot handle semantic search tool result: missing toolUseId`)
+ return
+ }
+
+ // Format the tool result and input as JSON strings
+ const toolInput = JSON.stringify(toolUse.input, null, 2)
+ const toolResultContent = typeof result === 'string' ? result : JSON.stringify(result, null, 2)
+
+ const toolResultCard: ChatMessage = {
+ type: 'tool',
+ messageId: toolUse.toolUseId,
+ summary: {
+ content: {
+ header: {
+ icon: 'tools',
+ body: `${SemanticSearch.toolName}`,
+ fileList: undefined,
+ },
+ },
+ collapsedContent: [
+ {
+ header: {
+ body: 'Parameters',
+ },
+ body: `\`\`\`json\n${toolInput}\n\`\`\``,
+ },
+ {
+ header: {
+ body: 'Result',
+ },
+ body: `\`\`\`json\n${toolResultContent}\n\`\`\``,
+ },
+ ],
+ },
+ }
+
+ // Get the stored blockId for this tool use
+ const cachedToolUse = session.toolUseLookup.get(toolUse.toolUseId)
+ const cachedButtonBlockId = (cachedToolUse as any)?.cachedButtonBlockId
+
+ if (cachedButtonBlockId !== undefined) {
+ // Update the existing card with the results
+ await chatResultStream.overwriteResultBlock(toolResultCard, cachedButtonBlockId)
+ } else {
+ // Fallback to creating a new card
+ this.#log(`Warning: No blockId found for tool use ${toolUse.toolUseId}, creating new card`)
+ await chatResultStream.writeResultBlock(toolResultCard)
+ }
+ }
+
scheduleABTestingFetching(userContext: UserContext | undefined) {
if (!userContext) {
return
@@ -4522,9 +4939,11 @@ export class AgenticChatController implements ChatHandlers {
.listFeatureEvaluations({ userContext })
.then(result => {
const feature = result.featureEvaluations?.find(
- feature => feature.feature === 'MaestroWorkspaceContext'
+ feature =>
+ feature.feature &&
+ ['MaestroWorkspaceContext', 'SematicSearchTool'].includes(feature.feature)
)
- if (feature) {
+ if (feature && feature.feature && feature.variation) {
this.#abTestingAllocation = {
experimentName: feature.feature,
userVariation: feature.variation,
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatResultStream.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatResultStream.ts
index 195e1e880b..a878267ffd 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatResultStream.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatResultStream.ts
@@ -194,6 +194,28 @@ export class AgenticChatResultStream {
}
}
+ async updateProgressMessage(message: string) {
+ for (const block of this.#state.chatResultBlocks) {
+ if (block.messageId?.startsWith(progressPrefix) && block.header?.status?.icon === 'progress') {
+ const blockId = this.getMessageBlockId(block.messageId)
+ if (blockId !== undefined) {
+ const updatedBlock = {
+ ...block,
+ header: {
+ ...block.header,
+ status: {
+ ...block.header.status,
+ text: message,
+ },
+ },
+ }
+ await this.overwriteResultBlock(updatedBlock, blockId)
+ }
+ break
+ }
+ }
+ }
+
hasMessage(messageId: string): boolean {
return this.#state.chatResultBlocks.some(block => block.messageId === messageId)
}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/constants.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/constants.ts
index 1729c10c1d..fb710eae9b 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/constants.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/constants.ts
@@ -1,5 +1,3 @@
-import { BedrockModel } from './modelSelection'
-
// Error message constants
export const GENERIC_ERROR_MS = 'An unexpected error occurred, check the logs for more information.'
export const OUTPUT_LIMIT_EXCEEDS_PARTIAL_MSG = 'output exceeds maximum character limit of'
@@ -14,9 +12,12 @@ export const SERVICE_MANAGER_POLL_INTERVAL_MS = 100
// LLM Constants
export const GENERATE_ASSISTANT_RESPONSE_INPUT_LIMIT = 500_000
-export const DEFAULT_MODEL_ID = BedrockModel.CLAUDE_SONNET_4_20250514_V1_0
// Compaction
+// Maximum number of characters per request used for compaction prompt
+// 200K tokens * 3.5 = 700K characters, intentionally overestimating with 3.5:1 ratio
+export const MAX_OVERALL_CHARACTERS = 700_000
+export const COMPACTION_CHARACTER_THRESHOLD = 0.7 * MAX_OVERALL_CHARACTERS
export const COMPACTION_BODY = (threshold: number) =>
`The context window is almost full (${threshold}%) and exceeding it will clear your history. Amazon Q can compact your history instead.`
export const COMPACTION_HEADER_BODY = 'Compact chat history?'
@@ -80,6 +81,51 @@ The summary should have following main sections:
`
+// Retry Strategy Constants
+export const RETRY_BASE_DELAY_MS = 1000
+export const RETRY_MAX_DELAY_MS = 10000
+export const RETRY_JITTER_MIN = 0.5
+export const RETRY_JITTER_MAX = 1.0
+export const RETRY_DELAY_NOTIFICATION_THRESHOLD_MS = 2000
+export const RETRY_BACKOFF_MULTIPLIER = 2
+
+// HTTP Status Codes
+export const HTTP_STATUS_TOO_MANY_REQUESTS = 429
+export const HTTP_STATUS_INTERNAL_SERVER_ERROR = 500
+
+// Error Messages
+export const MONTHLY_LIMIT_ERROR_MARKER = 'MONTHLY_REQUEST_COUNT'
+export const CONTENT_LENGTH_EXCEEDS_THRESHOLD = 'CONTENT_LENGTH_EXCEEDS_THRESHOLD'
+export const HIGH_LOAD_ERROR_MESSAGE =
+ 'Encountered unexpectedly high load when processing the request, please try again.'
+export const SERVICE_UNAVAILABLE_EXCEPTION = 'ServiceUnavailableException'
+export const INSUFFICIENT_MODEL_CAPACITY = 'INSUFFICIENT_MODEL_CAPACITY'
+export const INVALID_MODEL_ID = 'INVALID_MODEL_ID'
+export const SERVICE_QUOTA_EXCEPTION = 'ServiceQuotaExceededException'
+export const MAXIMUM_CHAT_CONTENT_MESSAGE = 'Exceeded max chat context length.'
+
+// Delay tracking constants
+export const MINOR_DELAY_THRESHOLD_MS = 2000 // 2 seconds
+export const MAJOR_DELAY_THRESHOLD_MS = 5000 // 5 seconds
+export const MAX_RETRY_DELAY_MS = 10000 // 10 seconds
+
+// Stalled stream protection constants
+export const STALLED_STREAM_GRACE_PERIOD_MS = 300000 // 5 minutes
+export const STALLED_STREAM_CHECK_INTERVAL_MS = 1000 // 1 second
+
+// Request attempt tracking
+export const MAX_REQUEST_ATTEMPTS = 3
+
+// FsRead limits
+export const FSREAD_MAX_PER_FILE = 200_000
+export const FSREAD_MAX_TOTAL = 400_000
+export const FSREAD_MEMORY_BANK_MAX_PER_FILE = 20_000
+export const FSREAD_MEMORY_BANK_MAX_TOTAL = 100_000
+
+// Memory Bank constants
+// Temporarily reduced from recommended 20 to 5 for token optimization
+export const MAX_NUMBER_OF_FILES_FOR_MEMORY_BANK_RANKING = 5
+
// shortcut constant
export const DEFAULT_MACOS_RUN_SHORTCUT = '⇧ ⌘ ↵'
export const DEFAULT_WINDOW_RUN_SHORTCUT = 'Ctrl + ⇧ + ↵'
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/modelSelection.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/modelSelection.test.ts
index 3fe300d2fd..211cf52dfe 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/modelSelection.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/modelSelection.test.ts
@@ -1,67 +1,30 @@
import * as assert from 'assert'
-import { MODEL_OPTIONS, MODEL_OPTIONS_FOR_REGION } from './modelSelection'
+import { FALLBACK_MODEL_OPTIONS } from './modelSelection'
describe('modelSelection', () => {
describe('modelOptions', () => {
it('should contain the correct model options', () => {
- assert.ok(Array.isArray(MODEL_OPTIONS), 'modelOptions should be an array')
- assert.strictEqual(MODEL_OPTIONS.length, 2, 'modelOptions should have 2 items')
+ assert.ok(Array.isArray(FALLBACK_MODEL_OPTIONS), 'modelOptions should be an array')
+ assert.strictEqual(FALLBACK_MODEL_OPTIONS.length, 1, 'modelOptions should have 1 item')
// Check that the array contains the expected models
- const modelIds = MODEL_OPTIONS.map(model => model.id)
- assert.ok(modelIds.includes('CLAUDE_SONNET_4_20250514_V1_0'), 'Should include Claude Sonnet 4')
- assert.ok(modelIds.includes('CLAUDE_3_7_SONNET_20250219_V1_0'), 'Should include Claude Sonnet 3.7')
+ const modelIds = FALLBACK_MODEL_OPTIONS.map(model => model.id)
+ assert.ok(modelIds.includes('CLAUDE_SONNET_4_20250514_V1_0'), 'Should include claude-sonnet-4')
// Check that each model has the required properties
- MODEL_OPTIONS.forEach(model => {
+ FALLBACK_MODEL_OPTIONS.forEach(model => {
assert.ok('id' in model, 'Model should have id property')
assert.ok('name' in model, 'Model should have name property')
+ assert.ok('description' in model, 'Model should have description property')
assert.strictEqual(typeof model.id, 'string', 'Model id should be a string')
assert.strictEqual(typeof model.name, 'string', 'Model name should be a string')
+ assert.strictEqual(typeof model.description, 'string', 'Model description should be a string')
})
// Check specific model names
- const claudeSonnet4 = MODEL_OPTIONS.find(model => model.id === 'CLAUDE_SONNET_4_20250514_V1_0')
- const claudeSonnet37 = MODEL_OPTIONS.find(model => model.id === 'CLAUDE_3_7_SONNET_20250219_V1_0')
+ const claudeSonnet4 = FALLBACK_MODEL_OPTIONS.find(model => model.id === 'CLAUDE_SONNET_4_20250514_V1_0')
- assert.strictEqual(claudeSonnet4?.name, 'Claude Sonnet 4', 'Claude Sonnet 4 should have correct name')
- assert.strictEqual(claudeSonnet37?.name, 'Claude Sonnet 3.7', 'Claude Sonnet 3.7 should have correct name')
- })
- })
-
- describe('modelOptionsForRegion', () => {
- it('should provide all models for us-east-1 region', () => {
- const usEast1Models = MODEL_OPTIONS_FOR_REGION['us-east-1']
- assert.deepStrictEqual(usEast1Models, MODEL_OPTIONS, 'us-east-1 should have all models')
- assert.strictEqual(usEast1Models.length, 2, 'us-east-1 should have 2 models')
-
- const modelIds = usEast1Models.map(model => model.id)
- assert.ok(modelIds.includes('CLAUDE_SONNET_4_20250514_V1_0'), 'us-east-1 should include Claude Sonnet 4')
- assert.ok(
- modelIds.includes('CLAUDE_3_7_SONNET_20250219_V1_0'),
- 'us-east-1 should include Claude Sonnet 3.7'
- )
- })
-
- it('should provide all models for eu-central-1 region', () => {
- const euCentral1Models = MODEL_OPTIONS_FOR_REGION['eu-central-1']
- assert.deepStrictEqual(euCentral1Models, MODEL_OPTIONS, 'us-east-1 should have all models')
- assert.strictEqual(euCentral1Models.length, 2, 'us-east-1 should have 2 models')
-
- const modelIds = euCentral1Models.map(model => model.id)
- assert.ok(modelIds.includes('CLAUDE_SONNET_4_20250514_V1_0'), 'eu-central-1 should include Claude Sonnet 4')
- assert.ok(
- modelIds.includes('CLAUDE_3_7_SONNET_20250219_V1_0'),
- 'eu-central-1 should include Claude Sonnet 3.7'
- )
- })
-
- it('should fall back to all models for unknown regions', () => {
- // Test with a region that doesn't exist in the modelOptionsForRegion map
- const unknownRegionModels = MODEL_OPTIONS_FOR_REGION['unknown-region']
-
- // Should be undefined since the region doesn't exist in the map
- assert.strictEqual(unknownRegionModels, undefined, 'Unknown region should return undefined')
+ assert.strictEqual(claudeSonnet4?.name, 'Claude Sonnet 4', 'claude-sonnet-4 should have correct name')
})
})
})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/modelSelection.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/modelSelection.ts
index cbee85f562..9e9927b10c 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/modelSelection.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/constants/modelSelection.ts
@@ -1,27 +1,32 @@
import { ListAvailableModelsResult } from '@aws/language-server-runtimes/protocol'
+/**
+ * @deprecated Do not add new models to the enum.
+ */
export enum BedrockModel {
CLAUDE_SONNET_4_20250514_V1_0 = 'CLAUDE_SONNET_4_20250514_V1_0',
- CLAUDE_3_7_SONNET_20250219_V1_0 = 'CLAUDE_3_7_SONNET_20250219_V1_0',
}
type ModelDetails = {
label: string
+ description: string
}
-const MODEL_RECORD: Record = {
- [BedrockModel.CLAUDE_3_7_SONNET_20250219_V1_0]: { label: 'Claude Sonnet 3.7' },
- [BedrockModel.CLAUDE_SONNET_4_20250514_V1_0]: { label: 'Claude Sonnet 4' },
+export const FALLBACK_MODEL_RECORD: Record = {
+ [BedrockModel.CLAUDE_SONNET_4_20250514_V1_0]: {
+ label: 'Claude Sonnet 4',
+ description: 'Hybrid reasoning and coding for regular use',
+ },
}
-export const MODEL_OPTIONS: ListAvailableModelsResult['models'] = Object.entries(MODEL_RECORD).map(
- ([value, { label }]) => ({
+export const BEDROCK_MODEL_TO_MODEL_ID: Record = {
+ [BedrockModel.CLAUDE_SONNET_4_20250514_V1_0]: 'claude-sonnet-4',
+}
+
+export const FALLBACK_MODEL_OPTIONS: ListAvailableModelsResult['models'] = Object.entries(FALLBACK_MODEL_RECORD).map(
+ ([value, { label, description }]) => ({
id: value,
name: label,
+ description: description,
})
)
-
-export const MODEL_OPTIONS_FOR_REGION: Record = {
- 'us-east-1': MODEL_OPTIONS,
- 'eu-central-1': MODEL_OPTIONS,
-}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/additionalContextProvider.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/additionalContextProvider.ts
index 733d1df28c..466f0feed9 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/additionalContextProvider.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/additionalContextProvider.ts
@@ -33,7 +33,7 @@ import { ChatDatabase } from '../tools/chatDb/chatDb'
import { ChatMessage, ImageBlock, ImageFormat } from '@amzn/codewhisperer-streaming'
import { getRelativePathWithUri, getRelativePathWithWorkspaceFolder } from '../../workspaceContext/util'
import { isSupportedImageExtension, MAX_IMAGE_CONTEXT_COUNT } from '../../../shared/imageVerification'
-import { mergeFileLists } from './contextUtils'
+import { MemoryBankController } from './memorybank/memoryBankController'
export const ACTIVE_EDITOR_CONTEXT_ID = 'active-editor'
@@ -151,6 +151,30 @@ export class AdditionalContextProvider {
// Filter rules based on user's rules preferences for current tab
let rulesState = this.chatDb.getRules(tabId) || { folders: {}, rules: {} }
+
+ // Ensure memory bank files are active by default when first discovered
+ const memoryBankFiles = rulesFiles.filter(rule => rule.id?.includes('memory-bank'))
+ if (memoryBankFiles.length > 0) {
+ let needsUpdate = false
+
+ const memoryBankFolderName = 'memory-bank'
+ if (rulesState.folders[memoryBankFolderName] === undefined) {
+ rulesState.folders[memoryBankFolderName] = true
+ needsUpdate = true
+ }
+
+ memoryBankFiles.forEach(file => {
+ if (rulesState.rules[file.id] === undefined) {
+ rulesState.rules[file.id] = true
+ needsUpdate = true
+ }
+ })
+
+ if (needsUpdate) {
+ this.chatDb.setRules(tabId, rulesState)
+ }
+ }
+
return rulesFiles.filter(rule => {
// If the rule has an explicit state in rulesState, use that value
if (rulesState.rules[rule.id] !== undefined) {
@@ -199,7 +223,8 @@ export class AdditionalContextProvider {
async getAdditionalContext(
triggerContext: TriggerContext,
tabId: string,
- context?: ContextCommand[]
+ context?: ContextCommand[],
+ prompt?: string
): Promise {
triggerContext.contextInfo = getInitialContextInfo()
@@ -220,7 +245,33 @@ export class AdditionalContextProvider {
: workspaceUtils.getWorkspaceFolderPaths(this.features.workspace)[0]
if (workspaceRules.length > 0) {
- pinnedContextCommands.push(...workspaceRules)
+ // Check if this is a memory bank generation request
+ const isMemoryBankRequest = prompt
+ ? new MemoryBankController(this.features).isMemoryBankCreationRequest(prompt)
+ : false
+
+ let rulesToInclude = workspaceRules
+
+ if (isMemoryBankRequest) {
+ // Exclude memory bank files from context when regenerating memory bank
+ const memoryBankFiles = workspaceRules.filter(rule => rule.id?.includes('memory-bank'))
+ rulesToInclude = workspaceRules.filter(rule => !rule.id?.includes('memory-bank'))
+
+ if (memoryBankFiles.length > 0) {
+ this.features.logging.info(
+ `Memory Bank: excluding ${memoryBankFiles.length} existing memory bank files from context`
+ )
+ }
+ } else {
+ // Normal behavior: include all workspace rules (including memory bank files)
+ const memoryBankFiles = workspaceRules.filter(rule => rule.id?.includes('memory-bank'))
+ if (memoryBankFiles.length > 0) {
+ this.features.logging.info(`Including ${memoryBankFiles.length} memory bank files in chat context`)
+ }
+ }
+
+ // Add the filtered rules to pinned context
+ pinnedContextCommands.push(...rulesToInclude)
}
// Merge pinned context with context added to prompt, avoiding duplicates
@@ -675,7 +726,12 @@ export class AdditionalContextProvider {
if (dirPath === '.') {
folderName = undefined
} else {
- folderName = dirPath
+ // Special handling for memory bank files
+ if (dirPath === '.amazonq/rules/memory-bank') {
+ folderName = 'memory-bank'
+ } else {
+ folderName = dirPath
+ }
}
} else {
// In multi-workspace: include workspace folder name for all files
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/contextCommandsProvider.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/contextCommandsProvider.test.ts
index d387c96d82..dbada5b8d7 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/contextCommandsProvider.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/contextCommandsProvider.test.ts
@@ -3,6 +3,7 @@ import * as sinon from 'sinon'
import { TestFeatures } from '@aws/language-server-runtimes/testing'
import * as chokidar from 'chokidar'
import { ContextCommandItem } from 'local-indexing'
+import { LocalProjectContextController } from '../../../shared/localProjectContextController'
describe('ContextCommandsProvider', () => {
let provider: ContextCommandsProvider
@@ -21,6 +22,12 @@ describe('ContextCommandsProvider', () => {
testFeatures.workspace.fs.exists = fsExistsStub
testFeatures.workspace.fs.readdir = fsReadDirStub
+
+ sinon.stub(LocalProjectContextController, 'getInstance').resolves({
+ onContextItemsUpdated: sinon.stub(),
+ onIndexingInProgressChanged: sinon.stub(),
+ } as any)
+
provider = new ContextCommandsProvider(
testFeatures.logging,
testFeatures.chat,
@@ -58,6 +65,26 @@ describe('ContextCommandsProvider', () => {
})
})
+ describe('onReady', () => {
+ it('should call processContextCommandUpdate with empty array on first call', async () => {
+ const processUpdateSpy = sinon.spy(provider, 'processContextCommandUpdate')
+
+ provider.onReady()
+
+ sinon.assert.calledOnce(processUpdateSpy)
+ sinon.assert.calledWith(processUpdateSpy, [])
+ })
+
+ it('should not call processContextCommandUpdate on subsequent calls', async () => {
+ const processUpdateSpy = sinon.spy(provider, 'processContextCommandUpdate')
+
+ provider.onReady()
+ provider.onReady()
+
+ sinon.assert.calledOnce(processUpdateSpy)
+ })
+ })
+
describe('onContextItemsUpdated', () => {
it('should call processContextCommandUpdate when controller raises event', async () => {
const mockContextItems: ContextCommandItem[] = [
@@ -78,4 +105,29 @@ describe('ContextCommandsProvider', () => {
sinon.assert.calledWith(processUpdateSpy, mockContextItems)
})
})
+
+ describe('onIndexingInProgressChanged', () => {
+ it('should update workspacePending and call processContextCommandUpdate when indexing status changes', async () => {
+ let capturedCallback: ((indexingInProgress: boolean) => void) | undefined
+
+ const mockController = {
+ onContextItemsUpdated: sinon.stub(),
+ set onIndexingInProgressChanged(callback: (indexingInProgress: boolean) => void) {
+ capturedCallback = callback
+ },
+ }
+
+ const processUpdateSpy = sinon.spy(provider, 'processContextCommandUpdate')
+ ;(LocalProjectContextController.getInstance as sinon.SinonStub).resolves(mockController as any)
+
+ // Set initial state to false so condition is met
+ ;(provider as any).workspacePending = false
+
+ await (provider as any).registerContextCommandHandler()
+
+ capturedCallback?.(true)
+
+ sinon.assert.calledWith(processUpdateSpy, [])
+ })
+ })
})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/contextCommandsProvider.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/contextCommandsProvider.ts
index 632360cd67..4a4f5cd4fb 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/contextCommandsProvider.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/contextCommandsProvider.ts
@@ -12,6 +12,10 @@ import { activeFileCmd } from './additionalContextProvider'
export class ContextCommandsProvider implements Disposable {
private promptFileWatcher?: FSWatcher
private cachedContextCommands?: ContextCommandItem[]
+ private codeSymbolsPending = true
+ private filesAndFoldersPending = true
+ private workspacePending = true
+ private initialStateSent = false
constructor(
private readonly logging: Logging,
private readonly chat: Chat,
@@ -24,12 +28,27 @@ export class ContextCommandsProvider implements Disposable {
)
}
+ onReady() {
+ if (!this.initialStateSent) {
+ this.initialStateSent = true
+ void this.processContextCommandUpdate([]).catch(e =>
+ this.logging.error(`Failed to send initial context commands: ${e}`)
+ )
+ }
+ }
+
private async registerContextCommandHandler() {
try {
const controller = await LocalProjectContextController.getInstance()
controller.onContextItemsUpdated = async contextItems => {
await this.processContextCommandUpdate(contextItems)
}
+ controller.onIndexingInProgressChanged = (indexingInProgress: boolean) => {
+ if (this.workspacePending !== indexingInProgress) {
+ this.workspacePending = indexingInProgress
+ void this.processContextCommandUpdate(this.cachedContextCommands ?? [])
+ }
+ }
} catch (e) {
this.logging.warn(`Error processing context command update: ${e}`)
}
@@ -105,6 +124,7 @@ export class ContextCommandsProvider implements Disposable {
],
description: 'Add all files in a folder to context',
icon: 'folder',
+ disabledText: this.filesAndFoldersPending ? 'pending' : undefined,
}
const fileCmds: ContextCommand[] = [activeFileCmd]
@@ -118,6 +138,7 @@ export class ContextCommandsProvider implements Disposable {
],
description: 'Add a file to context',
icon: 'file',
+ disabledText: this.filesAndFoldersPending ? 'pending' : undefined,
}
const codeCmds: ContextCommand[] = []
@@ -131,6 +152,7 @@ export class ContextCommandsProvider implements Disposable {
],
description: 'Add code to context',
icon: 'code-block',
+ disabledText: this.codeSymbolsPending ? 'pending' : undefined,
}
const promptCmds: ContextCommand[] = []
@@ -152,10 +174,12 @@ export class ContextCommandsProvider implements Disposable {
icon: 'image',
placeholder: 'Select an image file',
}
- const workspaceCmd = {
+
+ const workspaceCmd: ContextCommand = {
command: '@workspace',
id: '@workspace',
description: 'Reference all code in workspace',
+ disabledText: this.workspacePending ? 'pending' : undefined,
}
const commands = [workspaceCmd, folderCmdGroup, fileCmdGroup, codeCmdGroup, promptCmdGroup]
@@ -209,11 +233,16 @@ export class ContextCommandsProvider implements Disposable {
await LocalProjectContextController.getInstance()
).shouldUpdateContextCommandSymbolsOnce()
if (needUpdate) {
+ this.codeSymbolsPending = false
const items = await (await LocalProjectContextController.getInstance()).getContextCommandItems()
await this.processContextCommandUpdate(items)
}
}
+ setFilesAndFoldersPending(value: boolean) {
+ this.filesAndFoldersPending = value
+ }
+
dispose() {
void this.promptFileWatcher?.close()
}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/memorybank/memoryBankController.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/memorybank/memoryBankController.test.ts
new file mode 100644
index 0000000000..a20488c7b3
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/memorybank/memoryBankController.test.ts
@@ -0,0 +1,247 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+import * as assert from 'assert'
+import * as sinon from 'sinon'
+import { MemoryBankController } from './memoryBankController'
+import { MemoryBankPrompts } from './memoryBankPrompts'
+
+describe('MemoryBankController', () => {
+ let controller: MemoryBankController
+ let mockFeatures: any
+ let mockWorkspace: any
+ let mockFs: any
+ let mockLogging: any
+
+ beforeEach(() => {
+ mockFs = {
+ exists: sinon.stub(),
+ mkdir: sinon.stub(),
+ readFile: sinon.stub(),
+ readdir: sinon.stub(),
+ }
+
+ mockWorkspace = {
+ fs: mockFs,
+ }
+
+ mockLogging = {
+ info: sinon.stub(),
+ error: sinon.stub(),
+ warn: sinon.stub(),
+ }
+
+ mockFeatures = {
+ workspace: mockWorkspace,
+ logging: mockLogging,
+ }
+
+ controller = new MemoryBankController(mockFeatures)
+ })
+
+ afterEach(() => {
+ sinon.restore()
+ // Reset singleton instance
+ ;(MemoryBankController as any).instance = undefined
+ })
+
+ describe('getInstance', () => {
+ it('should return singleton instance', () => {
+ const instance1 = MemoryBankController.getInstance(mockFeatures)
+ const instance2 = MemoryBankController.getInstance(mockFeatures)
+
+ assert.strictEqual(instance1, instance2)
+ })
+
+ it('should create new instance if none exists', () => {
+ const instance = MemoryBankController.getInstance(mockFeatures)
+
+ assert.ok(instance instanceof MemoryBankController)
+ })
+ })
+
+ describe('isMemoryBankCreationRequest', () => {
+ it('should detect memory bank creation requests', () => {
+ const testCases = [
+ 'create a memory bank',
+ 'Create a Memory Bank',
+ 'CREATE MEMORY BANK',
+ 'Create a Memory Bank for this project',
+ 'generate memory bank for this project',
+ 'generate memory bank',
+ 'build memory bank',
+ 'make memory bank',
+ 'setup memory bank',
+ ]
+
+ testCases.forEach(prompt => {
+ const result = controller.isMemoryBankCreationRequest(prompt)
+ assert.strictEqual(result, true, `Failed to detect: "${prompt}"`)
+ })
+ })
+
+ it('should not detect non-memory bank requests', () => {
+ const testCases = [
+ 'create a file',
+ 'help me with code',
+ 'explain this function',
+ 'memory usage optimization',
+ 'bank account management',
+ ]
+
+ testCases.forEach(prompt => {
+ const result = controller.isMemoryBankCreationRequest(prompt)
+ assert.strictEqual(result, false, `False positive for: "${prompt}"`)
+ })
+ })
+ })
+
+ describe('prompt delegation', () => {
+ it('should delegate prompt generation to MemoryBankPrompts class', () => {
+ // Test that controller properly delegates to MemoryBankPrompts
+ // This ensures clean separation of concerns
+ const filesString = 'test.ts has 100 lines and a mean lexical dissimilarity of 0.85'
+ const prompt = MemoryBankPrompts.getFileRankingPrompt(filesString, 15)
+
+ assert.ok(typeof prompt === 'string')
+ assert.ok(prompt.length > 100)
+ assert.ok(prompt.includes('JSON list'))
+ assert.ok(prompt.includes('15'))
+ assert.ok(prompt.includes(filesString))
+ })
+ })
+
+ describe('Science Pipeline Methods', () => {
+ it('should delegate file ranking prompt to MemoryBankPrompts', () => {
+ const filesString = 'test.ts has 100 lines and a mean lexical dissimilarity of 0.85'
+ const prompt = MemoryBankPrompts.getFileRankingPrompt(filesString, 15)
+
+ assert.ok(typeof prompt === 'string')
+ assert.ok(prompt.includes('JSON list'))
+ assert.ok(prompt.includes('15'))
+ assert.ok(prompt.includes(filesString))
+ })
+
+ describe('TF-IDF Lexical Dissimilarity', () => {
+ it('should calculate TF-IDF dissimilarity for multiple files', async () => {
+ const files = [
+ { path: 'file1.ts', size: 50 },
+ { path: 'file2.ts', size: 75 },
+ { path: 'file3.ts', size: 100 },
+ ]
+
+ // Mock file contents with different lexical patterns
+ mockFs.readFile.onFirstCall().resolves('function calculateSum(a, b) { return a + b; }')
+ mockFs.readFile.onSecondCall().resolves('class UserService { constructor() {} getUser() {} }')
+ mockFs.readFile.onThirdCall().resolves('const config = { apiUrl: "https://api.example.com" }')
+
+ const result = await controller.calculateLexicalDissimilarity(files)
+
+ assert.strictEqual(result.length, 3)
+ assert.ok(result.every(f => f.dissimilarity >= 0 && f.dissimilarity <= 1))
+ assert.ok(result.every(f => typeof f.dissimilarity === 'number'))
+
+ // Verify all original properties are preserved
+ result.forEach((file, index) => {
+ assert.strictEqual(file.path, files[index].path)
+ assert.strictEqual(file.size, files[index].size)
+ })
+ })
+
+ it('should handle empty or unreadable files gracefully', async () => {
+ const files = [
+ { path: 'readable.ts', size: 50 },
+ { path: 'unreadable.ts', size: 25 },
+ ]
+
+ mockFs.readFile.onFirstCall().resolves('function test() { return true; }')
+ mockFs.readFile.onSecondCall().rejects(new Error('File not found'))
+
+ const result = await controller.calculateLexicalDissimilarity(files)
+
+ assert.strictEqual(result.length, 2)
+ assert.ok(result.every(f => f.dissimilarity >= 0 && f.dissimilarity <= 1))
+ sinon.assert.calledOnce(mockLogging.warn)
+ })
+
+ it('should return fallback values on calculation error', async () => {
+ const files = [{ path: 'test.ts', size: 50 }]
+
+ mockFs.readFile.rejects(new Error('Filesystem error'))
+
+ const result = await controller.calculateLexicalDissimilarity(files)
+
+ assert.strictEqual(result.length, 1)
+ assert.strictEqual(result[0].dissimilarity, 0.85)
+ sinon.assert.calledOnce(mockLogging.error)
+ })
+ })
+
+ it('should provide TF-IDF analysis methods', () => {
+ assert.ok(typeof controller.discoverAllSourceFiles === 'function')
+ assert.ok(typeof controller.calculateFileLineCount === 'function')
+ assert.ok(typeof controller.calculateLexicalDissimilarity === 'function')
+ assert.ok(typeof controller.executeGuidelinesGenerationPipeline === 'function')
+ })
+
+ it('should format files for ranking correctly', () => {
+ const files = [
+ { path: 'test1.ts', size: 100, dissimilarity: 0.85 },
+ { path: 'test2.ts', size: 200, dissimilarity: 0.75 },
+ ]
+
+ const formatted = controller.formatFilesForRanking(files)
+
+ assert.ok(typeof formatted === 'string')
+ assert.ok(formatted.includes('test1.ts has 100 lines'))
+ assert.ok(formatted.includes('test2.ts has 200 lines'))
+ assert.ok(formatted.includes('0.850000'))
+ assert.ok(formatted.includes('0.750000'))
+ })
+ })
+
+ describe('memoryBankExists', () => {
+ const workspaceFolder = '/test/workspace'
+
+ it('should return false if memory bank directory does not exist', async () => {
+ mockFs.exists.resolves(false)
+
+ const result = await controller.memoryBankExists(workspaceFolder)
+
+ assert.strictEqual(result, false)
+ sinon.assert.calledOnce(mockFs.exists)
+ })
+
+ it('should return false if directory exists but no files exist', async () => {
+ mockFs.exists.onFirstCall().resolves(true) // directory exists
+ mockFs.exists.onSecondCall().resolves(false) // product.md doesn't exist
+ mockFs.exists.onThirdCall().resolves(false) // structure.md doesn't exist
+ mockFs.exists.onCall(3).resolves(false) // tech.md doesn't exist
+ mockFs.exists.onCall(4).resolves(false) // guidelines.md doesn't exist
+
+ const result = await controller.memoryBankExists(workspaceFolder)
+
+ assert.strictEqual(result, false)
+ })
+
+ it('should return true if directory exists and at least one file exists', async () => {
+ mockFs.exists.onFirstCall().resolves(true) // directory exists
+ mockFs.exists.onSecondCall().resolves(true) // product.md exists
+
+ const result = await controller.memoryBankExists(workspaceFolder)
+
+ assert.strictEqual(result, true)
+ })
+
+ it('should handle filesystem errors gracefully', async () => {
+ mockFs.exists.rejects(new Error('File system error'))
+
+ const result = await controller.memoryBankExists(workspaceFolder)
+
+ assert.strictEqual(result, false)
+ sinon.assert.calledOnce(mockLogging.error)
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/memorybank/memoryBankController.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/memorybank/memoryBankController.ts
new file mode 100644
index 0000000000..f552c91e91
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/memorybank/memoryBankController.ts
@@ -0,0 +1,797 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+import { Features } from '@aws/language-server-runtimes/server-interface/server'
+import { MemoryBankPrompts } from './memoryBankPrompts'
+import { normalizePathFromUri } from '../../tools/mcp/mcpUtils'
+import { MAX_NUMBER_OF_FILES_FOR_MEMORY_BANK_RANKING } from '../../constants/constants'
+
+const MEMORY_BANK_DIRECTORY = '.amazonq/rules/memory-bank'
+const MEMORY_BANK_FILES = {
+ PRODUCT: 'product.md',
+ STRUCTURE: 'structure.md',
+ TECH: 'tech.md',
+ GUIDELINES: 'guidelines.md',
+} as const
+
+/**
+ * Controller for Memory Bank functionality
+ * Handles memory bank creation detection and prompt generation
+ */
+export class MemoryBankController {
+ private static instance: MemoryBankController | undefined
+
+ constructor(private features: Features) {}
+
+ static getInstance(features: Features): MemoryBankController {
+ if (!MemoryBankController.instance) {
+ MemoryBankController.instance = new MemoryBankController(features)
+ }
+ return MemoryBankController.instance
+ }
+
+ /**
+ * Check if a prompt is requesting memory bank creation
+ * Can be expanded based on feedbacks
+ */
+ isMemoryBankCreationRequest(prompt: string): boolean {
+ const normalizedPrompt = prompt.toLowerCase().trim()
+
+ const triggers = [
+ 'create a memory bank',
+ 'create memory bank',
+ 'generate a memory bank',
+ 'generate memory bank',
+ 'regenerate memory bank',
+ 'build memory bank',
+ 'make memory bank',
+ 'setup memory bank',
+ ]
+
+ return triggers.some(trigger => normalizedPrompt.includes(trigger))
+ }
+
+ /**
+ * Prepare comprehensive memory bank creation prompt with all necessary input
+ * This does all the programmatic work upfront and creates a single comprehensive prompt
+ */
+ async prepareComprehensiveMemoryBankPrompt(
+ workspaceFolderUri: string,
+ llmCallFunction: (prompt: string) => Promise
+ ): Promise {
+ try {
+ this.features.logging.info(`Memory Bank: Starting pre-processing for workspace: "${workspaceFolderUri}"`)
+
+ // Step 1: Clean directory
+ await this.cleanMemoryBankDirectory(workspaceFolderUri)
+
+ // Step 2: Execute deterministic analysis (TF-IDF)
+ this.features.logging.info(`Memory Bank: running analysis for workspace`)
+ const analysisResults = await this.executeGuidelinesGenerationPipeline(workspaceFolderUri)
+
+ // Step 3: Make LLM call for file ranking
+ const rankingPrompt = MemoryBankPrompts.getFileRankingPrompt(
+ analysisResults.formattedFilesString,
+ MAX_NUMBER_OF_FILES_FOR_MEMORY_BANK_RANKING
+ )
+ const rankedFilesResponse = await llmCallFunction(rankingPrompt)
+
+ // Step 4: Parse ranked files
+ let rankedFilesList: string[] = []
+ try {
+ // Clean the response - remove any markdown formatting or extra text
+ let cleanResponse = rankedFilesResponse.trim()
+
+ // Extract JSON array if it's wrapped in markdown or other text
+ const jsonMatch = cleanResponse.match(/\[.*\]/s)
+ if (jsonMatch) {
+ cleanResponse = jsonMatch[0]
+ } else {
+ // Handle case where LLM returns comma-separated quoted strings without brackets
+ if (cleanResponse.includes('",') && cleanResponse.includes('"')) {
+ // Add brackets to make it a valid JSON array
+ cleanResponse = `[${cleanResponse}]`
+ }
+ }
+
+ rankedFilesList = JSON.parse(cleanResponse)
+ if (!Array.isArray(rankedFilesList)) {
+ throw new Error('Invalid ranking response format - not an array')
+ }
+
+ // Validate that all items are strings (file paths)
+ rankedFilesList = rankedFilesList.filter(item => typeof item === 'string' && item.length > 0)
+
+ if (rankedFilesList.length === 0) {
+ throw new Error('No valid file paths in ranking response')
+ }
+
+ this.features.logging.info(
+ `Memory Bank: parsed ${rankedFilesList.length} ranked files from LLM response`
+ )
+ } catch (error) {
+ this.features.logging.warn(
+ `Memory Bank: failed to parse LLM ranking response, using TF-IDF fallback: ${error}`
+ )
+ rankedFilesList = analysisResults.rankedFilesList.slice(0, MAX_NUMBER_OF_FILES_FOR_MEMORY_BANK_RANKING)
+ }
+
+ this.features.logging.info(
+ `Memory Bank: using ${rankedFilesList.length} files for documentation generation`
+ )
+
+ // Step 5: Create the comprehensive prompt with ranked files and workspace path
+ const normalizedWorkspacePath = normalizePathFromUri(workspaceFolderUri, this.features.logging)
+
+ this.features.logging.info(`Memory Bank: Generating final prompt with path: "${normalizedWorkspacePath}"`)
+ const finalPrompt = MemoryBankPrompts.getCompleteMemoryBankPrompt(rankedFilesList, normalizedWorkspacePath)
+ return finalPrompt
+ } catch (error) {
+ this.features.logging.error(`Memory Bank preparation failed: ${error}`)
+ throw error
+ }
+ }
+
+ /**
+ * Clean and recreate memory bank directory
+ */
+ async cleanMemoryBankDirectory(workspaceFolderUri: string): Promise {
+ try {
+ const normalizedWorkspacePath = normalizePathFromUri(workspaceFolderUri, this.features.logging)
+ const memoryBankPath = `${normalizedWorkspacePath}/${MEMORY_BANK_DIRECTORY}`
+
+ // Remove all existing memory bank files to ensure clean recreation
+ const filesToRemove = ['product.md', 'structure.md', 'tech.md', 'guidelines.md']
+ let removedCount = 0
+ for (const fileName of filesToRemove) {
+ const filePath = `${memoryBankPath}/${fileName}`
+ try {
+ const exists = await this.features.workspace.fs.exists(filePath)
+ if (exists) {
+ await this.features.workspace.fs.rm(filePath)
+ removedCount++
+ }
+ } catch (error) {
+ // Ignore errors when removing files that don't exist
+ this.features.logging.error(`Could not remove ${fileName}: ${error}`)
+ }
+ }
+
+ if (removedCount > 0) {
+ this.features.logging.info(`Memory Bank: cleaned ${removedCount} existing files`)
+ }
+
+ // Create the directory structure using mkdir with recursive option
+ await this.features.workspace.fs.mkdir(memoryBankPath, { recursive: true })
+ } catch (error) {
+ this.features.logging.error(`Memory Bank directory creation failed: ${error}`)
+ throw error
+ }
+ }
+
+ /**
+ * files discovery
+ */
+ async discoverAllSourceFiles(
+ workspaceFolderUri: string,
+ extensions: string[]
+ ): Promise> {
+ try {
+ // Recursively discover all source files
+ const allWorkspaceFolders = this.features.workspace.getAllWorkspaceFolders()
+
+ const workspaceFolders = allWorkspaceFolders?.map(({ uri }) => {
+ return normalizePathFromUri(uri, this.features.logging)
+ }) ?? [normalizePathFromUri(workspaceFolderUri, this.features.logging)]
+
+ // Collect files from all workspace folders
+ let allSourceFiles: string[] = []
+
+ for (const folder of workspaceFolders) {
+ const sourceFiles = await this.discoverSourceFiles(folder, extensions)
+ this.features.logging.info(`Found ${sourceFiles.length} files in "${folder}"`)
+ allSourceFiles.push(...sourceFiles)
+ }
+
+ this.features.logging.info(`Total files discovered: ${allSourceFiles.length}`)
+
+ // OPTIMIZATION: Parallel file size calculation with batching
+ const batchSize = 10 // Process 10 files at a time
+ const files: Array<{ path: string; size: number }> = []
+
+ for (let i = 0; i < allSourceFiles.length; i += batchSize) {
+ const batch = allSourceFiles.slice(i, i + batchSize)
+ const batchResults = await Promise.all(
+ batch.map(async filePath => ({
+ path: filePath,
+ size: await this.calculateFileLineCount(filePath),
+ }))
+ )
+ files.push(...batchResults)
+ }
+
+ return files
+ } catch (error) {
+ this.features.logging.error(`Error in getAllFiles: ${error}`)
+ return []
+ }
+ }
+
+ /**
+ * line counting
+ */
+ async calculateFileLineCount(filePath: string): Promise {
+ try {
+ const content = await this.features.workspace.fs.readFile(filePath)
+ return content.split('\n').length
+ } catch (error) {
+ this.features.logging.error(`Error reading file ${filePath}: ${error}`)
+ return 0
+ }
+ }
+
+ /**
+ * lexical dissimilarity calculation
+ */
+ async calculateLexicalDissimilarity(
+ files: Array<{ path: string; size: number }>
+ ): Promise> {
+ try {
+ // OPTIMIZATION: Parallel file reading with batching
+ const batchSize = 20 // Process 20 files at a time to reduce I/O overhead
+ const fileContents: string[] = []
+ let hasReadErrors = false
+
+ for (let i = 0; i < files.length; i += batchSize) {
+ const batch = files.slice(i, i + batchSize)
+ const batchContents = await Promise.all(
+ batch.map(async file => {
+ try {
+ return await this.features.workspace.fs.readFile(file.path)
+ } catch (error) {
+ this.features.logging.warn(`Could not read file for TF-IDF analysis: ${file.path}`)
+ hasReadErrors = true
+ return '' // Empty content for unreadable files
+ }
+ })
+ )
+ fileContents.push(...batchContents)
+ }
+
+ // Check if all files are empty (no content to analyze)
+ const hasContent = fileContents.some(content => content.trim().length > 0)
+ if (!hasContent) {
+ // If no files have content due to read errors, log as error
+ if (hasReadErrors) {
+ this.features.logging.error(
+ 'All files failed to read or are empty, using fallback dissimilarity values'
+ )
+ }
+ // If no files have content, return fallback values
+ return files.map(f => ({ ...f, dissimilarity: 0.85 }))
+ }
+
+ // Step 2: Get the TF-IDF vectors for each file (equivalent to sklearn's TfidfVectorizer)
+ const tfidfMatrix = this.createTfidfMatrix(fileContents)
+
+ // Step 3: Get the cosine similarity of each file (equivalent to sklearn's cosine_similarity)
+ const cosineSimilarities = this.calculateCosineSimilarityMatrix(tfidfMatrix)
+
+ // Step 4: Get the lexical dissimilarity of each file (1 - similarity)
+ const lexicalDissimilarities: Array<{ path: string; size: number; dissimilarity: number }> = []
+ for (let i = 0; i < cosineSimilarities.length; i++) {
+ // Calculate mean similarity for this file with all files (including itself)
+ const meanSimilarity =
+ cosineSimilarities[i].reduce((sum, sim) => sum + sim, 0) / cosineSimilarities[i].length
+
+ // Dissimilarity = 1 - mean_similarity (exactly like Python code)
+ const dissimilarity = 1 - meanSimilarity
+
+ lexicalDissimilarities.push({
+ path: files[i].path,
+ size: files[i].size,
+ dissimilarity: Math.max(0.0, Math.min(1.0, dissimilarity)), // Ensure bounds [0,1]
+ })
+ }
+
+ return lexicalDissimilarities
+ } catch (error) {
+ this.features.logging.error(`Error in calculateLexicalDissimilarity: ${error}`)
+ // Fallback to reasonable defaults if TF-IDF calculation fails
+ return files.map(f => ({ ...f, dissimilarity: 0.85 }))
+ }
+ }
+
+ /**
+ * Create TF-IDF matrix, Returns array of TF-IDF vectors, where each vector is a Map
+ */
+ private createTfidfMatrix(documents: string[]): Map[] {
+ // Step 1: Tokenize all documents and build vocabulary
+ const tokenizedDocs = documents.map(doc => this.tokenizeDocument(doc))
+ const vocabulary = new Set()
+ tokenizedDocs.forEach(tokens => tokens.forEach(token => vocabulary.add(token)))
+
+ const vocabArray = Array.from(vocabulary)
+ const numDocs = documents.length
+
+ // Step 2: Calculate document frequencies (DF)
+ const documentFrequencies = new Map()
+ vocabArray.forEach(term => {
+ const df = tokenizedDocs.filter(tokens => tokens.includes(term)).length
+ documentFrequencies.set(term, df)
+ })
+
+ // Step 3: Calculate TF-IDF for each document
+ const tfidfMatrix: Map[] = []
+ for (let docIndex = 0; docIndex < numDocs; docIndex++) {
+ const tokens = tokenizedDocs[docIndex]
+ const tfidfVector = new Map()
+
+ // Calculate term frequencies for this document
+ const termFrequencies = new Map()
+ tokens.forEach(token => {
+ termFrequencies.set(token, (termFrequencies.get(token) || 0) + 1)
+ })
+
+ // Calculate TF-IDF for each term in vocabulary
+ vocabArray.forEach(term => {
+ const tf = termFrequencies.get(term) || 0
+ const df = documentFrequencies.get(term) || 1
+ const idf = Math.log(numDocs / df)
+ const tfidf = tf * idf
+ tfidfVector.set(term, tfidf)
+ })
+
+ tfidfMatrix.push(tfidfVector)
+ }
+
+ return tfidfMatrix
+ }
+
+ /**
+ * Calculate cosine similarity matrix
+ */
+ private calculateCosineSimilarityMatrix(tfidfMatrix: Map[]): number[][] {
+ const numDocs = tfidfMatrix.length
+ const similarities: number[][] = []
+
+ for (let i = 0; i < numDocs; i++) {
+ const row: number[] = []
+ for (let j = 0; j < numDocs; j++) {
+ const similarity = this.calculateCosineSimilarity(tfidfMatrix[i], tfidfMatrix[j])
+ row.push(similarity)
+ }
+ similarities.push(row)
+ }
+
+ return similarities
+ }
+
+ /**
+ * Calculate cosine similarity between two TF-IDF vectors
+ */
+ private calculateCosineSimilarity(vectorA: Map, vectorB: Map): number {
+ let dotProduct = 0
+ let normA = 0
+ let normB = 0
+
+ // Get all unique terms from both vectors
+ const allTerms = new Set([...vectorA.keys(), ...vectorB.keys()])
+
+ allTerms.forEach(term => {
+ const valueA = vectorA.get(term) || 0
+ const valueB = vectorB.get(term) || 0
+
+ dotProduct += valueA * valueB
+ normA += valueA * valueA
+ normB += valueB * valueB
+ })
+
+ // Avoid division by zero
+ if (normA === 0 || normB === 0) {
+ return 0
+ }
+
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB))
+ }
+
+ /**
+ * Tokenize document into terms (simple whitespace + punctuation splitting)
+ */
+ private tokenizeDocument(document: string): string[] {
+ return document
+ .toLowerCase()
+ .replace(/[^\w\s]/g, ' ') // Replace punctuation with spaces
+ .split(/\s+/) // Split on whitespace
+ .filter(token => token.length > 2) // Filter out very short tokens
+ }
+
+ /**
+ * Execute the complete guidelines generation pipeline
+ * https://code.amazon.com/packages/QIDEPersonalization/blobs/mainline/--/src/stylefile-gen.ipynb
+ */
+ async executeGuidelinesGenerationPipeline(workspaceFolderUri: string): Promise<{
+ discoveredFiles: Array<{ path: string; size: number }>
+ filesWithDissimilarity: Array<{ path: string; size: number; dissimilarity: number }>
+ formattedFilesString: string
+ rankedFilesList: string[]
+ }> {
+ try {
+ // Step 1: Discover all source files
+ // OPTIMIZATION: Prioritize common extensions first for faster discovery
+ const extensions = [
+ '.ts',
+ '.js',
+ '.tsx',
+ '.jsx',
+ '.py',
+ '.java',
+ '.cpp',
+ '.c',
+ '.h',
+ '.cs',
+ '.go',
+ '.rs',
+ '.php',
+ '.rb',
+ '.swift',
+ '.kt',
+ '.scala',
+ ]
+
+ const discoveredFiles = await this.discoverAllSourceFiles(workspaceFolderUri, extensions)
+
+ if (discoveredFiles.length === 0) {
+ throw new Error('No source files found in workspace')
+ }
+
+ // Filter out very large files to prevent conversation overflow
+ const MAX_FILE_SIZE_FOR_MEMORY_BANK = 20000 // 20KB limit
+ const reasonableSizedFiles = discoveredFiles.filter(file => file.size <= MAX_FILE_SIZE_FOR_MEMORY_BANK)
+
+ this.features.logging.debug(
+ `Memory Bank analysis: filtered ${discoveredFiles.length - reasonableSizedFiles.length} files over ${MAX_FILE_SIZE_FOR_MEMORY_BANK} characters`
+ )
+
+ // Limit files to prevent memory exhaustion on large projects
+ const MAX_FILES_FOR_ANALYSIS = 200
+ let filesToAnalyze: Array<{ path: string; size: number }>
+
+ if (reasonableSizedFiles.length > MAX_FILES_FOR_ANALYSIS) {
+ const shuffled = [...reasonableSizedFiles].sort(() => Math.random() - 0.5)
+ filesToAnalyze = shuffled.slice(0, MAX_FILES_FOR_ANALYSIS)
+ this.features.logging.info(
+ `Memory Bank analysis: randomly selected ${filesToAnalyze.length} files (from ${reasonableSizedFiles.length} reasonable-sized files for ranking)`
+ )
+ } else {
+ filesToAnalyze = reasonableSizedFiles
+ }
+
+ // Step 2: Calculate lexical dissimilarity using TF-IDF
+ const filesWithDissimilarity = await this.calculateLexicalDissimilarity(filesToAnalyze)
+
+ // Step 3: Sort by size
+ filesWithDissimilarity.sort((a, b) => b.size - a.size)
+
+ // Step 4: Format files string for LLM ranking
+ const formattedFilesString = this.formatFilesForRanking(filesWithDissimilarity)
+
+ // Step 5: Create fallback ranking (deterministic, for when LLM fails)
+ const rankedFilesList = filesWithDissimilarity
+ .sort((a, b) => b.dissimilarity - a.dissimilarity)
+ .slice(0, MAX_NUMBER_OF_FILES_FOR_MEMORY_BANK_RANKING)
+ .map(f => f.path)
+
+ return {
+ discoveredFiles: filesToAnalyze,
+ filesWithDissimilarity,
+ formattedFilesString,
+ rankedFilesList,
+ }
+ } catch (error) {
+ this.features.logging.error(`Memory Bank analysis pipeline failed: ${error}`)
+ throw error
+ }
+ }
+
+ /**
+ * Format files for processing pipeline
+ */
+ formatFilesForRanking(files: Array<{ path: string; size: number; dissimilarity: number }>): string {
+ // Files are already sorted by size in executeGuidelinesGenerationPipeline()
+ return files
+ .map(
+ f =>
+ `${f.path} has ${f.size} lines and a mean lexical dissimilarity of ${f.dissimilarity.toFixed(6)} to the other files`
+ )
+ .join('\n')
+ }
+
+ /**
+ * Recursively discover source files with given extensions
+ */
+ private async discoverSourceFiles(workspaceFolderUri: string, extensions: string[]): Promise {
+ const sourceFiles: string[] = []
+ const traverseDirectory = async (dirPath: string): Promise => {
+ try {
+ const entries = await this.features.workspace.fs.readdir(dirPath)
+
+ for (const entry of entries) {
+ const fullPath = `${dirPath}/${entry.name}`
+
+ // Skip common directories that don't contain source code
+ if (entry.isDirectory() && this.shouldSkipDirectory(entry.name)) {
+ continue
+ }
+
+ if (entry.isDirectory()) {
+ // Directory - recurse
+ await traverseDirectory(fullPath)
+ } else {
+ // File - check if it's a source file
+ if (extensions.some(ext => entry.name.endsWith(ext))) {
+ sourceFiles.push(fullPath)
+ }
+ }
+ }
+ } catch (error) {
+ this.features.logging.error(`Could not read directory ${dirPath}: ${error}`)
+ }
+ }
+
+ await traverseDirectory(workspaceFolderUri)
+
+ return sourceFiles
+ }
+
+ /**
+ * Check if a directory should be skipped during source file discovery
+ */
+ private shouldSkipDirectory(dirName: string): boolean {
+ // Comprehensive language-agnostic directory exclusions
+ const skipDirs = [
+ // Version Control Systems
+ '.git',
+ '.svn',
+ '.hg',
+ '.bzr',
+ '.fossil-settings',
+
+ // Package Managers & Dependencies
+ 'node_modules',
+ 'bower_components',
+ 'jspm_packages',
+ 'vendor',
+ 'packages',
+ 'deps',
+ '_deps',
+ 'third_party',
+ 'external',
+ 'Pods',
+ 'Carthage',
+ 'DerivedData', // iOS/macOS
+ 'venv',
+ 'env',
+ '.venv',
+ '.env',
+ 'virtualenv',
+ '__pycache__',
+ '.tox', // Python
+ 'gems',
+ '.bundle', // Ruby
+ 'composer', // PHP
+ 'node_modules',
+ 'elm-stuff', // Elm
+ 'target',
+ 'project/target',
+ 'project/project', // Scala/SBT
+
+ // Build Outputs & Artifacts
+ 'build',
+ 'builds',
+ 'dist',
+ 'out',
+ 'output',
+ 'bin',
+ 'obj',
+ 'lib',
+ 'release',
+ 'debug',
+ 'Release',
+ 'Debug',
+ 'x64',
+ 'x86',
+ 'AnyCPU',
+ '.next',
+ '.nuxt',
+ '.output',
+ '.vercel',
+ '.netlify', // Web frameworks
+ 'public/build',
+ 'static/build',
+ 'assets/build',
+ 'cmake-build-debug',
+ 'cmake-build-release', // CMake
+ '_build',
+ 'ebin',
+ 'deps', // Erlang/Elixir
+ 'zig-cache',
+ 'zig-out', // Zig
+
+ // IDE & Editor Directories
+ '.vscode',
+ '.idea',
+ '.vs',
+ '.vscode-test',
+ '.eclipse',
+ '.metadata',
+ '.settings',
+ '.project',
+ '.classpath',
+ '.atom',
+ '.sublime-project',
+ '.sublime-workspace',
+ '__pycache__',
+ '.mypy_cache',
+ '.dmypy.json', // Python
+ '.dart_tool',
+ '.flutter-plugins',
+ '.flutter-plugins-dependencies', // Dart/Flutter
+
+ // Testing & Coverage
+ 'coverage',
+ '.coverage',
+ '.nyc_output',
+ '.pytest_cache',
+ '.cache',
+ 'htmlcov',
+ 'test-results',
+ 'test-reports',
+ 'allure-results',
+ 'junit',
+ 'xunit',
+ 'nunit',
+ 'TestResults',
+ '.jest',
+ 'jest_html_reporters.html',
+
+ // Logs & Temporary Files
+ 'logs',
+ 'log',
+ 'tmp',
+ 'temp',
+ '.tmp',
+ '.temp',
+ 'crash-reports',
+ 'error-reports',
+
+ // Documentation Build Outputs
+ '_site',
+ '.jekyll-cache',
+ '.jekyll-metadata', // Jekyll
+ 'docs/_build',
+ 'doc/_build',
+ 'documentation/_build', // Sphinx
+ '.docusaurus',
+ 'website/build', // Docusaurus
+ 'book',
+ '_book', // GitBook/mdBook
+
+ // Language-Specific Caches & Artifacts
+ '.gradle',
+ 'gradle', // Gradle
+ '.m2',
+ '.ivy2', // Maven/Ivy
+ '.stack-work',
+ '.cabal-sandbox',
+ 'cabal.sandbox.config', // Haskell
+ '_opam',
+ '.opam', // OCaml
+ 'Cargo.lock', // Rust (keep Cargo.toml but skip lock in some cases)
+ '.cargo', // Rust cache
+ '.mix',
+ '_build', // Elixir
+ 'rebar3.crashdump',
+ '_checkouts', // Erlang
+ '.rebar',
+ '.rebar3',
+ 'priv/static', // Phoenix framework
+
+ // OS-Specific
+ '.DS_Store',
+ 'Thumbs.db',
+ 'Desktop.ini',
+ '$RECYCLE.BIN',
+ '.Trash-*',
+ '.fuse_hidden*',
+
+ // Cloud & Deployment
+ '.serverless',
+ '.aws-sam',
+ '.terraform',
+ '.pulumi',
+ 'cdk.out',
+ '.cdk.staging',
+ 'amplify',
+
+ // Mobile Development
+ 'ios/build',
+ 'android/build',
+ 'android/.gradle',
+ 'ios/Pods',
+ 'android/app/build',
+
+ // Game Development
+ 'Library',
+ 'Temp',
+ 'Obj',
+ 'Build',
+ 'Builds', // Unity
+ 'Intermediate',
+ 'Binaries',
+ 'DerivedDataCache', // Unreal
+
+ // Database
+ '*.db-journal',
+ '*.sqlite-journal',
+
+ // Backup & Archive
+ 'backup',
+ 'backups',
+ '.backup',
+ 'archive',
+ 'archives',
+ ]
+
+ // Skip any directory starting with . (hidden directories) except some important ones
+ if (dirName.startsWith('.')) {
+ const allowedHiddenDirs = ['.github', '.gitlab', '.circleci', '.travis', '.azure', '.devcontainer']
+ return !allowedHiddenDirs.includes(dirName)
+ }
+
+ return skipDirs.includes(dirName)
+ }
+
+ /**
+ * Check if memory bank exists in workspace
+ */
+ async memoryBankExists(workspaceFolderUri: string): Promise {
+ try {
+ const normalizedWorkspacePath = normalizePathFromUri(workspaceFolderUri, this.features.logging)
+ const memoryBankPath = `${normalizedWorkspacePath}/${MEMORY_BANK_DIRECTORY}`
+
+ this.features.logging.info(`Memory Bank: Checking existence at path: "${memoryBankPath}"`)
+
+ const exists = await this.features.workspace.fs.exists(memoryBankPath)
+ if (!exists) {
+ this.features.logging.info(`Memory Bank: Directory does not exist: "${memoryBankPath}"`)
+ return false
+ }
+
+ // Check if at least one memory bank file exists
+ const files = Object.values(MEMORY_BANK_FILES)
+ let foundFiles = 0
+ for (const file of files) {
+ const filePath = `${memoryBankPath}/${file}`
+ const fileExists = await this.features.workspace.fs.exists(filePath)
+ if (fileExists) {
+ foundFiles++
+ }
+ }
+
+ const hasFiles = foundFiles > 0
+ if (hasFiles) {
+ this.features.logging.info(`Memory Bank: Found ${foundFiles} existing memory bank files`)
+ } else {
+ this.features.logging.info(`Memory Bank: No existing memory bank files found`)
+ }
+
+ return hasFiles
+ } catch (error) {
+ this.features.logging.error(`Error checking memory bank existence: ${error}`)
+ return false
+ }
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/memorybank/memoryBankPrompts.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/memorybank/memoryBankPrompts.ts
new file mode 100644
index 0000000000..9013d17e94
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/memorybank/memoryBankPrompts.ts
@@ -0,0 +1,153 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+export class MemoryBankPrompts {
+ /**
+ * File ranking prompt - Takes TF-IDF analysis results and asks LLM to rank files
+ */
+ static getFileRankingPrompt(filesString: string, numberToExtract: number = 20): string {
+ return `I will provide a list of files and the number of lines each file has.
+
+Please output just a JSON list which contains exactly ${numberToExtract} of these absolute file paths which are the most important and representative of this list to mine. Copy the exact filepaths exactly as they appear from the input.
+
+Consider the following when curating this list:
+- The file path: contains information about what type of file it is (src, test)
+- The file path: contains semantic information about the responsibilities of the class (e.g., core logic, utilities, subsystem)
+- The number of lines of code: indicates the size of code within the files
+- The mean lexical dissimilarity score: a higher number indicates this file is more different and unique from the other files in the project and thus might provide more information
+
+The expected format is ["filename1", "filename2", "filename3", ...]
+
+ONLY PROVIDE THE REQUESTED JSON AND NO OTHER TEXT
+
+Do not:
+- Provide any textual response besides the requested JSON
+- Use any markdown tags to annotate your response
+
+
+${filesString}
+
`
+ }
+
+ /**
+ * Complete Memory Bank generation - Takes ranked files and generates all 4 memory bank files
+ */
+ static getCompleteMemoryBankPrompt(rankedFiles: string[], rootPath: string): string {
+ return `** CRITICAL INSTRUCTION: ALWAYS REGENERATE - NEVER SKIP **
+
+You MUST generate a complete Memory Bank for this project by analyzing the codebase structure and generating comprehensive documentation.
+
+**MANDATORY REGENERATION POLICY:**
+- NEVER respond with "already created" or "already exists" messages
+- IGNORE any existing Memory Bank files in context - treat this as a fresh creation
+- Even if you see existing memory-bank/*.md files in the context, REGENERATE them completely
+- The user expects NEW files to be generated every time, regardless of existing files
+- This ensures documentation is always current with the latest codebase
+- Do NOT reference or mention existing memory bank files - create fresh ones
+
+**MANDATORY FRESH EXPLORATION POLICY:**
+- IGNORE ALL PREVIOUS CHAT HISTORY about this project
+- Even if you've analyzed this project before in this conversation, START FRESH
+- ALWAYS begin by exploring the current workspace with listDirectory and readFile tools
+- This is REQUIRED even if you think you already know the project structure
+- Start with the root directory to understand if this is a multi-package workspace
+- Read key configuration files (package.json, README.md, etc.) to understand the project
+- This ensures documentation reflects the CURRENT complete codebase structure
+
+**CRITICAL MESSAGING AND TOOL USAGE POLICY:**
+- Send your own brief progress messages before using tools (e.g., "Creating product.md - project overview and capabilities...")
+- Use ONLY fsWrite tool with command "create" for file creation
+- NEVER use fsReplace, fsRead, or other tools for creating memory bank files
+- Use tools with ONLY the required parameters: command, path, fileText
+- NEVER include the optional "explanation" parameter in any tool call
+- Tool calls should be silent - your progress messages provide the user feedback
+- Keep progress messages brief and informative
+
+**Directory Structure Ready**
+The .amazonq/rules/memory-bank/ directory has been prepared and cleaned at: ${rootPath}/.amazonq/rules/memory-bank/
+
+You MUST create exactly 4 files using fsWrite tool with these EXACT paths:
+- ${rootPath}/.amazonq/rules/memory-bank/product.md
+- ${rootPath}/.amazonq/rules/memory-bank/structure.md
+- ${rootPath}/.amazonq/rules/memory-bank/tech.md
+- ${rootPath}/.amazonq/rules/memory-bank/guidelines.md
+
+**Part 1: Fresh Analysis and Documentation Creation**
+
+FIRST: Start by saying "Now I'll explore the project structure and create the Memory Bank documentation."
+
+THEN: Create these 4 files in exact order:
+
+**1. product.md** - Project overview with:
+- Project purpose and value proposition
+- Key features and capabilities
+- Target users and use cases
+
+**2. structure.md** - Project organization with:
+- Directory structure and explanations
+- Core components and relationships
+- Architectural patterns
+
+**3. tech.md** - Technology details with:
+- Programming languages and versions
+- Build systems and dependencies
+- Development commands
+
+**4. guidelines.md** - Development patterns from code analysis (see Part 2 below for analysis process)
+
+Create files 1-3 immediately using fsWrite with command "create" and the exact paths shown above.
+
+**Part 2: Advanced Guidelines Generation Using Iterative Analysis**
+
+THEN: Say "Now I'll analyze the most representative files from the codebase to identify development patterns and create comprehensive guidelines."
+
+I have ${rankedFiles.length} representative files ranked by lexical dissimilarity analysis:
+${rankedFiles.map((file, i) => `${i + 1}. ${file}`).join('\n')}
+
+Create comprehensive development guidelines by:
+
+1. **Iterative File Analysis**:
+ - Process files in chunks of 2 using readFile tool
+ - Build guidelines iteratively, analyzing patterns across chunks
+ - Each iteration should build upon previous findings
+
+2. **Pattern Analysis Structure**:
+ - Code Quality Standards Analysis
+ - Document commonly used code formatting patterns
+ - Identify structural conventions and specifically what this codebase adheres to
+ - Note textual standards (naming, documentation, etc.)
+ - Practices followed throughout the codebase
+
+3. **Semantic Patterns Overview**:
+ - List recurring implementation patterns
+ - Document common architectural approaches
+ - Highlight frequent design patterns
+ - Proper internal API usage and patterns (with code examples!)
+ - Frequently used code idioms
+ - Popular annotations
+
+**ITERATIVE PROCESSING INSTRUCTIONS:**
+- Process the ranked files in chunks of 2 files at a time using readFile tool
+- For each chunk, send: "Analyzing chunk X/Y - Processing 2 files..."
+- Analyze patterns in each chunk and build upon previous findings
+- Keep track of how many files exhibit each pattern (frequency analysis)
+- Build comprehensive guidelines.md iteratively through this process
+- When creating guidelines.md, send "Creating guidelines.md - development standards and patterns..." then use fsWrite tool
+- Use fsWrite with command "create" and path: ${rootPath}/.amazonq/rules/memory-bank/guidelines.md
+
+**COMPLETION SUMMARY**: After generating all 4 files, provide a brief completion message (maximum 8 lines) that:
+- Confirms successful generation of exactly 4 files: product.md, structure.md, tech.md, guidelines.md
+- Lists each file with one-line description
+- Mentions they're available in Rules panel
+- Avoids detailed technical breakdowns
+
+**FORBIDDEN RESPONSES:**
+- NEVER say "I've already generated a complete Memory Bank"
+- NEVER say "The Memory Bank is located in..."
+- NEVER say "These files are automatically loaded"
+- NEVER mention existing files - always create new ones
+- NEVER provide status about existing documentation`
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/delayInterceptor.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/delayInterceptor.test.ts
new file mode 100644
index 0000000000..889ea59f4d
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/delayInterceptor.test.ts
@@ -0,0 +1,182 @@
+import { QDelayTrackingInterceptor, DelayNotification } from './delayInterceptor'
+import { expect } from 'chai'
+import * as sinon from 'sinon'
+
+describe('QDelayTrackingInterceptor', () => {
+ let interceptor: QDelayTrackingInterceptor
+ let mockLogging: any
+ let mockCallback: sinon.SinonSpy
+
+ beforeEach(() => {
+ mockLogging = {
+ log: sinon.spy(),
+ debug: sinon.spy(),
+ }
+ mockCallback = sinon.spy()
+ interceptor = new QDelayTrackingInterceptor(mockLogging)
+ })
+
+ describe('setDelayNotificationCallback', () => {
+ it('should set callback and log debug message', () => {
+ interceptor.setDelayNotificationCallback(mockCallback)
+
+ expect(mockLogging.debug.calledWith('QDelayTrackingInterceptor: setDelayNotificationCallback called')).to.be
+ .true
+ })
+ })
+
+ describe('beforeAttempt', () => {
+ it('should log first attempt without delay calculation', () => {
+ interceptor.beforeAttempt(1)
+
+ expect(mockLogging.debug.calledWith('QDelayTrackingInterceptor: Attempt 1')).to.be.true
+ expect(
+ mockLogging.debug.calledWith(
+ 'QDelayTrackingInterceptor: First attempt or no lastAttemptTime, skipping delay calculation'
+ )
+ ).to.be.true
+ })
+
+ it('should calculate delay for subsequent attempts', () => {
+ const clock = sinon.useFakeTimers()
+
+ // First attempt
+ interceptor.beforeAttempt(1)
+
+ // Wait a bit and make second attempt
+ clock.tick(3000) // 3 seconds
+ interceptor.beforeAttempt(2)
+
+ expect(mockLogging.debug.args.some((args: any) => args[0].includes('Delay'))).to.be.true
+
+ clock.restore()
+ })
+
+ it('should send major delay notification for long delays', () => {
+ interceptor.setDelayNotificationCallback(mockCallback)
+
+ const clock = sinon.useFakeTimers(1000)
+
+ // First attempt
+ interceptor.beforeAttempt(1)
+
+ // Simulate 6 second delay (major threshold)
+ clock.tick(6000)
+ interceptor.beforeAttempt(2)
+
+ expect(mockCallback.calledOnce).to.be.true
+ const call = mockCallback.getCall(0)
+ expect(call.args[0].message).to.include('retrying within 10s')
+ expect(call.args[0].attemptNumber).to.equal(2)
+ expect(call.args[0].delay).to.equal(6)
+ expect(call.args[0].thresholdExceeded).to.be.true
+
+ clock.restore()
+ })
+
+ it('should send minor delay notification for medium delays', () => {
+ interceptor.setDelayNotificationCallback(mockCallback)
+
+ const clock = sinon.useFakeTimers(1000)
+
+ // First attempt
+ interceptor.beforeAttempt(1)
+
+ // Simulate 3 second delay (minor threshold)
+ clock.tick(3000)
+ interceptor.beforeAttempt(2)
+
+ expect(mockCallback.calledOnce).to.be.true
+ const call = mockCallback.getCall(0)
+ expect(call.args[0].message).to.include('retrying within 5s')
+ expect(call.args[0].attemptNumber).to.equal(2)
+ expect(call.args[0].delay).to.equal(3)
+ expect(call.args[0].thresholdExceeded).to.be.true
+
+ clock.restore()
+ })
+
+ it('should not notify for short delays', () => {
+ interceptor.setDelayNotificationCallback(mockCallback)
+
+ const clock = sinon.useFakeTimers(1000)
+
+ // First attempt
+ interceptor.beforeAttempt(1)
+
+ // Simulate 1 second delay (below threshold)
+ clock.tick(1000)
+ interceptor.beforeAttempt(2)
+
+ expect(mockCallback.called).to.be.false
+ expect(
+ mockLogging.debug.calledWith('QDelayTrackingInterceptor: Delay 1000ms below threshold, no notification')
+ ).to.be.true
+
+ clock.restore()
+ })
+
+ it('should cap delay at maximum retry delay', () => {
+ interceptor.setDelayNotificationCallback(mockCallback)
+
+ const clock = sinon.useFakeTimers(1000)
+
+ // First attempt
+ interceptor.beforeAttempt(1)
+
+ // Simulate very long delay (15 seconds)
+ clock.tick(15000)
+ interceptor.beforeAttempt(2)
+
+ expect(mockCallback.calledOnce).to.be.true
+ const call = mockCallback.getCall(0)
+ expect(call.args[0].message).to.include('retrying within 10s')
+ expect(call.args[0].attemptNumber).to.equal(2)
+ expect(call.args[0].delay).to.equal(10) // Capped at 10 seconds
+ expect(call.args[0].thresholdExceeded).to.be.true
+
+ clock.restore()
+ })
+
+ it('should log when no callback is set', () => {
+ const clock = sinon.useFakeTimers(1000)
+
+ // First attempt
+ interceptor.beforeAttempt(1)
+
+ // Simulate delay above threshold
+ clock.tick(3000)
+ interceptor.beforeAttempt(2)
+
+ expect(mockLogging.debug.calledWith('QDelayTrackingInterceptor: No delay notification callback set')).to.be
+ .true
+
+ clock.restore()
+ })
+ })
+
+ describe('reset', () => {
+ it('should reset lastAttemptTime', () => {
+ // Make an attempt to set lastAttemptTime
+ interceptor.beforeAttempt(1)
+
+ // Reset
+ interceptor.reset()
+
+ // Next attempt should be treated as first
+ interceptor.beforeAttempt(1)
+
+ expect(
+ mockLogging.debug.calledWith(
+ 'QDelayTrackingInterceptor: First attempt or no lastAttemptTime, skipping delay calculation'
+ )
+ ).to.be.true
+ })
+ })
+
+ describe('name', () => {
+ it('should return correct name', () => {
+ expect(interceptor.name()).to.equal('Q Language Server Delay Tracking Interceptor')
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/delayInterceptor.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/delayInterceptor.ts
new file mode 100644
index 0000000000..6c81abc42a
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/delayInterceptor.ts
@@ -0,0 +1,93 @@
+import { Logging } from '@aws/language-server-runtimes/server-interface'
+import { MINOR_DELAY_THRESHOLD_MS, MAJOR_DELAY_THRESHOLD_MS, MAX_RETRY_DELAY_MS } from '../constants/constants'
+
+export interface DelayNotification {
+ message: string
+ attemptNumber: number
+ delay: number
+ thresholdExceeded: boolean
+}
+
+/**
+ * Delay tracking interceptor that matches CLI's DelayTrackingInterceptor behavior.
+ * Tracks retry delays and provides user notifications.
+ */
+export class QDelayTrackingInterceptor {
+ private logging?: Logging
+ private minorDelayThreshold: number = MINOR_DELAY_THRESHOLD_MS
+ private majorDelayThreshold: number = MAJOR_DELAY_THRESHOLD_MS
+ private maxRetryDelay: number = MAX_RETRY_DELAY_MS
+ private lastAttemptTime?: number
+ private onDelayNotification?: (notification: DelayNotification) => void
+
+ constructor(logging?: Logging) {
+ this.logging = logging
+ }
+
+ /**
+ * Sets the delay notification callback for UI integration
+ */
+ public setDelayNotificationCallback(callback: (notification: DelayNotification) => void): void {
+ this.logging?.debug(`QDelayTrackingInterceptor: setDelayNotificationCallback called`)
+ this.onDelayNotification = callback
+ }
+
+ /**
+ * Called before each request attempt to track delays and notify users
+ */
+ public beforeAttempt(attemptNumber: number): void {
+ this.logging?.debug(`QDelayTrackingInterceptor: Attempt ${attemptNumber}`)
+ const now = Date.now()
+
+ if (this.lastAttemptTime && attemptNumber > 1) {
+ const delay = Math.min(now - this.lastAttemptTime, this.maxRetryDelay)
+ this.logging?.debug(
+ `QDelayTrackingInterceptor: Delay ${delay}ms, thresholds: minor=${this.minorDelayThreshold}ms, major=${this.majorDelayThreshold}ms`
+ )
+
+ let message: string
+ if (delay >= this.majorDelayThreshold) {
+ message = `Retry #${attemptNumber}, retrying within ${Math.ceil(this.maxRetryDelay / 1000)}s..`
+ } else if (delay >= this.minorDelayThreshold) {
+ message = `Retry #${attemptNumber}, retrying within 5s..`
+ } else {
+ // No notification for short delays
+ this.logging?.debug(`QDelayTrackingInterceptor: Delay ${delay}ms below threshold, no notification`)
+ this.lastAttemptTime = now
+ return
+ }
+
+ this.logging?.debug(`QDelayTrackingInterceptor: Delay message: ${message}`)
+
+ // Notify UI about the delay
+ if (this.onDelayNotification) {
+ this.logging?.debug(`QDelayTrackingInterceptor: Sending delay notification`)
+ this.onDelayNotification({
+ message,
+ attemptNumber,
+ delay: Math.ceil(delay / 1000),
+ thresholdExceeded: delay >= this.minorDelayThreshold,
+ })
+ } else {
+ this.logging?.debug(`QDelayTrackingInterceptor: No delay notification callback set`)
+ }
+ } else {
+ this.logging?.debug(
+ `QDelayTrackingInterceptor: First attempt or no lastAttemptTime, skipping delay calculation`
+ )
+ }
+
+ this.lastAttemptTime = now
+ }
+
+ /**
+ * Reset tracking state
+ */
+ public reset(): void {
+ this.lastAttemptTime = undefined
+ }
+
+ public name(): string {
+ return 'Q Language Server Delay Tracking Interceptor'
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/errorTransformer.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/errorTransformer.test.ts
new file mode 100644
index 0000000000..05becfa162
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/errorTransformer.test.ts
@@ -0,0 +1,420 @@
+import { QErrorTransformer } from './errorTransformer'
+import { AgenticChatError } from '../errors'
+import { expect } from 'chai'
+import * as sinon from 'sinon'
+import {
+ MONTHLY_LIMIT_ERROR_MARKER,
+ HIGH_LOAD_ERROR_MESSAGE,
+ INSUFFICIENT_MODEL_CAPACITY,
+ SERVICE_UNAVAILABLE_EXCEPTION,
+} from '../constants/constants'
+
+describe('QErrorTransformer', () => {
+ let transformer: QErrorTransformer
+ let mockLogging: any
+
+ beforeEach(() => {
+ mockLogging = {
+ log: sinon.spy(),
+ debug: sinon.spy(),
+ }
+ transformer = new QErrorTransformer(mockLogging, false)
+ })
+
+ describe('transformFinalError', () => {
+ it('should transform usage limit errors', () => {
+ const error = new Error('Usage limit exceeded')
+ ;(error as any).code = 'AmazonQUsageLimitError'
+ error.message = `${MONTHLY_LIMIT_ERROR_MARKER} exceeded`
+
+ const result = transformer.transformFinalError(error)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect(result.message).to.include('Request failed after 3 attempts')
+ expect((result as AgenticChatError).code).to.equal('AmazonQUsageLimitError')
+ })
+
+ it('should transform monthly limit errors from response body', () => {
+ const error = new Error('Service error')
+ ;(error as any).cause = {
+ $metadata: {
+ body: `Error: ${MONTHLY_LIMIT_ERROR_MARKER} exceeded for user`,
+ },
+ }
+
+ const result = transformer.transformFinalError(error)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect((result as AgenticChatError).code).to.equal('AmazonQUsageLimitError')
+ })
+
+ it('should transform abort errors', () => {
+ const error = new Error('Request aborted')
+ error.name = 'AbortError'
+
+ const result = transformer.transformFinalError(error)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect(result.message).to.equal('Request aborted')
+ expect((result as AgenticChatError).code).to.equal('RequestAborted')
+ })
+
+ it('should transform input too long errors', () => {
+ const error = new Error('input too long')
+ ;(error as any).code = 'InputTooLong'
+
+ const result = transformer.transformFinalError(error)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect(result.message).to.include('Too much context loaded')
+ expect((result as AgenticChatError).code).to.equal('InputTooLong')
+ })
+
+ it('should transform model unavailable errors with model selection enabled', () => {
+ const transformerWithModelSelection = new QErrorTransformer(mockLogging, true)
+ const error = new Error('Model unavailable')
+ ;(error as any).statusCode = 429
+ ;(error as any).cause = { reason: INSUFFICIENT_MODEL_CAPACITY }
+
+ const result = transformerWithModelSelection.transformFinalError(error)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect(result.message).to.include('model you selected is temporarily unavailable')
+ expect((result as AgenticChatError).code).to.equal('QModelResponse')
+ })
+
+ it('should transform model unavailable errors without model selection', () => {
+ const error = new Error('High load')
+ ;(error as any).statusCode = 500
+ error.message = HIGH_LOAD_ERROR_MESSAGE
+
+ const result = transformer.transformFinalError(error)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect(result.message).to.include('experiencing high traffic')
+ expect((result as AgenticChatError).code).to.equal('QModelResponse')
+ })
+
+ it('should transform throttling errors', () => {
+ const error = new Error('Throttling')
+ ;(error as any).code = 'ThrottlingException'
+ ;(error as any).statusCode = 429
+
+ const result = transformer.transformFinalError(error)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect(result.message).to.include('Service is currently experiencing high traffic')
+ expect((result as AgenticChatError).code).to.equal('RequestThrottled')
+ })
+
+ it('should transform service overloaded errors', () => {
+ const error = new Error('Service error')
+ ;(error as any).statusCode = 500
+ ;(error as any).cause = {
+ $metadata: {
+ body: `${SERVICE_UNAVAILABLE_EXCEPTION}: Service temporarily unavailable`,
+ },
+ }
+
+ const result = transformer.transformFinalError(error)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect(result.message).to.include('Service is currently experiencing high traffic')
+ expect((result as AgenticChatError).code).to.equal('RequestThrottled')
+ })
+
+ it('should handle unknown errors', () => {
+ const error = new Error('Unknown error')
+
+ const result = transformer.transformFinalError(error)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect(result.message).to.equal('Unknown error')
+ expect((result as AgenticChatError).code).to.equal('QModelResponse')
+ })
+
+ it('should use custom attempt count when provided', () => {
+ const error = new Error('Throttling')
+ ;(error as any).code = 'AmazonQUsageLimitError'
+
+ const result = transformer.transformFinalError(error, 5)
+
+ expect(result.message).to.include('Request failed after 5 attempts')
+ })
+
+ it('should extract request ID from error', () => {
+ const error = new Error('Service error')
+ ;(error as any).cause = {
+ $metadata: { requestId: 'test-request-123' },
+ }
+
+ const result = transformer.transformFinalError(error) as AgenticChatError
+
+ expect(result.requestId).to.equal('test-request-123')
+ })
+
+ it('should pass through authentication errors', () => {
+ // Mock the instanceof check by creating a proper error type
+ const authError = new Error('Auth error')
+ ;(authError as any).constructor = { name: 'AmazonQServicePendingSigninError' }
+
+ // Mock the instanceof check
+ const originalTransform = transformer.transformFinalError
+ transformer.transformFinalError = function (error: any, attemptCount?: number) {
+ if (error.constructor?.name === 'AmazonQServicePendingSigninError') {
+ return error
+ }
+ return originalTransform.call(this, error, attemptCount)
+ }
+
+ const result = transformer.transformFinalError(authError)
+
+ expect(result).to.equal(authError)
+ })
+
+ it('should handle model unavailable with reason property', () => {
+ const error = new Error('Model unavailable')
+ ;(error as any).statusCode = 429
+ ;(error as any).reason = INSUFFICIENT_MODEL_CAPACITY
+
+ const result = transformer.transformFinalError(error)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect((result as AgenticChatError).code).to.equal('QModelResponse')
+ })
+
+ it('should handle non-Error objects', () => {
+ const nonError = 'string error'
+
+ const result = transformer.transformFinalError(nonError)
+
+ expect(result).to.be.instanceOf(AgenticChatError)
+ expect(result.message).to.equal('string error')
+ })
+ })
+
+ describe('extractResponseBody', () => {
+ it('should extract body from different error formats', () => {
+ const transformer = new QErrorTransformer()
+
+ // Test cause.$metadata.body
+ let error: any = {
+ cause: { $metadata: { body: 'test body 1' } },
+ }
+ expect((transformer as any).extractResponseBody(error)).to.equal('test body 1')
+
+ // Test $metadata.body
+ error = {
+ $metadata: { body: 'test body 2' },
+ }
+ expect((transformer as any).extractResponseBody(error)).to.equal('test body 2')
+
+ // Test message
+ error = {
+ message: 'test body 3',
+ }
+ expect((transformer as any).extractResponseBody(error)).to.equal('test body 3')
+ })
+
+ it('should handle extraction errors gracefully', () => {
+ const transformer = new QErrorTransformer()
+
+ // Test extractTextFromBody error handling
+ const bodyThatThrows = {
+ get toString() {
+ throw new Error('Access denied')
+ },
+ }
+
+ const result = (transformer as any).extractTextFromBody(bodyThatThrows)
+ expect(result).to.be.null
+ })
+
+ it('should extract from response data and body', () => {
+ const transformer = new QErrorTransformer()
+
+ // Test response.data
+ let error: any = {
+ response: { data: 'response data' },
+ }
+ expect((transformer as any).extractResponseBody(error)).to.equal('response data')
+
+ // Test response.body
+ error = {
+ response: { body: 'response body' },
+ }
+ expect((transformer as any).extractResponseBody(error)).to.equal('response body')
+ })
+ })
+
+ describe('getStatusCode', () => {
+ it('should extract status code from different error formats', () => {
+ const transformer = new QErrorTransformer()
+
+ // Test cause.$metadata.httpStatusCode
+ let error: any = {
+ cause: { $metadata: { httpStatusCode: 429 } },
+ }
+ expect((transformer as any).getStatusCode(error)).to.equal(429)
+
+ // Test $metadata.httpStatusCode
+ error = {
+ $metadata: { httpStatusCode: 500 },
+ }
+ expect((transformer as any).getStatusCode(error)).to.equal(500)
+
+ // Test statusCode
+ error = {
+ statusCode: 404,
+ }
+ expect((transformer as any).getStatusCode(error)).to.equal(404)
+
+ // Test status
+ error = {
+ status: 503,
+ }
+ expect((transformer as any).getStatusCode(error)).to.equal(503)
+ })
+
+ it('should handle status code extraction errors', () => {
+ const transformer = new QErrorTransformer()
+ const error: any = {
+ get cause() {
+ throw new Error('Access denied')
+ },
+ }
+
+ const result = (transformer as any).getStatusCode(error)
+
+ expect(result).to.be.undefined
+ })
+
+ it('should extract status code from response patterns', () => {
+ const transformer = new QErrorTransformer()
+
+ // Test response.status
+ let error: any = {
+ response: { status: 429 },
+ }
+ expect((transformer as any).getStatusCode(error)).to.equal(429)
+
+ // Test response.statusCode
+ error = {
+ response: { statusCode: 500 },
+ }
+ expect((transformer as any).getStatusCode(error)).to.equal(500)
+
+ // Test cause.statusCode
+ error = {
+ cause: { statusCode: 404 },
+ }
+ expect((transformer as any).getStatusCode(error)).to.equal(404)
+
+ // Test cause.status
+ error = {
+ cause: { status: 503 },
+ }
+ expect((transformer as any).getStatusCode(error)).to.equal(503)
+ })
+ })
+
+ describe('isThrottlingError', () => {
+ it('should identify throttling errors by status code', () => {
+ const transformer = new QErrorTransformer()
+
+ const error: any = { statusCode: 429 }
+ expect((transformer as any).isThrottlingError(error)).to.be.true
+ })
+
+ it('should identify throttling errors by code', () => {
+ const transformer = new QErrorTransformer()
+
+ const error: any = { code: 'ThrottlingException' }
+ expect((transformer as any).isThrottlingError(error)).to.be.true
+ })
+
+ it('should identify service overloaded errors', () => {
+ const transformer = new QErrorTransformer()
+
+ const error: any = {
+ statusCode: 500,
+ cause: {
+ $metadata: {
+ body: HIGH_LOAD_ERROR_MESSAGE,
+ },
+ },
+ }
+ expect((transformer as any).isThrottlingError(error)).to.be.true
+ })
+
+ it('should not identify non-throttling errors', () => {
+ const transformer = new QErrorTransformer()
+
+ const error: any = { statusCode: 404 }
+ expect((transformer as any).isThrottlingError(error)).to.be.false
+ })
+
+ it('should identify throttling by name', () => {
+ const transformer = new QErrorTransformer()
+
+ const error: any = { name: 'ThrottlingException' }
+ expect((transformer as any).isThrottlingError(error)).to.be.true
+ })
+
+ it('should identify model capacity throttling', () => {
+ const transformer = new QErrorTransformer()
+
+ const error: any = {
+ statusCode: 429,
+ cause: { reason: INSUFFICIENT_MODEL_CAPACITY },
+ }
+ expect((transformer as any).isThrottlingError(error)).to.be.true
+ })
+
+ it('should log debug messages for service overloaded detection', () => {
+ const transformer = new QErrorTransformer(mockLogging)
+
+ const error: any = {
+ statusCode: 500,
+ cause: {
+ $metadata: {
+ body: `${SERVICE_UNAVAILABLE_EXCEPTION}: Service temporarily unavailable`,
+ },
+ },
+ }
+
+ expect((transformer as any).isThrottlingError(error)).to.be.true
+ expect(mockLogging.debug.called).to.be.true
+ })
+
+ it('should handle ArrayBuffer body extraction', () => {
+ const transformer = new QErrorTransformer()
+ const buffer = new TextEncoder().encode('test buffer').buffer
+
+ const result = (transformer as any).extractTextFromBody(buffer)
+ expect(result).to.equal('test buffer')
+ })
+
+ it('should handle object body extraction', () => {
+ const transformer = new QErrorTransformer()
+ const obj = { message: 'test object' }
+
+ const result = (transformer as any).extractTextFromBody(obj)
+ expect(result).to.equal('{"message":"test object"}')
+ })
+
+ it('should handle null body', () => {
+ const transformer = new QErrorTransformer()
+
+ const result = (transformer as any).extractTextFromBody(null)
+ expect(result).to.be.null
+ })
+
+ it('should handle undefined body', () => {
+ const transformer = new QErrorTransformer()
+
+ const result = (transformer as any).extractTextFromBody(undefined)
+ expect(result).to.be.null
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/errorTransformer.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/errorTransformer.ts
new file mode 100644
index 0000000000..3f60e37ad9
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/errorTransformer.ts
@@ -0,0 +1,221 @@
+import { Logging } from '@aws/language-server-runtimes/server-interface'
+import { isUsageLimitError, isAwsThrottlingError, getRequestID } from '../../../shared/utils'
+import { AgenticChatError, isThrottlingRelated, isRequestAbortedError, isInputTooLongError } from '../errors'
+import {
+ AmazonQError,
+ AmazonQServicePendingSigninError,
+ AmazonQServicePendingProfileError,
+} from '../../../shared/amazonQServiceManager/errors'
+
+import {
+ HTTP_STATUS_TOO_MANY_REQUESTS,
+ HTTP_STATUS_INTERNAL_SERVER_ERROR,
+ MONTHLY_LIMIT_ERROR_MARKER,
+ HIGH_LOAD_ERROR_MESSAGE,
+ SERVICE_UNAVAILABLE_EXCEPTION,
+ INSUFFICIENT_MODEL_CAPACITY,
+ MAX_REQUEST_ATTEMPTS,
+} from '../constants/constants'
+
+/**
+ * Q-specific error transformation for AWS SDK native retry.
+ * AWS SDK handles retries, this transforms final errors into user-friendly Q messages.
+ */
+export class QErrorTransformer {
+ private logging?: Logging
+ private isModelSelectionEnabled: () => boolean
+
+ constructor(logging?: Logging, isModelSelectionEnabled: (() => boolean) | boolean = false) {
+ this.logging = logging
+ this.isModelSelectionEnabled =
+ typeof isModelSelectionEnabled === 'function' ? isModelSelectionEnabled : () => isModelSelectionEnabled
+ }
+
+ private extractResponseBody(error: any): string | null {
+ return (
+ this.extractTextFromBody(error.cause?.$metadata?.body) ||
+ this.extractTextFromBody(error.$metadata?.body) ||
+ this.extractTextFromBody(error.cause?.body) ||
+ this.extractTextFromBody(error.body) ||
+ this.extractTextFromBody(error.response?.data) ||
+ this.extractTextFromBody(error.response?.body) ||
+ error.message ||
+ null
+ )
+ }
+
+ private extractTextFromBody(body: any): string | null {
+ try {
+ if (typeof body === 'string') {
+ return body
+ }
+ if (body instanceof Uint8Array) {
+ return new TextDecoder('utf-8', { fatal: false }).decode(body)
+ }
+ if (body instanceof ArrayBuffer) {
+ return new TextDecoder('utf-8', { fatal: false }).decode(body)
+ }
+ if (typeof body === 'object' && body !== null) {
+ return JSON.stringify(body)
+ }
+ return null
+ } catch {
+ return null
+ }
+ }
+
+ public transformFinalError(error: any, attemptCount?: number): Error {
+ // Use default attempt count if not provided
+ const attempts = attemptCount ?? MAX_REQUEST_ATTEMPTS
+ const requestId = getRequestID(error)
+
+ // Don't transform authentication errors - let them pass through for auth follow-up handling
+ if (error instanceof AmazonQServicePendingSigninError || error instanceof AmazonQServicePendingProfileError) {
+ return error
+ }
+
+ // Handle specific error types with retry context
+ if (isUsageLimitError(error)) {
+ return new AgenticChatError(
+ `Request failed after ${attempts} attempts`,
+ 'AmazonQUsageLimitError',
+ error instanceof Error ? error : undefined,
+ requestId
+ )
+ }
+
+ // Check response body for monthly limits
+ const bodyStr = this.extractResponseBody(error)
+ if (bodyStr && bodyStr.includes(MONTHLY_LIMIT_ERROR_MARKER)) {
+ return new AgenticChatError(
+ `Request failed after ${attempts} attempts`,
+ 'AmazonQUsageLimitError',
+ error instanceof Error ? error : undefined,
+ requestId
+ )
+ }
+
+ if (
+ error?.name === 'AbortError' ||
+ error?.code === 'RequestAborted' ||
+ error?.name === 'RequestAborted' ||
+ isRequestAbortedError(error)
+ ) {
+ return new AgenticChatError(
+ 'Request aborted',
+ 'RequestAborted',
+ error instanceof Error ? error : undefined,
+ requestId
+ )
+ }
+
+ if (
+ error?.name === 'InputTooLong' ||
+ error?.code === 'InputTooLong' ||
+ error?.message?.includes('input too long') ||
+ isInputTooLongError(error)
+ ) {
+ return new AgenticChatError(
+ 'Too much context loaded. I have cleared the conversation history. Please retry your request with smaller input.',
+ 'InputTooLong',
+ error instanceof Error ? error : undefined,
+ requestId
+ )
+ }
+
+ // Check for model unavailability first (before general throttling)
+ const statusCode = this.getStatusCode(error)
+ const isModelUnavailable =
+ (statusCode === HTTP_STATUS_TOO_MANY_REQUESTS &&
+ (error.cause?.reason === INSUFFICIENT_MODEL_CAPACITY ||
+ error.reason === INSUFFICIENT_MODEL_CAPACITY)) ||
+ (statusCode === HTTP_STATUS_INTERNAL_SERVER_ERROR && error.message === HIGH_LOAD_ERROR_MESSAGE)
+
+ if (isModelUnavailable) {
+ const message = this.isModelSelectionEnabled()
+ ? `The model you selected is temporarily unavailable. Please switch to a different model and try again.`
+ : `I am experiencing high traffic, please try again shortly.`
+
+ return new AgenticChatError(
+ message,
+ 'QModelResponse',
+ error instanceof Error ? error : undefined,
+ requestId
+ )
+ }
+
+ if (isAwsThrottlingError(error) || isThrottlingRelated(error) || this.isThrottlingError(error)) {
+ return new AgenticChatError(
+ `Service is currently experiencing high traffic. Request failed after ${attempts} attempts. Please try again later.`,
+ 'RequestThrottled',
+ error instanceof Error ? error : undefined,
+ requestId
+ )
+ }
+
+ // Handle other errors - fallback to QModelResponse with request ID
+ return new AgenticChatError(
+ error instanceof Error ? error.message : String(error),
+ 'QModelResponse',
+ error instanceof Error ? error : undefined,
+ requestId
+ )
+ }
+
+ private isThrottlingError(error: any): boolean {
+ const statusCode = this.getStatusCode(error)
+
+ // Check for AWS throttling patterns
+ if (
+ statusCode === HTTP_STATUS_TOO_MANY_REQUESTS ||
+ error?.name === 'ThrottlingException' ||
+ error?.code === 'ThrottlingException'
+ )
+ return true
+
+ // Check for service overloaded errors (status 500 with specific messages)
+ if (statusCode === HTTP_STATUS_INTERNAL_SERVER_ERROR) {
+ // Check response body directly (not error message) to avoid conflict with model unavailability
+ const responseBody = error.cause?.$metadata?.body || error.$metadata?.body
+ if (responseBody) {
+ const isOverloaded =
+ responseBody.includes(HIGH_LOAD_ERROR_MESSAGE) ||
+ responseBody.includes(SERVICE_UNAVAILABLE_EXCEPTION)
+ this.logging?.debug(
+ `QErrorTransformer: Service overloaded error detected (status 500): ${isOverloaded}`
+ )
+ return isOverloaded
+ }
+ }
+
+ // Model capacity issues - but these should be handled by model unavailability check first
+ if (
+ statusCode === HTTP_STATUS_TOO_MANY_REQUESTS &&
+ (error.cause?.reason === INSUFFICIENT_MODEL_CAPACITY || error.reason === INSUFFICIENT_MODEL_CAPACITY)
+ ) {
+ return true
+ }
+
+ return false
+ }
+
+ private getStatusCode(error: any): number | undefined {
+ try {
+ // AWS SDK v3 metadata patterns
+ if (error.cause?.$metadata?.httpStatusCode) return error.cause.$metadata.httpStatusCode
+ if (error.$metadata?.httpStatusCode) return error.$metadata.httpStatusCode
+ // Direct status properties
+ if (error.statusCode) return error.statusCode
+ if (error.status) return error.status
+ // Response object patterns
+ if (error.response?.status) return error.response.status
+ if (error.response?.statusCode) return error.response.statusCode
+ // Nested error patterns
+ if (error.cause?.statusCode) return error.cause.statusCode
+ if (error.cause?.status) return error.cause.status
+ return undefined
+ } catch {
+ return undefined
+ }
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/index.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/index.ts
new file mode 100644
index 0000000000..868f69ac4a
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/index.ts
@@ -0,0 +1,3 @@
+export { QRetryClassifier, RetryAction, type RetryClassifierPriority, type InterceptorContext } from './retryClassifier'
+export { QDelayTrackingInterceptor, type DelayNotification } from './delayInterceptor'
+export { QErrorTransformer } from './errorTransformer'
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/qRetryStrategy.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/qRetryStrategy.test.ts
new file mode 100644
index 0000000000..920758a505
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/qRetryStrategy.test.ts
@@ -0,0 +1,179 @@
+import { QRetryStrategy } from './qRetryStrategy'
+import { QRetryClassifier, RetryAction } from './retryClassifier'
+import { QDelayTrackingInterceptor } from './delayInterceptor'
+import { RetryToken, RetryErrorInfo } from '@aws-sdk/types'
+import { expect } from 'chai'
+import * as sinon from 'sinon'
+
+describe('QRetryStrategy', () => {
+ let retryStrategy: QRetryStrategy
+ let mockClassifier: sinon.SinonStubbedInstance
+ let mockDelayInterceptor: sinon.SinonStubbedInstance
+ let mockLogging: any
+
+ beforeEach(() => {
+ mockLogging = {
+ log: sinon.spy(),
+ debug: sinon.spy(),
+ }
+
+ mockClassifier = {
+ classifyRetry: sinon.stub(),
+ } as sinon.SinonStubbedInstance
+
+ mockDelayInterceptor = {
+ beforeAttempt: sinon.stub(),
+ reset: sinon.stub(),
+ } as sinon.SinonStubbedInstance
+
+ retryStrategy = new QRetryStrategy(mockClassifier, mockDelayInterceptor, 3, mockLogging)
+ })
+
+ describe('acquireInitialRetryToken', () => {
+ it('should return initial token with zero counts', async () => {
+ const token = await retryStrategy.acquireInitialRetryToken('test-scope')
+
+ expect(token.getRetryCount()).to.equal(0)
+ expect((retryStrategy as any).attemptCount).to.equal(0)
+ expect(
+ mockLogging.log.args.some((args: any) =>
+ args[0].includes('Initial retry token acquired for scope: test-scope')
+ )
+ ).to.be.true
+ })
+ })
+
+ describe('refreshRetryTokenForRetry', () => {
+ let initialToken: RetryToken
+
+ beforeEach(async () => {
+ initialToken = await retryStrategy.acquireInitialRetryToken('test-scope')
+ })
+
+ it('should allow retry for throttling errors', async () => {
+ const error = new Error('Throttling')
+ ;(error as any).code = 'ThrottlingException'
+ ;(error as any).$metadata = {}
+ const errorInfo: RetryErrorInfo = { error: error as any, errorType: 'THROTTLING' }
+
+ mockClassifier.classifyRetry.returns(RetryAction.ThrottlingError)
+
+ const newToken = await retryStrategy.refreshRetryTokenForRetry(initialToken, errorInfo)
+
+ expect(newToken.getRetryCount()).to.equal(1)
+ expect(mockDelayInterceptor.beforeAttempt.calledWith(2)).to.be.true
+ })
+
+ it('should reject retry for forbidden errors', async () => {
+ const error = new Error('Abort')
+ ;(error as any).$metadata = {}
+ const errorInfo: RetryErrorInfo = { error: error as any, errorType: 'CLIENT_ERROR' }
+ mockClassifier.classifyRetry.returns(RetryAction.RetryForbidden)
+
+ try {
+ await retryStrategy.refreshRetryTokenForRetry(initialToken, errorInfo)
+ expect.fail('Should have thrown error')
+ } catch (e: any) {
+ expect(e.message).to.equal('Abort') // Original error is thrown
+ }
+ })
+
+ it('should delegate to adaptive strategy for max attempts', async () => {
+ mockClassifier.classifyRetry.returns(RetryAction.ThrottlingError)
+ const error = new Error('Test error')
+ ;(error as any).$metadata = {}
+ const errorInfo: RetryErrorInfo = { error: error as any, errorType: 'THROTTLING' }
+
+ // The adaptive strategy will handle max attempts internally
+ // We just verify our classifier is called
+ try {
+ await retryStrategy.refreshRetryTokenForRetry(initialToken, errorInfo)
+ } catch (e) {
+ // May throw due to adaptive strategy limits
+ }
+
+ expect(mockClassifier.classifyRetry.called).to.be.true
+ })
+
+ it('should delegate delay calculation to adaptive strategy', async () => {
+ mockClassifier.classifyRetry.returns(RetryAction.ThrottlingError)
+ const error = new Error()
+ ;(error as any).$metadata = {}
+ const errorInfo: RetryErrorInfo = { error: error as any, errorType: 'THROTTLING' }
+
+ const token = await retryStrategy.refreshRetryTokenForRetry(initialToken, errorInfo)
+
+ // Adaptive strategy handles delay calculation
+ expect(token.getRetryCount()).to.equal(1)
+ expect(mockDelayInterceptor.beforeAttempt.calledWith(2)).to.be.true
+ })
+
+ it('should track delay interceptor calls', async () => {
+ mockClassifier.classifyRetry.returns(RetryAction.ThrottlingError)
+ const error = new Error()
+ ;(error as any).$metadata = {}
+ const errorInfo: RetryErrorInfo = { error: error as any, errorType: 'THROTTLING' }
+
+ await retryStrategy.refreshRetryTokenForRetry(initialToken, errorInfo)
+
+ expect(mockDelayInterceptor.beforeAttempt.calledWith(2)).to.be.true
+ })
+ })
+
+ describe('recordSuccess', () => {
+ it('should reset state and call delay interceptor', async () => {
+ const token = await retryStrategy.acquireInitialRetryToken('test-scope')
+
+ retryStrategy.recordSuccess(token)
+
+ expect(mockDelayInterceptor.reset.called).to.be.true
+ expect((retryStrategy as any).attemptCount).to.equal(0)
+ expect(
+ mockLogging.log.args.some((args: any) => args[0].includes('Request succeeded after 1 total attempts'))
+ ).to.be.true
+ })
+
+ it('should handle reset errors gracefully', async () => {
+ mockDelayInterceptor.reset.throws(new Error('Reset failed'))
+
+ const token = await retryStrategy.acquireInitialRetryToken('test-scope')
+
+ retryStrategy.recordSuccess(token) // Should not throw
+ expect(
+ mockLogging.log.args.some((args: any) =>
+ args[0].includes('Warning - failed to reset state after success')
+ )
+ ).to.be.true
+ })
+
+ it('should handle parent recordSuccess errors gracefully', async () => {
+ const strategy = new QRetryStrategy(mockClassifier, mockDelayInterceptor, 3, mockLogging)
+ const token = await strategy.acquireInitialRetryToken('test-scope')
+
+ // Mock the parent recordSuccess to throw
+ const originalRecordSuccess = Object.getPrototypeOf(Object.getPrototypeOf(strategy)).recordSuccess
+ Object.getPrototypeOf(Object.getPrototypeOf(strategy)).recordSuccess = () => {
+ throw new Error('Parent recordSuccess failed')
+ }
+
+ strategy.recordSuccess(token) // Should not throw
+
+ // Restore original method
+ Object.getPrototypeOf(Object.getPrototypeOf(strategy)).recordSuccess = originalRecordSuccess
+
+ expect(
+ mockLogging.log.args.some((args: any) =>
+ args[0].includes('Warning - failed to reset state after success')
+ )
+ ).to.be.true
+ })
+ })
+
+ describe('getAttemptCount', () => {
+ it('should return current attempt count', async () => {
+ const token = await retryStrategy.acquireInitialRetryToken('test-scope')
+
+ expect(retryStrategy.getAttemptCount()).to.equal(0)
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/qRetryStrategy.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/qRetryStrategy.ts
new file mode 100644
index 0000000000..af3316c158
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/qRetryStrategy.ts
@@ -0,0 +1,89 @@
+import { RetryToken, RetryErrorInfo, RetryErrorType } from '@aws-sdk/types'
+import { AdaptiveRetryStrategy } from '@smithy/util-retry'
+import { StandardRetryToken } from '@smithy/types'
+import { QRetryClassifier, RetryAction } from './retryClassifier'
+import { QDelayTrackingInterceptor } from './delayInterceptor'
+import { Logging } from '@aws/language-server-runtimes/server-interface'
+import { sanitizeLogInput } from '../../../shared/utils'
+
+/**
+ * Custom retry strategy that extends AWS SDK v3's AdaptiveRetryStrategy with Q-specific logic
+ */
+export class QRetryStrategy extends AdaptiveRetryStrategy {
+ private retryClassifier: QRetryClassifier
+ private delayInterceptor: QDelayTrackingInterceptor
+ private maxAttempts: number
+ private logging?: Logging
+ private attemptCount: number = 0
+
+ constructor(
+ retryClassifier: QRetryClassifier,
+ delayInterceptor: QDelayTrackingInterceptor,
+ maxAttempts: number,
+ logging?: Logging
+ ) {
+ super(() => Promise.resolve(maxAttempts))
+ this.retryClassifier = retryClassifier
+ this.delayInterceptor = delayInterceptor
+ this.maxAttempts = maxAttempts
+ this.logging = logging
+ }
+
+ override async acquireInitialRetryToken(retryTokenScope: string): Promise {
+ this.attemptCount = 0
+ this.logging?.log(
+ `QRetryStrategy: Initial retry token acquired for scope: ${retryTokenScope}, attempt count reset to 0`
+ )
+ // AdaptiveRetryStrategy returns StandardRetryToken, but interface expects RetryToken
+ return super.acquireInitialRetryToken(retryTokenScope)
+ }
+
+ override async refreshRetryTokenForRetry(token: RetryToken, errorInfo: RetryErrorInfo): Promise {
+ const currentAttempt = token.getRetryCount() + 1
+ this.attemptCount = currentAttempt
+
+ const errorCode = sanitizeLogInput(
+ (errorInfo.error as any)?.name || (errorInfo.error as any)?.code || 'Unknown'
+ )
+ this.logging?.log(`QRetryStrategy: Retry attempt ${currentAttempt} for error: ${errorCode}`)
+
+ // Apply Q-specific retry classification
+ const context = { error: errorInfo.error, response: (errorInfo.error as any)?.$response }
+ const action = this.retryClassifier.classifyRetry(context)
+ this.logging?.log(`QRetryStrategy: Retry classification result: ${action}`)
+
+ // Check if we should retry based on Q classification
+ if (action === RetryAction.RetryForbidden) {
+ this.logging?.log(`QRetryStrategy: Retry forbidden, stopping retries after ${currentAttempt} attempts`)
+ throw errorInfo.error
+ }
+
+ // Track delay for UI notifications - CALL BEFORE ATTEMPT
+ this.delayInterceptor.beforeAttempt(currentAttempt + 1)
+
+ // Delegate to adaptive strategy for delay calculation and max attempts check
+ // AdaptiveRetryStrategy expects StandardRetryToken but we receive RetryToken
+ // The token from acquireInitialRetryToken is actually StandardRetryToken, so this cast is safe
+ return super.refreshRetryTokenForRetry(token as StandardRetryToken, errorInfo)
+ }
+
+ override recordSuccess(token: RetryToken): void {
+ try {
+ this.logging?.log(`QRetryStrategy: Request succeeded after ${this.attemptCount + 1} total attempts`)
+ // Reset delay tracking on success
+ this.delayInterceptor.reset()
+ this.attemptCount = 0
+ // Call parent to maintain adaptive strategy state
+ // Token is actually StandardRetryToken from AdaptiveRetryStrategy
+ super.recordSuccess(token as StandardRetryToken)
+ } catch (error) {
+ // Log but don't throw - success recording should not fail
+ this.logging?.log(`QRetryStrategy: Warning - failed to reset state after success: ${error}`)
+ }
+ }
+
+ // Test helper method to get current attempt count
+ public getAttemptCount(): number {
+ return this.attemptCount
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/retryClassifier.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/retryClassifier.test.ts
new file mode 100644
index 0000000000..4f140c3b09
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/retryClassifier.test.ts
@@ -0,0 +1,254 @@
+import { QRetryClassifier, RetryAction } from './retryClassifier'
+import { expect } from 'chai'
+import * as sinon from 'sinon'
+import {
+ CONTENT_LENGTH_EXCEEDS_THRESHOLD,
+ INVALID_MODEL_ID,
+ MAXIMUM_CHAT_CONTENT_MESSAGE,
+ MONTHLY_LIMIT_ERROR_MARKER,
+ HIGH_LOAD_ERROR_MESSAGE,
+ INSUFFICIENT_MODEL_CAPACITY,
+} from '../constants/constants'
+
+describe('QRetryClassifier', () => {
+ let classifier: QRetryClassifier
+ let mockLogging: any
+
+ beforeEach(() => {
+ mockLogging = {
+ log: sinon.spy(),
+ debug: sinon.spy(),
+ }
+ classifier = new QRetryClassifier(mockLogging)
+ })
+
+ describe('classifyRetry', () => {
+ it('should forbid retry for AccessDeniedException', () => {
+ const error = new Error('Access denied')
+ error.name = 'AccessDeniedException'
+
+ const result = classifier.classifyRetry({ error })
+
+ expect(result).to.equal(RetryAction.RetryForbidden)
+ })
+
+ it('should forbid retry for SERVICE_QUOTA_EXCEPTION', () => {
+ const error = new Error('Service quota exceeded')
+ error.name = 'SERVICE_QUOTA_EXCEPTION'
+
+ const result = classifier.classifyRetry({ error })
+
+ expect(result).to.equal(RetryAction.RetryForbidden)
+ })
+
+ it('should forbid retry for abort errors', () => {
+ const error = new Error('Request aborted')
+ error.name = 'AbortError'
+
+ const result = classifier.classifyRetry({ error })
+
+ expect(result).to.equal(RetryAction.RetryForbidden)
+ })
+
+ it('should forbid retry for input too long errors', () => {
+ const error = new Error('input too long')
+ ;(error as any).reason = CONTENT_LENGTH_EXCEEDS_THRESHOLD
+
+ const result = classifier.classifyRetry({ error })
+
+ expect(result).to.equal(RetryAction.RetryForbidden)
+ })
+
+ it('should forbid retry for invalid model ID errors', () => {
+ const error = new Error('Invalid model')
+ ;(error as any).reason = INVALID_MODEL_ID
+
+ const result = classifier.classifyRetry({ error })
+
+ expect(result).to.equal(RetryAction.RetryForbidden)
+ })
+
+ it('should forbid retry for maximum chat content message', () => {
+ const error = new Error(MAXIMUM_CHAT_CONTENT_MESSAGE)
+ error.message = MAXIMUM_CHAT_CONTENT_MESSAGE
+
+ const result = classifier.classifyRetry({ error })
+
+ expect(result).to.equal(RetryAction.RetryForbidden)
+ })
+
+ it('should forbid retry for monthly limit errors', () => {
+ const error = new Error('Monthly limit exceeded')
+ ;(error as any).reason = MONTHLY_LIMIT_ERROR_MARKER
+ const context = {
+ error,
+ response: {
+ status: 400,
+ body: `Error: ${MONTHLY_LIMIT_ERROR_MARKER} exceeded`,
+ },
+ }
+
+ const result = classifier.classifyRetry(context)
+
+ expect(result).to.equal(RetryAction.RetryForbidden)
+ })
+
+ it('should classify throttling for service overloaded errors', () => {
+ const context = {
+ error: new Error('Service unavailable'),
+ response: {
+ status: 500,
+ body: HIGH_LOAD_ERROR_MESSAGE,
+ },
+ }
+
+ const result = classifier.classifyRetry(context)
+
+ expect(result).to.equal(RetryAction.ThrottlingError)
+ })
+
+ it('should classify throttling for 429 status with model capacity', () => {
+ const error = new Error('Model unavailable')
+ ;(error as any).$metadata = { httpStatusCode: 429 }
+ ;(error as any).reason = INSUFFICIENT_MODEL_CAPACITY
+
+ const result = classifier.classifyRetry({ error })
+
+ expect(result).to.equal(RetryAction.ThrottlingError)
+ })
+
+ it('should return no action for unknown errors', () => {
+ const error = new Error('Unknown error')
+
+ const result = classifier.classifyRetry({ error })
+
+ expect(result).to.equal(RetryAction.NoActionIndicated)
+ })
+
+ it('should handle errors without response body', () => {
+ const error = new Error('Network error')
+
+ const result = classifier.classifyRetry({ error })
+
+ expect(result).to.equal(RetryAction.NoActionIndicated)
+ })
+
+ it('should extract response body from different error formats', () => {
+ const classifier = new QRetryClassifier()
+
+ // Test different body extraction paths - these should NOT trigger monthly limit errors
+ // since monthly limit detection now uses error.reason instead of body content
+ const context1 = {
+ error: {
+ cause: { $metadata: { body: MONTHLY_LIMIT_ERROR_MARKER } },
+ },
+ }
+ expect(classifier.classifyRetry(context1)).to.equal(RetryAction.NoActionIndicated)
+
+ const context2 = {
+ error: {
+ $metadata: { body: MONTHLY_LIMIT_ERROR_MARKER },
+ },
+ }
+ expect(classifier.classifyRetry(context2)).to.equal(RetryAction.NoActionIndicated)
+
+ const context3 = {
+ error: {
+ message: `${MONTHLY_LIMIT_ERROR_MARKER} exceeded`,
+ },
+ }
+ expect(classifier.classifyRetry(context3)).to.equal(RetryAction.NoActionIndicated)
+ })
+ })
+
+ describe('extractResponseBody', () => {
+ it('should extract body from Uint8Array', () => {
+ const classifier = new QRetryClassifier()
+ const body = new TextEncoder().encode('test body')
+ const context = {
+ error: {},
+ response: { body },
+ }
+
+ const result = (classifier as any).extractResponseBody(context)
+
+ expect(result).to.equal('test body')
+ })
+
+ it('should extract body from ArrayBuffer', () => {
+ const classifier = new QRetryClassifier()
+ const body = new TextEncoder().encode('test body').buffer
+ const context = {
+ error: { body },
+ }
+
+ const result = (classifier as any).extractResponseBody(context)
+
+ expect(result).to.equal('test body')
+ })
+
+ it('should extract body from object', () => {
+ const classifier = new QRetryClassifier()
+ const body = { message: 'test' }
+ const context = {
+ error: { body },
+ }
+
+ const result = (classifier as any).extractResponseBody(context)
+
+ expect(result).to.equal('{"message":"test"}')
+ })
+
+ it('should handle extraction errors gracefully', () => {
+ const classifier = new QRetryClassifier()
+
+ // Test extractTextFromBody error handling
+ const bodyThatThrows = {
+ get toString() {
+ throw new Error('Access denied')
+ },
+ }
+
+ const result = (classifier as any).extractTextFromBody(bodyThatThrows)
+ expect(result).to.be.null
+ })
+ })
+
+ describe('name and priority', () => {
+ it('should return correct name', () => {
+ expect(classifier.name()).to.equal('Q Language Server Retry Classifier')
+ })
+
+ it('should return correct priority', () => {
+ expect(classifier.priority().value).to.equal(100)
+ expect(QRetryClassifier.priority().value).to.equal(100)
+ })
+ })
+
+ describe('isMonthlyLimitError', () => {
+ it('should log debug messages for monthly limit detection', () => {
+ const classifierWithLogging = new QRetryClassifier(mockLogging)
+ const error = { reason: MONTHLY_LIMIT_ERROR_MARKER }
+
+ const result = (classifierWithLogging as any).isMonthlyLimitError(error)
+
+ expect(result).to.be.true
+ expect(mockLogging.debug.called).to.be.true
+ })
+ })
+
+ describe('isServiceOverloadedError', () => {
+ it('should log debug messages for service overloaded detection', () => {
+ const classifierWithLogging = new QRetryClassifier(mockLogging)
+ const context = {
+ error: { $metadata: { httpStatusCode: 500 } },
+ response: { status: 500 },
+ }
+
+ const result = (classifierWithLogging as any).isServiceOverloadedError(context, HIGH_LOAD_ERROR_MESSAGE)
+
+ expect(result).to.be.true
+ expect(mockLogging.debug.called).to.be.true
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/retryClassifier.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/retryClassifier.ts
new file mode 100644
index 0000000000..1940113ad5
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/retry/retryClassifier.ts
@@ -0,0 +1,166 @@
+import { Logging } from '@aws/language-server-runtimes/server-interface'
+import { isRequestAbortedError, isInputTooLongError, isThrottlingRelated } from '../errors'
+import {
+ MONTHLY_LIMIT_ERROR_MARKER,
+ HIGH_LOAD_ERROR_MESSAGE,
+ SERVICE_UNAVAILABLE_EXCEPTION,
+ HTTP_STATUS_INTERNAL_SERVER_ERROR,
+ INSUFFICIENT_MODEL_CAPACITY,
+ CONTENT_LENGTH_EXCEEDS_THRESHOLD,
+ INVALID_MODEL_ID,
+ MAXIMUM_CHAT_CONTENT_MESSAGE,
+} from '../constants/constants'
+
+export enum RetryAction {
+ NoActionIndicated = 'no_action',
+ RetryForbidden = 'retry_forbidden',
+ ThrottlingError = 'throttling_error',
+}
+
+export interface RetryClassifierPriority {
+ value: number
+}
+
+export interface InterceptorContext {
+ error: any
+ response?: {
+ status?: number
+ body?: string | Uint8Array
+ }
+}
+
+/**
+ * Retry classifier that matches CLI's QCliRetryClassifier behavior.
+ * Runs after AWS SDK's transient error classifier with higher priority.
+ */
+export class QRetryClassifier {
+ private logging?: Logging
+
+ constructor(logging?: Logging) {
+ this.logging = logging
+ }
+
+ static priority(): RetryClassifierPriority {
+ // Run after transient error classifier (higher priority number)
+ return { value: 100 }
+ }
+
+ classifyRetry(context: InterceptorContext): RetryAction {
+ const error = context.error
+
+ // Handle non-retryable errors first (matching original + enhanced detection)
+ if (
+ error?.name === 'AccessDeniedException' ||
+ error?.name === 'SERVICE_QUOTA_EXCEPTION' ||
+ error?.name === 'AbortError' ||
+ error?.code === 'RequestAborted' ||
+ error?.name === 'RequestAborted' ||
+ isRequestAbortedError(error)
+ ) {
+ return RetryAction.RetryForbidden
+ }
+
+ if (
+ error?.reason === CONTENT_LENGTH_EXCEEDS_THRESHOLD ||
+ isInputTooLongError(error) ||
+ error?.reason === INVALID_MODEL_ID
+ ) {
+ return RetryAction.RetryForbidden
+ }
+
+ // Check for monthly limit error in error object
+ if (this.isMonthlyLimitError(error)) {
+ return RetryAction.RetryForbidden
+ }
+
+ if (error?.message === MAXIMUM_CHAT_CONTENT_MESSAGE) {
+ return RetryAction.RetryForbidden
+ }
+
+ const bodyStr = this.extractResponseBody(context)
+ if (bodyStr && this.isServiceOverloadedError(context, bodyStr)) {
+ return RetryAction.ThrottlingError
+ }
+
+ // Check for model capacity issues
+ const status = context.response?.status || context.error?.$metadata?.httpStatusCode
+ if (status === 429 && error?.reason === INSUFFICIENT_MODEL_CAPACITY) {
+ return RetryAction.ThrottlingError
+ }
+
+ // Check for throttling related errors (from errors.ts)
+ if (isThrottlingRelated(error)) {
+ return RetryAction.ThrottlingError
+ }
+
+ return RetryAction.NoActionIndicated
+ }
+
+ private extractResponseBody(context: InterceptorContext): string | null {
+ // Try context response first
+ const contextBody = this.extractTextFromBody(context.response?.body)
+ if (contextBody) return contextBody
+
+ // Fallback to error-based extraction
+ const error = context.error
+ return (
+ error?.message ||
+ this.extractTextFromBody(error?.cause?.$metadata?.body) ||
+ this.extractTextFromBody(error?.$metadata?.body) ||
+ this.extractTextFromBody(error?.cause?.body) ||
+ this.extractTextFromBody(error?.body) ||
+ this.extractTextFromBody(error?.response?.data) ||
+ this.extractTextFromBody(error?.response?.body) ||
+ null
+ )
+ }
+
+ private extractTextFromBody(body: any): string | null {
+ try {
+ if (typeof body === 'string') {
+ return body
+ }
+ if (body instanceof Uint8Array) {
+ const decoded = new TextDecoder('utf-8', { fatal: false }).decode(body)
+ return decoded || null
+ }
+ if (body instanceof ArrayBuffer) {
+ return new TextDecoder('utf-8', { fatal: false }).decode(body)
+ }
+ if (typeof body === 'object' && body !== null) {
+ return JSON.stringify(body)
+ }
+ return null
+ } catch {
+ return null
+ }
+ }
+
+ private isMonthlyLimitError(error: any): boolean {
+ const isMonthlyLimit = error?.reason === MONTHLY_LIMIT_ERROR_MARKER
+ this.logging?.debug(`QRetryClassifier: Monthly limit error detected: ${isMonthlyLimit}`)
+ return isMonthlyLimit
+ }
+
+ private isServiceOverloadedError(context: InterceptorContext, bodyStr: string): boolean {
+ const status = context.response?.status || context.error?.status || context.error?.$metadata?.httpStatusCode
+
+ if (status !== HTTP_STATUS_INTERNAL_SERVER_ERROR) {
+ return false
+ }
+
+ const isOverloaded =
+ bodyStr.includes(HIGH_LOAD_ERROR_MESSAGE) || bodyStr.includes(SERVICE_UNAVAILABLE_EXCEPTION)
+
+ this.logging?.debug(`QRetryClassifier: Service overloaded error detected (status 500): ${isOverloaded}`)
+ return isOverloaded
+ }
+
+ name(): string {
+ return 'Q Language Server Retry Classifier'
+ }
+
+ priority(): RetryClassifierPriority {
+ return QRetryClassifier.priority()
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tabBarController.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tabBarController.test.ts
index fecbdebe13..1df34c2162 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tabBarController.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tabBarController.test.ts
@@ -15,6 +15,8 @@ import { ChatHistoryActionType } from '../../shared/telemetry/types'
import { TelemetryService } from '../../shared/telemetry/telemetryService'
import { URI } from 'vscode-uri'
+const JUPYTERLAB_APP_TYPE_VALUE = 'jupyterlab'
+
describe('TabBarController', () => {
let testFeatures: TestFeatures
let chatHistoryDb: ChatDatabase
@@ -50,6 +52,7 @@ describe('TabBarController', () => {
afterEach(() => {
sinon.restore()
clock.restore()
+ delete process.env.SAGEMAKER_APP_TYPE_LOWERCASE // Clean up JupyterLab environment variables
testFeatures.dispose()
})
@@ -540,7 +543,7 @@ describe('TabBarController', () => {
})
})
- it('should only load chats once', async () => {
+ it('should only load chats once in non-JupyterLab environments', async () => {
const mockTabs = [{ historyId: 'history1', conversations: [{ messages: [] }] }] as unknown as Tab[]
;(chatHistoryDb.getOpenTabs as sinon.SinonStub).returns(mockTabs)
@@ -559,6 +562,22 @@ describe('TabBarController', () => {
result: 'Succeeded',
})
})
+
+ it('should allow multiple loads in JupyterLab environment', async () => {
+ // Set JupyterLab environment
+ process.env.SAGEMAKER_APP_TYPE_LOWERCASE = JUPYTERLAB_APP_TYPE_VALUE
+
+ const mockTabs = [{ historyId: 'history1', conversations: [{ messages: [] }] }] as unknown as Tab[]
+ ;(chatHistoryDb.getOpenTabs as sinon.SinonStub).returns(mockTabs)
+
+ const restoreTabStub = sinon.stub(tabBarController, 'restoreTab')
+
+ await tabBarController.loadChats()
+ await tabBarController.loadChats() // Second call should NOT be ignored in JupyterLab
+
+ sinon.assert.calledTwice(restoreTabStub)
+ sinon.assert.calledTwice(telemetryService.emitLoadHistory as sinon.SinonStub)
+ })
})
})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tabBarController.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tabBarController.ts
index 62f5b2ab0b..6ba6da3508 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tabBarController.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tabBarController.ts
@@ -22,6 +22,7 @@ import { ChatHistoryActionType } from '../../shared/telemetry/types'
import { CancellationError } from '@aws/lsp-core'
const MaxRestoredHistoryMessages = 250
+const JUPYTERLAB_APP_TYPE_VALUE = 'jupyterlab'
/**
* Controller for managing chat history and export functionality.
@@ -313,10 +314,17 @@ export class TabBarController {
* When IDE is opened, restore chats that were previously open in IDE for the current workspace.
*/
async loadChats() {
- if (this.#loadedChats) {
+ const isJupyterLab = this.isJupyterLabEnvironment()
+
+ // For non-JupyterLab environments, prevent multiple loads
+ if (!isJupyterLab && this.#loadedChats) {
return
}
- this.#loadedChats = true
+
+ if (!isJupyterLab) {
+ this.#loadedChats = true
+ }
+
const openConversations = this.#chatHistoryDb.getOpenTabs()
if (openConversations) {
for (const conversation of openConversations) {
@@ -332,6 +340,18 @@ export class TabBarController {
}
}
+ /**
+ * Determines if the environment is JupyterLab.
+ */
+ private isJupyterLabEnvironment(): boolean {
+ try {
+ return process.env.SAGEMAKER_APP_TYPE_LOWERCASE === JUPYTERLAB_APP_TYPE_VALUE
+ } catch (error) {
+ this.#features.logging.error(`Failed to read SAGEMAKER_APP_TYPE_LOWERCASE environment variable: ${error}`)
+ return false
+ }
+ }
+
public static enableChatExport(params?: InitializeParams) {
if (params?.initializationOptions?.aws?.awsClientCapabilities?.window?.showSaveFileDialog) {
// Export Chat UX flow relies on show Save File dialog protocol supported by client
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/chatDb.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/chatDb.test.ts
index f4f61f955b..2c0e07baff 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/chatDb.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/chatDb.test.ts
@@ -57,7 +57,7 @@ describe('ChatDatabase', () => {
},
} as unknown as Features
- chatDb = new ChatDatabase(mockFeatures)
+ chatDb = ChatDatabase.getInstance(mockFeatures)
})
afterEach(() => {
@@ -91,30 +91,6 @@ describe('ChatDatabase', () => {
})
})
- describe('replaceHistory', () => {
- it('should replace history with messages', async () => {
- await chatDb.databaseInitialize(0)
- const tabId = 'tab-1'
- const tabType = 'cwc'
- const conversationId = 'conv-1'
- const messages = [
- { body: 'Test', type: 'prompt' as any, timestamp: new Date() },
- { body: 'Thinking...', type: 'answer', timestamp: new Date() },
- ]
-
- // Call the method
- chatDb.replaceHistory(tabId, tabType, conversationId, messages)
-
- // Verify the messages array contains the summary and a dummy response
- const messagesFromDb = chatDb.getMessages(tabId, 250)
- assert.strictEqual(messagesFromDb.length, 2)
- assert.strictEqual(messagesFromDb[0].body, 'Test')
- assert.strictEqual(messagesFromDb[0].type, 'prompt')
- assert.strictEqual(messagesFromDb[1].body, 'Thinking...')
- assert.strictEqual(messagesFromDb[1].type, 'answer')
- })
- })
-
describe('ensureValidMessageSequence', () => {
it('should preserve valid alternating sequence', () => {
const messages: Message[] = [
@@ -665,6 +641,73 @@ describe('ChatDatabase', () => {
)
})
})
+
+ describe('Model Cache Management', () => {
+ beforeEach(async () => {
+ await chatDb.databaseInitialize(0)
+ })
+
+ it('should cache and retrieve models', () => {
+ const models = [{ id: 'model-1', name: 'Test Model' }]
+ const defaultModelId = 'model-1'
+
+ chatDb.setCachedModels(models, defaultModelId)
+ const cached = chatDb.getCachedModels()
+
+ assert.ok(cached, 'Should return cached data')
+ assert.deepStrictEqual(cached.models, models)
+ assert.strictEqual(cached.defaultModelId, defaultModelId)
+ assert.ok(cached.timestamp > 0, 'Should have timestamp')
+ })
+
+ it('should validate cache expiry', () => {
+ const models = [{ id: 'model-1', name: 'Test Model' }]
+ chatDb.setCachedModels(models)
+
+ // Mock isCachedValid to return false (expired)
+ const isCachedValidStub = sinon.stub(util, 'isCachedValid').returns(false)
+
+ assert.strictEqual(chatDb.isCachedModelsValid(), false)
+
+ isCachedValidStub.restore()
+ })
+
+ it('should clear cached models', () => {
+ const models = [{ id: 'model-1', name: 'Test Model' }]
+ chatDb.setCachedModels(models)
+
+ // Verify cache exists
+ assert.ok(chatDb.getCachedModels(), 'Cache should exist before clearing')
+
+ chatDb.clearCachedModels()
+
+ // Verify cache is cleared
+ assert.strictEqual(chatDb.getCachedModels(), undefined, 'Cache should be cleared')
+ })
+
+ it('should clear model cache via static method when instance exists', () => {
+ const models = [{ id: 'model-1', name: 'Test Model' }]
+ chatDb.setCachedModels(models)
+
+ // Verify cache exists
+ assert.ok(chatDb.getCachedModels(), 'Cache should exist before clearing')
+
+ ChatDatabase.clearModelCache()
+
+ // Verify cache is cleared
+ assert.strictEqual(chatDb.getCachedModels(), undefined, 'Cache should be cleared via static method')
+ })
+
+ it('should handle static clearModelCache when no instance exists', () => {
+ // Close current instance
+ chatDb.close()
+
+ // Should not throw when no instance exists
+ assert.doesNotThrow(() => {
+ ChatDatabase.clearModelCache()
+ }, 'Should not throw when no instance exists')
+ })
+ })
})
function uuid(): `${string}-${string}-${string}-${string}-${string}` {
throw new Error('Function not implemented.')
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/chatDb.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/chatDb.ts
index dfcf21308c..abd49a52eb 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/chatDb.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/chatDb.ts
@@ -24,11 +24,12 @@ import {
getMd5WorkspaceId,
MessagesWithCharacterCount,
estimateCharacterCountFromImageBlock,
+ isCachedValid,
} from './util'
import * as crypto from 'crypto'
import * as path from 'path'
import { Features } from '@aws/language-server-runtimes/server-interface/server'
-import { ContextCommand, ConversationItemGroup } from '@aws/language-server-runtimes/protocol'
+import { ContextCommand, ConversationItemGroup, Model } from '@aws/language-server-runtimes/protocol'
import { ChatMessage, ToolResultStatus } from '@amzn/codewhisperer-streaming'
import { ChatItemType } from '@aws/mynah-ui'
import { getUserHomeDir } from '@aws/lsp-core/out/util/path'
@@ -43,11 +44,6 @@ export class ToolResultValidationError extends Error {
}
export const EMPTY_CONVERSATION_LIST_ID = 'empty'
-// Maximum number of characters to keep in request
-// (200K tokens - 8K output tokens - 2k system prompt) * 3 = 570K characters, intentionally overestimating with 3:1 ratio
-export const MaxOverallCharacters = 570_000
-// Maximum number of history messages to include in each request to the LLM
-const maxConversationHistoryMessages = 250
/**
* A singleton database class that manages chat history persistence using LokiJS.
@@ -122,6 +118,12 @@ export class ChatDatabase {
return ChatDatabase.#instance
}
+ public static clearModelCache(): void {
+ if (ChatDatabase.#instance) {
+ ChatDatabase.#instance.clearCachedModels()
+ }
+ }
+
public close() {
this.#db.close()
ChatDatabase.#instance = undefined
@@ -634,50 +636,6 @@ export class ChatDatabase {
}
}
- /**
- * Replace history with summary/dummyResponse pair within a specified tab.
- *
- * This method manages chat messages by creating a new history with compacted summary and dummy response pairs
- */
- replaceHistory(tabId: string, tabType: TabType, conversationId: string, messages: Message[]) {
- if (this.isInitialized()) {
- const clientType = this.#features.lsp.getClientInitializeParams()?.clientInfo?.name || 'unknown'
- const tabCollection = this.#db.getCollection(TabCollection)
-
- this.#features.logging.log(
- `Update history with new messages: tabId=${tabId}, tabType=${tabType}, conversationId=${conversationId}`
- )
-
- const oldHistoryId = this.getOrCreateHistoryId(tabId)
- // create a new historyId to start fresh
- const historyId = this.createHistoryId(tabId)
-
- const tabData = historyId ? tabCollection.findOne({ historyId }) : undefined
- const tabTitle = tabData?.title || 'Amazon Q Chat'
- messages = messages.map(msg => this.formatChatHistoryMessage(msg))
- this.#features.logging.log(`Overriding tab with new historyId=${historyId}`)
- tabCollection.insert({
- historyId,
- updatedAt: new Date(),
- isOpen: true,
- tabType: tabType,
- title: tabTitle,
- conversations: [
- {
- conversationId,
- clientType,
- updatedAt: new Date(),
- messages: messages,
- },
- ],
- })
-
- if (oldHistoryId) {
- tabCollection.findAndRemove({ historyId: oldHistoryId })
- }
- }
- }
-
formatChatHistoryMessage(message: Message): Message {
if (message.type === ('prompt' as ChatItemType)) {
let hasToolResults = false
@@ -699,15 +657,12 @@ export class ChatDatabase {
/**
* Prepare the history messages for service request and fix the persisted history in DB to maintain the following invariants:
- * 1. The history contains at most MaxConversationHistoryMessages messages. Oldest messages are dropped.
- * 2. The first message is from the user and without any tool usage results, and the last message is from the assistant.
+ * 1. The first message is from the user and without any tool usage results, and the last message is from the assistant.
* The history contains alternating sequene of userMessage followed by assistantMessages
- * 3. The toolUse and toolResult relationship is valid
- * 4. The history character length is <= MaxConversationHistoryCharacters - newUserMessageCharacterCount. Oldest messages are dropped.
+ * 2. The toolUse and toolResult relationship is valid
*/
fixAndGetHistory(
tabId: string,
- conversationId: string,
newUserMessage: ChatMessage,
pinnedContextMessages: ChatMessage[]
): MessagesWithCharacterCount {
@@ -723,18 +678,19 @@ export class ChatDatabase {
this.#features.logging.info(`Fixing history: tabId=${tabId}`)
- // 1. Make sure the length of the history messages don't exceed MaxConversationHistoryMessages
- let allMessages = this.getMessages(tabId, maxConversationHistoryMessages)
+ let allMessages = this.getMessages(tabId)
if (allMessages.length > 0) {
- // 2. Fix history: Ensure messages in history is valid for server side checks
+ // 1. Fix history: Ensure messages in history is valid for server side checks
this.ensureValidMessageSequence(tabId, allMessages)
- // 3. Fix new user prompt: Ensure lastMessage in history toolUse and newMessage toolResult relationship is valid
+ // 2. Fix new user prompt: Ensure lastMessage in history toolUse and newMessage toolResult relationship is valid
this.validateAndFixNewMessageToolResults(allMessages, newUserMessage)
- // 4. NOTE: Keep this trimming logic at the end of the preprocess.
- // Make sure max characters ≤ remaining Character Budget, must be put at the end of preprocessing
- messagesWithCount = this.trimMessagesToMaxLength(allMessages, newUserInputCount, tabId, conversationId)
+ messagesWithCount = {
+ history: allMessages,
+ historyCount: this.calculateMessagesCharacterCount(allMessages),
+ currentCount: newUserInputCount,
+ }
// Edge case: If the history is empty and the next message contains tool results, then we have to just abandon them.
if (
@@ -763,74 +719,11 @@ export class ChatDatabase {
return messagesWithCount
}
- /**
- * Finds a suitable "break point" index in the message sequence.
- *
- * It ensures that the "break point" is at a clean conversation boundary where:
- * 1. The message is from a user (type === 'prompt')
- * 2. The message doesn't contain tool results that would break tool use/result pairs
- * 3. The message has a non-empty body
- *
- * @param allMessages The array of conversation messages to search through
- * @returns The index to trim from, or undefined if no suitable trimming point is found
- */
- private findIndexToTrim(allMessages: Message[]): number | undefined {
- for (let i = 2; i < allMessages.length; i++) {
- const message = allMessages[i]
- if (message.type === ('prompt' as ChatItemType) && this.isValidUserMessageWithoutToolResults(message)) {
- return i
- }
- }
- return undefined
- }
-
private isValidUserMessageWithoutToolResults(message: Message): boolean {
const ctx = message.userInputMessageContext
return !!ctx && (!ctx.toolResults || ctx.toolResults.length === 0) && message.body !== ''
}
- private trimMessagesToMaxLength(
- messages: Message[],
- newUserInputCount: number,
- tabId: string,
- conversationId: string
- ): MessagesWithCharacterCount {
- let historyCharacterCount = this.calculateMessagesCharacterCount(messages)
- const maxHistoryCharacterSize = Math.max(0, MaxOverallCharacters - newUserInputCount)
- let trimmedHistory = false
- this.#features.logging.debug(
- `Current history character count: ${historyCharacterCount}, remaining history character budget: ${maxHistoryCharacterSize}`
- )
- while (historyCharacterCount > maxHistoryCharacterSize && messages.length > 2) {
- trimmedHistory = true
- // Find the next valid user message to start from
- const indexToTrim = this.findIndexToTrim(messages)
- if (indexToTrim !== undefined && indexToTrim > 0) {
- this.#features.logging.debug(
- `Removing the first ${indexToTrim} elements in the history due to character count limit`
- )
- messages.splice(0, indexToTrim)
- } else {
- this.#features.logging.debug(
- 'Could not find a valid point to trim, reset history to reduce character count'
- )
- this.replaceHistory(tabId, 'cwc', conversationId, [])
- return { history: [], historyCount: 0, currentCount: newUserInputCount }
- }
- historyCharacterCount = this.calculateMessagesCharacterCount(messages)
- this.#features.logging.debug(`History character count post trimming: ${historyCharacterCount}`)
- }
-
- if (trimmedHistory) {
- this.replaceHistory(tabId, 'cwc', conversationId, messages)
- }
- return {
- history: messages,
- historyCount: historyCharacterCount,
- currentCount: newUserInputCount,
- }
- }
-
private calculateToolSpecCharacterCount(currentMessage: ChatMessage): number {
let count = 0
if (currentMessage.userInputMessage?.userInputMessageContext?.tools) {
@@ -1084,6 +977,48 @@ export class ChatDatabase {
this.updateSettings({ modelId: modelId === '' ? undefined : modelId })
}
+ getCachedModels(): { models: Model[]; defaultModelId?: string; timestamp: number } | undefined {
+ const settings = this.getSettings()
+ if (settings?.cachedModels && settings?.modelCacheTimestamp) {
+ return {
+ models: settings.cachedModels,
+ defaultModelId: settings.cachedDefaultModelId,
+ timestamp: settings.modelCacheTimestamp,
+ }
+ }
+ return undefined
+ }
+
+ setCachedModels(models: Model[], defaultModelId?: string): void {
+ const currentTimestamp = Date.now()
+ // Get existing settings to preserve fields like modelId
+ const existingSettings = this.getSettings() || { modelId: undefined }
+ this.updateSettings({
+ ...existingSettings,
+ cachedModels: models,
+ cachedDefaultModelId: defaultModelId,
+ modelCacheTimestamp: currentTimestamp,
+ })
+ this.#features.logging.log(`Models cached at timestamp: ${currentTimestamp}`)
+ }
+
+ isCachedModelsValid(): boolean {
+ const cachedData = this.getCachedModels()
+ if (!cachedData) return false
+ return isCachedValid(cachedData.timestamp)
+ }
+
+ clearCachedModels(): void {
+ const existingSettings = this.getSettings() || { modelId: undefined }
+ this.updateSettings({
+ ...existingSettings,
+ cachedModels: undefined,
+ cachedDefaultModelId: undefined,
+ modelCacheTimestamp: undefined,
+ })
+ this.#features.logging.log('Model cache cleared')
+ }
+
getPairProgrammingMode(): boolean | undefined {
const settings = this.getSettings()
return settings?.pairProgrammingMode
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.test.ts
index 670fc243ca..4907b25e0a 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.test.ts
@@ -40,7 +40,31 @@ describe('ChatDb Utilities', () => {
userInputMessage: {
content: 'Hello',
images: [],
- userInputMessageContext: {},
+ userInputMessageContext: undefined,
+ userIntent: undefined,
+ origin: 'IDE',
+ },
+ })
+ })
+
+ it('should preserve userInputMessageContext when provided', () => {
+ const message: Message = {
+ body: 'Hello',
+ type: 'prompt',
+ userInputMessageContext: {
+ editorState: { document: { relativeFilePath: 'test.ts' } },
+ },
+ }
+
+ const result = messageToStreamingMessage(message)
+
+ assert.deepStrictEqual(result, {
+ userInputMessage: {
+ content: 'Hello',
+ images: [],
+ userInputMessageContext: {
+ editorState: { document: { relativeFilePath: 'test.ts' } },
+ },
userIntent: undefined,
origin: 'IDE',
},
@@ -134,6 +158,24 @@ describe('ChatDb Utilities', () => {
})
})
+ it('should handle undefined userInputMessageContext', () => {
+ const chatMessage: StreamingMessage = {
+ userInputMessage: {
+ content: 'Hello',
+ },
+ }
+
+ const result = chatMessageToMessage(chatMessage)
+
+ assert.deepStrictEqual(result, {
+ body: 'Hello',
+ origin: 'IDE',
+ type: 'prompt',
+ userInputMessageContext: undefined,
+ userIntent: undefined,
+ })
+ })
+
it('should convert assistantResponseMessage to answer Message', () => {
const chatMessage: StreamingMessage = {
assistantResponseMessage: {
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.ts
index 8f3f46b9f4..63c9ae8583 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.ts
@@ -10,6 +10,7 @@ import {
ConversationItem,
ConversationItemGroup,
IconType,
+ Model,
ReferenceTrackerInformation,
} from '@aws/language-server-runtimes/server-interface'
import {
@@ -84,6 +85,9 @@ export type Rules = {
export type Settings = {
modelId: string | undefined
pairProgrammingMode?: boolean
+ cachedModels?: Model[]
+ cachedDefaultModelId?: string
+ modelCacheTimestamp?: number
}
export type Conversation = {
@@ -131,6 +135,14 @@ export type MessagesWithCharacterCount = {
currentCount: number
}
+export function isCachedValid(timestamp: number): boolean {
+ const currentTime = Date.now()
+ const cacheAge = currentTime - timestamp
+ const CACHE_TTL = 30 * 60 * 1000 // 30 minutes in milliseconds
+
+ return cacheAge < CACHE_TTL
+}
+
/**
* Converts Message to codewhisperer-streaming ChatMessage
*/
@@ -148,7 +160,7 @@ export function messageToStreamingMessage(msg: Message): StreamingMessage {
content: msg.body,
userIntent: msg.userIntent,
origin: msg.origin || 'IDE',
- userInputMessageContext: msg.userInputMessageContext || {},
+ userInputMessageContext: msg.userInputMessageContext,
images: msg.images || [],
},
}
@@ -196,7 +208,7 @@ export function chatMessageToMessage(chatMessage: StreamingMessage): Message {
type: 'prompt',
userIntent: userInputMessage.userIntent,
origin: userInputMessage.origin || 'IDE',
- userInputMessageContext: userInputMessage.userInputMessageContext || {},
+ userInputMessageContext: userInputMessage.userInputMessageContext,
}
} else if ('assistantResponseMessage' in chatMessage) {
const assistantResponseMessage = chatMessage.assistantResponseMessage as AssistantResponseMessage
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/fsRead.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/fsRead.ts
index aeca19013b..f322e570ee 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/fsRead.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/fsRead.ts
@@ -1,6 +1,7 @@
import { sanitize } from '@aws/lsp-core/out/util/path'
import { CommandValidation, InvokeOutput, requiresPathAcceptance, validatePath } from './toolShared'
import { Features } from '@aws/language-server-runtimes/server-interface/server'
+import { FSREAD_MAX_PER_FILE, FSREAD_MAX_TOTAL } from '../constants/constants'
export interface FsReadParams {
paths: string[]
@@ -13,16 +14,24 @@ export interface FileReadResult {
}
export class FsRead {
- static maxResponseSize = 200_000
- static maxResponseSizeTotal = 400_000
+ static maxResponseSize = FSREAD_MAX_PER_FILE
+ static maxResponseSizeTotal = FSREAD_MAX_TOTAL
private readonly logging: Features['logging']
private readonly workspace: Features['workspace']
private readonly lsp: Features['lsp']
+ private readonly maxPerFile: number
+ private readonly maxTotal: number
- constructor(features: Pick & Partial) {
+ constructor(
+ features: Pick & Partial,
+ maxPerFile?: number,
+ maxTotal?: number
+ ) {
this.logging = features.logging
this.workspace = features.workspace
this.lsp = features.lsp
+ this.maxPerFile = maxPerFile ?? FsRead.maxResponseSize
+ this.maxTotal = maxTotal ?? FsRead.maxResponseSizeTotal
}
public async validate(params: FsReadParams): Promise {
@@ -62,16 +71,16 @@ export class FsRead {
private createOutput(fileResult: FileReadResult[]): InvokeOutput {
let totalSize = 0
for (const result of fileResult) {
- const exceedsMaxSize = result.content.length > FsRead.maxResponseSize
+ const exceedsMaxSize = result.content.length > this.maxPerFile
if (exceedsMaxSize) {
- this.logging.info(`FsRead: truncating ${result.path} to first ${FsRead.maxResponseSize} characters`)
- result.content = result.content.substring(0, FsRead.maxResponseSize - 3) + '...'
+ this.logging.info(`FsRead: truncating ${result.path} to first ${this.maxPerFile} characters`)
+ result.content = result.content.substring(0, this.maxPerFile - 3) + '...'
result.truncated = true
}
totalSize += result.content.length
}
- if (totalSize > FsRead.maxResponseSizeTotal) {
+ if (totalSize > this.maxTotal) {
throw Error('Files are too large, please break the file read into smaller chunks')
}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/agentPermissionManager.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/agentPermissionManager.test.ts
new file mode 100644
index 0000000000..b120a11fe4
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/agentPermissionManager.test.ts
@@ -0,0 +1,218 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+import { expect } from 'chai'
+import { AgentPermissionManager } from './agentPermissionManager'
+import { AgentConfig, McpPermissionType } from './mcpTypes'
+
+describe('AgentPermissionManager', () => {
+ let agentConfig: AgentConfig
+ let manager: AgentPermissionManager
+
+ beforeEach(() => {
+ agentConfig = {
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {},
+ tools: [],
+ allowedTools: [],
+ }
+ manager = new AgentPermissionManager(
+ agentConfig,
+ undefined, // getAvailableTools
+ undefined, // getAllAvailableServers
+ undefined // getAllBuiltinTools
+ )
+ })
+
+ describe('matchesPattern', () => {
+ it('matches exact patterns', () => {
+ expect(manager['matchesPattern']('tool1', 'tool1')).to.be.true
+ expect(manager['matchesPattern']('tool1', 'tool2')).to.be.false
+ })
+
+ it('matches wildcard patterns', () => {
+ expect(manager['matchesPattern']('tool1', '*')).to.be.true
+ expect(manager['matchesPattern']('tool1', 'tool*')).to.be.true
+ expect(manager['matchesPattern']('tool1', '*1')).to.be.true
+ expect(manager['matchesPattern']('tool1', 'to*l1')).to.be.true
+ expect(manager['matchesPattern']('tool1', 'foo*')).to.be.false
+ })
+
+ it('matches question mark patterns', () => {
+ expect(manager['matchesPattern']('tool1', 'tool?')).to.be.true
+ expect(manager['matchesPattern']('tool1', '?ool1')).to.be.true
+ expect(manager['matchesPattern']('tool1', 'tool??')).to.be.false
+ })
+
+ it('escapes regex special characters', () => {
+ expect(manager['matchesPattern']('tool.1', 'tool.1')).to.be.true
+ expect(manager['matchesPattern']('tool+1', 'tool+1')).to.be.true
+ expect(manager['matchesPattern']('tool[1]', 'tool[1]')).to.be.true
+ })
+ })
+
+ describe('isToolEnabled', () => {
+ it('returns true for exact tool matches', () => {
+ agentConfig.tools = ['tool1', '@server/tool2']
+ expect(manager.isToolEnabled('', 'tool1')).to.be.true
+ expect(manager.isToolEnabled('server', 'tool2')).to.be.true
+ })
+
+ it('returns true for server prefix matches', () => {
+ agentConfig.tools = ['@server']
+ expect(manager.isToolEnabled('server', 'tool1')).to.be.true
+ })
+
+ it('returns true for wildcard matches', () => {
+ agentConfig.tools = ['*']
+ expect(manager.isToolEnabled('server', 'tool1')).to.be.true
+
+ agentConfig.tools = ['tool*']
+ expect(manager.isToolEnabled('', 'tool1')).to.be.true
+ expect(manager.isToolEnabled('', 'foo1')).to.be.false
+ })
+
+ it('returns false for non-matching tools', () => {
+ agentConfig.tools = ['tool1']
+ expect(manager.isToolEnabled('', 'tool2')).to.be.false
+ expect(manager.isToolEnabled('server', 'tool1')).to.be.false
+ })
+ })
+
+ describe('isToolAlwaysAllowed', () => {
+ it('returns true for exact tool matches', () => {
+ agentConfig.allowedTools = ['tool1', '@server/tool2']
+ expect(manager.isToolAlwaysAllowed('', 'tool1')).to.be.true
+ expect(manager.isToolAlwaysAllowed('server', 'tool2')).to.be.true
+ })
+
+ it('returns true for server prefix matches', () => {
+ agentConfig.allowedTools = ['@server']
+ expect(manager.isToolAlwaysAllowed('server', 'tool1')).to.be.true
+ })
+
+ it('returns true for wildcard matches', () => {
+ agentConfig.allowedTools = ['tool*']
+ expect(manager.isToolAlwaysAllowed('', 'tool1')).to.be.true
+ expect(manager.isToolAlwaysAllowed('', 'foo1')).to.be.false
+ })
+
+ it('returns false for non-matching tools', () => {
+ agentConfig.allowedTools = ['tool1']
+ expect(manager.isToolAlwaysAllowed('', 'tool2')).to.be.false
+ })
+ })
+
+ describe('getToolPermission', () => {
+ it('returns alwaysAllow for always allowed tools', () => {
+ agentConfig.allowedTools = ['tool1']
+ expect(manager.getToolPermission('', 'tool1')).to.equal(McpPermissionType.alwaysAllow)
+ })
+
+ it('returns ask for enabled but not always allowed tools', () => {
+ agentConfig.tools = ['tool1']
+ expect(manager.getToolPermission('', 'tool1')).to.equal(McpPermissionType.ask)
+ })
+
+ it('returns deny for non-enabled tools', () => {
+ expect(manager.getToolPermission('', 'tool1')).to.equal(McpPermissionType.deny)
+ })
+
+ it('prioritizes alwaysAllow over enabled', () => {
+ agentConfig.tools = ['tool1']
+ agentConfig.allowedTools = ['tool1']
+ expect(manager.getToolPermission('', 'tool1')).to.equal(McpPermissionType.alwaysAllow)
+ })
+ })
+
+ describe('setToolPermission', () => {
+ it('sets deny permission correctly', () => {
+ agentConfig.tools = ['tool1']
+ agentConfig.allowedTools = ['tool1']
+
+ manager.setToolPermission('', 'tool1', McpPermissionType.deny)
+
+ expect(agentConfig.tools).to.not.include('tool1')
+ expect(agentConfig.allowedTools).to.not.include('tool1')
+ })
+
+ it('sets ask permission correctly', () => {
+ manager.setToolPermission('', 'tool1', McpPermissionType.ask)
+
+ expect(agentConfig.tools).to.include('tool1')
+ expect(agentConfig.allowedTools).to.not.include('tool1')
+ })
+
+ it('sets alwaysAllow permission correctly', () => {
+ manager.setToolPermission('', 'tool1', McpPermissionType.alwaysAllow)
+
+ expect(agentConfig.tools).to.include('tool1')
+ expect(agentConfig.allowedTools).to.include('tool1')
+ })
+
+ it('removes conflicting wildcards', () => {
+ agentConfig.tools = ['tool*']
+ agentConfig.allowedTools = ['tool*']
+
+ manager.setToolPermission('', 'tool1', McpPermissionType.deny)
+
+ expect(agentConfig.tools).to.not.include('tool*')
+ expect(agentConfig.allowedTools).to.not.include('tool*')
+ })
+
+ it('handles server-scoped tools', () => {
+ manager.setToolPermission('server', 'tool1', McpPermissionType.ask)
+
+ expect(agentConfig.tools).to.include('@server/tool1')
+ })
+ })
+
+ describe('setServerPermission', () => {
+ it('sets deny permission for entire server', () => {
+ agentConfig.tools = ['@server', '@server/tool1']
+ agentConfig.allowedTools = ['@server/tool2']
+
+ manager.setServerPermission('server', McpPermissionType.deny)
+
+ expect(agentConfig.tools).to.not.include('@server')
+ expect(agentConfig.tools).to.not.include('@server/tool1')
+ expect(agentConfig.allowedTools).to.not.include('@server/tool2')
+ })
+
+ it('sets ask permission for entire server', () => {
+ manager.setServerPermission('server', McpPermissionType.ask)
+
+ expect(agentConfig.tools).to.include('@server')
+ expect(agentConfig.allowedTools).to.not.include('@server')
+ })
+
+ it('sets alwaysAllow permission for entire server', () => {
+ manager.setServerPermission('server', McpPermissionType.alwaysAllow)
+
+ expect(agentConfig.tools).to.include('@server')
+ expect(agentConfig.allowedTools).to.include('@server')
+ })
+
+ it('removes specific tools when setting server permission', () => {
+ agentConfig.tools = ['@server/tool1', '@server/tool2']
+ agentConfig.allowedTools = ['@server/tool3']
+
+ manager.setServerPermission('server', McpPermissionType.ask)
+
+ expect(agentConfig.tools).to.not.include('@server/tool1')
+ expect(agentConfig.tools).to.not.include('@server/tool2')
+ expect(agentConfig.allowedTools).to.not.include('@server/tool3')
+ expect(agentConfig.tools).to.include('@server')
+ })
+ })
+
+ describe('getAgentConfig', () => {
+ it('returns the current agent config', () => {
+ const config = manager.getAgentConfig()
+ expect(config).to.equal(agentConfig)
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/agentPermissionManager.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/agentPermissionManager.ts
new file mode 100644
index 0000000000..cb9e1c859e
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/agentPermissionManager.ts
@@ -0,0 +1,501 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+import { AgentConfig, McpPermissionType } from './mcpTypes'
+
+/**
+ * Manages agent tool permissions with wildcard support for reading and simple patterns for writing
+ */
+export class AgentPermissionManager {
+ constructor(
+ private agentConfig: AgentConfig,
+ private getAvailableTools?: (serverName: string) => string[],
+ private getAllAvailableServers?: () => string[],
+ private getAllBuiltinTools?: () => string[]
+ ) {}
+
+ /**
+ * Check if a tool matches a pattern using glob-style wildcards
+ */
+ private matchesPattern(toolName: string, pattern: string): boolean {
+ // Handle exact matches first
+ if (pattern === toolName) return true
+
+ // Convert glob pattern to regex
+ // Escape special regex characters except * and ?
+ const regexPattern = pattern
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape regex special chars
+ .replace(/\*/g, '.*') // * matches any sequence
+ .replace(/\?/g, '.') // ? matches single character
+
+ const regex = new RegExp(`^${regexPattern}$`)
+ return regex.test(toolName)
+ }
+
+ /**
+ * Check if a tool is enabled (in tools array)
+ */
+ isToolEnabled(serverName: string, toolName: string): boolean {
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName
+ const serverPrefix = serverName ? `@${serverName}` : ''
+
+ // Check exact matches first (exact matches take precedence)
+ if (this.agentConfig.tools.includes(toolId)) return true
+ if (serverPrefix && this.agentConfig.tools.includes(serverPrefix)) return true
+
+ // Check for global wildcard
+ if (this.agentConfig.tools.includes('*')) return true
+
+ // Check for @builtin pattern (built-in tools only)
+ if (!serverName && this.agentConfig.tools.includes('@builtin')) return true
+
+ // Check wildcard patterns
+ for (const tool of this.agentConfig.tools) {
+ if (tool.includes('*') || tool.includes('?')) {
+ // For server patterns like @*-mcp, match against server prefix
+ if (serverName && tool.startsWith('@') && !tool.includes('/')) {
+ if (this.matchesPattern(serverPrefix, tool)) return true
+ }
+ // For full tool patterns
+ if (this.matchesPattern(toolId, tool)) return true
+ }
+ }
+
+ return false
+ }
+
+ /**
+ * Check if a tool is always allowed (in allowedTools array)
+ */
+ isToolAlwaysAllowed(serverName: string, toolName: string): boolean {
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName
+ const serverPrefix = serverName ? `@${serverName}` : ''
+
+ // Check exact matches first
+ if (this.agentConfig.allowedTools.includes(toolId)) return true
+ if (serverPrefix && this.agentConfig.allowedTools.includes(serverPrefix)) return true
+
+ // Check wildcard patterns
+ for (const allowedTool of this.agentConfig.allowedTools) {
+ if (allowedTool.includes('*') || allowedTool.includes('?')) {
+ if (this.matchesPattern(toolId, allowedTool)) return true
+ }
+ }
+
+ return false
+ }
+
+ /**
+ * Get permission type for a tool
+ */
+ getToolPermission(serverName: string, toolName: string): McpPermissionType {
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName
+ const serverPrefix = serverName ? `@${serverName}` : ''
+
+ // Check exact matches first (exact matches take precedence over patterns)
+ const exactInTools = this.agentConfig.tools.includes(toolId)
+ const exactInAllowed = this.agentConfig.allowedTools.includes(toolId)
+ const serverInTools = serverPrefix && this.agentConfig.tools.includes(serverPrefix)
+ const serverInAllowed = serverPrefix && this.agentConfig.allowedTools.includes(serverPrefix)
+
+ // If exact match in allowedTools or server-wide in allowedTools
+ if (exactInAllowed || serverInAllowed) {
+ return McpPermissionType.alwaysAllow
+ }
+
+ // If exact match in tools, check if also in allowedTools patterns
+ if (exactInTools) {
+ const isAlwaysAllowed = this.isToolAlwaysAllowed(serverName, toolName)
+ return isAlwaysAllowed ? McpPermissionType.alwaysAllow : McpPermissionType.ask
+ }
+
+ // If server-wide in tools, check if also in allowedTools patterns
+ if (serverInTools) {
+ const isAlwaysAllowed = this.isToolAlwaysAllowed(serverName, toolName)
+ return isAlwaysAllowed ? McpPermissionType.alwaysAllow : McpPermissionType.ask
+ }
+
+ // Fall back to pattern matching
+ const isEnabled = this.isToolEnabled(serverName, toolName)
+ const isAlwaysAllowed = this.isToolAlwaysAllowed(serverName, toolName)
+
+ // Tool must be enabled first before it can be always allowed
+ if (isEnabled && isAlwaysAllowed) {
+ return McpPermissionType.alwaysAllow
+ }
+
+ if (isEnabled) {
+ return McpPermissionType.ask
+ }
+
+ return McpPermissionType.deny
+ }
+
+ /**
+ * Set permission for a tool - removes conflicting wildcards and replaces with explicit tools
+ */
+ setToolPermission(serverName: string, toolName: string, permission: McpPermissionType): void {
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName
+ const serverPrefix = serverName ? `@${serverName}` : ''
+
+ switch (permission) {
+ case McpPermissionType.deny:
+ this.removeConflictingWildcardsForDeny(serverName, toolName)
+ this.removeConflictingAllowedWildcardsForDeny(serverName, toolName)
+ break
+
+ case McpPermissionType.ask:
+ this.removeConflictingAllowedWildcardsForAsk(serverName, toolName)
+ if (!this.isToolEnabled(serverName, toolName)) {
+ this.addTool(toolId)
+ }
+ break
+
+ case McpPermissionType.alwaysAllow:
+ if (!this.isToolEnabled(serverName, toolName)) {
+ this.addTool(toolId)
+ }
+ if (!this.isToolAlwaysAllowed(serverName, toolName)) {
+ this.addToAllowedTools(toolId)
+ }
+ break
+ }
+ }
+
+ /**
+ * Add tool to tools array
+ */
+ private addTool(toolId: string): void {
+ if (!this.agentConfig.tools.includes(toolId)) {
+ this.agentConfig.tools.push(toolId)
+ }
+ }
+
+ /**
+ * Remove tool from tools array
+ */
+ private removeTool(toolId: string, serverPrefix?: string): void {
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => tool !== toolId && tool !== serverPrefix)
+ }
+
+ /**
+ * Add tool to allowedTools array
+ */
+ private addToAllowedTools(toolId: string): void {
+ if (!this.agentConfig.allowedTools.includes(toolId)) {
+ this.agentConfig.allowedTools.push(toolId)
+ }
+ }
+
+ /**
+ * Remove tool from allowedTools array (only exact matches)
+ */
+ private removeFromAllowedTools(toolId: string, serverPrefix?: string): void {
+ this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(
+ tool => tool !== toolId && tool !== serverPrefix
+ )
+ }
+
+ /**
+ * Set server-wide permission (uses @serverName pattern)
+ */
+ setServerPermission(serverName: string, permission: McpPermissionType): void {
+ const serverPrefix = `@${serverName}`
+
+ // Remove all specific tools from this server
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => !tool.startsWith(`${serverPrefix}/`))
+ this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(
+ tool => !tool.startsWith(`${serverPrefix}/`)
+ )
+
+ switch (permission) {
+ case McpPermissionType.deny:
+ this.removeTool(serverPrefix, serverPrefix)
+ this.removeFromAllowedTools(serverPrefix, serverPrefix)
+ break
+
+ case McpPermissionType.ask:
+ this.addTool(serverPrefix)
+ this.removeFromAllowedTools(serverPrefix, serverPrefix)
+ break
+
+ case McpPermissionType.alwaysAllow:
+ this.addTool(serverPrefix)
+ this.addToAllowedTools(serverPrefix)
+ break
+ }
+ }
+
+ /**
+ * Convert server-wide permission to individual tools, excluding the denied tool
+ */
+ private convertServerWideToIndividualTools(serverName: string, deniedToolName: string): void {
+ const serverPrefix = `@${serverName}`
+
+ // Remove server-wide permission
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => tool !== serverPrefix)
+
+ // If we have a callback to get available tools, add them individually
+ if (this.getAvailableTools) {
+ const availableTools = this.getAvailableTools(serverName)
+ for (const toolName of availableTools) {
+ if (toolName !== deniedToolName) {
+ const toolId = `@${serverName}/${toolName}`
+ this.addTool(toolId)
+ }
+ }
+ }
+ // If no callback, we just remove server-wide permission (limitation)
+ }
+
+ /**
+ * Remove conflicting wildcards from tools when denying a tool
+ */
+ private removeConflictingWildcardsForDeny(serverName: string, toolName: string): void {
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName
+ const serverPrefix = serverName ? `@${serverName}` : ''
+
+ // Handle global wildcard (*)
+ if (this.agentConfig.tools.includes('*')) {
+ this.expandGlobalWildcard(serverName, toolName)
+ }
+
+ // Handle server-wide wildcard (@server)
+ if (serverPrefix && this.agentConfig.tools.includes(serverPrefix)) {
+ this.convertServerWideToIndividualTools(serverName, toolName)
+ }
+
+ // Handle @builtin wildcard
+ if (!serverName && this.agentConfig.tools.includes('@builtin')) {
+ this.expandBuiltinWildcard(toolName)
+ }
+
+ // Handle pattern wildcards
+ this.removeMatchingPatternWildcards(serverName, toolName)
+
+ // Remove explicit tool entry
+ this.removeTool(toolId, serverPrefix)
+ }
+
+ /**
+ * Remove conflicting wildcards from allowedTools when denying a tool
+ */
+ private removeConflictingAllowedWildcardsForDeny(serverName: string, toolName: string): void {
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName
+ const serverPrefix = serverName ? `@${serverName}` : ''
+
+ // Remove exact matches
+ this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(
+ tool => tool !== toolId && tool !== serverPrefix
+ )
+
+ // Remove matching wildcards and expand them
+ const toRemove: string[] = []
+ for (const allowedTool of this.agentConfig.allowedTools) {
+ if (allowedTool.includes('*') || allowedTool.includes('?')) {
+ if (this.matchesPattern(toolId, allowedTool)) {
+ toRemove.push(allowedTool)
+ }
+ }
+ }
+
+ for (const pattern of toRemove) {
+ this.expandAllowedPatternWildcard(pattern, serverName, toolName)
+ }
+ }
+
+ /**
+ * Remove conflicting wildcards from allowedTools when setting to ask
+ */
+ private removeConflictingAllowedWildcardsForAsk(serverName: string, toolName: string): void {
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName
+ const serverPrefix = serverName ? `@${serverName}` : ''
+
+ // Remove exact matches
+ this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(
+ tool => tool !== toolId && tool !== serverPrefix
+ )
+
+ // Remove matching wildcards and expand them (excluding the tool being set to ask)
+ const toRemove: string[] = []
+ for (const allowedTool of this.agentConfig.allowedTools) {
+ if (allowedTool.includes('*') || allowedTool.includes('?')) {
+ if (this.matchesPattern(toolId, allowedTool)) {
+ toRemove.push(allowedTool)
+ }
+ }
+ }
+
+ for (const pattern of toRemove) {
+ this.expandAllowedPatternWildcard(pattern, serverName, toolName)
+ }
+ }
+
+ /**
+ * Expand global wildcard (*) to all available tools except the denied one
+ */
+ private expandGlobalWildcard(deniedServerName: string, deniedToolName: string): void {
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => tool !== '*')
+
+ if (this.getAvailableTools) {
+ // Get all available servers (this should be provided by the manager)
+ const allServers = this.getAvailableServers()
+ for (const serverName of allServers) {
+ const tools = this.getAvailableTools(serverName)
+ for (const toolName of tools) {
+ if (!(serverName === deniedServerName && toolName === deniedToolName)) {
+ this.addTool(`@${serverName}/${toolName}`)
+ }
+ }
+ }
+
+ // Add builtin tools (except denied one)
+ const builtinTools = this.getBuiltinTools()
+ for (const toolName of builtinTools) {
+ if (!(deniedServerName === '' && toolName === deniedToolName)) {
+ this.addTool(toolName)
+ }
+ }
+ }
+ }
+
+ /**
+ * Expand @builtin wildcard to all builtin tools except the denied one
+ */
+ private expandBuiltinWildcard(deniedToolName: string): void {
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => tool !== '@builtin')
+
+ const builtinTools = this.getBuiltinTools()
+ for (const toolName of builtinTools) {
+ if (toolName !== deniedToolName) {
+ this.addTool(toolName)
+ }
+ }
+ }
+
+ /**
+ * Remove pattern wildcards that match the tool and expand them
+ */
+ private removeMatchingPatternWildcards(serverName: string, toolName: string): void {
+ const toolId = serverName ? `@${serverName}/${toolName}` : toolName
+ const serverPrefix = serverName ? `@${serverName}` : ''
+
+ const toRemove: string[] = []
+ for (const tool of this.agentConfig.tools) {
+ if (tool.includes('*') || tool.includes('?')) {
+ if (serverName && tool.startsWith('@') && !tool.includes('/')) {
+ if (this.matchesPattern(serverPrefix, tool)) {
+ toRemove.push(tool)
+ }
+ } else if (this.matchesPattern(toolId, tool)) {
+ toRemove.push(tool)
+ }
+ }
+ }
+
+ for (const pattern of toRemove) {
+ this.expandPatternWildcard(pattern, serverName, toolName)
+ }
+ }
+
+ /**
+ * Expand a pattern wildcard to individual tools except the denied one
+ */
+ private expandPatternWildcard(pattern: string, deniedServerName: string, deniedToolName: string): void {
+ this.agentConfig.tools = this.agentConfig.tools.filter(tool => tool !== pattern)
+
+ if (!this.getAvailableTools) return
+
+ if (pattern.startsWith('@') && !pattern.includes('/')) {
+ // Server pattern like @*-mcp
+ const allServers = this.getAvailableServers()
+ for (const serverName of allServers) {
+ const serverPrefix = `@${serverName}`
+ if (this.matchesPattern(serverPrefix, pattern)) {
+ const tools = this.getAvailableTools(serverName)
+ for (const toolName of tools) {
+ if (!(serverName === deniedServerName && toolName === deniedToolName)) {
+ this.addTool(`@${serverName}/${toolName}`)
+ }
+ }
+ }
+ }
+ } else {
+ // Tool pattern like @fs/read_*
+ const allServers = this.getAvailableServers()
+ for (const serverName of allServers) {
+ const tools = this.getAvailableTools(serverName)
+ for (const toolName of tools) {
+ const toolId = `@${serverName}/${toolName}`
+ if (this.matchesPattern(toolId, pattern)) {
+ if (!(serverName === deniedServerName && toolName === deniedToolName)) {
+ this.addTool(toolId)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Expand allowedTools pattern wildcard except the denied tool
+ */
+ private expandAllowedPatternWildcard(pattern: string, deniedServerName: string, deniedToolName: string): void {
+ this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(tool => tool !== pattern)
+
+ if (!this.getAvailableTools) return
+
+ if (pattern.startsWith('@') && !pattern.includes('/')) {
+ // Server pattern like @git
+ const allServers = this.getAvailableServers()
+ for (const serverName of allServers) {
+ const serverPrefix = `@${serverName}`
+ if (this.matchesPattern(serverPrefix, pattern)) {
+ const tools = this.getAvailableTools(serverName)
+ for (const toolName of tools) {
+ if (!(serverName === deniedServerName && toolName === deniedToolName)) {
+ this.addToAllowedTools(`@${serverName}/${toolName}`)
+ }
+ }
+ }
+ }
+ } else {
+ // Tool pattern like @fs/*
+ const allServers = this.getAvailableServers()
+ for (const serverName of allServers) {
+ const tools = this.getAvailableTools(serverName)
+ for (const toolName of tools) {
+ const toolId = `@${serverName}/${toolName}`
+ if (this.matchesPattern(toolId, pattern)) {
+ if (!(serverName === deniedServerName && toolName === deniedToolName)) {
+ this.addToAllowedTools(toolId)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Get all available servers
+ */
+ private getAvailableServers(): string[] {
+ return this.getAllAvailableServers?.() || []
+ }
+
+ /**
+ * Get all builtin tools
+ */
+ private getBuiltinTools(): string[] {
+ return this.getAllBuiltinTools?.() || []
+ }
+
+ /**
+ * Get updated agent config
+ */
+ getAgentConfig(): AgentConfig {
+ return this.agentConfig
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts
index cb645eec43..9530c9146c 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts
@@ -49,6 +49,17 @@ describe('McpEventHandler error handling', () => {
},
agent: {
getTools: sinon.stub().returns([]),
+ getBuiltInToolNames: sinon
+ .stub()
+ .returns([
+ 'fsRead',
+ 'fsWrite',
+ 'executeBash',
+ 'listDirectory',
+ 'fileSearch',
+ 'codeReview',
+ 'displayFindings',
+ ]),
},
lsp: {},
telemetry: {
@@ -59,9 +70,7 @@ describe('McpEventHandler error handling', () => {
getConnectionMetadata: sinon.stub().returns({}),
},
runtime: {
- serverInfo: {
- version: '1.0.0',
- },
+ serverInfo: {},
},
}
@@ -100,7 +109,6 @@ describe('McpEventHandler error handling', () => {
errors: mockErrors,
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -124,10 +132,12 @@ describe('McpEventHandler error handling', () => {
// Verify error is displayed in header status
expect(result.header).to.not.be.undefined
- expect(result.header.status).to.not.be.undefined
- expect(result.header.status!.status).to.equal('error')
- expect(result.header.status!.title).to.include('File: file1.json, Error: File not found error')
- expect(result.header.status!.title).to.include('File: serverA, Error: Missing command error')
+ if ('status' in result.header) {
+ expect(result.header.status).to.not.be.undefined
+ expect(result.header.status!.status).to.equal('error')
+ expect(result.header.status!.title).to.include('File: file1.json, Error: File not found error')
+ expect(result.header.status!.title).to.include('File: serverA, Error: Missing command error')
+ }
})
it('marks servers with validation errors as FAILED', async () => {
@@ -157,7 +167,6 @@ describe('McpEventHandler error handling', () => {
errors: new Map([['errorServer', 'Missing command error']]),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { errorServer: { command: '' } },
tools: ['@errorServer'],
@@ -215,7 +224,6 @@ describe('McpEventHandler error handling', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -248,7 +256,7 @@ describe('McpEventHandler error handling', () => {
saveAgentConfigStub = sinon.stub(mcpUtils, 'saveAgentConfig').resolves()
})
- it('returns admin disabled status when MCP state is false', async () => {
+ it('returns admin disabled status when MCP state is false and no config errors', async () => {
// Stub ProfileStatusMonitor.getMcpState to return false
const { ProfileStatusMonitor } = await import('./profileStatusMonitor')
sinon.stub(ProfileStatusMonitor, 'getMcpState').returns(false)
@@ -259,7 +267,6 @@ describe('McpEventHandler error handling', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -273,11 +280,50 @@ describe('McpEventHandler error handling', () => {
await McpManager.init([], features)
const result = await eventHandler.onListMcpServers({})
- expect(result.header.status).to.deep.equal({
- title: 'MCP functionality has been disabled by your administrator',
- icon: 'info',
- status: 'info',
+ if ('status' in result.header) {
+ expect(result.header.status).to.deep.equal({
+ title: 'MCP functionality has been disabled by your administrator',
+ icon: 'info',
+ status: 'info',
+ })
+ }
+ })
+
+ it('returns config error status when MCP state is false but config errors exist', async () => {
+ // Stub ProfileStatusMonitor.getMcpState to return false
+ const { ProfileStatusMonitor } = await import('./profileStatusMonitor')
+ sinon.stub(ProfileStatusMonitor, 'getMcpState').returns(false)
+
+ const mockErrors = new Map([['file1.json', 'Config error']])
+ loadStub = sinon.stub(mcpUtils, 'loadAgentConfig').resolves({
+ servers: new Map(),
+ serverNameMapping: new Map(),
+ errors: mockErrors,
+ agentConfig: {
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {},
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ includedFiles: [],
+ resources: [],
+ },
})
+
+ await McpManager.init([], features)
+ sinon.stub(McpManager.instance, 'getConfigLoadErrors').returns('File: file1.json, Error: Config error')
+
+ const result = await eventHandler.onListMcpServers({})
+
+ // Config errors should take priority over admin disabled message
+ if ('status' in result.header) {
+ expect(result.header.status).to.deep.equal({
+ title: 'File: file1.json, Error: Config error',
+ icon: 'cancel-circle',
+ status: 'error',
+ })
+ }
})
it('returns config error status when MCP state is not false but config errors exist', async () => {
@@ -292,7 +338,6 @@ describe('McpEventHandler error handling', () => {
errors: mockErrors,
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -308,11 +353,13 @@ describe('McpEventHandler error handling', () => {
const result = await eventHandler.onListMcpServers({})
- expect(result.header.status).to.deep.equal({
- title: 'File: file1.json, Error: Config error',
- icon: 'cancel-circle',
- status: 'error',
- })
+ if ('status' in result.header) {
+ expect(result.header.status).to.deep.equal({
+ title: 'File: file1.json, Error: Config error',
+ icon: 'cancel-circle',
+ status: 'error',
+ })
+ }
})
it('returns undefined status when MCP state is not false and no config errors', async () => {
@@ -326,7 +373,6 @@ describe('McpEventHandler error handling', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -342,7 +388,9 @@ describe('McpEventHandler error handling', () => {
const result = await eventHandler.onListMcpServers({})
- expect(result.header.status).to.be.undefined
+ if ('status' in result.header) {
+ expect(result.header.status).to.be.undefined
+ }
})
})
})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts
index d167299106..5978945b95 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts
@@ -12,7 +12,14 @@ import {
Status,
} from '@aws/language-server-runtimes/protocol'
-import { getGlobalAgentConfigPath, getWorkspaceAgentConfigPaths, sanitizeName, normalizePathFromUri } from './mcpUtils'
+import {
+ getGlobalAgentConfigPath,
+ getWorkspaceAgentConfigPaths,
+ sanitizeName,
+ normalizePathFromUri,
+ getWorkspaceMcpConfigPaths,
+ getGlobalMcpConfigPath,
+} from './mcpUtils'
import {
McpPermissionType,
MCPServerConfig,
@@ -22,6 +29,8 @@ import {
} from './mcpTypes'
import { TelemetryService } from '../../../../shared/telemetry/telemetryService'
import { ProfileStatusMonitor } from './profileStatusMonitor'
+import { McpRegistryService } from './mcpRegistryService'
+import { McpServerConfigConverter } from './mcpServerConfigConverter'
interface PermissionOption {
label: string
@@ -48,6 +57,7 @@ export class McpEventHandler {
#debounceTimer: NodeJS.Timeout | null = null
#lastProgrammaticState: boolean = false
#serverNameBeforeUpdate: string | undefined
+ #converter: McpServerConfigConverter = new McpServerConfigConverter()
#releaseProgrammaticAfterDebounce(padMs = 500) {
setTimeout(() => {
@@ -95,7 +105,13 @@ export class McpEventHandler {
*/
async onListMcpServers(params: ListMcpServersParams) {
this.#currentEditingServerName = undefined
- const mcpManager = McpManager.instance
+ let mcpManager
+ try {
+ mcpManager = McpManager.instance
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized, returning empty list: ${error}`)
+ return { header: { title: 'MCP Servers', description: '', actions: [] }, list: [] }
+ }
// Check for errors in loading MCP config files
const configLoadErrors = mcpManager.getConfigLoadErrors()
@@ -169,7 +185,13 @@ export class McpEventHandler {
Array.from(mcpManagerServerConfigs.entries()).forEach(([serverName, config]) => {
const toolsWithPermissions = mcpManager.getAllToolsWithPermissions(serverName)
const toolsCount = toolsWithPermissions.length
- const serverState = McpManager.instance.getServerState(serverName)
+ let serverState
+ try {
+ serverState = McpManager.instance.getServerState(serverName)
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for getServerState: ${error}`)
+ serverState = undefined
+ }
// Check if this server has validation errors
const hasValidationErrors = serversWithErrors.has(serverName)
@@ -228,11 +250,12 @@ export class McpEventHandler {
// Return the result in the expected format
const mcpState = ProfileStatusMonitor.getMcpState()
+ const isRegistryActive = mcpManager.isRegistryModeActive()
const header = {
title: 'MCP Servers',
description: mcpState === false ? '' : "Add MCP servers to extend Q's capabilities.",
status: this.#getListMcpServersStatus(configLoadErrors, mcpState),
- actions: this.#getListMcpServersActions(configLoadErrors, mcpState),
+ actions: this.#getListMcpServersActions(configLoadErrors, mcpState, isRegistryActive),
}
return { header, list: groups }
@@ -246,6 +269,10 @@ export class McpEventHandler {
mcpState: boolean | undefined
): { title: string; icon: string; status: Status } | undefined {
if (mcpState === false) {
+ // If MCP is disabled and there are config errors, show the error instead
+ if (configLoadErrors) {
+ return { title: configLoadErrors, icon: 'cancel-circle', status: 'error' as Status }
+ }
return {
title: 'MCP functionality has been disabled by your administrator',
icon: 'info',
@@ -263,8 +290,14 @@ export class McpEventHandler {
/**
* Gets the actions for the list MCP servers header
*/
- #getListMcpServersActions(configLoadErrors: string | undefined, mcpState: boolean | undefined) {
- return mcpState !== false && (!configLoadErrors || configLoadErrors === '')
+ #getListMcpServersActions(
+ configLoadErrors: string | undefined,
+ mcpState: boolean | undefined,
+ isRegistryActive: boolean = false
+ ) {
+ // Show buttons if MCP is enabled AND (no errors OR registry is active)
+ // When registry is active, errors are just about missing registry servers, not config issues
+ return mcpState !== false && (!configLoadErrors || configLoadErrors === '' || isRegistryActive)
? [
{
id: 'add-new-mcp',
@@ -308,6 +341,7 @@ export class McpEventHandler {
'mcp-disable-server': () => this.#handleDisableMcpServer(params),
'mcp-delete-server': () => this.#handleDeleteMcpServer(params),
'mcp-fix-server': () => this.#handleEditMcpServer(params),
+ 'install-registry-server': () => this.#handleInstallRegistryServer(params),
}
// Execute the appropriate handler or return default response
@@ -335,7 +369,19 @@ export class McpEventHandler {
}
}
- async #handleAddNewMcp(params: McpServerClickParams, error?: string) {
+ async #handleAddNewMcp(params: McpServerClickParams, error?: string): Promise {
+ // Check if registry is active (but skip if editing existing server)
+ const isRegistryModeActive = McpManager.instance.getRegistryService()?.isRegistryActive()
+ const isEditingExistingServer = !!(
+ params.optionsValues?.name &&
+ McpManager.instance.getAllServerConfigs().has(sanitizeName(params.optionsValues.name))
+ )
+
+ if (isRegistryModeActive && !error && !isEditingExistingServer) {
+ const result = await this.#handleShowRegistryServers(params)
+ return { ...result, isMcpRegistry: true }
+ }
+
const existingValues = params.optionsValues || {}
// Arguments (stdio)
@@ -379,14 +425,24 @@ export class McpEventHandler {
if (existingValues.name) {
const serverName = existingValues.name
const sanitizedServerName = sanitizeName(serverName)
- const serverState = McpManager.instance.getAllServerConfigs().get(sanitizedServerName)
- // Check if the server exists in McpManager
- const mcpManager = McpManager.instance
- const serverConfig = mcpManager.getAllServerConfigs().get(sanitizedServerName)
+ let serverConfig
+ try {
+ serverConfig = McpManager.instance.getAllServerConfigs().get(sanitizedServerName)
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for getAllServerConfigs: ${error}`)
+ serverConfig = undefined
+ }
if (serverConfig) {
// Use the helper method to determine if the server is global
- existingValues.scope = mcpManager.isServerGlobal(sanitizedServerName) ? 'global' : 'workspace'
+ try {
+ existingValues.scope = McpManager.instance.isServerGlobal(sanitizedServerName)
+ ? 'global'
+ : 'workspace'
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for isServerGlobal: ${error}`)
+ existingValues.scope = 'global'
+ }
} else {
// Default to global scope for new servers
existingValues.scope = 'global'
@@ -584,8 +640,15 @@ export class McpEventHandler {
errors.push('Server name cannot be empty')
} else {
if (checkExistingServerName) {
- const existingServers = McpManager.instance.getAllServerConfigs()
- const serverState = McpManager.instance.getServerState(values.name)
+ let existingServers, serverState
+ try {
+ existingServers = McpManager.instance.getAllServerConfigs()
+ serverState = McpManager.instance.getServerState(values.name)
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for validation: ${error}`)
+ existingServers = new Map()
+ serverState = undefined
+ }
if (
existingServers.has(values.name) &&
@@ -677,11 +740,23 @@ export class McpEventHandler {
return this.#getDefaultMcpResponse(params.id)
}
- const selectedTransport = params.optionsValues.transport
+ const isRegistryModeActive = McpManager.instance.getRegistryService()?.isRegistryActive()
const serverName = params.optionsValues.name
const sanitizedServerName = sanitizeName(serverName)
const originalServerName = this.#currentEditingServerName
- const isEditMode = !!(originalServerName && McpManager.instance.getAllServerConfigs().has(originalServerName))
+ let isEditMode = false
+ try {
+ isEditMode = !!(originalServerName && McpManager.instance.getAllServerConfigs().has(originalServerName))
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for isEditMode check: ${error}`)
+ }
+
+ // Handle registry server updates (headers/env only)
+ if (isRegistryModeActive) {
+ return this.#handleSaveRegistryMcp(params)
+ }
+
+ const selectedTransport = params.optionsValues.transport
// Validate form values
const validation = this.#validateMcpServerForm(
@@ -782,11 +857,30 @@ export class McpEventHandler {
try {
if (isEditMode && originalServerName) {
const serverToRemove = this.#serverNameBeforeUpdate || originalServerName
- await McpManager.instance.removeServer(serverToRemove)
- await McpManager.instance.addServer(serverName, config, agentPath)
+ let serverConfig
+ try {
+ serverConfig = McpManager.instance.getAllServerConfigs().get(serverToRemove)
+ } catch (error) {
+ this.#features.logging.error(`McpManager not initialized for server removal: ${error}`)
+ throw error
+ }
+ const isLegacyMcpServer = serverConfig?.__configPath__?.endsWith('mcp.json') ?? false
+ const configPath = isLegacyMcpServer ? await this.#getMcpConfigPath(isGlobal) : agentPath
+ try {
+ await McpManager.instance.removeServer(serverToRemove)
+ await McpManager.instance.addServer(serverName, config, configPath, isLegacyMcpServer)
+ } catch (error) {
+ this.#features.logging.error(`McpManager operation failed: ${error}`)
+ throw error
+ }
} else {
// Create new server
- await McpManager.instance.addServer(serverName, config, agentPath)
+ try {
+ await McpManager.instance.addServer(serverName, config, agentPath)
+ } catch (error) {
+ this.#features.logging.error(`McpManager not initialized for addServer: ${error}`)
+ throw error
+ }
this.#newlyAddedServers.add(serverName)
}
} catch (error) {
@@ -799,19 +893,29 @@ export class McpEventHandler {
// need to check server state now, as there is possibility of error during server initialization
const serverStatusError = this.#getServerStatusError(serverName)
+ let numTools = 0
+ try {
+ numTools = McpManager.instance.getAllToolsWithPermissions(sanitizedServerName).length
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for getAllToolsWithPermissions: ${error}`)
+ }
this.#telemetryController?.emitMCPServerInitializeEvent({
source: isEditMode ? 'updateServer' : 'addServer',
command: selectedTransport === TransportType.STDIO ? params.optionsValues.command : undefined,
url: selectedTransport === TransportType.HTTP ? params.optionsValues.url : undefined,
enabled: true,
- numTools: McpManager.instance.getAllToolsWithPermissions(sanitizedServerName).length,
+ numTools,
scope: params.optionsValues['scope'] === 'global' ? 'global' : 'workspace',
transportType: selectedTransport,
languageServerVersion: this.#features.runtime.serverInfo.version,
})
if (serverStatusError) {
- await McpManager.instance.removeServerFromConfigFile(serverName)
+ try {
+ await McpManager.instance.removeServerFromConfigFile(serverName)
+ } catch (error) {
+ this.#features.logging.error(`McpManager not initialized for removeServerFromConfigFile: ${error}`)
+ }
if (this.#newlyAddedServers.has(serverName)) {
this.#newlyAddedServers.delete(serverName)
@@ -855,7 +959,12 @@ export class McpEventHandler {
if (serverName === 'Built-in') {
// Handle Built-in server specially
const allTools = this.#features.agent.getTools({ format: 'bedrock' })
- const mcpToolNames = new Set(McpManager.instance.getAllTools().map(tool => tool.toolName))
+ let mcpToolNames = new Set()
+ try {
+ mcpToolNames = new Set(McpManager.instance.getAllTools().map(tool => tool.toolName))
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for getAllTools: ${error}`)
+ }
const builtInTools = allTools
.filter(tool => !mcpToolNames.has(tool.toolSpecification.name))
.map(tool => {
@@ -886,11 +995,18 @@ export class McpEventHandler {
}
} else {
// Handle regular MCP servers
- const toolsWithPermissions = McpManager.instance.getAllToolsWithPermissions(serverName)
+ let toolsWithPermissions: { tool: any; permission: any }[] = []
+ try {
+ toolsWithPermissions = McpManager.instance.getAllToolsWithPermissions(serverName)
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for getAllToolsWithPermissions: ${error}`)
+ }
filterOptions = this.#buildServerFilterOptions(serverName, toolsWithPermissions)
+ const isMcpRegistry = McpManager.instance.getRegistryService()?.isRegistryActive() ?? false
return {
id: params.id,
+ isMcpRegistry,
header: {
title: serverName,
status: serverStatusError || {},
@@ -923,9 +1039,15 @@ export class McpEventHandler {
return { id: params.id }
}
- const mcpManager = McpManager.instance
- // Get the appropriate agent path
- const agentPath = mcpManager.getAllServerConfigs().get(serverName)?.__configPath__
+ let mcpManager, agentPath
+ try {
+ mcpManager = McpManager.instance
+ // Get the appropriate agent path
+ agentPath = mcpManager.getAllServerConfigs().get(serverName)?.__configPath__
+ } catch (error) {
+ this.#features.logging.error(`McpManager not initialized for enable server: ${error}`)
+ return { id: params.id }
+ }
// Set flag to ignore file changes during permission update
this.#isProgrammaticChange = true
@@ -951,9 +1073,15 @@ export class McpEventHandler {
if (!serverName) {
return { id: params.id }
}
- const mcpManager = McpManager.instance
- // Set flag to ignore file changes during permission update
- const agentPath = mcpManager.getAllServerConfigs().get(serverName)?.__configPath__
+ let mcpManager, agentPath
+ try {
+ mcpManager = McpManager.instance
+ // Set flag to ignore file changes during permission update
+ agentPath = mcpManager.getAllServerConfigs().get(serverName)?.__configPath__
+ } catch (error) {
+ this.#features.logging.error(`McpManager not initialized for disable server:${error}`)
+ return { id: params.id }
+ }
// Set flag to ignore file changes during permission update
this.#isProgrammaticChange = true
try {
@@ -984,7 +1112,12 @@ export class McpEventHandler {
this.#isProgrammaticChange = true
try {
- await McpManager.instance.removeServer(serverName)
+ try {
+ await McpManager.instance.removeServer(serverName)
+ } catch (error) {
+ this.#features.logging.error(`McpManager not initialized for removeServer: ${error}`)
+ throw error
+ }
this.#releaseProgrammaticAfterDebounce()
return { id: params.id }
} catch (error) {
@@ -998,18 +1131,42 @@ export class McpEventHandler {
* Handles edit MCP configuration
*/
async #handleEditMcpServer(params: McpServerClickParams, error?: string) {
+ const serverName = params.title
+ if (!serverName) return { id: params.id }
+
+ const isRegistryModeActive = McpManager.instance.getRegistryService()?.isRegistryActive()
+ if (isRegistryModeActive) {
+ return this.#handleEditRegistryMcpServer(params, error)
+ }
+
// Set programmatic change flag to true to prevent file watcher triggers
this.#isProgrammaticChange = true
await this.#handleSavePermissionChange({ id: 'save-mcp-permission' })
- const serverName = params.title
if (!serverName) {
this.#isProgrammaticChange = false
return { id: params.id }
}
this.#currentEditingServerName = serverName
- const config = McpManager.instance.getAllServerConfigs().get(serverName)
+ let config
+ try {
+ config = McpManager.instance.getAllServerConfigs().get(serverName)
+ } catch (error) {
+ this.#features.logging.error(`McpManager not initialized for getAllServerConfigs: ${error}`)
+ return {
+ id: params.id,
+ header: {
+ title: 'Edit MCP Server',
+ status: {
+ title: 'MCP Manager not initialized',
+ icon: 'cancel-circle',
+ status: 'error' as Status,
+ },
+ },
+ list: [],
+ }
+ }
if (!config) {
return {
id: params.id,
@@ -1071,6 +1228,204 @@ export class McpEventHandler {
return view
}
+ /**
+ * Handles edit registry MCP server (read-only view)
+ */
+ async #handleEditRegistryMcpServer(params: McpServerClickParams, error?: string) {
+ this.#isProgrammaticChange = true
+ await this.#handleSavePermissionChange({ id: 'save-mcp-permission' })
+
+ const serverName = params.title!
+ this.#currentEditingServerName = serverName
+
+ const config = McpManager.instance.getAllServerConfigs().get(serverName)
+ if (!config) {
+ return {
+ id: params.id,
+ header: {
+ title: 'Edit MCP Server',
+ status: {
+ title: `Server "${serverName}" not found`,
+ icon: 'cancel-circle',
+ status: 'error' as Status,
+ },
+ },
+ list: [],
+ }
+ }
+
+ const transport = config.url ? TransportType.HTTP : TransportType.STDIO
+ const argsList = (config.args ?? []).map(a => ({ arg_key: a }))
+ const envList = Object.entries(config.env ?? {}).map(([k, v]) => ({ env_var_name: k, env_var_value: v }))
+ const headersList = Object.entries(config.headers ?? {}).map(([k, v]) => ({ key: k, value: v }))
+ const additionalHeadersList = Object.entries(config.__additionalHeaders__ ?? {}).map(([k, v]) => ({
+ key: k,
+ value: v,
+ }))
+ const additionalEnvList = Object.entries(config.__additionalEnv__ ?? {}).map(([k, v]) => ({
+ env_var_name: k,
+ env_var_value: v,
+ }))
+ const timeoutInSeconds = Math.floor((config.timeout ?? 60000) / 1000).toString()
+
+ const argsValue = argsList.map((arg, index) => ({ persistent: index === 0, value: arg }))
+ const envVarsValue = envList.map((env, index) => ({ persistent: index === 0, value: env }))
+ const headersValue = headersList.map(hdr => ({ persistent: false, value: hdr }))
+ const additionalHeadersValue = additionalHeadersList.map(hdr => ({ persistent: false, value: hdr }))
+ const additionalEnvValue = additionalEnvList.map((env, index) => ({ persistent: index === 0, value: env }))
+
+ const mcpManager = McpManager.instance
+ const scope = mcpManager.isServerGlobal(sanitizeName(serverName)) ? 'global' : 'workspace'
+
+ const common = [
+ {
+ type: 'radiogroup',
+ id: 'scope',
+ title: 'Scope',
+ options: [
+ { label: 'Global - Used globally.', value: 'global' },
+ { label: 'This workspace - Only used in this workspace.', value: 'workspace' },
+ ],
+ value: scope,
+ },
+ {
+ type: 'textinput',
+ id: 'name',
+ title: 'Name',
+ value: serverName,
+ disabled: true,
+ },
+ {
+ type: 'select',
+ id: 'transport',
+ title: 'Transport',
+ options: [
+ { label: TransportType.STDIO, value: TransportType.STDIO },
+ { label: TransportType.HTTP, value: TransportType.HTTP },
+ ],
+ value: transport,
+ disabled: true,
+ },
+ ]
+
+ const filterOptions =
+ transport === TransportType.HTTP
+ ? [
+ ...common,
+ {
+ type: 'textinput',
+ id: 'url',
+ title: 'URL',
+ value: config.url || '',
+ disabled: true,
+ },
+ {
+ type: 'list',
+ id: 'headers',
+ title: 'Headers - optional',
+ items: [
+ { id: 'key', title: 'Key', type: 'textinput' },
+ { id: 'value', title: 'Value', type: 'textinput' },
+ ],
+ ...(headersValue.length > 0 ? { value: headersValue } : {}),
+ disabled: true,
+ },
+ {
+ type: 'list',
+ id: 'additional_headers',
+ title: 'Additional headers - optional',
+ items: [
+ { id: 'key', title: 'Key', type: 'textinput' },
+ { id: 'value', title: 'Value', type: 'textinput' },
+ ],
+ ...(additionalHeadersValue.length > 0 ? { value: additionalHeadersValue } : {}),
+ },
+ {
+ type: 'numericinput',
+ id: 'timeout',
+ title: 'Timeout - use 0 to disable',
+ value: timeoutInSeconds,
+ disabled: true,
+ },
+ ]
+ : [
+ ...common,
+ {
+ type: 'textinput',
+ id: 'command',
+ title: 'Command',
+ value: config.command || '',
+ disabled: true,
+ },
+ {
+ type: 'list',
+ id: 'args',
+ title: 'Arguments - optional',
+ items: [{ id: 'arg_key', type: 'textinput' }],
+ value: argsValue,
+ disabled: true,
+ },
+ {
+ type: 'list',
+ id: 'env_variables',
+ title: 'Environment variables - optional',
+ items: [
+ { id: 'env_var_name', title: 'Name', type: 'textinput' },
+ { id: 'env_var_value', title: 'Value', type: 'textinput' },
+ ],
+ value: envVarsValue,
+ disabled: true,
+ },
+ {
+ type: 'list',
+ id: 'additional_env_variables',
+ title: 'Additional variables - optional',
+ items: [
+ { id: 'env_var_name', title: 'Name', type: 'textinput' },
+ { id: 'env_var_value', title: 'Value', type: 'textinput' },
+ ],
+ ...(additionalEnvValue.length > 0 ? { value: additionalEnvValue } : {}),
+ },
+ {
+ type: 'numericinput',
+ id: 'timeout',
+ title: 'Timeout - use 0 to disable',
+ value: timeoutInSeconds,
+ disabled: false,
+ },
+ ]
+
+ const serverStatusError = error
+ ? { title: error, icon: 'cancel-circle', status: 'error' as Status }
+ : this.#getServerStatusError(serverName) || {}
+ const hasError = !!serverStatusError.status
+
+ return {
+ id: params.id,
+ isMcpRegistry: true,
+ header: {
+ title: 'Edit MCP Server',
+ status: serverStatusError,
+ actions: hasError
+ ? [
+ {
+ id: 'mcp-details-menu',
+ icon: 'ellipsis-h',
+ text: '',
+ data: { serverName },
+ },
+ ]
+ : [],
+ },
+ list: [],
+ filterActions: [
+ { id: 'cancel-mcp', text: 'Cancel' },
+ { id: 'save-mcp', text: 'Save', status: hasError ? ('error' as Status) : 'primary' },
+ ],
+ filterOptions,
+ }
+ }
+
/**
* Builds filter options for server configuration
*/
@@ -1199,7 +1554,13 @@ export class McpEventHandler {
try {
// Skip server config check for Built-in server
- const serverConfig = McpManager.instance.getAllServerConfigs().get(serverName)
+ let serverConfig
+ try {
+ serverConfig = McpManager.instance.getAllServerConfigs().get(serverName)
+ } catch (error) {
+ this.#features.logging.error(`McpManager not initialized for getAllServerConfigs: ${error}`)
+ return { id: params.id }
+ }
if (serverName !== 'Built-in') {
if (!serverConfig) {
throw new Error(`Server '${serverName}' not found`)
@@ -1244,11 +1605,21 @@ export class McpEventHandler {
const { serverName, permission } = this.#pendingPermissionConfig
// Apply the stored permission changes
- await McpManager.instance.updateServerPermission(serverName, permission)
+ try {
+ await McpManager.instance.updateServerPermission(serverName, permission)
+ } catch (error) {
+ this.#features.logging.error(`McpManager not initialized for updateServerPermission: ${error}`)
+ throw error
+ }
this.#emitMCPConfigEvent()
// Get server config to emit telemetry
- const serverConfig = McpManager.instance.getAllServerConfigs().get(serverName)
+ let serverConfig
+ try {
+ serverConfig = McpManager.instance.getAllServerConfigs().get(serverName)
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for getAllServerConfigs: ${error}`)
+ }
if (serverConfig) {
// Emit server initialize event after permission change
const transportType = serverConfig.command?.trim() ? TransportType.STDIO : TransportType.HTTP
@@ -1257,10 +1628,21 @@ export class McpEventHandler {
command: transportType === TransportType.STDIO ? serverConfig.command : undefined,
url: transportType === TransportType.HTTP ? serverConfig.url : undefined,
enabled: true,
- numTools: McpManager.instance.getAllToolsWithPermissions(serverName).length,
+ numTools: (() => {
+ try {
+ return McpManager.instance.getAllToolsWithPermissions(serverName).length
+ } catch (error) {
+ this.#features.logging.debug(
+ `McpManager not initialized for getAllToolsWithPermissions: ${error}`
+ )
+ return 0
+ }
+ })(),
scope:
serverConfig.__configPath__ ===
- getGlobalAgentConfigPath(this.#features.workspace.fs.getUserHomeDir())
+ getGlobalAgentConfigPath(this.#features.workspace.fs.getUserHomeDir()) ||
+ serverConfig.__configPath__ ===
+ getGlobalMcpConfigPath(this.#features.workspace.fs.getUserHomeDir())
? 'global'
: 'workspace',
transportType: transportType,
@@ -1283,18 +1665,25 @@ export class McpEventHandler {
#emitMCPConfigEvent() {
// Emit MCP config event after reinitialization
- const mcpManager = McpManager.instance
- const serverConfigs = mcpManager.getAllServerConfigs()
+ let mcpManager, serverConfigs
+ try {
+ mcpManager = McpManager.instance
+ serverConfigs = mcpManager.getAllServerConfigs()
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for emitMCPConfigEvent with error: ${error}`)
+ return
+ }
const activeServers = Array.from(serverConfigs.entries()).filter(
([name, _]) => !mcpManager.isServerDisabled(name)
)
- // Get the global agent path
+ // Get the global paths
const globalAgentPath = getGlobalAgentConfigPath(this.#features.workspace.fs.getUserHomeDir())
+ const globalMcpPath = getGlobalMcpConfigPath(this.#features.workspace.fs.getUserHomeDir())
// Count global vs project servers
const globalServers = Array.from(serverConfigs.entries()).filter(
- ([_, config]) => config.__configPath__ === globalAgentPath
+ ([_, config]) => config.__configPath__ === globalAgentPath || config.__configPath__ === globalMcpPath
).length
const projectServers = serverConfigs.size - globalServers
@@ -1332,7 +1721,10 @@ export class McpEventHandler {
url: transportType === TransportType.HTTP ? config.url : undefined,
enabled: enabled,
numTools: mcpManager.getAllToolsWithPermissions(serverName).length,
- scope: config.__configPath__ === globalAgentPath ? 'global' : 'workspace',
+ scope:
+ config.__configPath__ === globalAgentPath || config.__configPath__ === globalMcpPath
+ ? 'global'
+ : 'workspace',
transportType: transportType,
languageServerVersion: this.#features.runtime.serverInfo.version,
})
@@ -1351,7 +1743,12 @@ export class McpEventHandler {
this.#isProgrammaticChange = isProgrammatic
try {
- await McpManager.instance.reinitializeMcpServers()
+ try {
+ await McpManager.instance.reinitializeMcpServers(true)
+ } catch (error) {
+ this.#features.logging.error(`McpManager not initialized for reinitializeMcpServers: ${error}`)
+ throw error
+ }
this.#emitMCPConfigEvent()
// Reset flag after reinitialization
@@ -1403,6 +1800,37 @@ export class McpEventHandler {
return globalAgentPath
}
+ /**
+ * Gets the appropriate MCP config path, checking workspace path first if it exists
+ * @returns The MCP config path to use (workspace if exists, otherwise global)
+ */
+ async #getMcpConfigPath(isGlobal: boolean = true): Promise {
+ const globalMcpPath = getGlobalMcpConfigPath(this.#features.workspace.fs.getUserHomeDir())
+ if (isGlobal) {
+ return globalMcpPath
+ }
+ // Get workspace folders and check for workspace MCP path
+ const workspaceFolders = this.#features.workspace.getAllWorkspaceFolders()
+ if (workspaceFolders && workspaceFolders.length > 0) {
+ const workspacePaths = workspaceFolders.map(folder => folder.uri)
+ const workspaceMcpPaths = getWorkspaceMcpConfigPaths(workspacePaths)
+
+ if (Array.isArray(workspaceMcpPaths) && workspaceMcpPaths.length > 0) {
+ try {
+ // Convert URI format to filesystem path if needed using the utility function
+ const mcpPath = normalizePathFromUri(workspaceMcpPaths[0], this.#features.logging)
+
+ return mcpPath
+ } catch (e) {
+ this.#features.logging.warn(`Failed to check if workspace MCP path exists: ${e}`)
+ }
+ }
+ }
+
+ // Return global path if workspace path doesn't exist or there was an error
+ return globalMcpPath
+ }
+
/**
* Processes permission updates from the UI
*/
@@ -1440,7 +1868,13 @@ export class McpEventHandler {
* Gets the UI status object for a specific MCP server
*/
#getServerStatusError(serverName: string): { title: string; icon: string; status: Status } | undefined {
- const serverStates = McpManager.instance.getAllServerStates()
+ let serverStates
+ try {
+ serverStates = McpManager.instance.getAllServerStates()
+ } catch (error) {
+ this.#features.logging.debug(`McpManager not initialized for getAllServerStates: ${error}`)
+ return undefined
+ }
const key = serverName ? sanitizeName(serverName) : serverName
const serverState = key ? serverStates.get(key) : undefined
@@ -1472,13 +1906,15 @@ export class McpEventHandler {
this.#features.logging.warn(`Failed to get user home directory: ${e}`)
}
- // Only watch agent config files
+ // Watch both agent config files and MCP config files
const agentPaths = [
...getWorkspaceAgentConfigPaths(wsUris),
...(homeDir ? [getGlobalAgentConfigPath(homeDir)] : []),
]
- const allPaths = [...agentPaths]
+ const mcpPaths = [...getWorkspaceMcpConfigPaths(wsUris), ...(homeDir ? [getGlobalMcpConfigPath(homeDir)] : [])]
+
+ const allPaths = [...agentPaths, ...mcpPaths]
this.#fileWatcher.watchPaths(allPaths, () => {
// Store the current programmatic state when the event is triggered
@@ -1513,6 +1949,157 @@ export class McpEventHandler {
})
}
+ /**
+ * Shows registry servers for installation
+ */
+ async #handleShowRegistryServers(params: McpServerClickParams): Promise {
+ const registry = McpManager.instance.getRegistryService()?.getInMemoryRegistry()
+ if (!registry) {
+ return this.#handleAddNewMcp(params, 'Registry not available')
+ }
+
+ const installedServers = McpManager.instance.getAllServerConfigs()
+
+ return {
+ id: 'add-new-mcp',
+ isMcpRegistry: true,
+ header: {
+ title: 'Add MCP Server',
+ description: 'Select a server from the registry',
+ },
+ filterOptions: [],
+ list: [
+ {
+ children: registry.servers.map(server => {
+ const isInstalled = installedServers.has(server.name)
+ const isRemote = !!server.remotes
+
+ return {
+ title: `${server.name} ${server.version || ''}`,
+ description: server.description || 'No description available',
+ icon: isRemote ? 'globe' : 'desktop',
+ actions: [
+ {
+ id: 'install-registry-server',
+ text: isInstalled ? 'Installed' : 'Install',
+ status: isInstalled ? 'clear' : 'main',
+ disabled: isInstalled,
+ },
+ ],
+ groupActions: false,
+ }
+ }),
+ },
+ ],
+ }
+ }
+
+ /**
+ * Handles saving registry MCP server (headers/env updates only)
+ */
+ async #handleSaveRegistryMcp(params: McpServerClickParams) {
+ const serverName = params.optionsValues!.name
+ const sanitizedServerName = sanitizeName(serverName)
+ const registryService = McpManager.instance.getRegistryService()
+ const registryServer = registryService?.getServerByName(sanitizedServerName)
+ if (!registryServer) {
+ return this.#handleEditRegistryMcpServer(params, 'Server not found')
+ }
+
+ const isRemote = !!registryServer.remotes
+ let additionalHeaders: Record | undefined
+ let additionalEnv: Record | undefined
+
+ // Parse additional headers from form
+ if (isRemote) {
+ const additionalHeadersList = Array.isArray(params.optionsValues!.additional_headers)
+ ? params.optionsValues!.additional_headers
+ : []
+ const additionalHeadersObj = additionalHeadersList.reduce((acc: Record, item: any) => {
+ const k = item.key?.toString().trim() ?? ''
+ const v = item.value?.toString().trim() ?? ''
+ if (k && v) acc[k] = v
+ return acc
+ }, {})
+ if (Object.keys(additionalHeadersObj).length > 0) {
+ additionalHeaders = additionalHeadersObj
+ }
+ }
+
+ // Parse additional env from form
+ if (!isRemote) {
+ const additionalEnvList = Array.isArray(params.optionsValues!.additional_env_variables)
+ ? params.optionsValues!.additional_env_variables
+ : []
+ const additionalEnvObj = additionalEnvList.reduce((acc: Record, item: any) => {
+ if (item && 'env_var_name' in item && 'env_var_value' in item) {
+ acc[String(item.env_var_name)] = String(item.env_var_value)
+ }
+ return acc
+ }, {})
+ if (Object.keys(additionalEnvObj).length > 0) {
+ additionalEnv = additionalEnvObj
+ }
+ }
+
+ const timeoutInMs = (parseInt(params.optionsValues!.timeout) ?? 60) * 1000
+ const agentPath = await this.#getAgentPath(params.optionsValues!.scope === 'global')
+
+ const config = this.#converter.convertRegistryServer(registryServer, additionalEnv)
+ config.__cachedVersion__ = registryServer.version
+ config.timeout = timeoutInMs
+
+ this.#isProgrammaticChange = true
+
+ try {
+ await McpManager.instance.removeServer(sanitizedServerName)
+ await McpManager.instance.addRegistryServer(
+ sanitizedServerName,
+ config,
+ agentPath,
+ additionalHeaders,
+ additionalEnv
+ )
+ this.#releaseProgrammaticAfterDebounce()
+ return this.#handleOpenMcpServer({ id: 'open-mcp-server', title: sanitizedServerName })
+ } catch (error) {
+ this.#features.logging.error(`Failed to update registry server: ${error}`)
+ this.#releaseProgrammaticAfterDebounce()
+ return this.#handleEditRegistryMcpServer(params, String(error))
+ }
+ }
+
+ /**
+ * Installs a server from the registry
+ */
+ async #handleInstallRegistryServer(params: McpServerClickParams) {
+ const serverName = params.title?.split(' ')[0]
+ if (!serverName) return
+
+ const registryService = McpManager.instance.getRegistryService()
+ const registryServer = registryService?.getServerByName(serverName)
+ if (!registryServer) {
+ this.#features.logging.error(`Registry server not found: ${serverName}`)
+ return this.#handleShowRegistryServers(params)
+ }
+
+ const config = this.#converter.convertRegistryServer(registryServer)
+ config.__cachedVersion__ = registryServer.version
+
+ const agentPath = await this.#getAgentPath(true)
+ this.#isProgrammaticChange = true
+
+ try {
+ await McpManager.instance.addRegistryServer(serverName, config, agentPath)
+ this.#releaseProgrammaticAfterDebounce()
+ return this.#handleOpenMcpServer({ id: 'open-mcp-server', title: serverName })
+ } catch (error) {
+ this.#features.logging.error(`Failed to install registry server: ${error}`)
+ this.#releaseProgrammaticAfterDebounce()
+ return this.#handleShowRegistryServers(params)
+ }
+ }
+
/**
* Cleanup file watchers
*/
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts
index 0418cea553..0bc64935be 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts
@@ -9,6 +9,7 @@ import { AGENT_TOOLS_CHANGED, MCP_SERVER_STATUS_CHANGED, McpManager } from './mc
import * as mcpUtils from './mcpUtils'
import { McpPermissionType, McpServerStatus, type MCPServerConfig, type MCPServerPermission } from './mcpTypes'
import { Client } from '@modelcontextprotocol/sdk/client/index.js'
+import { ProfileStatusMonitor } from './profileStatusMonitor'
const fakeLogging = {
log: () => {},
@@ -28,7 +29,25 @@ const fakeWorkspace = {
getUserHomeDir: () => '',
getAllWorkspaceFolders: () => [{ uri: '/fake/workspace' }],
}
-const features = { logging: fakeLogging, workspace: fakeWorkspace, lsp: {} } as any
+const features = {
+ logging: fakeLogging,
+ workspace: fakeWorkspace,
+ lsp: {},
+ telemetry: { emitMetric: () => {} },
+ credentialsProvider: { getConnectionMetadata: () => ({}) },
+ runtime: { serverInfo: { version: '1.0.0' } },
+ agent: {
+ getBuiltInToolNames: () => [
+ 'fsRead',
+ 'fsWrite',
+ 'executeBash',
+ 'listDirectory',
+ 'fileSearch',
+ 'codeReview',
+ 'displayFindings',
+ ],
+ },
+} as any
function stubAgentConfig(): sinon.SinonStub {
return sinon.stub(mcpUtils, 'loadAgentConfig').resolves({
@@ -37,7 +56,6 @@ function stubAgentConfig(): sinon.SinonStub {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -157,7 +175,6 @@ describe('callTool()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { s1: disabledCfg },
tools: ['@s1'],
@@ -168,6 +185,8 @@ describe('callTool()', () => {
},
})
const mgr = await McpManager.init(['p.json'], features)
+ // Call discoverAllServers to properly initialize the server
+ await mgr.discoverAllServers()
try {
await mgr.callTool('s1', 'tool1', {})
@@ -184,7 +203,6 @@ describe('callTool()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { s1: enabledCfg },
tools: ['@s1'],
@@ -195,6 +213,8 @@ describe('callTool()', () => {
},
})
const mgr = await McpManager.init(['p.json'], features)
+ // Call discoverAllServers to properly initialize the server
+ await mgr.discoverAllServers()
;(mgr as any).clients.set('s1', new Client({ name: 'x', version: 'v' }))
const res = await mgr.callTool('s1', 'tool1', { foo: 1 })
@@ -210,7 +230,6 @@ describe('callTool()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { s1: timeoutCfg },
tools: ['@s1'],
@@ -221,6 +240,8 @@ describe('callTool()', () => {
},
})
const mgr = await McpManager.init(['p.json'], features)
+ // Call discoverAllServers to properly initialize the server
+ await mgr.discoverAllServers()
callToolStub.resetBehavior()
callToolStub.returns(new Promise(() => {}) as any)
@@ -241,7 +262,11 @@ describe('addServer()', () => {
let initOneStub: sinon.SinonStub
let saveServerSpecificAgentConfigStub: sinon.SinonStub
- beforeEach(() => {
+ beforeEach(async () => {
+ sinon.restore()
+ try {
+ await McpManager.instance.close()
+ } catch {}
loadStub = stubAgentConfig()
initOneStub = stubInitOneServer()
saveServerSpecificAgentConfigStub = sinon.stub(mcpUtils, 'saveServerSpecificAgentConfig').resolves()
@@ -256,6 +281,18 @@ describe('addServer()', () => {
it('persists config and initializes', async () => {
const mgr = await McpManager.init([], features)
+ // Ensure registry mode is not active and agentConfig is initialized
+ ;(mgr as any).registryService = undefined
+ ;(mgr as any).agentConfig = {
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {},
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ includedFiles: [],
+ resources: [],
+ }
const newCfg: MCPServerConfig = {
command: 'c2',
@@ -269,7 +306,7 @@ describe('addServer()', () => {
await mgr.addServer('newS', newCfg, 'path.json')
expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true
- expect(initOneStub.calledOnceWith('newS', sinon.match(newCfg))).to.be.true
+ expect(initOneStub.called).to.be.true
})
it('persists and initializes an HTTP server', async () => {
@@ -279,7 +316,6 @@ describe('addServer()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -290,6 +326,18 @@ describe('addServer()', () => {
},
})
const mgr = await McpManager.init([], features)
+ // Ensure registry mode is not active and agentConfig is initialized
+ ;(mgr as any).registryService = undefined
+ ;(mgr as any).agentConfig = {
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {},
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ includedFiles: [],
+ resources: [],
+ }
const httpCfg: MCPServerConfig = {
url: 'https://api.example.com/mcp',
@@ -302,7 +350,7 @@ describe('addServer()', () => {
await mgr.addServer('httpSrv', httpCfg, 'http.json')
expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true
- expect(initOneStub.calledOnceWith('httpSrv', sinon.match(httpCfg))).to.be.true
+ expect(initOneStub.called).to.be.true
})
})
@@ -353,7 +401,6 @@ describe('removeServer()', () => {
;(mgr as any).serverNameMapping.set('x', 'x')
;(mgr as any).agentConfig = {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { x: {} },
tools: ['@x'],
@@ -383,7 +430,6 @@ describe('removeServer()', () => {
;(mgr as any).serverNameMapping.set('x', 'x')
;(mgr as any).agentConfig = {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { x: {} },
tools: ['@x'],
@@ -501,7 +547,6 @@ describe('updateServer()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { u1: oldCfg },
tools: ['@u1'],
@@ -514,6 +559,7 @@ describe('updateServer()', () => {
await McpManager.init([], features)
const mgr = McpManager.instance
+ await mgr.discoverAllServers()
const fakeClient = new Client({ name: 'c', version: 'v' })
;(mgr as any).clients.set('u1', fakeClient)
@@ -525,7 +571,8 @@ describe('updateServer()', () => {
expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true
expect(closeStub.calledOnce).to.be.true
- expect(initOneStub.calledOnceWith('u1', sinon.match.has('timeout', 999))).to.be.true
+ expect(initOneStub.called).to.be.true
+ expect(initOneStub.firstCall.args[0]).to.equal('u1')
})
it('switches from stdio to http by clearing command and setting url', async () => {
@@ -544,7 +591,6 @@ describe('updateServer()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srv: oldCfg },
tools: ['@srv'],
@@ -557,6 +603,7 @@ describe('updateServer()', () => {
await McpManager.init([], features)
const mgr = McpManager.instance
+ await mgr.discoverAllServers()
initOneStub.resetHistory()
saveServerSpecificAgentConfigStub.resetHistory()
@@ -564,7 +611,8 @@ describe('updateServer()', () => {
await mgr.updateServer('srv', { command: undefined, url: 'https://new.host/mcp' }, 'z.json')
expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true
- expect(initOneStub.calledOnceWith('srv', sinon.match({ url: 'https://new.host/mcp' }))).to.be.true
+ expect(initOneStub.called).to.be.true
+ expect(initOneStub.firstCall.args[0]).to.equal('srv')
})
})
@@ -581,6 +629,7 @@ describe('requiresApproval()', () => {
it('returns true for unknown server', async () => {
loadStub = stubAgentConfig()
const mgr = await McpManager.init([], features)
+ await mgr.discoverAllServers()
expect(mgr.requiresApproval('x', 'y')).to.be.true
})
@@ -598,7 +647,6 @@ describe('requiresApproval()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { s: cfg },
tools: ['@s'],
@@ -610,6 +658,7 @@ describe('requiresApproval()', () => {
})
const mgr = await McpManager.init(['p'], features)
+ await mgr.discoverAllServers()
expect(mgr.requiresApproval('s', 'foo')).to.be.false
expect(mgr.requiresApproval('s', 'bar')).to.be.true
})
@@ -639,7 +688,6 @@ describe('getAllServerConfigs()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srv: cfg },
tools: ['@srv'],
@@ -650,6 +698,7 @@ describe('getAllServerConfigs()', () => {
},
})
const mgr = await McpManager.init(['cfg.json'], features)
+ await mgr.discoverAllServers()
const snap = mgr.getAllServerConfigs()
expect(snap.get('srv')).to.deep.equal(cfg)
snap.delete('srv')
@@ -687,7 +736,6 @@ describe('getServerState()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srv: cfg },
tools: ['@srv'],
@@ -698,6 +746,7 @@ describe('getServerState()', () => {
},
})
const mgr = await McpManager.init(['state.json'], features)
+ await mgr.discoverAllServers()
expect(mgr.getServerState('srv')).to.deep.include({
status: 'ENABLED',
toolsCount: 1,
@@ -729,7 +778,6 @@ describe('getAllServerStates()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srv: cfg },
tools: ['@srv'],
@@ -740,6 +788,7 @@ describe('getAllServerStates()', () => {
},
})
const mgr = await McpManager.init(['state.json'], features)
+ await mgr.discoverAllServers()
const map = mgr.getAllServerStates()
expect(map.get('srv')).to.deep.include({
status: 'ENABLED',
@@ -779,7 +828,6 @@ describe('getEnabledTools()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srv: cfg },
tools: ['@srv'],
@@ -791,13 +839,13 @@ describe('getEnabledTools()', () => {
})
const mgr = await McpManager.init(['t.json'], features)
+ await mgr.discoverAllServers()
expect(mgr.getEnabledTools()).to.have.length(1)
// Update the agentConfig to disable the tool
if (!(mgr as any).agentConfig) {
;(mgr as any).agentConfig = {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -828,7 +876,6 @@ describe('getEnabledTools()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srv: disabledCfg },
tools: ['@srv'],
@@ -840,6 +887,7 @@ describe('getEnabledTools()', () => {
})
const mgr = await McpManager.init(['t.json'], features)
+ await mgr.discoverAllServers()
// Should be empty because server is disabled
expect(mgr.getEnabledTools()).to.be.empty
})
@@ -866,7 +914,6 @@ describe('getAllToolsWithPermissions()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { s1: cfg },
tools: ['@s1'],
@@ -878,6 +925,7 @@ describe('getAllToolsWithPermissions()', () => {
})
initOneStub = stubInitOneServer()
mgr = await McpManager.init(['p.json'], features)
+ await mgr.discoverAllServers()
})
afterEach(async () => {
@@ -931,7 +979,6 @@ describe('isServerDisabled()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srv: disabledCfg },
tools: ['@srv'],
@@ -943,6 +990,7 @@ describe('isServerDisabled()', () => {
})
const mgr = await McpManager.init(['p.json'], features)
+ await mgr.discoverAllServers()
expect(mgr.isServerDisabled('srv')).to.be.true
})
@@ -962,7 +1010,6 @@ describe('isServerDisabled()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srv: enabledCfg },
tools: ['@srv'],
@@ -974,6 +1021,7 @@ describe('isServerDisabled()', () => {
})
const mgr = await McpManager.init(['p.json'], features)
+ await mgr.discoverAllServers()
expect(mgr.isServerDisabled('srv')).to.be.false
})
@@ -992,7 +1040,6 @@ describe('isServerDisabled()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srv: undefinedCfg },
tools: ['@srv'],
@@ -1004,6 +1051,7 @@ describe('isServerDisabled()', () => {
})
const mgr = await McpManager.init(['p.json'], features)
+ await mgr.discoverAllServers()
expect(mgr.isServerDisabled('srv')).to.be.false
})
})
@@ -1091,7 +1139,6 @@ describe('updateServerPermission()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srv: cfg },
tools: ['@srv'],
@@ -1106,6 +1153,7 @@ describe('updateServerPermission()', () => {
await McpManager.init(['x.json'], features)
const mgr = McpManager.instance
+ await mgr.discoverAllServers()
// Update permissions for a tool
await mgr.updateServerPermission('srv', {
@@ -1130,7 +1178,44 @@ describe('reinitializeMcpServers()', () => {
} catch {}
})
- it('closes then reloads servers', async () => {
+ it('closes servers without reloading when isManualRefresh is false', async () => {
+ const cfg1: MCPServerConfig = {
+ command: 'c',
+ args: [],
+ env: {},
+ timeout: 0,
+ disabled: false,
+ __configPath__: 'a.json',
+ }
+ const loadStub = sinon.stub(mcpUtils, 'loadAgentConfig').resolves({
+ servers: new Map([['srvA', cfg1]]),
+ serverNameMapping: new Map(),
+ errors: new Map(),
+ agentConfig: {
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: { srvA: cfg1 },
+ tools: ['@srvA'],
+ allowedTools: [],
+ toolsSettings: {},
+ includedFiles: [],
+ resources: [],
+ },
+ })
+ stubInitOneServer()
+
+ const mgr = await McpManager.init(['a.json'], features)
+ await mgr.discoverAllServers()
+ expect(mgr.getAllServerConfigs().has('srvA')).to.be.true
+
+ const closeSpy = sinon.spy(mgr, 'close' as any)
+ await mgr.reinitializeMcpServers(false)
+ expect(closeSpy.calledOnce).to.be.true
+ // loadAgentConfig should only be called once (during discoverAllServers)
+ expect(loadStub.callCount).to.equal(1)
+ })
+
+ it('closes then reloads servers when isManualRefresh is true', async () => {
const cfg1: MCPServerConfig = {
command: 'c',
args: [],
@@ -1156,7 +1241,6 @@ describe('reinitializeMcpServers()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srvA: cfg1 },
tools: ['@srvA'],
@@ -1173,7 +1257,6 @@ describe('reinitializeMcpServers()', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: { srvB: cfg2 },
tools: ['@srvB'],
@@ -1186,10 +1269,11 @@ describe('reinitializeMcpServers()', () => {
stubInitOneServer()
const mgr = await McpManager.init(['a.json'], features)
+ await mgr.discoverAllServers()
expect(mgr.getAllServerConfigs().has('srvA')).to.be.true
const closeSpy = sinon.spy(mgr, 'close' as any)
- await mgr.reinitializeMcpServers()
+ await mgr.reinitializeMcpServers(true)
expect(closeSpy.calledOnce).to.be.true
expect(loadStub.callCount).to.equal(2)
expect(mgr.getAllServerConfigs().has('srvB')).to.be.true
@@ -1279,7 +1363,6 @@ describe('concurrent server initialization', () => {
const serversMap = new Map(Object.entries(serverConfigs))
const agentConfig = {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: Object.fromEntries(Object.entries(serverConfigs)),
tools: Object.keys(serverConfigs).map(name => `@${name}`),
@@ -1332,6 +1415,7 @@ describe('concurrent server initialization', () => {
// Initialize the McpManager
const mgr = await McpManager.init(['config1.json'], features)
+ await mgr.discoverAllServers()
// Verify that Promise.all was called at least twice (once for each batch)
expect(promiseAllSpy.called).to.be.true
@@ -1424,7 +1508,6 @@ describe('McpManager error handling', () => {
errors: mockErrors,
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -1437,6 +1520,9 @@ describe('McpManager error handling', () => {
const mgr = await McpManager.init([], features)
+ // Call discoverAllServers to load the config and populate errors
+ await mgr.discoverAllServers()
+
// Test that getConfigLoadErrors returns the expected error messages
const errors = mgr.getConfigLoadErrors()
expect(errors).to.not.be.undefined
@@ -1452,7 +1538,6 @@ describe('McpManager error handling', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -1478,7 +1563,6 @@ describe('McpManager error handling', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -1521,7 +1605,6 @@ describe('McpManager error handling', () => {
errors: new Map([['file1.json', 'Initial error']]),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -1539,7 +1622,6 @@ describe('McpManager error handling', () => {
errors: new Map(),
agentConfig: {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -1552,6 +1634,9 @@ describe('McpManager error handling', () => {
const mgr = await McpManager.init([], features)
+ // Call discoverAllServers to load initial config with errors
+ await mgr.discoverAllServers()
+
// Verify initial errors exist
let errors = mgr.getConfigLoadErrors()
expect(errors).to.not.be.undefined
@@ -1560,8 +1645,334 @@ describe('McpManager error handling', () => {
// Reinitialize to clear errors
await mgr.reinitializeMcpServers()
+ // Call discoverAllServers again to reload config
+ await mgr.discoverAllServers()
+
// Verify errors are cleared
errors = mgr.getConfigLoadErrors()
expect(errors).to.be.undefined
})
})
+
+describe('Registry Synchronization', () => {
+ let mgr: McpManager
+ let mockFeatures: any
+ let sandbox: sinon.SinonSandbox
+
+ beforeEach(async () => {
+ sandbox = sinon.createSandbox()
+ mockFeatures = {
+ logging: fakeLogging,
+ workspace: fakeWorkspace,
+ lsp: {},
+ telemetry: { emitMetric: () => {} },
+ credentialsProvider: { getConnectionMetadata: () => ({}) },
+ runtime: { serverInfo: { version: '1.0.0' } },
+ agent: { getBuiltInToolNames: () => [] },
+ }
+ stubAgentConfig()
+ mgr = await McpManager.init([], mockFeatures)
+ })
+
+ afterEach(async () => {
+ sandbox.restore()
+ sinon.restore()
+ try {
+ await McpManager.instance.close()
+ } catch {}
+ })
+
+ describe('updateRegistryUrl', () => {
+ it('should fetch and update registry when URL provided', async () => {
+ const registry = {
+ servers: [{ name: 'test-server', description: 'Test', version: '1.0.0', remotes: [] as any }],
+ lastFetched: new Date(),
+ url: 'https://example.com/registry.json',
+ }
+
+ const mockRegistryService = {
+ fetchRegistry: sandbox.stub().resolves(registry),
+ }
+ ;(mgr as any).registryService = mockRegistryService
+
+ await mgr.updateRegistryUrl('https://example.com/registry.json')
+
+ expect(mockRegistryService.fetchRegistry.calledWith('https://example.com/registry.json')).to.be.true
+ expect((mgr as any).currentRegistry).to.equal(registry)
+ })
+
+ it('should clear current registry and throw when fetch fails', async () => {
+ const mockRegistryService = {
+ fetchRegistry: sandbox.stub().resolves(null),
+ }
+ ;(mgr as any).registryService = mockRegistryService
+
+ try {
+ await mgr.updateRegistryUrl('https://example.com/registry.json')
+ throw new Error('Expected updateRegistryUrl to throw')
+ } catch (error: any) {
+ expect(error.message).to.equal('Failed to fetch or validate registry')
+ }
+
+ expect((mgr as any).currentRegistry).to.be.null
+ })
+ })
+
+ describe('syncWithRegistry', () => {
+ it('should remove servers removed from registry', async () => {
+ const saveStub = sandbox.stub(mcpUtils, 'saveServerSpecificAgentConfig').resolves()
+ ;(mgr as any).mcpServers.set('test-server', {
+ command: 'npx',
+ args: ['-y', '@test/server@1.0.0'],
+ disabled: false,
+ __configPath__: '/test/config.json',
+ })
+ ;(mgr as any).serverNameMapping.set('test-server', 'test-server')
+ ;(mgr as any).agentConfig = {
+ mcpServers: { 'test-server': { type: 'registry' } },
+ tools: ['@test-server'],
+ allowedTools: [],
+ toolsSettings: {},
+ resources: [],
+ includedFiles: [],
+ useLegacyMcpJson: false,
+ name: 'test',
+ description: 'test',
+ }
+
+ const mockClient = { close: sandbox.stub().resolves() }
+ ;(mgr as any).clients.set('test-server', mockClient)
+
+ const registry = {
+ servers: [],
+ lastFetched: new Date(),
+ url: 'https://example.com/registry.json',
+ }
+
+ const mockRegistryService = {
+ fetchRegistry: sandbox.stub().resolves(registry),
+ }
+ ;(mgr as any).registryService = mockRegistryService
+
+ await mgr.updateRegistryUrl('https://example.com/registry.json', true)
+
+ expect(mockClient.close.called).to.be.true
+ // Server should remain in map but marked as FAILED
+ const config = (mgr as any).mcpServers.get('test-server')
+ expect(config).to.exist
+ // Verify server state is FAILED
+ const serverState = mgr.getServerState('test-server')
+ expect(serverState?.status).to.equal('FAILED')
+ expect(serverState?.lastError).to.include('removed from registry')
+ })
+
+ it('should skip non-registry servers during sync', async () => {
+ ;(mgr as any).mcpServers.set('manual-server', {
+ command: 'npx',
+ args: ['@test/server'],
+ disabled: false,
+ })
+ ;(mgr as any).serverNameMapping.set('manual-server', 'manual-server')
+ ;(mgr as any).agentConfig = {
+ mcpServers: { 'manual-server': { command: 'npx', args: ['@test/server'] } },
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ resources: [],
+ useLegacyMcpJson: false,
+ name: 'test',
+ description: 'test',
+ }
+
+ const registry = {
+ servers: [],
+ lastFetched: new Date(),
+ url: 'https://example.com/registry.json',
+ }
+
+ const mockRegistryService = {
+ fetchRegistry: sandbox.stub().resolves(registry),
+ }
+ ;(mgr as any).registryService = mockRegistryService
+
+ await mgr.updateRegistryUrl('https://example.com/registry.json', true)
+
+ const config = (mgr as any).mcpServers.get('manual-server')
+ expect(config.disabled).to.be.false
+ })
+ })
+
+ describe('version checking', () => {
+ it('should detect version mismatch for local servers', async () => {
+ ;(mgr as any).mcpServers.set('test-server', {
+ command: 'npx',
+ args: ['-y', '@test/server@1.0.0'],
+ disabled: false,
+ __cachedVersion__: '1.0.0',
+ __configPath__: '/test/config.json',
+ })
+ ;(mgr as any).serverNameMapping.set('test-server', 'test-server')
+ ;(mgr as any).agentConfig = {
+ mcpServers: { 'test-server': { type: 'registry' } },
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ resources: [],
+ useLegacyMcpJson: false,
+ name: 'test',
+ description: 'test',
+ }
+
+ const mockClient = { close: sandbox.stub().resolves() }
+ ;(mgr as any).clients.set('test-server', mockClient)
+
+ const removeServerStub = sandbox.stub(mgr, 'removeServer').resolves()
+ const addRegistryServerStub = sandbox.stub(mgr, 'addRegistryServer').resolves()
+
+ const registry = {
+ servers: [
+ {
+ name: 'test-server',
+ description: 'Test',
+ version: '2.0.0',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: '@test/server',
+ transport: { type: 'stdio' },
+ },
+ ],
+ } as any,
+ ],
+ lastFetched: new Date(),
+ url: 'https://example.com/registry.json',
+ }
+
+ const mockRegistryService = {
+ fetchRegistry: sandbox.stub().resolves(registry),
+ }
+ ;(mgr as any).registryService = mockRegistryService
+
+ await mgr.updateRegistryUrl('https://example.com/registry.json', true)
+
+ expect(removeServerStub.called).to.be.true
+ expect(addRegistryServerStub.called).to.be.true
+ })
+ })
+})
+
+describe('addRegistryServer with additional headers/env', () => {
+ let loadStub: sinon.SinonStub
+ let initOneStub: sinon.SinonStub
+ let saveServerSpecificAgentConfigStub: sinon.SinonStub
+
+ beforeEach(async () => {
+ sinon.restore()
+ try {
+ await McpManager.instance.close()
+ } catch {}
+ loadStub = stubAgentConfig()
+ initOneStub = stubInitOneServer()
+ saveServerSpecificAgentConfigStub = sinon.stub(mcpUtils, 'saveServerSpecificAgentConfig').resolves()
+ })
+
+ afterEach(async () => {
+ sinon.restore()
+ try {
+ await McpManager.instance.close()
+ } catch {}
+ })
+
+ it('stores additional headers for HTTP registry servers', async () => {
+ const mgr = await McpManager.init([], features)
+ ;(mgr as any).agentConfig = {
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {},
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ includedFiles: [],
+ resources: [],
+ }
+
+ const cfg: MCPServerConfig = {
+ url: 'https://example.com/mcp',
+ headers: { 'X-Base': 'base-value' },
+ timeout: 60000,
+ __configPath__: 'path.json',
+ }
+
+ const additionalHeaders = { 'X-Custom': 'custom-value' }
+
+ await mgr.addRegistryServer('httpServer', cfg, 'path.json', additionalHeaders, undefined)
+
+ expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true
+
+ const storedCfg = (mgr as any).mcpServers.get('httpServer')
+ expect(storedCfg.__additionalHeaders__).to.deep.equal(additionalHeaders)
+
+ const agentCfg = (mgr as any).agentConfig.mcpServers['httpServer']
+ expect(agentCfg.headers).to.deep.equal(additionalHeaders)
+ })
+
+ it('stores additional env for STDIO registry servers', async () => {
+ const mgr = await McpManager.init([], features)
+ ;(mgr as any).agentConfig = {
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {},
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ includedFiles: [],
+ resources: [],
+ }
+
+ const cfg: MCPServerConfig = {
+ command: 'npx',
+ args: ['-y', '@test/server'],
+ env: { BASE_VAR: 'base' },
+ timeout: 60000,
+ __configPath__: 'path.json',
+ }
+
+ const additionalEnv = { CUSTOM_VAR: 'custom' }
+
+ await mgr.addRegistryServer('stdioServer', cfg, 'path.json', undefined, additionalEnv)
+
+ expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true
+
+ const storedCfg = (mgr as any).mcpServers.get('stdioServer')
+ expect(storedCfg.__additionalEnv__).to.deep.equal(additionalEnv)
+
+ const agentCfg = (mgr as any).agentConfig.mcpServers['stdioServer']
+ expect(agentCfg.env).to.deep.equal(additionalEnv)
+ })
+
+ it('omits additional fields when empty', async () => {
+ const mgr = await McpManager.init([], features)
+ ;(mgr as any).agentConfig = {
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {},
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ includedFiles: [],
+ resources: [],
+ }
+
+ const cfg: MCPServerConfig = {
+ url: 'https://example.com/mcp',
+ timeout: 60000,
+ __configPath__: 'path.json',
+ }
+
+ await mgr.addRegistryServer('server', cfg, 'path.json', {}, {})
+
+ const agentCfg = (mgr as any).agentConfig.mcpServers['server']
+ expect(agentCfg.headers).to.be.undefined
+ expect(agentCfg.env).to.be.undefined
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts
index d0fe8ad9cc..a65c3ef4a2 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts
@@ -21,6 +21,8 @@ import {
McpPermissionType,
MCPServerPermission,
AgentConfig,
+ isMCPServerConfig,
+ isRegistryServerConfig,
} from './mcpTypes'
import {
isEmptyEnv,
@@ -40,6 +42,9 @@ import { URI } from 'vscode-uri'
import { sanitizeInput } from '../../../../shared/utils'
import { ProfileStatusMonitor } from './profileStatusMonitor'
import { OAuthClient } from './mcpOauthClient'
+import { AgentPermissionManager } from './agentPermissionManager'
+import { McpRegistryService } from './mcpRegistryService'
+import { McpRegistryData } from './mcpTypes'
export const MCP_SERVER_STATUS_CHANGED = 'mcpServerStatusChanged'
export const AGENT_TOOLS_CHANGED = 'agentToolsChanged'
@@ -65,12 +70,17 @@ export class McpManager {
private toolNameMapping: Map
private serverNameMapping: Map
private agentConfig!: AgentConfig
+ private permissionManager!: AgentPermissionManager
+ private registryService?: McpRegistryService
+ private currentRegistry: McpRegistryData | null = null
+ private registryUrlProvided: boolean = false
+ private isPeriodicSync: boolean = false
private constructor(
private agentPaths: string[],
private features: Pick<
Features,
- 'logging' | 'workspace' | 'lsp' | 'telemetry' | 'credentialsProvider' | 'runtime'
+ 'logging' | 'workspace' | 'lsp' | 'telemetry' | 'credentialsProvider' | 'runtime' | 'agent'
>
) {
this.mcpTools = []
@@ -87,64 +97,40 @@ export class McpManager {
public static async init(
agentPaths: string[],
- features: Pick
+ features: Pick<
+ Features,
+ 'logging' | 'workspace' | 'lsp' | 'telemetry' | 'credentialsProvider' | 'runtime' | 'agent'
+ >,
+ options?: { registryUrl?: string }
): Promise {
if (!McpManager.#instance) {
const mgr = new McpManager(agentPaths, features)
McpManager.#instance = mgr
- const shouldDiscoverServers = ProfileStatusMonitor.getMcpState()
-
- if (shouldDiscoverServers) {
- await mgr.discoverAllServers()
- features.logging.info(`MCP: discovered ${mgr.mcpTools.length} tools across all servers`)
- } else {
- features.logging.info('MCP: initialized without server discovery')
- }
-
- // Emit MCP configuration metrics
- const serverConfigs = mgr.getAllServerConfigs()
- const activeServers = Array.from(serverConfigs.entries()).filter(([name, _]) => !mgr.isServerDisabled(name))
-
- // Count global vs project servers
- const globalServers = Array.from(serverConfigs.entries()).filter(
- ([_, config]) =>
- config?.__configPath__ === getGlobalAgentConfigPath(features.workspace.fs.getUserHomeDir())
- ).length
- const projectServers = serverConfigs.size - globalServers
-
- // Count tools by permission
- let toolsAlwaysAllowed = 0
- let toolsDenied = 0
-
- for (const [serverName, _] of activeServers) {
- const toolsWithPermissions = mgr.getAllToolsWithPermissions(serverName)
- toolsWithPermissions.forEach(item => {
- if (item.permission === McpPermissionType.alwaysAllow) {
- toolsAlwaysAllowed++
- } else if (item.permission === McpPermissionType.deny) {
- toolsDenied++
+ // Initialize registry service if URL provided
+ if (options?.registryUrl) {
+ mgr.registryUrlProvided = true
+ try {
+ mgr.registryService = new McpRegistryService(features.logging)
+ const registry = await mgr.registryService.fetchRegistry(options.registryUrl)
+ if (registry) {
+ mgr.currentRegistry = registry
+ features.logging.info(
+ `MCP Registry: Registry mode ACTIVE - ${registry.servers.length} servers from ${options.registryUrl}`
+ )
+ } else {
+ features.logging.error('MCP Registry: Failed to fetch registry')
}
- })
+ } catch (error) {
+ const errorMsg = error instanceof Error ? error.message : String(error)
+ features.logging.error(`MCP Registry: Error during initialization: ${errorMsg}`)
+ }
}
- // Emit MCP configuration metrics
- if (features.telemetry) {
- features.telemetry.emitMetric({
- name: ChatTelemetryEventName.MCPConfig,
- data: {
- credentialStartUrl: features.credentialsProvider?.getConnectionMetadata()?.sso?.startUrl,
- languageServerVersion: features.runtime?.serverInfo.version,
- numActiveServers: activeServers.length,
- numGlobalServers: globalServers,
- numProjectServers: projectServers,
- numToolsAlwaysAllowed: toolsAlwaysAllowed,
- numToolsDenied: toolsDenied,
- },
- })
- }
+ // DO NOT discover servers here - wait for auth to be initialized
+ features.logging.info('MCP: Manager initialized, waiting for auth before discovering servers')
}
- return McpManager.#instance
+ return McpManager.#instance!
}
public static get instance(): McpManager {
@@ -154,6 +140,13 @@ export class McpManager {
return McpManager.#instance
}
+ /**
+ * Check if McpManager has been initialized
+ */
+ public static isInitialized(): boolean {
+ return !!McpManager.#instance
+ }
+
/**
* Return the current runtime state for one server.
*/
@@ -168,15 +161,79 @@ export class McpManager {
return new Map(this.mcpServerStates)
}
+ /**
+ * Emit MCP configuration telemetry metrics
+ * Should be called after servers are discovered and initialized
+ */
+ public emitMcpConfigMetrics(): void {
+ const serverConfigs = this.getAllServerConfigs()
+ const activeServers = Array.from(serverConfigs.entries()).filter(([name, _]) => !this.isServerDisabled(name))
+
+ // Count global vs project servers
+ const globalServers = Array.from(serverConfigs.entries()).filter(
+ ([_, config]) =>
+ config?.__configPath__ === getGlobalAgentConfigPath(this.features.workspace.fs.getUserHomeDir())
+ ).length
+ const projectServers = serverConfigs.size - globalServers
+
+ // Count tools by permission
+ let toolsAlwaysAllowed = 0
+ let toolsDenied = 0
+
+ for (const [serverName, _] of activeServers) {
+ const toolsWithPermissions = this.getAllToolsWithPermissions(serverName)
+ toolsWithPermissions.forEach(item => {
+ if (item.permission === McpPermissionType.alwaysAllow) {
+ toolsAlwaysAllowed++
+ } else if (item.permission === McpPermissionType.deny) {
+ toolsDenied++
+ }
+ })
+ }
+
+ // Emit MCP configuration metrics
+ if (this.features.telemetry) {
+ this.features.telemetry.emitMetric({
+ name: ChatTelemetryEventName.MCPConfig,
+ data: {
+ credentialStartUrl: this.features.credentialsProvider?.getConnectionMetadata()?.sso?.startUrl,
+ languageServerVersion: this.features.runtime?.serverInfo.version,
+ numActiveServers: activeServers.length,
+ numGlobalServers: globalServers,
+ numProjectServers: projectServers,
+ numToolsAlwaysAllowed: toolsAlwaysAllowed,
+ numToolsDenied: toolsDenied,
+ },
+ })
+ }
+
+ this.features.logging.info(
+ `MCP Config Metrics: ${activeServers.length} active servers, ${this.mcpTools.length} tools`
+ )
+ }
+
/**
* Load configurations and initialize each enabled server.
+ * Should only be called after auth is initialized and MCP is enabled.
*/
- private async discoverAllServers(): Promise {
- // Load agent config
- const result = await loadAgentConfig(this.features.workspace, this.features.logging, this.agentPaths)
+ public async discoverAllServers(): Promise {
+ // Load agent config with registry support
+ const result = await loadAgentConfig(
+ this.features.workspace,
+ this.features.logging,
+ this.agentPaths,
+ this.currentRegistry,
+ this.isRegistryModeActive()
+ )
// Extract agent config and other data
this.agentConfig = result.agentConfig
+ this.permissionManager = new AgentPermissionManager(
+ this.agentConfig,
+ (serverName: string) => this.getAvailableToolsForServer(serverName),
+ () => this.getAllAvailableServerNames(),
+ () => this.getAllBuiltinToolNames()
+ )
this.mcpServers = result.servers
this.serverNameMapping = result.serverNameMapping
@@ -207,6 +264,17 @@ export class McpManager {
this.emitToolsChanged(name)
continue
}
+ if (!isMCPServerConfig(cfg)) {
+ this.features.logging.warn(`MCP: server '${name}' has invalid config, skipping`)
+ continue
+ }
+ // Check if this is a placeholder for a missing registry server
+ if ((cfg as any).__registryError__) {
+ this.features.logging.warn(`MCP: server '${name}' not found in registry, marking as failed`)
+ this.setState(name, McpServerStatus.FAILED, 0, (cfg as any).__registryError__)
+ this.emitToolsChanged(name)
+ continue
+ }
serversToInit.push([name, cfg])
}
@@ -231,6 +299,9 @@ export class McpManager {
}
this.features.logging.info(`MCP: completed initialization of ${totalServers} servers`)
+ } else {
+ // Emit event to refresh MCP list page when no servers are configured
+ this.setState('no-servers', McpServerStatus.UNINITIALIZED, 0)
}
for (const [sanitizedName, _] of this.mcpServers.entries()) {
@@ -302,7 +373,7 @@ export class McpManager {
cfg: MCPServerConfig,
authIntent: AuthIntent = AuthIntent.Silent
): Promise {
- const DEFAULT_SERVER_INIT_TIMEOUT_MS = 60_000
+ const DEFAULT_SERVER_INIT_TIMEOUT_MS = 120_000
this.setState(serverName, McpServerStatus.INITIALIZING, 0)
try {
@@ -317,12 +388,13 @@ export class McpManager {
const isStdio = !!cfg.command
const doConnect = async () => {
if (isStdio) {
- // stdio transport
+ // stdio transport - merge additional env with base env
+ const finalEnv = { ...(cfg.env || {}), ...(cfg.__additionalEnv__ || {}) }
const mergedEnv = {
...(process.env as Record),
// Make sure we do not have empty key and value in mergedEnv, or adding server through UI will fail on Windows
- ...(cfg.env && !isEmptyEnv(cfg.env)
- ? Object.fromEntries(Object.entries(cfg.env).filter(([k, v]) => k.trim() && v.trim()))
+ ...(finalEnv && !isEmptyEnv(finalEnv)
+ ? Object.fromEntries(Object.entries(finalEnv).filter(([k, v]) => k.trim() && v.trim()))
: {}),
}
let cwd: string | undefined
@@ -334,12 +406,30 @@ export class McpManager {
`MCP: no workspace folder for [${serverName}], continuing without cwd`
)
}
+ const argsStr = (cfg.args ?? []).length > 0 ? ` ${(cfg.args ?? []).join(' ')}` : ''
+ const envKeys = Object.keys(finalEnv || {})
+ const envInfo = envKeys.length > 0 ? ` (env: ${envKeys.join(', ')})` : ''
+ this.features.logging.info(`MCP: Executing command: ${cfg.command}${argsStr}${envInfo}`)
+
transport = new StdioClientTransport({
command: cfg.command!,
args: cfg.args ?? [],
env: mergedEnv,
cwd,
+ stderr: 'pipe',
})
+
+ // Capture stderr from the transport
+ const stderrStream = transport.stderr
+ if (stderrStream) {
+ stderrStream.on('data', (data: Buffer) => {
+ const output = data.toString().trim()
+ if (output) {
+ this.features.logging.warn(`MCP [${serverName}] stderr: ${output}`)
+ }
+ })
+ }
+
this.features.logging.info(`MCP: Connecting MCP server using StdioClientTransport`)
try {
await client.connect(transport)
@@ -358,11 +448,14 @@ export class McpManager {
)
}
} else {
- // streamable http/SSE transport
+ // streamable http/SSE transport - merge additional headers with base headers
const base = new URL(cfg.url!)
try {
// Use HEAD to check if it needs OAuth
- let headers: Record = { ...(cfg.headers ?? {}) }
+ let headers: Record = {
+ ...(cfg.headers ?? {}),
+ ...(cfg.__additionalHeaders__ ?? {}),
+ }
let needsOAuth = false
try {
const headResp = await fetch(base, { method: 'HEAD', headers })
@@ -373,7 +466,7 @@ export class McpManager {
}
if (needsOAuth) {
- OAuthClient.initialize(this.features.workspace, this.features.logging)
+ OAuthClient.initialize(this.features.workspace, this.features.logging, this.features.lsp)
try {
const bearer = await OAuthClient.getValidAccessToken(base, {
interactive: authIntent === AuthIntent.Interactive,
@@ -382,7 +475,7 @@ export class McpManager {
headers = { ...headers, Authorization: `Bearer ${bearer}` }
} else if (authIntent === AuthIntent.Silent) {
throw new AgenticChatError(
- `MCP: server '${serverName}' requires OAuth. Open "Edit MCP Server" and save to sign in.`,
+ `Server '${serverName}' requires OAuth. Click on Save to reauthenticate.`,
'MCPServerAuthFailed'
)
}
@@ -400,6 +493,10 @@ export class McpManager {
}
}
+ const headerKeys = Object.keys(headers)
+ const headerInfo = headerKeys.length > 0 ? ` (headers: ${headerKeys.join(', ')})` : ''
+ this.features.logging.info(`MCP: Connecting to URL: ${cfg.url}${headerInfo}`)
+
try {
// try streamable http first
transport = new StreamableHTTPClientTransport(base, this.buildHttpOpts(headers))
@@ -471,6 +568,18 @@ export class McpManager {
})
}
+ // Cache version for registry servers
+ if (this.currentRegistry) {
+ const unsanitizedName = this.serverNameMapping.get(serverName) || serverName
+ const registryServer = this.currentRegistry.servers.find(s => s.name === unsanitizedName)
+ if (registryServer) {
+ cfg.__cachedVersion__ = registryServer.version
+ this.features.logging.debug(
+ `MCP Registry: Cached version ${registryServer.version} for server '${unsanitizedName}'`
+ )
+ }
+ }
+
this.setState(serverName, McpServerStatus.ENABLED, resp.tools.length)
this.emitToolsChanged(serverName)
} catch (e: any) {
@@ -536,22 +645,7 @@ export class McpManager {
// Get unsanitized server name for prefix
const unsanitizedServerName = this.serverNameMapping.get(server) || server
-
- // Check if the server is enabled as a whole (@server)
- const serverPrefix = `@${unsanitizedServerName}`
- const isWholeServerEnabled = this.agentConfig.tools.includes(serverPrefix)
-
- // Check if the specific tool is enabled
- const toolId = `${serverPrefix}/${tool}`
- const isSpecificToolEnabled = this.agentConfig.tools.includes(toolId)
-
- // If server is enabled as a whole, all tools are enabled
- if (isWholeServerEnabled) {
- return false
- }
-
- // Otherwise, check if this specific tool is enabled
- return !isSpecificToolEnabled
+ return !this.permissionManager.isToolEnabled(server === 'builtIn' ? 'builtIn' : unsanitizedServerName, tool)
}
/**
@@ -566,42 +660,8 @@ export class McpManager {
* Returns tool permission type for a given tool.
*/
public getToolPerm(server: string, tool: string): McpPermissionType {
- // For built-in tools, check directly without prefix
- if (server === 'builtIn') {
- return this.agentConfig.allowedTools.includes(tool) ? McpPermissionType.alwaysAllow : McpPermissionType.ask
- }
-
- // Get unsanitized server name for prefix
const unsanitizedServerName = this.serverNameMapping.get(server) || server
-
- // Check if the server is enabled as a whole (@server)
- const serverPrefix = `@${unsanitizedServerName}`
- const isWholeServerEnabled = this.agentConfig.tools.includes(serverPrefix)
-
- // Check if the specific tool is enabled
- const toolId = `${serverPrefix}/${tool}`
- const isSpecificToolEnabled = this.agentConfig.tools.includes(toolId)
-
- // If the tool is not enabled, return deny
- if (!isWholeServerEnabled && !isSpecificToolEnabled) {
- return McpPermissionType.deny
- }
-
- // If server is enabled as a whole, check if the server itself is in allowedTools
- if (isWholeServerEnabled) {
- // If server is in allowedTools, all tools are alwaysAllow
- if (this.agentConfig.allowedTools.includes(serverPrefix)) {
- return McpPermissionType.alwaysAllow
- }
-
- // Otherwise, check if specific tool is in allowedTools
- return this.agentConfig.allowedTools.includes(toolId)
- ? McpPermissionType.alwaysAllow
- : McpPermissionType.ask
- }
-
- // For specific tools, check if it's in allowedTools
- return this.agentConfig.allowedTools.includes(toolId) ? McpPermissionType.alwaysAllow : McpPermissionType.ask
+ return this.permissionManager.getToolPermission(server === 'builtIn' ? 'builtIn' : unsanitizedServerName, tool)
}
/**
@@ -677,11 +737,93 @@ export class McpManager {
}
}
+ /**
+ * Add a registry server: persist config, register in memory, and initialize.
+ */
+ public async addRegistryServer(
+ serverName: string,
+ cfg: MCPServerConfig,
+ configPath: string,
+ additionalHeaders?: Record,
+ additionalEnv?: Record
+ ): Promise {
+ const sanitizedName = sanitizeName(serverName)
+ if (
+ this.mcpServers.has(sanitizedName) &&
+ this.getServerState(sanitizedName)?.status == McpServerStatus.ENABLED
+ ) {
+ throw new Error(`MCP: server '${sanitizedName}' already exists`)
+ }
+
+ // Filter out empty key-value pairs
+ if (additionalHeaders) {
+ additionalHeaders = Object.fromEntries(
+ Object.entries(additionalHeaders).filter(([k, v]) => k.trim() && v.trim())
+ )
+ }
+ if (additionalEnv) {
+ additionalEnv = Object.fromEntries(Object.entries(additionalEnv).filter(([k, v]) => k.trim() && v.trim()))
+ }
+
+ // Save registry server config with type: 'registry', timeout, and additional headers/env
+ const registryServerConfig: any = { type: 'registry' as const }
+ if (cfg.timeout !== undefined) {
+ registryServerConfig.timeout = cfg.timeout
+ }
+ if (additionalHeaders && Object.keys(additionalHeaders).length > 0) {
+ registryServerConfig.headers = additionalHeaders
+ }
+ if (additionalEnv && Object.keys(additionalEnv).length > 0) {
+ registryServerConfig.env = additionalEnv
+ }
+ this.agentConfig.mcpServers[serverName] = registryServerConfig
+
+ const serverPrefix = `@${serverName}`
+ if (!this.agentConfig.tools.includes(serverPrefix)) {
+ this.agentConfig.tools.push(serverPrefix)
+ }
+
+ await saveServerSpecificAgentConfig(
+ this.features.workspace,
+ this.features.logging,
+ serverName,
+ registryServerConfig,
+ [serverPrefix],
+ [],
+ configPath
+ )
+
+ // Store additional headers/env separately and merge for runtime
+ const newCfg: MCPServerConfig = { ...cfg, __configPath__: configPath }
+ if (additionalHeaders && Object.keys(additionalHeaders).length > 0) {
+ newCfg.__additionalHeaders__ = additionalHeaders
+ }
+ if (additionalEnv && Object.keys(additionalEnv).length > 0) {
+ newCfg.__additionalEnv__ = additionalEnv
+ }
+ this.mcpServers.set(sanitizedName, newCfg)
+ this.serverNameMapping.set(sanitizedName, serverName)
+
+ await this.initOneServer(sanitizedName, newCfg, AuthIntent.Interactive)
+ }
+
/**
* Add a new server: persist config, register in memory, and initialize.
*/
- public async addServer(serverName: string, cfg: MCPServerConfig, agentPath: string): Promise {
+ public async addServer(
+ serverName: string,
+ cfg: MCPServerConfig,
+ configPath: string,
+ isLegacyMcpServer: boolean = false
+ ): Promise {
try {
+ // Reject manual server addition when registry is active
+ if (this.isRegistryModeActive()) {
+ throw new Error(
+ 'MCP: Cannot add servers manually when registry mode is active. Please install servers from the registry.'
+ )
+ }
+
const sanitizedName = sanitizeName(serverName)
if (
this.mcpServers.has(sanitizedName) &&
@@ -690,64 +832,116 @@ export class McpManager {
throw new Error(`MCP: server '${sanitizedName}' already exists`)
}
- // Add server to agent config
- const serverConfig: MCPServerConfig = {
- command: cfg.command,
- url: cfg.url,
- initializationTimeout: cfg.initializationTimeout,
- disabled: cfg.disabled ?? false,
- }
- // Only add timeout to agent config if it's not 0
- if (cfg.timeout !== undefined) {
- serverConfig.timeout = cfg.timeout
- }
- if (cfg.args && cfg.args.length > 0) {
- serverConfig.args = cfg.args
- }
- if (cfg.env && !isEmptyEnv(cfg.env)) {
- serverConfig.env = cfg.env
- }
- if (cfg.headers && !isEmptyEnv(cfg.headers)) {
- serverConfig.headers = cfg.headers
- }
+ if (isLegacyMcpServer) {
+ // Handle legacy MCP config file
+ await this.mutateConfigFile(configPath, (json: any) => {
+ if (!json.mcpServers) {
+ json.mcpServers = {}
+ }
+ json.mcpServers[serverName] = {
+ command: cfg.command,
+ url: cfg.url,
+ args: cfg.args,
+ env: cfg.env,
+ headers: cfg.headers,
+ timeout: cfg.timeout,
+ initializationTimeout: cfg.initializationTimeout,
+ disabled: cfg.disabled ?? false,
+ }
+ })
- // Add to agent config
- this.agentConfig.mcpServers[serverName] = serverConfig
+ // Move tool permissions to corresponding agent path
+ const agentPath = configPath.replace(
+ path.sep + 'mcp.json',
+ path.sep + 'agents' + path.sep + 'default.json'
+ )
- // We don't need to store configPath anymore as we're using agent config
- const newCfg: MCPServerConfig = { ...cfg, __configPath__: agentPath }
- this.mcpServers.set(sanitizedName, newCfg)
- this.serverNameMapping.set(sanitizedName, serverName)
+ const serverPrefix = `@${serverName}`
+ let serverTools = this.agentConfig.tools.filter(
+ tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
+ )
+ if (serverTools.length === 0) {
+ serverTools = [serverPrefix]
+ }
+ let serverAllowedTools = this.agentConfig.allowedTools.filter(
+ tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
+ )
- // Check if the server already has permissions in the agent config
- const serverPrefix = `@${serverName}`
- const hasServerInTools = this.agentConfig.tools.some(
- tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
- )
+ // Push to agent config after setup
+ this.agentConfig.tools.push(...serverTools.filter(tool => !this.agentConfig.tools.includes(tool)))
+ this.agentConfig.allowedTools.push(
+ ...serverAllowedTools.filter(tool => !this.agentConfig.allowedTools.includes(tool))
+ )
- // Only set permissions if the server doesn't already have them
- if (!hasServerInTools) {
- // Enable the server as a whole rather than individual tools
- this.agentConfig.tools.push(serverPrefix)
- }
+ await saveServerSpecificAgentConfig(
+ this.features.workspace,
+ this.features.logging,
+ serverName,
+ null,
+ serverTools,
+ serverAllowedTools,
+ agentPath,
+ true
+ )
+ } else {
+ // Add server to agent config
+ const serverConfig: MCPServerConfig = {
+ command: cfg.command,
+ url: cfg.url,
+ initializationTimeout: cfg.initializationTimeout,
+ disabled: cfg.disabled ?? false,
+ }
+ // Only add timeout to agent config if it's not 0
+ if (cfg.timeout !== undefined) {
+ serverConfig.timeout = cfg.timeout
+ }
+ if (cfg.args && cfg.args.length > 0) {
+ serverConfig.args = cfg.args
+ }
+ if (cfg.env && !isEmptyEnv(cfg.env)) {
+ serverConfig.env = cfg.env
+ }
+ if (cfg.headers && !isEmptyEnv(cfg.headers)) {
+ serverConfig.headers = cfg.headers
+ }
- // Save server-specific changes to agent config
- const serverTools = this.agentConfig.tools.filter(
- tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
- )
- const serverAllowedTools = this.agentConfig.allowedTools.filter(
- tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
- )
+ // Add to agent config
+ this.agentConfig.mcpServers[serverName] = serverConfig
- await saveServerSpecificAgentConfig(
- this.features.workspace,
- this.features.logging,
- serverName,
- serverConfig,
- serverTools,
- serverAllowedTools,
- agentPath
- )
+ // Check if the server already has permissions in the agent config
+ const serverPrefix = `@${serverName}`
+ const hasServerInTools = this.agentConfig.tools.some(
+ tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
+ )
+
+ // Only set permissions if the server doesn't already have them
+ if (!hasServerInTools) {
+ // Enable the server as a whole rather than individual tools
+ this.agentConfig.tools.push(serverPrefix)
+ }
+
+ // Save server-specific changes to agent config
+ const serverTools = this.agentConfig.tools.filter(
+ tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
+ )
+ const serverAllowedTools = this.agentConfig.allowedTools.filter(
+ tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
+ )
+
+ await saveServerSpecificAgentConfig(
+ this.features.workspace,
+ this.features.logging,
+ serverName,
+ serverConfig,
+ serverTools,
+ serverAllowedTools,
+ configPath
+ )
+ }
+
+ const newCfg: MCPServerConfig = { ...cfg, __configPath__: configPath }
+ this.mcpServers.set(sanitizedName, newCfg)
+ this.serverNameMapping.set(sanitizedName, serverName)
// Add server tools to tools list after initialization
await this.initOneServer(sanitizedName, newCfg, AuthIntent.Interactive)
@@ -762,8 +956,9 @@ export class McpManager {
/**
* Remove a server: shutdown client, remove tools, and delete disk entry.
+ * @param skipAgentConfigRemoval - If true, only removes from mcpManager but keeps in agent config
*/
- public async removeServer(serverName: string): Promise {
+ public async removeServer(serverName: string, skipAgentConfigRemoval: boolean = false): Promise {
const cfg = this.mcpServers.get(serverName)
const unsanitizedName = this.serverNameMapping.get(serverName)
const permission = this.mcpServerPermissions.get(serverName)
@@ -779,8 +974,26 @@ export class McpManager {
this.mcpTools = this.mcpTools.filter(t => t.serverName !== serverName)
this.mcpServerStates.delete(serverName)
- // Remove from agent config
- if (unsanitizedName && this.agentConfig) {
+ // Check if this is a legacy MCP server (from MCP config file)
+ const isLegacyMcpServer = cfg.__configPath__?.endsWith('mcp.json')
+ let agentPath: string | undefined
+
+ if (isLegacyMcpServer && unsanitizedName) {
+ // Remove from MCP config file
+ await this.mutateConfigFile(cfg.__configPath__, (json: any) => {
+ if (json.mcpServers && json.mcpServers[unsanitizedName]) {
+ delete json.mcpServers[unsanitizedName]
+ }
+ })
+
+ agentPath = cfg.__configPath__.replace(
+ path.sep + 'mcp.json',
+ path.sep + 'agents' + path.sep + 'default.json'
+ )
+ }
+
+ // Remove from agent config (unless skipAgentConfigRemoval is true)
+ if (!skipAgentConfigRemoval && unsanitizedName && this.agentConfig) {
// Remove server from mcpServers
delete this.agentConfig.mcpServers[unsanitizedName]
@@ -818,7 +1031,8 @@ export class McpManager {
null, // null indicates server should be removed
[],
[],
- cfg.__configPath__
+ isLegacyMcpServer ? agentPath! : cfg.__configPath__,
+ isLegacyMcpServer
)
}
@@ -845,7 +1059,8 @@ export class McpManager {
// Update agent config
if (this.agentConfig && unsanitizedServerName) {
- const updatedConfig = { ...(this.agentConfig.mcpServers[unsanitizedServerName] || {}) }
+ const existingConfig = this.agentConfig.mcpServers[unsanitizedServerName]
+ const updatedConfig = { ...(isMCPServerConfig(existingConfig) ? existingConfig : {}) }
if (configUpdates.url !== undefined) updatedConfig.url = configUpdates.url
if (configUpdates.headers !== undefined) {
if (configUpdates.headers && Object.keys(configUpdates.headers).length) {
@@ -941,15 +1156,14 @@ export class McpManager {
this.mcpServers.clear()
this.mcpServerStates.clear()
this.agentConfig = {
- name: 'default-agent',
- version: '1.0.0',
+ name: 'q_ide_default',
description: 'Agent configuration',
mcpServers: {},
tools: [],
allowedTools: [],
toolsSettings: {},
- includedFiles: [],
resources: [],
+ useLegacyMcpJson: true,
}
if (!keepInstance) {
McpManager.#instance = undefined
@@ -957,10 +1171,11 @@ export class McpManager {
}
/**
- * Reinitialize all MCP servers by closing existing connections and rediscovering servers
+ * Reinitialize all MCP servers by closing existing connections
+ * @param isManualRefresh - If true, automatically discovers servers after closing connections
*/
- public async reinitializeMcpServers(): Promise {
- this.features.logging.info('Reinitializing MCP servers')
+ public async reinitializeMcpServers(isManualRefresh: boolean = false): Promise {
+ this.features.logging.info('Reinitializing MCP servers (closing connections)')
try {
// Save the current tool name mapping to preserve tool names across reinitializations
@@ -972,16 +1187,18 @@ export class McpManager {
// Restore the saved tool name mapping
this.setToolNameMapping(savedToolNameMapping)
- const shouldDiscoverServers = ProfileStatusMonitor.getMcpState()
-
- if (shouldDiscoverServers) {
- await this.discoverAllServers()
+ if (isManualRefresh) {
+ const shouldDiscoverServers = ProfileStatusMonitor.getMcpState()
+ if (shouldDiscoverServers) {
+ await this.discoverAllServers()
+ }
+ const reinitializedServerCount = McpManager.#instance?.mcpServers.size
+ this.features.logging.info(
+ `MCP servers reinitialization completed. Total servers: ${reinitializedServerCount}`
+ )
+ } else {
+ this.features.logging.info('MCP servers reinitialization completed (connections closed)')
}
-
- const reinitializedServerCount = McpManager.#instance?.mcpServers.size
- this.features.logging.info(
- `MCP servers reinitialized completed. Total servers: ${reinitializedServerCount}`
- )
} catch (err: any) {
this.features.logging.error(`Error reinitializing MCP servers: ${err.message}`)
throw err
@@ -1003,120 +1220,35 @@ export class McpManager {
const serverPrefix = `@${unsanitizedServerName}`
- // Track tools that should be enabled
- const toolsToEnable = new Set()
- const toolsToAlwaysAllow = new Set()
+ // Check if this is a legacy MCP server (from MCP config file)
+ const isLegacyMcpServer = serverConfig.__configPath__?.endsWith('mcp.json')
- // Check if server is enabled as a whole
- const isWholeServerEnabled = this.agentConfig.tools.includes(serverPrefix)
-
- // Process each tool permission
+ // For agent config servers, use the permission manager
for (const [toolName, permission] of Object.entries(perm.toolPerms || {})) {
- const toolId = `${serverPrefix}/${toolName}`
-
- if (permission === McpPermissionType.deny) {
- // For deny: if server is enabled as a whole, we need to switch to individual tools
- if (isWholeServerEnabled) {
- // Get all tools for this server
- const serverTools = this.mcpTools.filter(t => t.serverName === serverName)
-
- // Remove server prefix from tools
- this.agentConfig.tools = this.agentConfig.tools.filter(t => t !== serverPrefix)
-
- // Add all tools except the denied one
- for (const t of serverTools) {
- if (t.toolName !== toolName) {
- const tid = `${serverPrefix}/${t.toolName}`
- if (!this.agentConfig.tools.includes(tid)) {
- this.agentConfig.tools.push(tid)
- }
- toolsToEnable.add(tid)
- }
- }
- } else {
- // Just remove the specific tool
- this.agentConfig.tools = this.agentConfig.tools.filter(t => t !== toolId)
- }
-
- // Always remove from allowedTools
- this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(t => t !== toolId)
- } else {
- // For ask or alwaysAllow: add to tools
- toolsToEnable.add(toolId)
-
- // For alwaysAllow: also add to allowedTools
- if (permission === McpPermissionType.alwaysAllow) {
- toolsToAlwaysAllow.add(toolId)
- } else {
- // For ask: remove from allowedTools if present
- this.agentConfig.allowedTools = this.agentConfig.allowedTools.filter(t => t !== toolId)
- }
- }
+ this.permissionManager.setToolPermission(unsanitizedServerName, toolName, permission)
}
- // If all tools are enabled, use @serverName instead of individual tools
- const allTools = this.mcpTools.filter(t => t.serverName === serverName).map(t => t.toolName)
-
- // Check if all tools are enabled, considering both:
- // 1. The server might already be enabled as a whole (isWholeServerEnabled)
- // 2. All tools might be individually enabled in toolsToEnable
- const allToolsEnabled =
- allTools.length > 0 &&
- // If server is already enabled as a whole and no tools are being denied
- ((isWholeServerEnabled && !Object.values(perm.toolPerms || {}).includes(McpPermissionType.deny)) ||
- // Or if all tools are individually enabled
- allTools.every(
- toolName =>
- toolsToEnable.has(`${serverPrefix}/${toolName}`) ||
- !Object.keys(perm.toolPerms || {}).includes(toolName)
- ))
-
- // Update tools list
- if (allToolsEnabled) {
- // Remove individual tool entries
- this.agentConfig.tools = this.agentConfig.tools.filter(t => !t.startsWith(`${serverPrefix}/`))
- // Add server prefix if not already there
- if (!this.agentConfig.tools.includes(serverPrefix)) {
- this.agentConfig.tools.push(serverPrefix)
- }
- } else {
- // Remove server prefix if present
- this.agentConfig.tools = this.agentConfig.tools.filter(t => t !== serverPrefix)
- // Add individual tools
- for (const toolId of toolsToEnable) {
- if (!this.agentConfig.tools.includes(toolId)) {
- this.agentConfig.tools.push(toolId)
- }
- }
- }
+ // Update the agent config from the permission manager
+ this.agentConfig = this.permissionManager.getAgentConfig()
- // Update allowedTools list
- for (const toolId of toolsToAlwaysAllow) {
- if (!this.agentConfig.allowedTools.includes(toolId)) {
- this.agentConfig.allowedTools.push(toolId)
- }
- }
-
- // Update mcpServerPermissions map immediately to reflect changes
- this.mcpServerPermissions.set(serverName, {
- enabled: perm.enabled,
- toolPerms: perm.toolPerms || {},
- })
-
- // Update server enabled/disabled state in agent config
- if (this.agentConfig.mcpServers[unsanitizedServerName]) {
- this.agentConfig.mcpServers[unsanitizedServerName].disabled = !perm.enabled
- }
+ if (isLegacyMcpServer) {
+ // For legacy MCP servers, save permissions to agent config file and update MCP config for enable/disable
+ const mcpConfigPath = serverConfig.__configPath__!
+ const agentPath = mcpConfigPath.replace(
+ path.sep + 'mcp.json',
+ path.sep + 'agents' + path.sep + 'default.json'
+ )
- // Also update the mcpServers map
- if (serverConfig) {
- serverConfig.disabled = !perm.enabled
- }
+ // Update MCP config for enable/disable
+ await this.mutateConfigFile(mcpConfigPath, (json: any) => {
+ if (!json.mcpServers[unsanitizedServerName]) {
+ json.mcpServers[unsanitizedServerName] = { ...serverConfig }
+ delete json.mcpServers[unsanitizedServerName].__configPath__
+ }
+ json.mcpServers[unsanitizedServerName].disabled = !perm.enabled
+ })
- // Save only server-specific changes to agent config
- const agentPath = perm.__configPath__
- if (agentPath) {
- // Collect server-specific tools and allowedTools
+ // Use the same function but with corrected agent path
const serverPrefix = `@${unsanitizedServerName}`
const serverTools = this.agentConfig.tools.filter(
tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
@@ -1129,13 +1261,61 @@ export class McpManager {
this.features.workspace,
this.features.logging,
unsanitizedServerName,
- this.agentConfig.mcpServers[unsanitizedServerName],
+ null, // Don't save server config to agent file for legacy servers
serverTools,
serverAllowedTools,
- agentPath
+ agentPath,
+ isLegacyMcpServer
)
}
+ // Update mcpServerPermissions map immediately to reflect changes
+ this.mcpServerPermissions.set(serverName, {
+ enabled: perm.enabled,
+ toolPerms: perm.toolPerms || {},
+ })
+
+ // Update server enabled/disabled state (only for non-legacy servers)
+ if (!isLegacyMcpServer) {
+ const serverCfg = this.agentConfig.mcpServers[unsanitizedServerName]
+ if (serverCfg && isMCPServerConfig(serverCfg)) {
+ serverCfg.disabled = !perm.enabled
+ }
+ }
+
+ // Always update the mcpServers map
+ if (serverConfig) {
+ serverConfig.disabled = !perm.enabled
+ }
+
+ // Save only server-specific changes to agent config (for non-legacy servers)
+ if (!isLegacyMcpServer) {
+ const agentPath = perm.__configPath__
+ if (agentPath) {
+ // Collect server-specific tools and allowedTools
+ const serverPrefix = `@${unsanitizedServerName}`
+ const serverTools = this.agentConfig.tools.filter(
+ tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
+ )
+ const serverAllowedTools = this.agentConfig.allowedTools.filter(
+ tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`)
+ )
+
+ const serverCfg = this.agentConfig.mcpServers[unsanitizedServerName]
+ await saveServerSpecificAgentConfig(
+ this.features.workspace,
+ this.features.logging,
+ unsanitizedServerName,
+ isMCPServerConfig(serverCfg) ? serverCfg : null,
+ serverTools,
+ serverAllowedTools,
+ agentPath,
+ false,
+ this.isRegistryModeActive()
+ )
+ }
+ }
+
// enable/disable server
if (this.isServerDisabled(serverName)) {
const client = this.clients.get(serverName)
@@ -1173,6 +1353,31 @@ export class McpManager {
return !this.agentConfig.allowedTools.includes(toolId)
}
+ /**
+ * Get available tools for a specific server
+ */
+ private getAvailableToolsForServer(serverName: string): string[] {
+ return this.mcpTools.filter(tool => tool.serverName === serverName).map(tool => tool.toolName)
+ }
+
+ /**
+ * Get all available server names
+ */
+ private getAllAvailableServerNames(): string[] {
+ const serverNames = new Set()
+ for (const tool of this.mcpTools) {
+ serverNames.add(tool.serverName)
+ }
+ return Array.from(serverNames)
+ }
+
+ /**
+ * Get all builtin tool names
+ */
+ private getAllBuiltinToolNames(): string[] {
+ return this.features.agent?.getBuiltInToolNames() || []
+ }
+
/**
* get server's tool permission
*/
@@ -1189,7 +1394,13 @@ export class McpManager {
}
return Array.from(this.configLoadErrors.entries())
- .map(([server, error]) => `File: ${server}, Error: ${error}`)
+ .map(([server, error]) => {
+ // For registry errors, just return the error message without prefix
+ if (server === 'registry') {
+ return error
+ }
+ return `File: ${server}, Error: ${error}`
+ })
.join('\n\n')
}
@@ -1319,7 +1530,8 @@ export class McpManager {
if (!config) return false
const globalAgentPath = getGlobalAgentConfigPath(this.features.workspace.fs.getUserHomeDir())
- return config.__configPath__ === globalAgentPath
+ const globalMcpPath = getGlobalMcpConfigPath(this.features.workspace.fs.getUserHomeDir())
+ return config.__configPath__ === globalAgentPath || config.__configPath__ === globalMcpPath
}
public setToolNameMapping(mapping: Map): void {
@@ -1436,4 +1648,174 @@ export class McpManager {
}
return { requestInit: { headers } }
}
+
+ /**
+ * Get the registry service instance
+ */
+ public getRegistryService(): McpRegistryService | undefined {
+ return this.registryService
+ }
+
+ /**
+ * Check if registry mode is active
+ */
+ public isRegistryModeActive(): boolean {
+ return this.registryUrlProvided
+ }
+
+ /**
+ * Set registry mode active state
+ */
+ public setRegistryActive(active: boolean): void {
+ this.registryUrlProvided = active
+ }
+
+ /**
+ * Update registry URL and refetch registry
+ * @throws Error if registry fetch or validation fails
+ */
+ public async updateRegistryUrl(registryUrl: string, isPeriodicSync: boolean = false): Promise {
+ if (!this.registryService) {
+ this.registryService = new McpRegistryService(this.features.logging)
+ }
+
+ const wasActive = this.registryUrlProvided
+
+ const registry = await this.registryService.fetchRegistry(registryUrl)
+ if (registry) {
+ this.currentRegistry = registry
+
+ if (!wasActive) {
+ this.features.logging.info(`MCP Registry: Registry mode ACTIVATED - ${registry.servers.length} servers`)
+ } else {
+ this.features.logging.info(`MCP Registry: Updated registry with ${registry.servers.length} servers`)
+ }
+
+ // Only sync during periodic updates, not at startup
+ if (isPeriodicSync) {
+ this.isPeriodicSync = true
+ await this.syncWithRegistry()
+ this.isPeriodicSync = false
+ }
+ } else {
+ const errorMsg = 'Failed to fetch or validate registry'
+ this.features.logging.error(`MCP Registry: ${errorMsg}`)
+ this.currentRegistry = null
+ throw new Error(errorMsg)
+ }
+ }
+
+ /**
+ * Synchronize client configurations with registry updates
+ * Note: Version checking only works with explicit versions, not "latest"
+ */
+ private async syncWithRegistry(): Promise {
+ if (!this.currentRegistry) {
+ this.features.logging.debug('MCP Registry: No active registry for synchronization')
+ return
+ }
+
+ this.features.logging.info('MCP Registry: Starting periodic registry synchronization')
+ const registryServerNames = new Set(this.currentRegistry.servers.map(s => s.name))
+ const configuredServers = Array.from(this.mcpServers.entries())
+ let serversDisabled = 0
+ let versionsUpdated = 0
+
+ for (const [sanitizedName, config] of configuredServers) {
+ const unsanitizedName = this.serverNameMapping.get(sanitizedName) || sanitizedName
+ const agentConfig = this.agentConfig.mcpServers[unsanitizedName]
+
+ // Skip non-registry servers
+ if (!agentConfig || !isRegistryServerConfig(agentConfig)) {
+ continue
+ }
+
+ // Check if server still exists in registry
+ if (!registryServerNames.has(unsanitizedName)) {
+ this.features.logging.warn(
+ `MCP Registry: Server '${unsanitizedName}' removed from registry during periodic sync`
+ )
+ // Close client and mark as failed, but keep in agent config
+ const client = this.clients.get(sanitizedName)
+ if (client) {
+ await client.close()
+ this.clients.delete(sanitizedName)
+ }
+ this.mcpTools = this.mcpTools.filter(t => t.serverName !== sanitizedName)
+ this.setState(sanitizedName, McpServerStatus.FAILED, 0, 'Server removed from registry')
+ this.emitToolsChanged(sanitizedName)
+ serversDisabled++
+ continue
+ }
+
+ // Check version mismatch for local servers during periodic sync
+ const registryServer = this.currentRegistry.servers.find(s => s.name === unsanitizedName)
+ if (registryServer && registryServer.packages) {
+ const updated = await this.checkAndUpdateVersion(sanitizedName, unsanitizedName, registryServer, config)
+ if (updated) versionsUpdated++
+ }
+ }
+
+ this.features.logging.info(
+ `MCP Registry: Periodic synchronization complete - ${serversDisabled} servers disabled, ${versionsUpdated} versions updated`
+ )
+ }
+
+ /**
+ * Check version and reinstall if needed
+ * Note: Version checking doesn't work with "latest" versions - only explicit versions are supported
+ */
+ private async checkAndUpdateVersion(
+ sanitizedName: string,
+ unsanitizedName: string,
+ registryServer: any,
+ currentConfig: MCPServerConfig
+ ): Promise {
+ if (!isMCPServerConfig(currentConfig)) {
+ return false
+ }
+
+ // Use cached version for comparison
+ const cachedVersion = currentConfig.__cachedVersion__
+ const registryVersion = registryServer.version
+
+ if (cachedVersion && cachedVersion !== registryVersion) {
+ const msg = `MCP Registry: Server '${unsanitizedName}' version changed from ${cachedVersion} to ${registryVersion} - reinstalling`
+ this.features.logging.warn(msg)
+ if (this.isPeriodicSync) {
+ this.features.logging.warn(`WARNING: ${msg}`)
+ }
+ try {
+ await this.reinstallServer(sanitizedName, unsanitizedName, registryServer)
+ return true
+ } catch (error) {
+ const errorMsg = error instanceof Error ? error.message : String(error)
+ this.features.logging.error(
+ `MCP Registry: Failed to reinstall server '${unsanitizedName}': ${errorMsg}`
+ )
+ return false
+ }
+ }
+ return false
+ }
+
+ /**
+ * Reinstall server with new version
+ */
+ private async reinstallServer(sanitizedName: string, unsanitizedName: string, registryServer: any): Promise {
+ this.features.logging.info(
+ `MCP Registry: Reinstalling server '${unsanitizedName}' with version ${registryServer.version}`
+ )
+
+ const configPath =
+ this.mcpServers.get(sanitizedName)?.__configPath__ ||
+ getGlobalAgentConfigPath(this.features.workspace.fs.getUserHomeDir())
+
+ await this.removeServer(sanitizedName)
+
+ const converter = new (await import('./mcpServerConfigConverter')).McpServerConfigConverter()
+ const newConfig = converter.convertRegistryServer(registryServer)
+
+ await this.addRegistryServer(unsanitizedName, newConfig, configPath)
+ }
}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpOauthClient.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpOauthClient.test.ts
index 08f8f1dd5c..ea711319a5 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpOauthClient.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpOauthClient.test.ts
@@ -19,6 +19,12 @@ const fakeLogger = {
error: () => {},
}
+const fakeLsp = {
+ window: {
+ showDocument: sinon.stub().resolves({ success: true }),
+ },
+} as any
+
const fakeWorkspace = {
fs: {
exists: async (_path: string) => false,
@@ -93,9 +99,10 @@ describe('OAuthClient getValidAccessToken()', () => {
beforeEach(() => {
sinon.restore()
- OAuthClient.initialize(fakeWorkspace, fakeLogger as any)
+ OAuthClient.initialize(fakeWorkspace, fakeLogger as any, fakeLsp)
sinon.stub(OAuthClient as any, 'computeKey').returns('testkey')
stubHttpServer()
+ ;(fakeLsp.window.showDocument as sinon.SinonStub).resetHistory()
})
afterEach(() => sinon.restore())
@@ -117,6 +124,6 @@ describe('OAuthClient getValidAccessToken()', () => {
interactive: true,
})
expect(token).to.equal('cached_access')
- expect((http.createServer as any).calledOnce).to.be.true
+ expect((fakeLsp.window.showDocument as sinon.SinonStub).called).to.be.false
})
})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpOauthClient.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpOauthClient.ts
index 1e9c8745d3..2e207c449e 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpOauthClient.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpOauthClient.ts
@@ -10,7 +10,7 @@ import { spawn } from 'child_process'
import { URL, URLSearchParams } from 'url'
import * as http from 'http'
import * as os from 'os'
-import { Logger, Workspace } from '@aws/language-server-runtimes/server-interface'
+import { Logger, Workspace, Lsp } from '@aws/language-server-runtimes/server-interface'
interface Token {
access_token: string
@@ -35,10 +35,12 @@ interface Registration {
export class OAuthClient {
private static logger: Logger
private static workspace: Workspace
+ private static lsp: Lsp
- public static initialize(ws: Workspace, logger: Logger): void {
+ public static initialize(ws: Workspace, logger: Logger, lsp: Lsp): void {
this.workspace = ws
this.logger = logger
+ this.lsp = lsp
}
/**
@@ -95,10 +97,11 @@ export class OAuthClient {
const savedReg = await this.read(regPath)
if (savedReg) {
const port = Number(new URL(savedReg.redirect_uri).port)
+ const normalized = `http://127.0.0.1:${port}`
server = http.createServer()
try {
- await this.listen(server, port)
- redirectUri = savedReg.redirect_uri
+ await this.listen(server, port, '127.0.0.1')
+ redirectUri = normalized
this.logger.info(`OAuth: reusing redirect URI ${redirectUri}`)
} catch (e: any) {
if (e.code === 'EADDRINUSE') {
@@ -182,9 +185,9 @@ export class OAuthClient {
/** Spin up a one‑time HTTP listener on localhost:randomPort */
private static async buildCallbackServer(): Promise<{ server: http.Server; redirectUri: string }> {
const server = http.createServer()
- await this.listen(server, 0)
+ await this.listen(server, 0, '127.0.0.1')
const port = (server.address() as any).port as number
- return { server, redirectUri: `http://localhost:${port}` }
+ return { server, redirectUri: `http://127.0.0.1:${port}` }
}
/** Discover OAuth endpoints by HEAD/WWW‑Authenticate, well‑known, or fallback */
@@ -334,7 +337,7 @@ export class OAuthClient {
redirectUri: string,
server: http.Server
): Promise {
- const DEFAULT_PKCE_TIMEOUT_MS = 20_000
+ const DEFAULT_PKCE_TIMEOUT_MS = 90_000
// a) generate PKCE params
const verifier = this.b64url(crypto.randomBytes(32))
const challenge = this.b64url(crypto.createHash('sha256').update(verifier).digest())
@@ -353,17 +356,7 @@ export class OAuthClient {
state: state,
}).toString()
- const opener =
- process.platform === 'win32'
- ? {
- cmd: 'cmd',
- args: ['/c', 'start', '', `"${authz.toString().replace(/"/g, '""')}"`],
- }
- : process.platform === 'darwin'
- ? { cmd: 'open', args: [authz.toString()] }
- : { cmd: 'xdg-open', args: [authz.toString()] }
-
- void spawn(opener.cmd, opener.args, { detached: true, stdio: 'ignore' }).unref()
+ await this.lsp.window.showDocument({ uri: authz.toString(), external: true })
// c) wait for code on our loopback
const waitForFlow = new Promise<{ code: string; rxState: string; err?: string; errDesc?: string }>(resolve => {
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryConstants.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryConstants.ts
new file mode 100644
index 0000000000..42cd8395a9
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryConstants.ts
@@ -0,0 +1,36 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+export const MCP_REGISTRY_CONSTANTS = {
+ MAX_REGISTRY_URL_LENGTH: 1024,
+ MAX_SERVER_NAME_LENGTH: 200,
+ SERVER_NAME_PATTERN: /^[a-zA-Z0-9._-]+$/,
+ TRANSPORT_TYPES: {
+ STREAMABLE_HTTP: 'streamable-http' as const,
+ SSE: 'sse' as const,
+ STDIO: 'stdio' as const,
+ },
+ REGISTRY_TYPES: {
+ NPM: 'npm' as const,
+ PYPI: 'pypi' as const,
+ OCI: 'oci' as const,
+ },
+ PACKAGE_ARGUMENT_TYPE: {
+ POSITIONAL: 'positional' as const,
+ },
+ NPM: {
+ COMMAND: 'npx',
+ FLAG: '-y',
+ ENV_VAR: 'NPM_CONFIG_REGISTRY',
+ },
+ PYPI: {
+ COMMAND: 'uvx',
+ ENV_VAR: 'UV_DEFAULT_INDEX',
+ },
+ OCI: {
+ COMMAND: 'docker',
+ FLAG: 'run',
+ },
+} as const
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.test.ts
new file mode 100644
index 0000000000..b6db635353
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.test.ts
@@ -0,0 +1,345 @@
+/*! * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+import { McpRegistryService } from './mcpRegistryService'
+import { Logging } from '@aws/language-server-runtimes/server-interface'
+import * as assert from 'assert'
+import sinon, { StubbedInstance, stubInterface } from 'ts-sinon'
+import { httpsUtils } from '@aws/lsp-core'
+import { MCP_REGISTRY_CONSTANTS } from './mcpRegistryConstants'
+
+describe('McpRegistryService', () => {
+ let service: McpRegistryService
+ let mockLogging: StubbedInstance
+ let requestContentStub: sinon.SinonStub
+
+ beforeEach(() => {
+ mockLogging = stubInterface()
+ service = new McpRegistryService(mockLogging)
+ requestContentStub = sinon.stub(httpsUtils, 'requestContent')
+ })
+
+ afterEach(() => {
+ sinon.restore()
+ })
+
+ describe('validateRegistryUrl', () => {
+ it('should accept valid HTTPS URLs', () => {
+ assert.strictEqual(service.validateRegistryUrl('https://example.com/registry.json'), true)
+ })
+
+ it('should reject HTTP URLs', () => {
+ assert.strictEqual(service.validateRegistryUrl('http://example.com/registry.json'), false)
+ })
+
+ it('should reject URLs over 1024 characters', () => {
+ const longUrl = 'https://example.com/' + 'a'.repeat(MCP_REGISTRY_CONSTANTS.MAX_REGISTRY_URL_LENGTH)
+ assert.strictEqual(service.validateRegistryUrl(longUrl), false)
+ })
+
+ it('should reject empty URLs', () => {
+ assert.strictEqual(service.validateRegistryUrl(''), false)
+ })
+ })
+
+ describe('fetchRegistry', () => {
+ it('should fetch and parse valid registry JSON', async () => {
+ const mockRegistry = {
+ servers: [
+ {
+ name: 'test-server',
+ description: 'Test server',
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: 'https://example.com' }],
+ },
+ ],
+ }
+
+ requestContentStub.resolves({ content: JSON.stringify(mockRegistry), contentType: 'application/json' })
+
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+
+ assert.notStrictEqual(result, null)
+ assert.strictEqual(result?.servers.length, 1)
+ assert.strictEqual(result?.url, 'https://example.com/registry.json')
+ })
+
+ it('should handle registry with server wrapper structure', async () => {
+ const mockRegistry = {
+ servers: [
+ {
+ server: {
+ name: 'test-server',
+ description: 'Test server',
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: 'https://example.com' }],
+ },
+ },
+ ],
+ }
+
+ requestContentStub.resolves({ content: JSON.stringify(mockRegistry), contentType: 'application/json' })
+
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+
+ assert.notStrictEqual(result, null)
+ assert.strictEqual(result?.servers.length, 1)
+ assert.strictEqual(result?.servers[0].name, 'test-server')
+ assert.strictEqual(result?.url, 'https://example.com/registry.json')
+ })
+
+ it('should return null for invalid URL', async () => {
+ const result = await service.fetchRegistry('http://example.com/registry.json')
+ assert.strictEqual(result, null)
+ })
+
+ it('should return null for missing servers array', async () => {
+ requestContentStub.resolves({ content: '{}', contentType: 'application/json' })
+
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+ assert.strictEqual(result, null)
+ })
+
+ it('should handle network errors', async () => {
+ requestContentStub.rejects(new Error('Network error'))
+
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+ assert.strictEqual(result, null)
+ })
+ })
+
+ describe('getInMemoryRegistry', () => {
+ it('should return null initially', () => {
+ assert.strictEqual(service.getInMemoryRegistry(), null)
+ })
+
+ it('should return registry after successful fetch', async () => {
+ const mockRegistry = {
+ servers: [
+ {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: 'https://example.com' }],
+ },
+ ],
+ }
+
+ requestContentStub.resolves({ content: JSON.stringify(mockRegistry), contentType: 'application/json' })
+
+ await service.fetchRegistry('https://example.com/registry.json')
+ const result = service.getInMemoryRegistry()
+
+ assert.notStrictEqual(result, null)
+ assert.strictEqual(result?.servers.length, 1)
+ })
+ })
+
+ describe('isRegistryActive', () => {
+ it('should return false initially', () => {
+ assert.strictEqual(service.isRegistryActive(), false)
+ })
+
+ it('should return true after successful fetch', async () => {
+ const mockRegistry = {
+ servers: [],
+ }
+
+ requestContentStub.resolves({ content: JSON.stringify(mockRegistry), contentType: 'application/json' })
+
+ await service.fetchRegistry('https://example.com/registry.json')
+ assert.strictEqual(service.isRegistryActive(), true)
+ })
+ })
+
+ describe('error handling and logging', () => {
+ it('should log error for empty URL', async () => {
+ const result = await service.fetchRegistry('')
+ assert.strictEqual(result, null)
+ assert.ok(mockLogging.error.calledWith('MCP Registry: URL is empty or undefined'))
+ })
+
+ it('should log error for URL exceeding max length', async () => {
+ const longUrl = 'https://' + 'a'.repeat(1100) + '.com/registry.json'
+ const result = await service.fetchRegistry(longUrl)
+ assert.strictEqual(result, null)
+ assert.ok(mockLogging.error.calledWith(sinon.match(/exceeds maximum length/)))
+ })
+
+ it('should log network error for ENOTFOUND', async () => {
+ const error = new Error('getaddrinfo ENOTFOUND invalid-domain.com')
+ requestContentStub.rejects(error)
+ const result = await service.fetchRegistry('https://invalid-domain.com/registry.json')
+ assert.strictEqual(result, null)
+ assert.ok(mockLogging.error.calledWith(sinon.match(/Network error - unable to reach/)))
+ })
+
+ it('should log network error for ECONNREFUSED', async () => {
+ const error = new Error('connect ECONNREFUSED 127.0.0.1:443')
+ requestContentStub.rejects(error)
+ const result = await service.fetchRegistry('https://localhost/registry.json')
+ assert.strictEqual(result, null)
+ assert.ok(mockLogging.error.calledWith(sinon.match(/Network error - unable to reach/)))
+ })
+
+ it('should log error for invalid JSON', async () => {
+ requestContentStub.resolves({ content: '{ invalid json }', contentType: 'application/json' })
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+ assert.strictEqual(result, null)
+ assert.ok(mockLogging.error.calledWith(sinon.match(/Invalid JSON format/)))
+ })
+
+ it('should log error for non-array servers field', async () => {
+ requestContentStub.resolves({ content: '{"servers": "not-an-array"}', contentType: 'application/json' })
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+ assert.strictEqual(result, null)
+ assert.ok(
+ mockLogging.error.calledWith(sinon.match(/Invalid registry format.*Registry must have a servers array/))
+ )
+ })
+
+ it('should log success message with server count', async () => {
+ const validRegistry = JSON.stringify({
+ servers: [
+ {
+ name: 'test-server',
+ description: 'Test server',
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: 'https://example.com' }],
+ },
+ ],
+ })
+ requestContentStub.resolves({ content: validRegistry, contentType: 'application/json' })
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+ assert.ok(result !== null)
+ assert.ok(mockLogging.info.calledWith(sinon.match(/Successfully fetched registry.*with 1 servers/)))
+ })
+
+ it('should log generic error for unknown failures', async () => {
+ const error = new Error('Unknown error occurred')
+ requestContentStub.rejects(error)
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+ assert.strictEqual(result, null)
+ assert.ok(mockLogging.error.calledWith(sinon.match(/Failed to fetch registry.*Unknown error occurred/)))
+ })
+
+ it('should log authentication error for 401 Unauthorized', async () => {
+ const error = new Error('HTTP 401 Unauthorized')
+ requestContentStub.rejects(error)
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+ assert.strictEqual(result, null)
+ assert.ok(
+ mockLogging.error.calledWith(
+ sinon.match(/Authentication required - registry URL must be accessible without credentials/)
+ )
+ )
+ })
+
+ it('should log authentication error for 403 Forbidden', async () => {
+ const error = new Error('HTTP 403 Forbidden')
+ requestContentStub.rejects(error)
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+ assert.strictEqual(result, null)
+ assert.ok(
+ mockLogging.error.calledWith(
+ sinon.match(/Authentication required - registry URL must be accessible without credentials/)
+ )
+ )
+ })
+
+ it('should log authentication error for Unauthorized message', async () => {
+ const error = new Error('Request failed: Unauthorized access')
+ requestContentStub.rejects(error)
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+ assert.strictEqual(result, null)
+ assert.ok(
+ mockLogging.error.calledWith(
+ sinon.match(/Authentication required - registry URL must be accessible without credentials/)
+ )
+ )
+ })
+ })
+
+ describe('performance with large registries', () => {
+ it('should handle registry with 200 servers efficiently', async () => {
+ const servers = []
+ for (let i = 0; i < 200; i++) {
+ servers.push({
+ name: `server-${i}`,
+ description: `Server ${i}`,
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: `https://example.com/${i}` }],
+ })
+ }
+
+ requestContentStub.resolves({ content: JSON.stringify({ servers }), contentType: 'application/json' })
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+
+ assert.notStrictEqual(result, null)
+ assert.strictEqual(result?.servers.length, 200)
+
+ // Verify lookup works
+ const server = service.getServerByName('server-150')
+ assert.notStrictEqual(server, undefined)
+ assert.strictEqual(server.name, 'server-150')
+ })
+
+ it('should handle registry with 500 servers efficiently', async () => {
+ const servers = []
+ for (let i = 0; i < 500; i++) {
+ servers.push({
+ name: `server-${i}`,
+ description: `Server ${i}`,
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: `https://example.com/${i}` }],
+ })
+ }
+
+ requestContentStub.resolves({ content: JSON.stringify({ servers }), contentType: 'application/json' })
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+
+ assert.notStrictEqual(result, null)
+ assert.strictEqual(result?.servers.length, 500)
+
+ // Verify lookup works
+ const server = service.getServerByName('server-499')
+ assert.notStrictEqual(server, undefined)
+ assert.strictEqual(server.name, 'server-499')
+ })
+
+ it('should handle registry with mixed server types', async () => {
+ const servers = []
+ for (let i = 0; i < 200; i++) {
+ if (i % 2 === 0) {
+ servers.push({
+ name: `server-${i}`,
+ description: `Remote server ${i}`,
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: `https://example.com/${i}` }],
+ })
+ } else {
+ servers.push({
+ name: `server-${i}`,
+ description: `Local server ${i}`,
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: `@test/server-${i}`,
+ version: '1.0.0',
+ transport: { type: 'stdio' },
+ },
+ ],
+ })
+ }
+ }
+
+ requestContentStub.resolves({ content: JSON.stringify({ servers }), contentType: 'application/json' })
+ const result = await service.fetchRegistry('https://example.com/registry.json')
+
+ assert.notStrictEqual(result, null)
+ assert.strictEqual(result?.servers.length, 200)
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.ts
new file mode 100644
index 0000000000..a84aab4195
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.ts
@@ -0,0 +1,130 @@
+/*! * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+import { Logging } from '@aws/language-server-runtimes/server-interface'
+import { HttpsProxyAgent } from 'hpagent'
+import { httpsUtils } from '@aws/lsp-core'
+import { McpRegistryData } from './mcpTypes'
+import { MCP_REGISTRY_CONSTANTS } from './mcpRegistryConstants'
+import { McpRegistryValidator } from './mcpRegistryValidator'
+
+export class McpRegistryService {
+ private inMemoryRegistry: McpRegistryData | null = null
+ private serverLookupMap: Map | null = null
+ private validator: McpRegistryValidator
+
+ constructor(private logging: Logging) {
+ this.validator = new McpRegistryValidator()
+ }
+
+ async fetchRegistry(url: string): Promise {
+ if (!this.validateRegistryUrl(url)) {
+ this.logging.error(`MCP Registry: Invalid registry URL format: ${url}`)
+ return null
+ }
+
+ try {
+ const proxyUrl = process.env.HTTPS_PROXY ?? process.env.https_proxy
+ const agent = proxyUrl ? new HttpsProxyAgent({ proxy: proxyUrl }) : undefined
+ const response = await httpsUtils.requestContent(url, agent)
+
+ // Validate content type to prevent HTML/JavaScript injection
+ if (
+ response.contentType &&
+ !response.contentType.includes('application/json') &&
+ !response.contentType.includes('text/plain')
+ ) {
+ this.logging.error(
+ `MCP Registry: Invalid content type '${response.contentType}' from ${url}. Expected JSON.`
+ )
+ return null
+ }
+
+ const parsed = JSON.parse(response.content)
+
+ const validationResult = this.validator.validateRegistryJson(parsed)
+ if (!validationResult.isValid) {
+ this.logging.error(
+ `MCP Registry: Invalid registry format in ${url}: ${validationResult.errors.join(', ')}`
+ )
+ return null
+ }
+
+ // Extract servers from wrapper structure if present
+ const servers = parsed.servers.map((item: any) => item.server || item)
+
+ const registryData: McpRegistryData = {
+ servers,
+ lastFetched: new Date(),
+ url,
+ }
+
+ this.inMemoryRegistry = registryData
+ this.serverLookupMap = this.buildServerLookupMap(servers)
+ this.logging.info(
+ `MCP Registry: Successfully fetched registry from ${url} with ${registryData.servers.length} servers`
+ )
+ return registryData
+ } catch (error) {
+ const errorMsg = error instanceof Error ? error.message : String(error)
+ if (errorMsg.includes('ENOTFOUND') || errorMsg.includes('ECONNREFUSED')) {
+ this.logging.error(`MCP Registry: Network error - unable to reach ${url}: ${errorMsg}`)
+ } else if (
+ errorMsg.includes('401') ||
+ errorMsg.includes('403') ||
+ errorMsg.includes('Unauthorized') ||
+ errorMsg.includes('Forbidden')
+ ) {
+ this.logging.error(
+ `MCP Registry: Authentication required - registry URL must be accessible without credentials: ${url}`
+ )
+ } else if (errorMsg.includes('JSON')) {
+ this.logging.error(`MCP Registry: Invalid JSON format in registry at ${url}: ${errorMsg}`)
+ } else {
+ this.logging.error(`MCP Registry: Failed to fetch registry from ${url}: ${errorMsg}`)
+ }
+ return null
+ }
+ }
+
+ getInMemoryRegistry(): McpRegistryData | null {
+ return this.inMemoryRegistry
+ }
+
+ validateRegistryUrl(url: string): boolean {
+ if (!url) {
+ this.logging.error('MCP Registry: URL is empty or undefined')
+ return false
+ }
+ if (url.length > MCP_REGISTRY_CONSTANTS.MAX_REGISTRY_URL_LENGTH) {
+ this.logging.error(
+ `MCP Registry: URL exceeds maximum length of ${MCP_REGISTRY_CONSTANTS.MAX_REGISTRY_URL_LENGTH} characters`
+ )
+ return false
+ }
+ if (!url.startsWith('https://')) {
+ this.logging.error('MCP Registry: URL must use HTTPS protocol')
+ return false
+ }
+ return true
+ }
+
+ isRegistryActive(): boolean {
+ return this.inMemoryRegistry !== null
+ }
+
+ getServerByName(name: string): any | undefined {
+ return this.serverLookupMap?.get(name)
+ }
+
+ private buildServerLookupMap(servers: any[]): Map {
+ const map = new Map()
+ for (const server of servers) {
+ if (server.name) {
+ map.set(server.name, server)
+ }
+ }
+ return map
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.test.ts
new file mode 100644
index 0000000000..6cfc8b53a6
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.test.ts
@@ -0,0 +1,542 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+import { McpRegistryValidator } from './mcpRegistryValidator'
+import { McpRegistryData } from './mcpTypes'
+import { MCP_REGISTRY_CONSTANTS } from './mcpRegistryConstants'
+import * as assert from 'assert'
+
+describe('McpRegistryValidator', () => {
+ let validator: McpRegistryValidator
+
+ beforeEach(() => {
+ validator = new McpRegistryValidator()
+ })
+
+ describe('validateRegistryJson', () => {
+ it('should accept valid registry with servers array', () => {
+ const registry = {
+ servers: [
+ {
+ name: 'mcp-fs',
+ description: 'Test server',
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: 'https://example.com' }],
+ },
+ ],
+ }
+ const result = validator.validateRegistryJson(registry)
+ assert.strictEqual(result.isValid, true)
+ assert.strictEqual(result.errors.length, 0)
+ })
+
+ it('should accept registry with server wrapper structure', () => {
+ const registry = {
+ servers: [
+ {
+ server: {
+ name: 'mcp-fs',
+ description: 'Test server',
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: 'https://example.com' }],
+ },
+ },
+ ],
+ }
+ const result = validator.validateRegistryJson(registry)
+ assert.strictEqual(result.isValid, true)
+ assert.strictEqual(result.errors.length, 0)
+ })
+
+ it('should reject non-object registry', () => {
+ const result = validator.validateRegistryJson(null)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.includes('Registry must be an object'))
+ })
+
+ it('should reject registry without servers array', () => {
+ const result = validator.validateRegistryJson({})
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.includes('Registry must have a servers array'))
+ })
+
+ it('should validate all servers in array', () => {
+ const registry = {
+ servers: [
+ {
+ name: 'test1',
+ description: 'Test',
+ version: '1.0.0',
+ remotes: [{ type: 'sse', url: 'https://example.com' }],
+ },
+ { description: 'Missing name', version: '1.0.0' },
+ ],
+ }
+ const result = validator.validateRegistryJson(registry)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('Server 1')))
+ })
+ })
+
+ describe('validateServerDefinition', () => {
+ it('should accept valid remote server', () => {
+ const server = {
+ name: 'mcp-fs',
+ description: 'Test server',
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: 'https://example.com' }],
+ }
+ const result = validator.validateServerDefinition(server)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should accept valid local server', () => {
+ const server = {
+ name: 'everything',
+ description: 'Test server',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: '@example/package',
+ version: '1.0.0',
+ transport: { type: 'stdio' },
+ },
+ ],
+ }
+ const result = validator.validateServerDefinition(server)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should reject server without name', () => {
+ const server = { description: 'Test', version: '1.0.0', remotes: [] }
+ const result = validator.validateServerDefinition(server)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('name')))
+ })
+
+ it('should reject server without description', () => {
+ const server = { name: 'test', version: '1.0.0', remotes: [] }
+ const result = validator.validateServerDefinition(server)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('description')))
+ })
+
+ it('should reject server without version', () => {
+ const server = { name: 'test', description: 'Test', remotes: [] }
+ const result = validator.validateServerDefinition(server)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('version')))
+ })
+
+ it('should reject server without remotes or packages', () => {
+ const server = { name: 'test', description: 'Test', version: '1.0.0' }
+ const result = validator.validateServerDefinition(server)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('remotes or packages')))
+ })
+
+ it('should reject server with both remotes and packages', () => {
+ const server = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ remotes: [{ type: 'sse', url: 'https://example.com' }],
+ packages: [{ registryType: 'npm', identifier: 'pkg', version: '1.0.0', transport: { type: 'stdio' } }],
+ }
+ const result = validator.validateServerDefinition(server)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('cannot have both')))
+ })
+ })
+
+ describe('validateServerName', () => {
+ it('should accept simple identifier names', () => {
+ assert.strictEqual(validator.validateServerName('mcp-fs').isValid, true)
+ assert.strictEqual(validator.validateServerName('everything').isValid, true)
+ assert.strictEqual(validator.validateServerName('server-name').isValid, true)
+ })
+
+ it('should accept names with dots, underscores, and hyphens', () => {
+ assert.strictEqual(validator.validateServerName('server.name').isValid, true)
+ assert.strictEqual(validator.validateServerName('server_name').isValid, true)
+ assert.strictEqual(validator.validateServerName('server-name').isValid, true)
+ assert.strictEqual(validator.validateServerName('server.name_test-123').isValid, true)
+ })
+
+ it('should reject names with slashes', () => {
+ const result1 = validator.validateServerName('com.example/test')
+ assert.strictEqual(result1.isValid, false)
+ assert.ok(result1.errors.some(e => e.includes('simple identifier')))
+
+ const result2 = validator.validateServerName('org.acme/my-server')
+ assert.strictEqual(result2.isValid, false)
+ assert.ok(result2.errors.some(e => e.includes('simple identifier')))
+ })
+
+ it('should reject names with special characters', () => {
+ const result1 = validator.validateServerName('server@name')
+ assert.strictEqual(result1.isValid, false)
+ assert.ok(result1.errors.some(e => e.includes('simple identifier')))
+
+ const result2 = validator.validateServerName('server name')
+ assert.strictEqual(result2.isValid, false)
+ assert.ok(result2.errors.some(e => e.includes('simple identifier')))
+ })
+
+ it('should accept names up to 200 characters', () => {
+ const name = 'a'.repeat(MCP_REGISTRY_CONSTANTS.MAX_SERVER_NAME_LENGTH)
+ assert.strictEqual(validator.validateServerName(name).isValid, true)
+ })
+
+ it('should reject names over 200 characters', () => {
+ const name = 'a'.repeat(MCP_REGISTRY_CONSTANTS.MAX_SERVER_NAME_LENGTH + 1)
+ const result = validator.validateServerName(name)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('3-200 characters')))
+ })
+
+ it('should reject empty names', () => {
+ const result = validator.validateServerName('')
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('cannot be empty')))
+ })
+
+ it('should reject names shorter than 3 characters', () => {
+ const result1 = validator.validateServerName('ab')
+ assert.strictEqual(result1.isValid, false)
+ assert.ok(result1.errors.some(e => e.includes('3-200 characters')))
+
+ const result2 = validator.validateServerName('a')
+ assert.strictEqual(result2.isValid, false)
+ assert.ok(result2.errors.some(e => e.includes('3-200 characters')))
+ })
+
+ it('should accept names with exactly 3 characters', () => {
+ const result = validator.validateServerName('abc')
+ assert.strictEqual(result.isValid, true)
+ })
+ })
+
+ describe('validateServerNameUniqueness', () => {
+ it('should accept registry with unique server names', () => {
+ const servers = [
+ { name: 'mcp-fs', description: 'Test 1', version: '1.0.0' },
+ { name: 'everything', description: 'Test 2', version: '1.0.0' },
+ { name: 'server-three', description: 'Test 3', version: '1.0.0' },
+ ]
+ const result = validator.validateServerNameUniqueness(servers)
+ assert.strictEqual(result.isValid, true)
+ assert.strictEqual(result.errors.length, 0)
+ })
+
+ it('should reject registry with duplicate server names', () => {
+ const servers = [
+ { name: 'mcp-fs', description: 'Test 1', version: '1.0.0' },
+ { name: 'everything', description: 'Test 2', version: '1.0.0' },
+ { name: 'mcp-fs', description: 'Duplicate', version: '2.0.0' },
+ ]
+ const result = validator.validateServerNameUniqueness(servers)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes("Duplicate server name 'mcp-fs'")))
+ })
+
+ it('should detect multiple duplicates', () => {
+ const servers = [
+ { name: 'server-a', description: 'Test 1', version: '1.0.0' },
+ { name: 'server-b', description: 'Test 2', version: '1.0.0' },
+ { name: 'server-a', description: 'Duplicate A', version: '2.0.0' },
+ { name: 'server-b', description: 'Duplicate B', version: '2.0.0' },
+ ]
+ const result = validator.validateServerNameUniqueness(servers)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes("Duplicate server name 'server-a'")))
+ assert.ok(result.errors.some(e => e.includes("Duplicate server name 'server-b'")))
+ })
+
+ it('should handle empty servers array', () => {
+ const result = validator.validateServerNameUniqueness([])
+ assert.strictEqual(result.isValid, true)
+ assert.strictEqual(result.errors.length, 0)
+ })
+
+ it('should handle servers without name field', () => {
+ const servers = [
+ { name: 'valid-server', description: 'Test', version: '1.0.0' },
+ { description: 'No name', version: '1.0.0' },
+ ]
+ const result = validator.validateServerNameUniqueness(servers)
+ assert.strictEqual(result.isValid, true)
+ })
+ })
+
+ describe('validateRemoteServer', () => {
+ it('should accept valid streamable-http remote', () => {
+ const remotes = [{ type: 'streamable-http', url: 'https://example.com' }]
+ const result = validator.validateRemoteServer(remotes)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should accept valid sse remote', () => {
+ const remotes = [{ type: 'sse', url: 'https://example.com' }]
+ const result = validator.validateRemoteServer(remotes)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should accept optional headers', () => {
+ const remotes = [
+ {
+ type: 'streamable-http',
+ url: 'https://example.com',
+ headers: [
+ { name: 'Authorization', value: 'Bearer token' },
+ { name: 'X-Custom', value: 'value' },
+ ],
+ },
+ ]
+ const result = validator.validateRemoteServer(remotes)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should reject multiple remotes entries', () => {
+ const remotes = [
+ { type: 'sse', url: 'https://example1.com' },
+ { type: 'sse', url: 'https://example2.com' },
+ ]
+ const result = validator.validateRemoteServer(remotes)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('exactly one')))
+ })
+
+ it('should reject invalid transport type', () => {
+ const remotes = [{ type: 'invalid', url: 'https://example.com' }]
+ const result = validator.validateRemoteServer(remotes)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('streamable-http or sse')))
+ })
+
+ it('should reject missing url', () => {
+ const remotes = [{ type: 'sse' }]
+ const result = validator.validateRemoteServer(remotes)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('url')))
+ })
+
+ it('should reject invalid headers format', () => {
+ const remotes = [{ type: 'sse', url: 'https://example.com', headers: [{ name: 'Test' }] }]
+ const result = validator.validateRemoteServer(remotes)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('value')))
+ })
+ })
+
+ describe('validateLocalServer', () => {
+ it('should accept valid npm package', () => {
+ const packages = [
+ {
+ registryType: 'npm',
+ identifier: '@example/package',
+ transport: { type: 'stdio' },
+ },
+ ]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should accept valid pypi package', () => {
+ const packages = [
+ {
+ registryType: 'pypi',
+ identifier: 'example-package',
+ transport: { type: 'stdio' },
+ },
+ ]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should accept optional packageArguments', () => {
+ const packages = [
+ {
+ registryType: 'npm',
+ identifier: 'pkg',
+ transport: { type: 'stdio' },
+ packageArguments: [{ value: 'arg1' }, { value: 'arg2' }],
+ },
+ ]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should accept optional environmentVariables', () => {
+ const packages = [
+ {
+ registryType: 'npm',
+ identifier: 'pkg',
+ transport: { type: 'stdio' },
+ environmentVariables: [
+ { name: 'API_KEY', value: 'default-key' },
+ { name: 'ENV', value: 'production' },
+ ],
+ },
+ ]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should reject multiple packages entries', () => {
+ const packages = [
+ { registryType: 'npm', identifier: 'pkg1', transport: { type: 'stdio' } },
+ { registryType: 'npm', identifier: 'pkg2', transport: { type: 'stdio' } },
+ ]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('exactly one')))
+ })
+
+ it('should reject invalid registryType', () => {
+ const packages = [{ registryType: 'invalid', identifier: 'pkg', transport: { type: 'stdio' } }]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes('npm, pypi, or oci')))
+ })
+
+ it('should accept oci registryType', () => {
+ const packages = [
+ {
+ registryType: 'oci',
+ identifier: 'mcp/filesystem',
+ transport: { type: 'stdio' },
+ },
+ ]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should accept non-stdio transport types', () => {
+ const packages = [{ registryType: 'npm', identifier: 'pkg', transport: { type: 'streamable-http' } }]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should accept packageArguments with only value field', () => {
+ const packages = [
+ {
+ registryType: 'npm',
+ identifier: 'pkg',
+ transport: { type: 'stdio' },
+ packageArguments: [{ value: 'arg' }],
+ },
+ ]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should accept runtimeArguments', () => {
+ const packages = [
+ {
+ registryType: 'npm',
+ identifier: 'pkg',
+ transport: { type: 'stdio' },
+ runtimeArguments: [{ value: '--silent' }],
+ },
+ ]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, true)
+ })
+
+ it('should accept environmentVariables with only name field', () => {
+ const packages = [
+ {
+ registryType: 'npm',
+ identifier: 'pkg',
+ transport: { type: 'stdio' },
+ environmentVariables: [{ name: 'VAR' }],
+ },
+ ]
+ const result = validator.validateLocalServer(packages)
+ assert.strictEqual(result.isValid, true)
+ })
+ })
+
+ describe('registry validation with uniqueness check', () => {
+ it('should reject registry with duplicate server names', () => {
+ const registry = {
+ servers: [
+ {
+ name: 'mcp-fs',
+ description: 'First',
+ version: '1.0.0',
+ remotes: [{ type: 'sse', url: 'https://example.com' }],
+ },
+ {
+ name: 'everything',
+ description: 'Second',
+ version: '1.0.0',
+ packages: [{ registryType: 'npm', identifier: 'pkg', transport: { type: 'stdio' } }],
+ },
+ {
+ name: 'mcp-fs',
+ description: 'Duplicate',
+ version: '2.0.0',
+ remotes: [{ type: 'sse', url: 'https://other.com' }],
+ },
+ ],
+ }
+ const result = validator.validateRegistryJson(registry)
+ assert.strictEqual(result.isValid, false)
+ assert.ok(result.errors.some(e => e.includes("Duplicate server name 'mcp-fs'")))
+ })
+ })
+
+ describe('validateTimeout', () => {
+ it('should accept valid timeout values', () => {
+ const result = validator.validateTimeout(5000)
+ assert.strictEqual(result.isValid, true)
+ assert.strictEqual(result.errors.length, 0)
+ })
+
+ it('should accept any positive integer', () => {
+ assert.strictEqual(validator.validateTimeout(1).isValid, true)
+ assert.strictEqual(validator.validateTimeout(1000).isValid, true)
+ assert.strictEqual(validator.validateTimeout(60000).isValid, true)
+ assert.strictEqual(validator.validateTimeout(300000).isValid, true)
+ })
+
+ it('should accept undefined timeout', () => {
+ const result = validator.validateTimeout(undefined)
+ assert.strictEqual(result.isValid, true)
+ assert.strictEqual(result.errors.length, 0)
+ })
+
+ it('should reject non-integer timeout', () => {
+ const result = validator.validateTimeout(5000.5)
+ assert.strictEqual(result.isValid, false)
+ assert.strictEqual(result.errors.length, 1)
+ assert.ok(result.errors[0].includes('positive integer'))
+ })
+
+ it('should reject string timeout', () => {
+ const result = validator.validateTimeout('5000' as any)
+ assert.strictEqual(result.isValid, false)
+ assert.strictEqual(result.errors.length, 1)
+ assert.ok(result.errors[0].includes('positive integer'))
+ })
+
+ it('should reject negative timeout', () => {
+ const result = validator.validateTimeout(-5000)
+ assert.strictEqual(result.isValid, false)
+ assert.strictEqual(result.errors.length, 1)
+ assert.ok(result.errors[0].includes('positive integer'))
+ })
+
+ it('should reject zero timeout', () => {
+ const result = validator.validateTimeout(0)
+ assert.strictEqual(result.isValid, false)
+ assert.strictEqual(result.errors.length, 1)
+ assert.ok(result.errors[0].includes('positive integer'))
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.ts
new file mode 100644
index 0000000000..e8138aedc2
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.ts
@@ -0,0 +1,236 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+import { McpRegistryData } from './mcpTypes'
+import { MCP_REGISTRY_CONSTANTS } from './mcpRegistryConstants'
+
+export interface ValidationResult {
+ isValid: boolean
+ errors: string[]
+}
+
+export class McpRegistryValidator {
+ validateRegistryJson(json: any): ValidationResult {
+ const errors: string[] = []
+
+ if (!json || typeof json !== 'object') {
+ errors.push('Registry must be an object')
+ return { isValid: false, errors }
+ }
+
+ if (!Array.isArray(json.servers)) {
+ errors.push('Registry must have a servers array')
+ return { isValid: false, errors }
+ }
+
+ // Extract servers from wrapper structure if present
+ const servers = json.servers.map((item: any) => {
+ // Support both direct server objects and {server: {...}} wrapper
+ return item.server || item
+ })
+
+ // Validate server name uniqueness
+ const uniquenessResult = this.validateServerNameUniqueness(servers)
+ errors.push(...uniquenessResult.errors)
+
+ servers.forEach((server: any, index: number) => {
+ const serverErrors = this.validateServerDefinition(server).errors
+ serverErrors.forEach(err => errors.push(`Server ${index}: ${err}`))
+ })
+
+ return { isValid: errors.length === 0, errors }
+ }
+
+ validateServerDefinition(server: any): ValidationResult {
+ const errors: string[] = []
+
+ if (!server || typeof server !== 'object') {
+ errors.push('Server must be an object')
+ return { isValid: false, errors }
+ }
+
+ if (!server.name || typeof server.name !== 'string') {
+ errors.push('Server must have a name field')
+ } else if (!this.validateServerName(server.name).isValid) {
+ errors.push(`Invalid server name format: ${server.name}`)
+ }
+
+ if (!server.description || typeof server.description !== 'string') {
+ errors.push('Server must have a description field')
+ }
+
+ if (!server.version || typeof server.version !== 'string') {
+ errors.push('Server must have a version field')
+ }
+
+ const hasRemotes = server.remotes && Array.isArray(server.remotes)
+ const hasPackages = server.packages && Array.isArray(server.packages)
+
+ if (!hasRemotes && !hasPackages) {
+ errors.push('Server must have either remotes or packages array')
+ } else if (hasRemotes && hasPackages) {
+ errors.push('Server cannot have both remotes and packages')
+ } else if (hasRemotes) {
+ const remoteErrors = this.validateRemoteServer(server.remotes).errors
+ remoteErrors.forEach(err => errors.push(err))
+ } else if (hasPackages) {
+ const packageErrors = this.validateLocalServer(server.packages).errors
+ packageErrors.forEach(err => errors.push(err))
+ }
+
+ return { isValid: errors.length === 0, errors }
+ }
+
+ validateServerName(name: string): ValidationResult {
+ const errors: string[] = []
+
+ if (!name || name.length === 0) {
+ errors.push('Server name cannot be empty')
+ } else if (name.length < 3 || name.length > MCP_REGISTRY_CONSTANTS.MAX_SERVER_NAME_LENGTH) {
+ errors.push('Server name must be 3-200 characters')
+ } else if (!MCP_REGISTRY_CONSTANTS.SERVER_NAME_PATTERN.test(name)) {
+ errors.push('Server name must match pattern ^[a-zA-Z0-9._-]+$ (simple identifier)')
+ }
+
+ return { isValid: errors.length === 0, errors }
+ }
+
+ validateServerNameUniqueness(servers: any[]): ValidationResult {
+ const errors: string[] = []
+ const nameSet = new Set()
+
+ servers.forEach((server, index) => {
+ if (server && server.name) {
+ if (nameSet.has(server.name)) {
+ errors.push(`Duplicate server name '${server.name}' at index ${index}`)
+ } else {
+ nameSet.add(server.name)
+ }
+ }
+ })
+
+ return { isValid: errors.length === 0, errors }
+ }
+
+ validateTimeout(timeout: any): ValidationResult {
+ const errors: string[] = []
+
+ if (timeout !== undefined) {
+ if (typeof timeout !== 'number' || !Number.isInteger(timeout) || timeout <= 0) {
+ errors.push('Timeout must be a positive integer')
+ }
+ }
+
+ return { isValid: errors.length === 0, errors }
+ }
+
+ validateRemoteServer(remotes: any[]): ValidationResult {
+ const errors: string[] = []
+
+ if (remotes.length !== 1) {
+ errors.push('Remote server must have exactly one remotes entry')
+ return { isValid: false, errors }
+ }
+
+ const remote = remotes[0]
+ const validTypes = [
+ MCP_REGISTRY_CONSTANTS.TRANSPORT_TYPES.STREAMABLE_HTTP,
+ MCP_REGISTRY_CONSTANTS.TRANSPORT_TYPES.SSE,
+ ]
+ if (!remote.type || !validTypes.includes(remote.type)) {
+ errors.push('Remote type must be streamable-http or sse')
+ }
+
+ if (!remote.url || typeof remote.url !== 'string') {
+ errors.push('Remote must have a url field')
+ }
+
+ if (remote.headers) {
+ if (!Array.isArray(remote.headers)) {
+ errors.push('Remote headers must be an array')
+ } else {
+ remote.headers.forEach((header: any, index: number) => {
+ if (!header.name || typeof header.name !== 'string') {
+ errors.push(`Header ${index} must have a name field`)
+ }
+ if (!header.value || typeof header.value !== 'string') {
+ errors.push(`Header ${index} must have a value field`)
+ }
+ })
+ }
+ }
+
+ return { isValid: errors.length === 0, errors }
+ }
+
+ validateLocalServer(packages: any[]): ValidationResult {
+ const errors: string[] = []
+
+ if (packages.length !== 1) {
+ errors.push('Local server must have exactly one packages entry')
+ return { isValid: false, errors }
+ }
+
+ const pkg = packages[0]
+ const validRegistryTypes = [
+ MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.NPM,
+ MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.PYPI,
+ MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.OCI,
+ ]
+ if (!pkg.registryType || !validRegistryTypes.includes(pkg.registryType)) {
+ errors.push('Package registryType must be npm, pypi, or oci')
+ }
+
+ if (!pkg.identifier || typeof pkg.identifier !== 'string') {
+ errors.push('Package must have an identifier field')
+ }
+
+ if (!pkg.transport || !pkg.transport.type) {
+ errors.push('Package must have a transport field with type')
+ }
+
+ if (pkg.runtimeArguments) {
+ if (!Array.isArray(pkg.runtimeArguments)) {
+ errors.push('Package runtimeArguments must be an array')
+ } else {
+ pkg.runtimeArguments.forEach((arg: any, index: number) => {
+ if (!arg.value || typeof arg.value !== 'string') {
+ errors.push(`RuntimeArgument ${index} must have a value field`)
+ }
+ })
+ }
+ }
+
+ if (pkg.packageArguments) {
+ if (!Array.isArray(pkg.packageArguments)) {
+ errors.push('Package packageArguments must be an array')
+ } else {
+ pkg.packageArguments.forEach((arg: any, index: number) => {
+ if (!arg.value || typeof arg.value !== 'string') {
+ errors.push(`PackageArgument ${index} must have a value field`)
+ }
+ })
+ }
+ }
+
+ if (pkg.environmentVariables) {
+ if (!Array.isArray(pkg.environmentVariables)) {
+ errors.push('Package environmentVariables must be an array')
+ } else {
+ pkg.environmentVariables.forEach((envVar: any, index: number) => {
+ if (!envVar.name || typeof envVar.name !== 'string') {
+ errors.push(`EnvironmentVariable ${index} must have a name field`)
+ }
+ })
+ }
+ }
+
+ return { isValid: errors.length === 0, errors }
+ }
+
+ isServerInRegistry(serverName: string, registry: McpRegistryData): boolean {
+ return registry.servers.some(s => s.name === serverName)
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.test.ts
new file mode 100644
index 0000000000..ed753b65b4
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.test.ts
@@ -0,0 +1,629 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+import * as assert from 'assert'
+import { McpServerConfigConverter } from './mcpServerConfigConverter'
+import { McpRegistryServer } from './mcpTypes'
+
+describe('McpServerConfigConverter', () => {
+ let converter: McpServerConfigConverter
+
+ beforeEach(() => {
+ converter = new McpServerConfigConverter()
+ })
+
+ describe('convertRegistryServer', () => {
+ it('should convert remote server', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test-remote',
+ description: 'Test remote server',
+ version: '1.0.0',
+ remotes: [
+ {
+ type: 'streamable-http',
+ url: 'https://example.com/mcp',
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.url, 'https://example.com/mcp')
+ assert.strictEqual(result.command, undefined)
+ })
+
+ it('should convert local npm server with version', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test-local',
+ description: 'Test local server',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: '@example/package',
+ transport: { type: 'stdio' },
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'npx')
+ assert.deepStrictEqual(result.args, ['-y', '@example/package@1.0.0'])
+ assert.strictEqual(result.url, undefined)
+ })
+
+ it('should convert pypi server with --default-index flag', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test-pypi',
+ description: 'Test pypi server',
+ version: '1.0.2',
+ packages: [
+ {
+ registryType: 'pypi',
+ registryBaseUrl: 'https://private-pypi.acme.com',
+ identifier: 'awslabs.ccapi-mcp-server',
+ transport: { type: 'stdio' },
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'uvx')
+ assert.deepStrictEqual(result.args, [
+ '--default-index=https://private-pypi.acme.com',
+ 'awslabs.ccapi-mcp-server@1.0.2',
+ ])
+ assert.strictEqual(result.env!['UV_DEFAULT_INDEX'], undefined)
+ })
+
+ it('should convert npm server with NPM_CONFIG_REGISTRY', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test-npm',
+ description: 'Test npm server',
+ version: '0.6.2',
+ packages: [
+ {
+ registryType: 'npm',
+ registryBaseUrl: 'https://private-npm.acme.com',
+ identifier: '@modelcontextprotocol/everything',
+ transport: { type: 'stdio' },
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'npx')
+ assert.deepStrictEqual(result.args, ['-y', '@modelcontextprotocol/everything@0.6.2'])
+ assert.strictEqual(result.env!['NPM_CONFIG_REGISTRY'], 'https://private-npm.acme.com')
+ })
+
+ it('should throw error for invalid server', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'invalid',
+ description: 'Invalid server',
+ version: '1.0.0',
+ }
+
+ assert.throws(() => converter.convertRegistryServer(registryServer))
+ })
+ })
+
+ describe('convertRemoteServer', () => {
+ it('should convert remote server with headers', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ remotes: [
+ {
+ type: 'sse',
+ url: 'https://example.com/mcp',
+ headers: [
+ { name: 'Authorization', value: 'Bearer token' },
+ { name: 'X-Custom', value: 'value' },
+ ],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.url, 'https://example.com/mcp')
+ assert.deepStrictEqual(result.headers, {
+ Authorization: 'Bearer token',
+ 'X-Custom': 'value',
+ })
+ })
+
+ it('should convert remote server without headers', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ remotes: [
+ {
+ type: 'streamable-http',
+ url: 'https://example.com/mcp',
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.url, 'https://example.com/mcp')
+ assert.strictEqual(result.headers, undefined)
+ })
+ })
+
+ describe('convertLocalServer', () => {
+ it('should convert package with arguments', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: '@example/package',
+ transport: { type: 'stdio' },
+ packageArguments: [
+ { type: 'positional', value: '--verbose' },
+ { type: 'positional', value: '--debug' },
+ ],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'npx')
+ assert.deepStrictEqual(result.args, ['-y', '@example/package@1.0.0', '--verbose', '--debug'])
+ })
+
+ it('should convert package with environment variables', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: '@example/package',
+ transport: { type: 'stdio' },
+ environmentVariables: [
+ { name: 'API_KEY', value: 'default-key' },
+ { name: 'ENV', value: 'production' },
+ ],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'npx')
+ assert.deepStrictEqual(result.args, ['-y', '@example/package@1.0.0'])
+ assert.deepStrictEqual(result.env, {
+ API_KEY: 'default-key',
+ ENV: 'production',
+ })
+ })
+
+ it('should convert package with both arguments and environment variables', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: '@example/package',
+ transport: { type: 'stdio' },
+ packageArguments: [{ type: 'positional', value: '--verbose' }],
+ environmentVariables: [{ name: 'DEBUG', value: 'true' }],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'npx')
+ assert.deepStrictEqual(result.args, ['-y', '@example/package@1.0.0', '--verbose'])
+ assert.deepStrictEqual(result.env, { DEBUG: 'true' })
+ })
+
+ it('should convert pypi package with all options', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.2',
+ packages: [
+ {
+ registryType: 'pypi',
+ registryBaseUrl: 'https://private-pypi.acme.com',
+ identifier: 'awslabs.ccapi-mcp-server',
+ transport: { type: 'stdio' },
+ packageArguments: [{ type: 'positional', value: '--readonly' }],
+ environmentVariables: [{ name: 'AWS_PROFILE', value: 'profile-16' }],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'uvx')
+ assert.deepStrictEqual(result.args, [
+ '--default-index=https://private-pypi.acme.com',
+ 'awslabs.ccapi-mcp-server@1.0.2',
+ '--readonly',
+ ])
+ assert.deepStrictEqual(result.env, {
+ AWS_PROFILE: 'profile-16',
+ })
+ })
+
+ it('should convert npm package with runtimeArguments', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '0.6.2',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: '@modelcontextprotocol/everything',
+ transport: { type: 'stdio' },
+ runtimeArguments: [{ type: 'positional', value: '--silent' }],
+ packageArguments: [{ type: 'positional', value: '--verbose' }],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'npx')
+ assert.deepStrictEqual(result.args, [
+ '-y',
+ '--silent',
+ '@modelcontextprotocol/everything@0.6.2',
+ '--verbose',
+ ])
+ })
+
+ it('should convert pypi package with runtimeArguments', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.2',
+ packages: [
+ {
+ registryType: 'pypi',
+ registryBaseUrl: 'https://private-pypi.acme.com',
+ identifier: 'awslabs.ccapi-mcp-server',
+ transport: { type: 'stdio' },
+ runtimeArguments: [{ type: 'positional', value: '-q' }],
+ packageArguments: [{ type: 'positional', value: '--readonly' }],
+ environmentVariables: [{ name: 'AWS_PROFILE', value: 'profile-16' }],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'uvx')
+ assert.deepStrictEqual(result.args, [
+ '--default-index=https://private-pypi.acme.com',
+ '-q',
+ 'awslabs.ccapi-mcp-server@1.0.2',
+ '--readonly',
+ ])
+ assert.deepStrictEqual(result.env, {
+ AWS_PROFILE: 'profile-16',
+ })
+ })
+
+ it('should convert npm package with only runtimeArguments', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: '@example/package',
+ transport: { type: 'stdio' },
+ runtimeArguments: [{ type: 'positional', value: '--silent' }],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'npx')
+ assert.deepStrictEqual(result.args, ['-y', '--silent', '@example/package@1.0.0'])
+ })
+
+ it('should convert pypi package with only runtimeArguments', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'pypi',
+ identifier: 'example-package',
+ transport: { type: 'stdio' },
+ runtimeArguments: [{ type: 'positional', value: '-q' }],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'uvx')
+ assert.deepStrictEqual(result.args, ['-q', 'example-package@1.0.0'])
+ })
+
+ it('should maintain backward compatibility without runtimeArguments', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: '@example/package',
+ transport: { type: 'stdio' },
+ packageArguments: [{ type: 'positional', value: '--verbose' }],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'npx')
+ assert.deepStrictEqual(result.args, ['-y', '@example/package@1.0.0', '--verbose'])
+ })
+
+ it('should convert oci package with basic configuration', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'filesystem-mcp',
+ description: 'MCP server for filesystem operations',
+ version: '1.0.2',
+ packages: [
+ {
+ registryType: 'oci',
+ registryBaseUrl: 'https://docker.acme.com:5000',
+ identifier: 'mcp/filesystem',
+ transport: { type: 'stdio' },
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'docker')
+ assert.deepStrictEqual(result.args, ['run', 'https://docker.acme.com:5000/mcp/filesystem:1.0.2'])
+ })
+
+ it('should convert oci package with runtimeArguments', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'filesystem-mcp',
+ description: 'MCP server for filesystem operations',
+ version: '1.0.2',
+ packages: [
+ {
+ registryType: 'oci',
+ registryBaseUrl: 'https://docker.acme.com:5000',
+ identifier: 'mcp/filesystem',
+ transport: { type: 'stdio' },
+ runtimeArguments: [
+ { type: 'positional', value: '-i' },
+ { type: 'positional', value: '--rm' },
+ ],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'docker')
+ assert.deepStrictEqual(result.args, [
+ 'run',
+ '-i',
+ '--rm',
+ 'https://docker.acme.com:5000/mcp/filesystem:1.0.2',
+ ])
+ })
+
+ it('should convert oci package with mount arguments', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'filesystem-mcp',
+ description: 'MCP server for filesystem operations',
+ version: '1.0.2',
+ packages: [
+ {
+ registryType: 'oci',
+ registryBaseUrl: 'https://docker.acme.com:5000',
+ identifier: 'mcp/filesystem',
+ transport: { type: 'stdio' },
+ runtimeArguments: [
+ { type: 'positional', value: '-i' },
+ { type: 'positional', value: '--rm' },
+ { type: 'positional', value: '--mount' },
+ { type: 'positional', value: 'type=bind,src=~/Desktop,dst=/projects/Desktop' },
+ ],
+ packageArguments: [{ type: 'positional', value: '/projects' }],
+ environmentVariables: [{ name: 'LOG_LEVEL', value: 'info' }],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'docker')
+ assert.deepStrictEqual(result.args, [
+ 'run',
+ '-i',
+ '--rm',
+ '--mount',
+ 'type=bind,src=~/Desktop,dst=/projects/Desktop',
+ '-e',
+ 'LOG_LEVEL=info',
+ 'https://docker.acme.com:5000/mcp/filesystem:1.0.2',
+ '/projects',
+ ])
+ assert.deepStrictEqual(result.env, { LOG_LEVEL: 'info' })
+ })
+
+ it('should convert oci package without registryBaseUrl', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'public-image',
+ description: 'Public Docker image',
+ version: '2.0.0',
+ packages: [
+ {
+ registryType: 'oci',
+ identifier: 'public/mcp-server',
+ transport: { type: 'stdio' },
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'docker')
+ assert.deepStrictEqual(result.args, ['run', 'public/mcp-server:2.0.0'])
+ })
+
+ it('should convert oci package with registry URL containing port', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test-oci',
+ description: 'Test OCI server',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'oci',
+ registryBaseUrl: 'docker.io:443',
+ identifier: 'library/alpine',
+ transport: { type: 'stdio' },
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'docker')
+ assert.deepStrictEqual(result.args, ['run', 'docker.io:443/library/alpine:1.0.0'])
+ })
+
+ it('should convert oci package with identifier containing tag', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'docker-test',
+ description: 'Test Docker-based MCP server',
+ version: '0.6.2',
+ packages: [
+ {
+ registryType: 'oci',
+ registryBaseUrl: 'docker.io',
+ identifier: 'node:20-alpine',
+ transport: { type: 'stdio' },
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'docker')
+ assert.deepStrictEqual(result.args, ['run', 'docker.io/node:20-alpine'])
+ })
+
+ it('should convert oci package with identifier containing tag and no registryBaseUrl', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'docker-test',
+ description: 'Test Docker-based MCP server',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'oci',
+ identifier: 'node:20-alpine',
+ transport: { type: 'stdio' },
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'docker')
+ assert.deepStrictEqual(result.args, ['run', 'node:20-alpine'])
+ })
+
+ it('should convert oci package with identifier containing tag and runtimeArguments', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'docker-test',
+ description: 'Test Docker-based MCP server',
+ version: '0.6.2',
+ packages: [
+ {
+ registryType: 'oci',
+ registryBaseUrl: 'docker.io',
+ identifier: 'node:20-alpine',
+ transport: { type: 'stdio' },
+ runtimeArguments: [
+ { type: 'positional', value: '-i' },
+ { type: 'positional', value: '--rm' },
+ ],
+ packageArguments: [
+ { type: 'positional', value: 'npx' },
+ { type: 'positional', value: '-y' },
+ { type: 'positional', value: '@modelcontextprotocol/server-everything' },
+ ],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'docker')
+ assert.deepStrictEqual(result.args, [
+ 'run',
+ '-i',
+ '--rm',
+ 'docker.io/node:20-alpine',
+ 'npx',
+ '-y',
+ '@modelcontextprotocol/server-everything',
+ ])
+ })
+
+ it('should convert package with environment variable with undefined value', () => {
+ const registryServer: McpRegistryServer = {
+ name: 'test',
+ description: 'Test',
+ version: '1.0.0',
+ packages: [
+ {
+ registryType: 'npm',
+ identifier: '@example/package',
+ transport: { type: 'stdio' },
+ environmentVariables: [
+ { name: 'VAR_WITH_VALUE', value: 'test' },
+ { name: 'VAR_WITHOUT_VALUE' },
+ ],
+ },
+ ],
+ }
+
+ const result = converter.convertRegistryServer(registryServer)
+
+ assert.strictEqual(result.command, 'npx')
+ assert.deepStrictEqual(result.env, {
+ VAR_WITH_VALUE: 'test',
+ VAR_WITHOUT_VALUE: '',
+ })
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.ts
new file mode 100644
index 0000000000..3f83448f55
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.ts
@@ -0,0 +1,144 @@
+/*!
+ * Copyright Amazon.com, Inc. or its affiliates.
+ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0
+ */
+
+import { MCPServerConfig, McpRegistryServer } from './mcpTypes'
+import { MCP_REGISTRY_CONSTANTS } from './mcpRegistryConstants'
+
+export class McpServerConfigConverter {
+ convertRegistryServer(registryServer: McpRegistryServer, additionalEnv?: Record): MCPServerConfig {
+ if (registryServer.remotes) {
+ return this.convertRemoteServer(registryServer.remotes)
+ } else if (registryServer.packages) {
+ return this.convertLocalServer(registryServer.packages, registryServer.version, additionalEnv)
+ }
+ throw new Error(`Invalid registry server: must have remotes or packages`)
+ }
+
+ private convertRemoteServer(remotes: McpRegistryServer['remotes']): MCPServerConfig {
+ const remote = remotes![0]
+ const config: MCPServerConfig = {
+ url: remote.url,
+ }
+
+ if (remote.headers && remote.headers.length > 0) {
+ config.headers = {}
+ remote.headers.forEach((header: { name: string; value: string }) => {
+ config.headers![header.name] = header.value
+ })
+ }
+
+ return config
+ }
+
+ private convertLocalServer(
+ packages: McpRegistryServer['packages'],
+ version: string,
+ additionalEnv?: Record
+ ): MCPServerConfig {
+ const pkg = packages![0]
+ const isNpm = pkg.registryType === MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.NPM
+ const isPypi = pkg.registryType === MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.PYPI
+ const isOci = pkg.registryType === MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.OCI
+
+ const args: string[] = []
+
+ if (isNpm) {
+ args.push(MCP_REGISTRY_CONSTANTS.NPM.FLAG)
+ } else if (isOci) {
+ args.push(MCP_REGISTRY_CONSTANTS.OCI.FLAG)
+ }
+
+ if (isPypi && pkg.registryBaseUrl) {
+ args.push(`--default-index=${pkg.registryBaseUrl}`)
+ }
+
+ if (pkg.runtimeArguments && pkg.runtimeArguments.length > 0) {
+ pkg.runtimeArguments.forEach((arg: { type: string; value: string }) => {
+ args.push(arg.value)
+ })
+ }
+
+ // For OCI, add environment variables as -e flags before the image reference
+ if (isOci) {
+ const allEnv: Record = {}
+ // Add registry env vars first
+ if (pkg.environmentVariables && pkg.environmentVariables.length > 0) {
+ pkg.environmentVariables.forEach((envVar: { name: string; value?: string }) => {
+ const val = envVar.value ?? ''
+ if (envVar.name.trim() && val.trim()) {
+ allEnv[envVar.name] = val
+ }
+ })
+ }
+ // Override with additional env vars (filter empty)
+ if (additionalEnv) {
+ Object.entries(additionalEnv).forEach(([key, value]) => {
+ if (key.trim() && value.trim()) {
+ allEnv[key] = value
+ }
+ })
+ }
+ // Add all as -e flags
+ Object.entries(allEnv).forEach(([key, value]) => {
+ args.push('-e')
+ args.push(`${key}=${value}`)
+ })
+ }
+
+ if (isOci) {
+ // For OCI, identifier may already include tag (e.g., node:20-alpine)
+ // Only append version if identifier doesn't contain ':'
+ const hasTag = pkg.identifier.includes(':')
+ let imageRef: string
+
+ if (pkg.registryBaseUrl) {
+ imageRef = hasTag
+ ? `${pkg.registryBaseUrl}/${pkg.identifier}`
+ : `${pkg.registryBaseUrl}/${pkg.identifier}:${version}`
+ } else {
+ imageRef = hasTag ? pkg.identifier : `${pkg.identifier}:${version}`
+ }
+
+ args.push(imageRef)
+ } else {
+ args.push(`${pkg.identifier}@${version}`)
+ }
+
+ if (pkg.packageArguments && pkg.packageArguments.length > 0) {
+ pkg.packageArguments.forEach((arg: { type: string; value: string }) => {
+ args.push(arg.value)
+ })
+ }
+
+ let command: string
+ if (isNpm) {
+ command = MCP_REGISTRY_CONSTANTS.NPM.COMMAND
+ } else if (isPypi) {
+ command = MCP_REGISTRY_CONSTANTS.PYPI.COMMAND
+ } else {
+ command = MCP_REGISTRY_CONSTANTS.OCI.COMMAND
+ }
+
+ const config: MCPServerConfig = {
+ command,
+ args,
+ env: {},
+ }
+
+ // Set NPM registry URL as environment variable
+ if (pkg.registryBaseUrl && isNpm) {
+ config.env![MCP_REGISTRY_CONSTANTS.NPM.ENV_VAR] = pkg.registryBaseUrl
+ }
+
+ // All environmentVariables go into config.env for all registry types
+ if (pkg.environmentVariables && pkg.environmentVariables.length > 0) {
+ pkg.environmentVariables.forEach((envVar: { name: string; value?: string }) => {
+ config.env![envVar.name] = envVar.value ?? ''
+ })
+ }
+
+ return config
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTool.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTool.test.ts
index b0f936ac46..683c5ff8ac 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTool.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTool.test.ts
@@ -25,9 +25,20 @@ describe('McpTool', () => {
},
telemetry: { record: () => {}, emitMetric: () => {} },
runtime: { serverInfo: { version: '1.0.0' } },
+ agent: {
+ getBuiltInToolNames: () => [
+ 'fsRead',
+ 'fsWrite',
+ 'executeBash',
+ 'listDirectory',
+ 'fileSearch',
+ 'codeReview',
+ 'displayFindings',
+ ],
+ },
} as unknown as Pick<
import('@aws/language-server-runtimes/server-interface/server').Features,
- 'logging' | 'workspace' | 'lsp' | 'credentialsProvider' | 'telemetry' | 'runtime'
+ 'logging' | 'workspace' | 'lsp' | 'credentialsProvider' | 'telemetry' | 'runtime' | 'agent'
>
const definition: McpToolDefinition = {
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTypes.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTypes.ts
index 6aec98cb24..de0d803595 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTypes.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTypes.ts
@@ -37,6 +37,25 @@ export interface MCPServerConfig {
headers?: Record
disabled?: boolean
__configPath__?: string
+ __cachedVersion__?: string // Cached version from registry for version sync
+ __additionalHeaders__?: Record // Additional headers from agent config (for registry servers)
+ __additionalEnv__?: Record // Additional env vars from agent config (for registry servers)
+ __registryError__?: string // Error message when registry server is not found in registry
+}
+
+export interface RegistryServerConfig {
+ type: 'registry'
+ timeout?: number // Optional request timeout in milliseconds
+ headers?: Record // Optional additional HTTP headers for remote servers
+ env?: Record // Optional additional environment variables for local servers
+}
+
+export function isRegistryServerConfig(config: MCPServerConfig | RegistryServerConfig): config is RegistryServerConfig {
+ return 'type' in config && config.type === 'registry'
+}
+
+export function isMCPServerConfig(config: MCPServerConfig | RegistryServerConfig): config is MCPServerConfig {
+ return !('type' in config) || config.type !== 'registry'
}
export interface MCPServerPermission {
enabled: boolean
@@ -46,19 +65,26 @@ export interface MCPServerPermission {
export interface AgentConfig {
name: string // Required: Agent name
- version: string // Required: Agent version (semver)
description: string // Required: Agent description
+ prompt?: string // Optional: High-level context for the agent
model?: string // Optional: Model that backs the agent
tags?: string[] // Optional: Tags for categorization
inputSchema?: any // Optional: Schema for agent inputs
- mcpServers: Record // Map of server name to server config
+ mcpServers: Record // Map of server name to server config
tools: string[] // List of enabled tools
+ toolAliases?: Record // Tool name remapping
allowedTools: string[] // List of tools that don't require approval
toolsSettings?: Record // Tool-specific settings
- includedFiles?: string[] // Files to include in context
- createHooks?: string[] // Hooks to run at conversation start
- promptHooks?: string[] // Hooks to run per prompt
- resources?: string[] // Resources for the agent (prompts, files, etc.)
+ resources?: string[] // Resources for the agent (file:// paths)
+ hooks?: {
+ agentSpawn?: Array<{ command: string }>
+ userPromptSubmit?: Array<{ command: string }>
+ } // Commands run at specific trigger points
+ useLegacyMcpJson?: boolean // Whether to include legacy MCP configuration
+ // Legacy fields for backward compatibility
+ includedFiles?: string[] // Deprecated: use resources instead
+ createHooks?: string[] // Deprecated: use hooks.agentSpawn instead
+ promptHooks?: string[] // Deprecated: use hooks.userPromptSubmit instead
}
export interface PersonaConfig {
@@ -71,20 +97,24 @@ export class AgentModel {
static fromJson(doc: any): AgentModel {
const cfg: AgentConfig = {
- name: doc?.['name'] || 'default-agent',
- version: doc?.['version'] || '1.0.0',
+ name: doc?.['name'] || 'q_ide_default',
description: doc?.['description'] || 'Default agent configuration',
+ prompt: doc?.['prompt'],
model: doc?.['model'],
tags: Array.isArray(doc?.['tags']) ? doc['tags'] : undefined,
inputSchema: doc?.['inputSchema'],
mcpServers: typeof doc?.['mcpServers'] === 'object' ? doc['mcpServers'] : {},
tools: Array.isArray(doc?.['tools']) ? doc['tools'] : [],
+ toolAliases: typeof doc?.['toolAliases'] === 'object' ? doc['toolAliases'] : {},
allowedTools: Array.isArray(doc?.['allowedTools']) ? doc['allowedTools'] : [],
toolsSettings: typeof doc?.['toolsSettings'] === 'object' ? doc['toolsSettings'] : {},
+ resources: Array.isArray(doc?.['resources']) ? doc['resources'] : [],
+ hooks: typeof doc?.['hooks'] === 'object' ? doc['hooks'] : undefined,
+ useLegacyMcpJson: doc?.['useLegacyMcpJson'],
+ // Legacy fields
includedFiles: Array.isArray(doc?.['includedFiles']) ? doc['includedFiles'] : [],
createHooks: Array.isArray(doc?.['createHooks']) ? doc['createHooks'] : [],
promptHooks: Array.isArray(doc?.['promptHooks']) ? doc['promptHooks'] : [],
- resources: Array.isArray(doc?.['resources']) ? doc['resources'] : [],
}
return new AgentModel(cfg)
}
@@ -93,7 +123,7 @@ export class AgentModel {
return this.cfg
}
- addServer(name: string, config: MCPServerConfig): void {
+ addServer(name: string, config: MCPServerConfig | RegistryServerConfig): void {
this.cfg.mcpServers[name] = config
}
@@ -186,3 +216,44 @@ export interface ListToolsResponse {
[key: string]: any
}[]
}
+
+export interface McpRegistryServer {
+ name: string
+ title?: string
+ description: string
+ version: string
+ remotes?: Array<{
+ type: 'streamable-http' | 'sse'
+ url: string
+ headers?: Array<{
+ name: string
+ value: string
+ }>
+ }>
+ packages?: Array<{
+ registryType: 'npm' | 'pypi' | 'oci'
+ registryBaseUrl?: string
+ identifier: string
+ transport: {
+ type: 'stdio'
+ }
+ runtimeArguments?: Array<{
+ type: 'positional'
+ value: string
+ }>
+ packageArguments?: Array<{
+ type: 'positional'
+ value: string
+ }>
+ environmentVariables?: Array<{
+ name: string
+ value?: string
+ }>
+ }>
+}
+
+export interface McpRegistryData {
+ servers: McpRegistryServer[]
+ lastFetched: Date
+ url: string
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.test.ts
index 43843bd110..b3d62ec913 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.test.ts
@@ -207,6 +207,7 @@ describe('loadAgentConfig', () => {
mkdir: (d: string, opts: any) => Promise.resolve(fs.mkdirSync(d, { recursive: opts.recursive })),
getUserHomeDir: () => tmpDir,
},
+ getAllWorkspaceFolders: () => [],
}
logger = { warn: () => {}, info: () => {}, error: () => {}, debug: () => {} }
})
@@ -218,7 +219,7 @@ describe('loadAgentConfig', () => {
it('creates a default agent config when none exists', async () => {
// Add the global agent path to the paths array
const agentPath = getGlobalAgentConfigPath(tmpDir)
- const result = await loadAgentConfig(workspace, logger, [agentPath])
+ const result = await loadAgentConfig(workspace, logger, [agentPath], null, false)
// Check that the agent config has the expected structure
expect(result.agentConfig).to.have.property('name')
@@ -238,7 +239,6 @@ describe('loadAgentConfig', () => {
const agentConfig = {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {
testServer: {
@@ -256,7 +256,7 @@ describe('loadAgentConfig', () => {
await workspace.fs.writeFile(agentPath, JSON.stringify(agentConfig))
- const result = await loadAgentConfig(workspace, logger, [agentPath])
+ const result = await loadAgentConfig(workspace, logger, [agentPath], null, false)
// Check that the server was loaded correctly
expect(result.servers.size).to.equal(1)
@@ -329,7 +329,6 @@ describe('saveAgentConfig', () => {
const configPath = path.join(tmpDir, 'agent-config.json')
const config = {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: ['tool1', 'tool2'],
@@ -353,7 +352,6 @@ describe('saveAgentConfig', () => {
const configPath = path.join(tmpDir, 'nested', 'dir', 'agent-config.json')
const config = {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {},
tools: [],
@@ -545,6 +543,17 @@ describe('createNamespacedToolName', () => {
toolName: longTool,
})
})
+
+ it('truncates tool name and adds suffix when it exceeds MAX_TOOL_NAME_LENGTH', () => {
+ const longTool = 'Smartanalyzerthatreadssummariescreatesmappingrulesandupdatespayloads'
+ const result = createNamespacedToolName('ConnectiveRx', longTool, tools, toolNameMapping)
+ expect(result.length).to.equal(MAX_TOOL_NAME_LENGTH)
+ expect(tools.has(result)).to.be.true
+ expect(toolNameMapping.get(result)).to.deep.equal({
+ serverName: 'ConnectiveRx',
+ toolName: longTool,
+ })
+ })
})
describe('normalizePathFromUri', () => {
@@ -700,7 +709,7 @@ describe('convertPersonaToAgent', () => {
const result = convertPersonaToAgent(persona, mcpServers, mockAgent)
- expect(result.name).to.equal('default-agent')
+ expect(result.name).to.equal('q_ide_default')
expect(result.mcpServers).to.have.property('testServer')
expect(result.tools).to.include('@testServer')
expect(result.tools).to.include('fs_read')
@@ -789,6 +798,216 @@ describe('migrateToAgentConfig', () => {
expect(agentConfig.mcpServers).to.have.property('testServer')
})
})
+describe('loadAgentConfig with registry support', () => {
+ let tmpDir: string
+ let workspace: any
+ let logger: any
+ let testRegistry: any
+
+ beforeEach(() => {
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'registryTest-'))
+ workspace = {
+ fs: {
+ exists: (p: string) => Promise.resolve(fs.existsSync(p)),
+ readFile: async (p: string) => {
+ if (fs.existsSync(p)) {
+ return Promise.resolve(Buffer.from(fs.readFileSync(p)))
+ }
+ return Promise.reject(new Error('File not found'))
+ },
+ writeFile: (p: string, d: string) => Promise.resolve(fs.writeFileSync(p, d)),
+ mkdir: (d: string, opts: any) => Promise.resolve(fs.mkdirSync(d, { recursive: opts.recursive })),
+ getUserHomeDir: () => tmpDir,
+ },
+ getAllWorkspaceFolders: () => [],
+ }
+ logger = { warn: () => {}, info: () => {}, error: () => {}, debug: () => {} }
+ testRegistry = {
+ servers: [
+ {
+ name: 'test-remote',
+ description: 'Test remote server',
+ version: '1.0.0',
+ remotes: [{ type: 'streamable-http', url: 'https://example.com/mcp' }],
+ },
+ {
+ name: 'test-local',
+ description: 'Test local server',
+ version: '1.0.0',
+ packages: [{ registryType: 'npm', identifier: '@test/server', transport: { type: 'stdio' } }],
+ },
+ ],
+ lastFetched: new Date(),
+ url: 'https://example.com/registry.json',
+ }
+ })
+
+ afterEach(() => {
+ fs.rmSync(tmpDir, { recursive: true, force: true })
+ })
+
+ it('should load registry servers when registry is active', async () => {
+ const agentPath = path.join(tmpDir, 'agent.json')
+ fs.writeFileSync(
+ agentPath,
+ JSON.stringify({
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {
+ 'test-remote': { type: 'registry' },
+ 'manual-server': { command: 'node', args: ['server.js'] },
+ },
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ resources: [],
+ useLegacyMcpJson: false,
+ })
+ )
+
+ const result = await loadAgentConfig(workspace, logger, [agentPath], testRegistry, true)
+
+ expect(result.servers.size).to.equal(1)
+ expect(result.servers.has('test-remote')).to.be.true
+ expect(result.servers.has('manual-server')).to.be.false
+ const server = result.servers.get('test-remote')!
+ expect(server.url).to.equal('https://example.com/mcp')
+ })
+
+ it('should load manual servers when registry is not active', async () => {
+ const agentPath = path.join(tmpDir, 'agent.json')
+ fs.writeFileSync(
+ agentPath,
+ JSON.stringify({
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {
+ 'test-remote': { type: 'registry' },
+ 'manual-server': { command: 'node', args: ['server.js'] },
+ },
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ resources: [],
+ useLegacyMcpJson: false,
+ })
+ )
+
+ const result = await loadAgentConfig(workspace, logger, [agentPath], null, false)
+
+ expect(result.servers.size).to.equal(1)
+ expect(result.servers.has('test-remote')).to.be.false
+ expect(result.servers.has('manual-server')).to.be.true
+ const server = result.servers.get('manual-server')!
+ expect(server.command).to.equal('node')
+ })
+
+ it('should warn when registry server not found in registry', async () => {
+ const errors: string[] = []
+ const errorLogger = { ...logger, error: (msg: string) => errors.push(msg) }
+ const agentPath = path.join(tmpDir, 'agent.json')
+ fs.writeFileSync(
+ agentPath,
+ JSON.stringify({
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: { 'unknown-server': { type: 'registry' } },
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ resources: [],
+ useLegacyMcpJson: false,
+ })
+ )
+
+ const result = await loadAgentConfig(workspace, errorLogger, [agentPath], testRegistry, true)
+
+ // Should create placeholder server for missing registry server
+ expect(result.servers.size).to.equal(1)
+ expect(errors.some(e => e.includes('not found in registry'))).to.be.true
+ // Verify placeholder has error marker
+ const server = result.servers.get('unknown-server')
+ expect(server).to.exist
+ expect((server as any).__registryError__).to.include('not found in registry')
+ })
+
+ it('should convert local npm server correctly', async () => {
+ const agentPath = path.join(tmpDir, 'agent.json')
+ fs.writeFileSync(
+ agentPath,
+ JSON.stringify({
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: { 'test-local': { type: 'registry' } },
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ resources: [],
+ useLegacyMcpJson: false,
+ })
+ )
+
+ const result = await loadAgentConfig(workspace, logger, [agentPath], testRegistry, true)
+
+ expect(result.servers.size).to.equal(1)
+ const server = result.servers.get('test-local')!
+ expect(server.command).to.equal('npx')
+ expect(server.args).to.deep.equal(['-y', '@test/server@1.0.0'])
+ })
+
+ it('should apply timeout from registry server config', async () => {
+ const agentPath = path.join(tmpDir, 'agent.json')
+ fs.writeFileSync(
+ agentPath,
+ JSON.stringify({
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {
+ 'test-remote': { type: 'registry', timeout: 60000 },
+ },
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ resources: [],
+ useLegacyMcpJson: false,
+ })
+ )
+
+ const result = await loadAgentConfig(workspace, logger, [agentPath], testRegistry, true)
+
+ expect(result.servers.size).to.equal(1)
+ const server = result.servers.get('test-remote')!
+ expect(server.url).to.equal('https://example.com/mcp')
+ expect(server.timeout).to.equal(60000)
+ })
+
+ it('should not set timeout if not provided in registry server config', async () => {
+ const agentPath = path.join(tmpDir, 'agent.json')
+ fs.writeFileSync(
+ agentPath,
+ JSON.stringify({
+ name: 'test-agent',
+ description: 'Test agent',
+ mcpServers: {
+ 'test-remote': { type: 'registry' },
+ },
+ tools: [],
+ allowedTools: [],
+ toolsSettings: {},
+ resources: [],
+ useLegacyMcpJson: false,
+ })
+ )
+
+ const result = await loadAgentConfig(workspace, logger, [agentPath], testRegistry, true)
+
+ expect(result.servers.size).to.equal(1)
+ const server = result.servers.get('test-remote')!
+ expect(server.url).to.equal('https://example.com/mcp')
+ expect(server.timeout).to.be.undefined
+ })
+})
+
describe('saveServerSpecificAgentConfig', () => {
let tmpDir: string
let workspace: any
@@ -840,7 +1059,6 @@ describe('saveServerSpecificAgentConfig', () => {
// Create existing config
const existingConfig = {
name: 'existing-agent',
- version: '1.0.0',
description: 'Existing agent',
mcpServers: {
existingServer: { command: 'existing-cmd' },
@@ -881,7 +1099,6 @@ describe('saveServerSpecificAgentConfig', () => {
// Create existing config with server tools
const existingConfig = {
name: 'test-agent',
- version: '1.0.0',
description: 'Test agent',
mcpServers: {
testServer: { command: 'old-cmd' },
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts
index ef56a54d22..ea64cba6e7 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts
@@ -3,13 +3,22 @@
* All Rights Reserved. SPDX-License-Identifier: Apache-2.0
*/
-import { Agent, InitializeParams, Logger, Workspace } from '@aws/language-server-runtimes/server-interface'
+import { Agent, InitializeParams, Workspace } from '@aws/language-server-runtimes/server-interface'
+import type { Logger } from '@aws/language-server-runtimes/server-interface'
import { URI } from 'vscode-uri'
-import { MCPServerConfig, PersonaConfig, MCPServerPermission, McpPermissionType, AgentConfig } from './mcpTypes'
+import {
+ MCPServerConfig,
+ PersonaConfig,
+ MCPServerPermission,
+ McpPermissionType,
+ AgentConfig,
+ McpRegistryData,
+ isRegistryServerConfig,
+} from './mcpTypes'
import path = require('path')
import { QClientCapabilities } from '../../../configuration/qConfigurationServer'
import crypto = require('crypto')
-import { Features } from '@aws/language-server-runtimes/server-interface/server'
+import { McpServerConfigConverter } from './mcpServerConfigConverter'
/**
* Load, validate, and parse MCP server configurations from JSON files.
@@ -108,14 +117,20 @@ export async function loadMcpServerConfigs(
configErrors.set(`${name}_timeout`, errorMsg)
}
const cfg: MCPServerConfig = {
- url: entry.url,
- headers: typeof entry.headers === 'object' && entry.headers !== null ? entry.headers : undefined,
- command: entry.command,
- args: Array.isArray(entry.args) ? entry.args.map(String) : [],
- env: typeof entry.env === 'object' && entry.env !== null ? entry.env : {},
+ command: (entry as any).command,
+ url: (entry as any).url,
+ args: Array.isArray((entry as any).args) ? (entry as any).args.map(String) : [],
+ env: typeof (entry as any).env === 'object' && (entry as any).env !== null ? (entry as any).env : {},
+ headers:
+ typeof (entry as any).headers === 'object' && (entry as any).headers !== null
+ ? (entry as any).headers
+ : undefined,
initializationTimeout:
- typeof entry.initializationTimeout === 'number' ? entry.initializationTimeout : undefined,
- timeout: typeof entry.timeout === 'number' ? entry.timeout : undefined,
+ typeof (entry as any).initializationTimeout === 'number'
+ ? (entry as any).initializationTimeout
+ : undefined,
+ timeout: typeof (entry as any).timeout === 'number' ? (entry as any).timeout : undefined,
+ disabled: typeof (entry as any).disabled === 'boolean' ? (entry as any).disabled : false,
__configPath__: fsPath,
}
@@ -148,9 +163,9 @@ export async function loadMcpServerConfigs(
}
const DEFAULT_AGENT_RAW = `{
- "name": "default-agent",
- "version": "1.0.0",
+ "name": "q_ide_default",
"description": "Default agent configuration",
+ "prompt": "",
"mcpServers": {},
"tools": [
"fs_read",
@@ -159,6 +174,7 @@ const DEFAULT_AGENT_RAW = `{
"report_issue",
"use_aws"
],
+ "toolAliases": {},
"allowedTools": [
"fs_read",
"report_issue",
@@ -170,14 +186,16 @@ const DEFAULT_AGENT_RAW = `{
"use_aws": { "preset": "readOnly" },
"execute_bash": { "preset": "readOnly" }
},
- "includedFiles": [
- "AmazonQ.md",
- "README.md",
- ".amazonq/rules/**/*.md"
+ "resources": [
+ "file://AmazonQ.md",
+ "file://README.md",
+ "file://.amazonq/rules/**/*.md"
],
- "resources": [],
- "createHooks": [],
- "promptHooks": []
+ "hooks": {
+ "agentSpawn": [],
+ "userPromptSubmit": []
+ },
+ "useLegacyMcpJson": true
}`
const DEFAULT_PERSONA_RAW = `{
@@ -220,11 +238,15 @@ const DEFAULT_PERSONA_RAW = `{
* - Load global first (if exists), then workspace files—workspace overrides.
* - Combines functionality of loadMcpServerConfigs and loadPersonaPermissions
* - Handles server configurations and permissions from the same agent file
+ * - Supports backwards compatibility with MCP config files when useLegacyMcpJson is true
+ * - Supports registry-based server configuration when registry is provided
*/
export async function loadAgentConfig(
workspace: Workspace,
logging: Logger,
- agentPaths: string[]
+ agentPaths: string[],
+ registry: McpRegistryData | null,
+ registryActive: boolean
): Promise<{
servers: Map
serverNameMapping: Map
@@ -238,15 +260,14 @@ export async function loadAgentConfig(
// Create base agent config
const agentConfig: AgentConfig = {
- name: 'default-agent',
- version: '1.0.0',
+ name: 'q_ide_default',
description: 'Agent configuration',
mcpServers: {},
tools: [],
allowedTools: [],
toolsSettings: {},
- includedFiles: [],
resources: [],
+ useLegacyMcpJson: true, // Default to true for backwards compatibility
}
// Normalize paths
@@ -272,6 +293,9 @@ export async function loadAgentConfig(
return 0
})
+ // Track useLegacyMcpJson value - workspace takes precedence over global
+ let useLegacyMcpJsonValue: boolean | undefined
+
// Process each path like loadMcpServerConfigs
for (const fsPath of sortedPaths) {
// 1) Skip missing files or create default global
@@ -330,10 +354,20 @@ export async function loadAgentConfig(
// 3) Process agent config metadata
if (fsPath === globalConfigPath) {
agentConfig.name = json.name || agentConfig.name
- agentConfig.version = json.version || agentConfig.version
agentConfig.description = json.description || agentConfig.description
}
+ // Track useLegacyMcpJson - workspace files take precedence
+ if (json.useLegacyMcpJson !== undefined) {
+ if (fsPath !== globalConfigPath) {
+ // Workspace file - always takes precedence
+ useLegacyMcpJsonValue = json.useLegacyMcpJson
+ } else if (useLegacyMcpJsonValue === undefined) {
+ // Global file - only use if no workspace value set
+ useLegacyMcpJsonValue = json.useLegacyMcpJson
+ }
+ }
+
// 4) Process permissions (tools and allowedTools)
if (Array.isArray(json.tools)) {
for (const tool of json.tools) {
@@ -363,34 +397,128 @@ export async function loadAgentConfig(
if (json.mcpServers && typeof json.mcpServers === 'object') {
for (const [name, entryRaw] of Object.entries(json.mcpServers)) {
const entry = entryRaw as any
- const hasCmd = typeof entry.command === 'string' && entry.command.trim() !== ''
- const hasUrl = typeof entry.url === 'string' && entry.url.trim() !== ''
- if ((hasCmd && hasUrl) || (!hasCmd && !hasUrl)) {
- const errorMsg = `MCP server '${name}' must specify *either* command or url (not both) – skipping`
- logging.warn(errorMsg)
- configErrors.set(`${name}`, errorMsg)
- continue
+ // Check if this is a registry server
+ const isRegistryServer = isRegistryServerConfig(entry)
+
+ // Apply registry filtering logic
+ if (registryActive) {
+ // When registry is active, only load registry servers
+ if (!isRegistryServer) {
+ logging.info(`MCP: registry active, ignoring manual server '${name}'`)
+ continue
+ }
+ } else {
+ // When registry is not active, only load manual servers
+ if (isRegistryServer) {
+ logging.info(`MCP: no registry, ignoring registry server '${name}'`)
+ continue
+ }
}
- // Create server config
- const cfg: MCPServerConfig = {
- command: (entry as any).command,
- url: (entry as any).url,
- args: Array.isArray((entry as any).args) ? (entry as any).args.map(String) : [],
- env:
- typeof (entry as any).env === 'object' && (entry as any).env !== null ? (entry as any).env : {},
- headers:
- typeof (entry as any).headers === 'object' && (entry as any).headers !== null
- ? (entry as any).headers
- : undefined,
- initializationTimeout:
- typeof (entry as any).initializationTimeout === 'number'
- ? (entry as any).initializationTimeout
- : undefined,
- timeout: typeof (entry as any).timeout === 'number' ? (entry as any).timeout : undefined,
- disabled: typeof (entry as any).disabled === 'boolean' ? (entry as any).disabled : false,
- __configPath__: fsPath, // Store config path for determining global vs workspace
+ let cfg: MCPServerConfig
+
+ if (isRegistryServer) {
+ // Handle registry server: lookup in registry and convert
+ if (!registry) {
+ const errorMsg = `MCP Registry: Server '${name}' specified but no registry available`
+ logging.error(errorMsg)
+ configErrors.set(`${name}`, errorMsg)
+ continue
+ }
+
+ const registryServer = findServerInRegistry(registry, name)
+ if (!registryServer) {
+ const errorMsg = `MCP Registry: Server '${name}' not found in registry`
+ logging.error(errorMsg)
+ configErrors.set(`${name}`, errorMsg)
+
+ // Create placeholder config for missing registry server
+ cfg = {
+ command: undefined,
+ url: undefined,
+ args: [],
+ env: {},
+ disabled: false,
+ __configPath__: fsPath,
+ __registryError__: errorMsg,
+ } as MCPServerConfig
+
+ const sanitizedName = sanitizeName(name)
+ servers.set(sanitizedName, cfg)
+ serverNameMapping.set(sanitizedName, name)
+
+ // Still add to agent config to preserve user settings
+ const agentEntry: any = { type: 'registry' }
+ if (typeof entry.timeout === 'number') agentEntry.timeout = entry.timeout
+ if (entry.headers && Object.keys(entry.headers).length) agentEntry.headers = entry.headers
+ if (entry.env && Object.keys(entry.env).length) agentEntry.env = entry.env
+ agentConfig.mcpServers[name] = agentEntry
+
+ logging.info(`Loaded placeholder for missing registry server '${name}'`)
+ continue
+ }
+
+ // Convert registry server to MCPServerConfig
+ const converter = new McpServerConfigConverter()
+ try {
+ cfg = converter.convertRegistryServer(registryServer)
+ cfg.__configPath__ = fsPath
+
+ // Apply timeout from registry server config if provided
+ if (typeof entry.timeout === 'number') {
+ cfg.timeout = entry.timeout
+ }
+
+ // Store additional headers/env separately and merge for runtime
+ if (entry.headers && typeof entry.headers === 'object') {
+ cfg.__additionalHeaders__ = entry.headers
+ }
+
+ if (entry.env && typeof entry.env === 'object') {
+ cfg.__additionalEnv__ = entry.env
+ }
+
+ logging.info(`MCP Registry: Successfully converted server '${name}' to MCPServerConfig`)
+ } catch (err: any) {
+ const errorMsg = `MCP Registry: Failed to convert server '${name}': ${err.message}`
+ logging.error(errorMsg)
+ configErrors.set(`${name}`, errorMsg)
+ continue
+ }
+ } else {
+ // Handle manual server
+ const hasCmd = typeof entry.command === 'string' && entry.command.trim() !== ''
+ const hasUrl = typeof entry.url === 'string' && entry.url.trim() !== ''
+
+ if ((hasCmd && hasUrl) || (!hasCmd && !hasUrl)) {
+ const errorMsg = `MCP server '${name}' must specify *either* command or url (not both) – skipping`
+ logging.warn(errorMsg)
+ configErrors.set(`${name}`, errorMsg)
+ continue
+ }
+
+ // Create server config
+ cfg = {
+ command: (entry as any).command,
+ url: (entry as any).url,
+ args: Array.isArray((entry as any).args) ? (entry as any).args.map(String) : [],
+ env:
+ typeof (entry as any).env === 'object' && (entry as any).env !== null
+ ? (entry as any).env
+ : {},
+ headers:
+ typeof (entry as any).headers === 'object' && (entry as any).headers !== null
+ ? (entry as any).headers
+ : undefined,
+ initializationTimeout:
+ typeof (entry as any).initializationTimeout === 'number'
+ ? (entry as any).initializationTimeout
+ : undefined,
+ timeout: typeof (entry as any).timeout === 'number' ? (entry as any).timeout : undefined,
+ disabled: typeof (entry as any).disabled === 'boolean' ? (entry as any).disabled : false,
+ __configPath__: fsPath, // Store config path for determining global vs workspace
+ }
}
const sanitizedName = sanitizeName(name)
@@ -461,8 +589,47 @@ export async function loadAgentConfig(
}
}
+ // Set final useLegacyMcpJson value - default to true if not specified anywhere
+ agentConfig.useLegacyMcpJson = useLegacyMcpJsonValue !== undefined ? useLegacyMcpJsonValue : true
+
+ // Load MCP config files if useLegacyMcpJson is true and registry mode is not active
+ // Legacy MCP configs are always manual servers, so skip them when registry is active
+ if (agentConfig.useLegacyMcpJson && !registryActive) {
+ const wsUris = workspace.getAllWorkspaceFolders()?.map(f => f.uri) ?? []
+ const mcpPaths = [...getWorkspaceMcpConfigPaths(wsUris), getGlobalMcpConfigPath(workspace.fs.getUserHomeDir())]
+
+ const mcpResult = await loadMcpServerConfigs(workspace, logging, mcpPaths)
+
+ // MCP configs have precedence over agent configs
+ // Merge MCP servers into the result, overriding any from agent config
+ for (const [sanitizedName, mcpConfig] of mcpResult.servers) {
+ const originalName = mcpResult.serverNameMapping.get(sanitizedName)
+ if (originalName) {
+ servers.set(sanitizedName, mcpConfig)
+ serverNameMapping.set(sanitizedName, originalName)
+
+ // Add MCP server tools to agent config for permission management
+ const serverPrefix = `@${originalName}`
+ if (!agentConfig.tools.includes(serverPrefix)) {
+ agentConfig.tools.push(serverPrefix)
+ }
+
+ logging.info(`Loaded MCP server '${originalName}' from legacy MCP config`)
+ }
+ }
+
+ // Merge MCP config errors
+ for (const [key, error] of mcpResult.errors) {
+ configErrors.set(`mcp_${key}`, error)
+ }
+
+ logging.info(`Loaded ${mcpResult.servers.size} servers from legacy MCP configs`)
+ }
+
// Return the agent config, servers, server name mapping, and errors
- logging.info(`Successfully processed ${uniquePaths.length} agent config files`)
+ logging.info(
+ `Successfully processed ${uniquePaths.length} agent config files and ${agentConfig.useLegacyMcpJson ? 'legacy MCP configs' : 'no legacy MCP configs'}`
+ )
return {
servers,
serverNameMapping,
@@ -575,7 +742,10 @@ export async function loadPersonaPermissions(
/** Given an array of workspace diretory, return each workspace persona config location */
export function getWorkspacePersonaConfigPaths(wsUris: string[]): string[] {
- return wsUris.map(uri => path.join(uri, '.amazonq', 'personas', 'default.json'))
+ return wsUris.map(uri => {
+ const fsPath = normalizePathFromUri(uri)
+ return path.join(fsPath, '.amazonq', 'personas', 'default.json')
+ })
}
/** Given a user's home directory, return the global persona config location */
@@ -585,7 +755,10 @@ export function getGlobalPersonaConfigPath(home: string): string {
/** Given an array of workspace diretory, return each workspace agent config location */
export function getWorkspaceAgentConfigPaths(wsUris: string[]): string[] {
- return wsUris.map(uri => path.join(uri, '.amazonq', 'agents', 'default.json'))
+ return wsUris.map(uri => {
+ const fsPath = normalizePathFromUri(uri)
+ return path.join(fsPath, '.amazonq', 'agents', 'default.json')
+ })
}
/** Given a user's home directory, return the global agent config location */
@@ -595,7 +768,10 @@ export function getGlobalAgentConfigPath(home: string): string {
/** Given an array of workspace diretory, return each workspace mcp config location */
export function getWorkspaceMcpConfigPaths(wsUris: string[]): string[] {
- return wsUris.map(uri => path.join(uri, '.amazonq', 'mcp.json'))
+ return wsUris.map(uri => {
+ const fsPath = normalizePathFromUri(uri)
+ return path.join(fsPath, '.amazonq', 'mcp.json')
+ })
}
/** Given a user's home directory, return the global mcp config location */
@@ -631,17 +807,7 @@ export function convertPersonaToAgent(
mcpServers: Record,
featureAgent: Agent
): AgentConfig {
- const agent: AgentConfig = {
- name: 'default-agent',
- version: '1.0.0',
- description: 'Default agent configuration',
- mcpServers: {},
- tools: [],
- allowedTools: [],
- toolsSettings: {},
- includedFiles: [],
- resources: [],
- }
+ const agent: AgentConfig = JSON.parse(DEFAULT_AGENT_RAW)
// Include all servers from MCP config
Object.entries(mcpServers).forEach(([name, config]) => {
@@ -910,7 +1076,6 @@ async function migrateConfigToAgent(
// Add complete agent format sections using default values
agentConfig.name = defaultAgent.name
agentConfig.description = defaultAgent.description
- agentConfig.version = defaultAgent.version
agentConfig.includedFiles = defaultAgent.includedFiles
agentConfig.resources = defaultAgent.resources
agentConfig.createHooks = defaultAgent.createHooks
@@ -953,7 +1118,9 @@ export async function saveServerSpecificAgentConfig(
serverConfig: any,
serverTools: string[],
serverAllowedTools: string[],
- configPath: string
+ configPath: string,
+ isLegacyMcpServer: boolean = false,
+ skipMcpServerConfig: boolean = false
): Promise {
try {
await workspace.fs.mkdir(path.dirname(configPath), { recursive: true })
@@ -965,17 +1132,7 @@ export async function saveServerSpecificAgentConfig(
existingConfig = JSON.parse(raw.toString())
} catch {
// If file doesn't exist, create minimal config
- existingConfig = {
- name: 'default-agent',
- version: '1.0.0',
- description: 'Agent configuration',
- mcpServers: {},
- tools: [],
- allowedTools: [],
- toolsSettings: {},
- includedFiles: [],
- resources: [],
- }
+ existingConfig = JSON.parse(DEFAULT_AGENT_RAW)
}
// Remove existing server tools from arrays
@@ -987,17 +1144,20 @@ export async function saveServerSpecificAgentConfig(
tool => tool !== serverPrefix && !tool.startsWith(`${serverPrefix}/`)
)
- if (serverConfig === null) {
- // Remove server entirely
- delete existingConfig.mcpServers[serverName]
- } else {
- // Update or add server
- existingConfig.mcpServers[serverName] = serverConfig
- // Add new server tools
- existingConfig.tools.push(...serverTools)
- existingConfig.allowedTools.push(...serverAllowedTools)
+ if (!isLegacyMcpServer && !skipMcpServerConfig) {
+ if (serverConfig === null) {
+ // Remove server entirely
+ delete existingConfig.mcpServers[serverName]
+ } else {
+ // Update or add server
+ existingConfig.mcpServers[serverName] = serverConfig
+ }
}
+ // Add new server tools
+ existingConfig.tools.push(...serverTools)
+ existingConfig.allowedTools.push(...serverAllowedTools)
+
await workspace.fs.writeFile(configPath, JSON.stringify(existingConfig, null, 2))
logging.info(`Saved server-specific agent config for ${serverName} to ${configPath}`)
} catch (err: any) {
@@ -1006,8 +1166,98 @@ export async function saveServerSpecificAgentConfig(
}
}
+/**
+ * Migrate existing agent config to CLI format
+ */
+export async function migrateAgentConfigToCLIFormat(
+ workspace: Workspace,
+ logging: Logger,
+ configPath: string
+): Promise {
+ try {
+ const exists = await workspace.fs.exists(configPath)
+ if (!exists) return
+
+ const raw = await workspace.fs.readFile(configPath)
+ const config = JSON.parse(raw.toString())
+
+ let updated = false
+
+ // Rename default-agent to q_ide_default
+ if (config.name !== 'q_ide_default') {
+ config.name = 'q_ide_default'
+ updated = true
+ }
+
+ // Add missing CLI fields
+ if (!config.hasOwnProperty('prompt')) {
+ config.prompt = ''
+ updated = true
+ }
+ if (!config.hasOwnProperty('toolAliases')) {
+ config.toolAliases = {}
+ updated = true
+ }
+
+ // Remove deprecated fields
+ if (config.hasOwnProperty('version')) {
+ delete config.version
+ updated = true
+ }
+
+ // Migrate includedFiles to resources with file:// prefix
+ if (config.includedFiles && Array.isArray(config.includedFiles)) {
+ if (!config.resources) config.resources = []
+ for (const file of config.includedFiles) {
+ const resourcePath = file.startsWith('file://') ? file : `file://${file}`
+ if (!config.resources.includes(resourcePath)) {
+ config.resources.push(resourcePath)
+ }
+ }
+ delete config.includedFiles
+ updated = true
+ }
+
+ // Migrate hooks format
+ if (config.promptHooks || config.createHooks) {
+ if (!config.hooks) config.hooks = {}
+ if (!config.hooks.agentSpawn) config.hooks.agentSpawn = []
+ if (!config.hooks.userPromptSubmit) config.hooks.userPromptSubmit = []
+
+ if (config.createHooks && Array.isArray(config.createHooks)) {
+ config.hooks.agentSpawn.push(...config.createHooks)
+ delete config.createHooks
+ updated = true
+ }
+ if (config.promptHooks && Array.isArray(config.promptHooks)) {
+ config.hooks.userPromptSubmit.push(...config.promptHooks)
+ delete config.promptHooks
+ updated = true
+ }
+ }
+
+ config.useLegacyMcpJson = true
+ updated = true
+
+ if (updated) {
+ await workspace.fs.writeFile(configPath, JSON.stringify(config, null, 2))
+ logging.info(`Migrated agent config to CLI format: ${configPath}`)
+ }
+ } catch (err: any) {
+ logging.error(`Failed to migrate agent config ${configPath}: ${err.message}`)
+ }
+}
+
export const MAX_TOOL_NAME_LENGTH = 64
+/**
+ * Find a server in the registry by name with O(1) lookup performance.
+ * Uses Map-based lookup for large registries (200+ servers).
+ */
+export function findServerInRegistry(registry: McpRegistryData, serverName: string): any | undefined {
+ return registry.servers.find(s => s.name === serverName)
+}
+
/**
* Create a namespaced tool name from server and tool names.
* Handles truncation and conflicts according to specific rules.
@@ -1035,8 +1285,8 @@ export function createNamespacedToolName(
// Sanitize the tool name
const sanitizedToolName = sanitizeName(toolName)
- // First try to use just the tool name if it's not already in use
- if (!allNamespacedTools.has(sanitizedToolName)) {
+ // First try to use just the tool name if it's not already in use and fits within length limit
+ if (sanitizedToolName.length <= MAX_TOOL_NAME_LENGTH && !allNamespacedTools.has(sanitizedToolName)) {
allNamespacedTools.add(sanitizedToolName)
toolNameMapping.set(sanitizedToolName, { serverName, toolName })
return sanitizedToolName
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.test.ts
index 77080bf08a..4d61a78bc9 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.test.ts
@@ -3,17 +3,25 @@
* All Rights Reserved. SPDX-License-Identifier: Apache-2.0
*/
-import { expect } from 'chai'
+import * as chai from 'chai'
import * as sinon from 'sinon'
import { ProfileStatusMonitor } from './profileStatusMonitor'
import * as AmazonQTokenServiceManagerModule from '../../../../shared/amazonQServiceManager/AmazonQTokenServiceManager'
+import { McpRegistryService } from './mcpRegistryService'
+
+const { expect } = chai
+
+interface MockLogging {
+ info: sinon.SinonStub
+ debug: sinon.SinonStub
+ error: sinon.SinonStub
+ warn: sinon.SinonStub
+ log: sinon.SinonStub
+}
describe('ProfileStatusMonitor', () => {
let profileStatusMonitor: ProfileStatusMonitor
- let mockCredentialsProvider: any
- let mockWorkspace: any
- let mockLogging: any
- let mockSdkInitializator: any
+ let mockLogging: MockLogging
let mockOnMcpDisabled: sinon.SinonStub
let mockOnMcpEnabled: sinon.SinonStub
let clock: sinon.SinonFakeTimers
@@ -21,29 +29,18 @@ describe('ProfileStatusMonitor', () => {
beforeEach(() => {
clock = sinon.useFakeTimers()
- mockCredentialsProvider = {
- hasCredentials: sinon.stub().returns(true),
- }
-
- mockWorkspace = {}
-
mockLogging = {
info: sinon.stub(),
debug: sinon.stub(),
+ error: sinon.stub(),
+ warn: sinon.stub(),
+ log: sinon.stub(),
}
- mockSdkInitializator = {}
mockOnMcpDisabled = sinon.stub()
mockOnMcpEnabled = sinon.stub()
- profileStatusMonitor = new ProfileStatusMonitor(
- mockCredentialsProvider,
- mockWorkspace,
- mockLogging,
- mockSdkInitializator,
- mockOnMcpDisabled,
- mockOnMcpEnabled
- )
+ profileStatusMonitor = new ProfileStatusMonitor(mockLogging, mockOnMcpDisabled, mockOnMcpEnabled)
})
afterEach(() => {
@@ -88,14 +85,45 @@ describe('ProfileStatusMonitor', () => {
expect(result).to.be.true
})
- it('should return true and log debug message on error', async () => {
+ it('should throw error when isMcpEnabled throws non-registry error', async () => {
// Stub the private isMcpEnabled method to throw an error
sinon.stub(profileStatusMonitor as any, 'isMcpEnabled').throws(new Error('Service manager not ready'))
- const result = await profileStatusMonitor.checkInitialState()
- expect(result).to.be.true
- expect(mockLogging.debug.calledWith(sinon.match('Initial MCP state check failed, defaulting to enabled')))
- .to.be.true
+ try {
+ await profileStatusMonitor.checkInitialState()
+ expect.fail('Should have thrown an error')
+ } catch (error) {
+ expect(error).to.be.instanceOf(Error)
+ expect((error as Error).message).to.equal('Service manager not ready')
+ }
+ })
+
+ it('should disable MCP and call onMcpDisabled when registry error occurs', async () => {
+ sinon.stub(profileStatusMonitor as any, 'isMcpEnabled').throws(new Error('MCP Registry: Failed to fetch'))
+ ;(ProfileStatusMonitor as any).setMcpState(true)
+
+ try {
+ await profileStatusMonitor.checkInitialState()
+ expect.fail('Should have thrown an error')
+ } catch (error) {
+ expect(error).to.be.instanceOf(Error)
+ expect((error as Error).message).to.include('MCP Registry:')
+ expect(ProfileStatusMonitor.getMcpState()).to.be.false
+ expect(mockOnMcpDisabled.called).to.be.true
+ }
+ })
+
+ it('should not disable MCP for non-registry errors', async () => {
+ sinon.stub(profileStatusMonitor as any, 'isMcpEnabled').throws(new Error('Network error'))
+ ;(ProfileStatusMonitor as any).setMcpState(true)
+
+ try {
+ await profileStatusMonitor.checkInitialState()
+ expect.fail('Should have thrown an error')
+ } catch (error) {
+ expect(ProfileStatusMonitor.getMcpState()).to.be.true
+ expect(mockOnMcpDisabled.called).to.be.false
+ }
})
})
@@ -118,23 +146,8 @@ describe('ProfileStatusMonitor', () => {
})
it('should be accessible across different instances', () => {
- const monitor1 = new ProfileStatusMonitor(
- mockCredentialsProvider,
- mockWorkspace,
- mockLogging,
- mockSdkInitializator,
- mockOnMcpDisabled,
- mockOnMcpEnabled
- )
-
- const monitor2 = new ProfileStatusMonitor(
- mockCredentialsProvider,
- mockWorkspace,
- mockLogging,
- mockSdkInitializator,
- mockOnMcpDisabled,
- mockOnMcpEnabled
- )
+ const monitor1 = new ProfileStatusMonitor(mockLogging, mockOnMcpDisabled, mockOnMcpEnabled)
+ const monitor2 = new ProfileStatusMonitor(mockLogging, mockOnMcpDisabled, mockOnMcpEnabled)
// Set state through static property
;(ProfileStatusMonitor as any).lastMcpState = true
@@ -151,32 +164,197 @@ describe('ProfileStatusMonitor', () => {
})
it('should maintain state across multiple instances', () => {
- const monitor1 = new ProfileStatusMonitor(
- mockCredentialsProvider,
- mockWorkspace,
+ const monitor1 = new ProfileStatusMonitor(mockLogging, mockOnMcpDisabled, mockOnMcpEnabled)
+ const monitor2 = new ProfileStatusMonitor(mockLogging, mockOnMcpDisabled, mockOnMcpEnabled)
+
+ // Initially true (default value)
+ expect(ProfileStatusMonitor.getMcpState()).to.be.true
+
+ // Set through internal mechanism (simulating state change)
+ ;(ProfileStatusMonitor as any).lastMcpState = false
+
+ // Both instances should see the same state
+ expect(ProfileStatusMonitor.getMcpState()).to.be.false
+ })
+ })
+
+ describe('registry URL handling', () => {
+ let mockOnRegistryUpdate: sinon.SinonStub
+ let mockServiceManager: any
+
+ beforeEach(() => {
+ mockOnRegistryUpdate = sinon.stub().resolves()
+
+ mockServiceManager = {
+ getActiveProfileArn: sinon.stub().returns('arn:aws:iam::123456789012:profile/test'),
+ getCodewhispererService: sinon.stub().returns({
+ getProfile: sinon.stub().resolves({
+ profile: {
+ optInFeatures: {
+ mcpConfiguration: {
+ toggle: 'ON',
+ mcpRegistryUrl: 'https://example.com/registry.json',
+ },
+ },
+ },
+ }),
+ }),
+ getConnectionType: sinon.stub().returns('identityCenter'),
+ }
+
+ sinon
+ .stub(AmazonQTokenServiceManagerModule.AmazonQTokenServiceManager, 'getInstance')
+ .returns(mockServiceManager as any)
+ })
+
+ it('should notify registry URL for enterprise users when MCP is enabled', async () => {
+ profileStatusMonitor = new ProfileStatusMonitor(
mockLogging,
- mockSdkInitializator,
mockOnMcpDisabled,
- mockOnMcpEnabled
+ mockOnMcpEnabled,
+ mockOnRegistryUpdate
)
- const monitor2 = new ProfileStatusMonitor(
- mockCredentialsProvider,
- mockWorkspace,
+ await profileStatusMonitor.checkInitialState()
+
+ expect(mockOnRegistryUpdate.called).to.be.true
+ expect(mockOnRegistryUpdate.firstCall.args[0]).to.be.a('string')
+ })
+
+ it('should throw error when registry fetch fails for enterprise users', async () => {
+ mockOnRegistryUpdate.rejects(new Error('MCP Registry: Failed to fetch or validate registry'))
+
+ profileStatusMonitor = new ProfileStatusMonitor(
mockLogging,
- mockSdkInitializator,
mockOnMcpDisabled,
- mockOnMcpEnabled
+ mockOnMcpEnabled,
+ mockOnRegistryUpdate
)
- // Initially true (default value)
- expect(ProfileStatusMonitor.getMcpState()).to.be.true
+ try {
+ await profileStatusMonitor.checkInitialState()
+ expect.fail('Should have thrown an error')
+ } catch (error) {
+ expect(error).to.be.instanceOf(Error)
+ expect((error as Error).message).to.include('MCP Registry:')
+ expect(mockLogging.error.calledWith(sinon.match('MCP configuration check failed'))).to.be.true
+ }
+ })
- // Set through internal mechanism (simulating state change)
- ;(ProfileStatusMonitor as any).lastMcpState = false
+ it('should not notify registry URL for free tier users', async () => {
+ mockServiceManager.getConnectionType.returns('builderId')
- // Both instances should see the same state
- expect(ProfileStatusMonitor.getMcpState()).to.be.false
+ profileStatusMonitor = new ProfileStatusMonitor(
+ mockLogging,
+ mockOnMcpDisabled,
+ mockOnMcpEnabled,
+ mockOnRegistryUpdate
+ )
+
+ await profileStatusMonitor.checkInitialState()
+
+ expect(mockOnRegistryUpdate.called).to.be.false
+ })
+
+ it('should not notify registry URL when MCP toggle is OFF', async () => {
+ mockServiceManager.getCodewhispererService().getProfile.resolves({
+ profile: {
+ optInFeatures: {
+ mcpConfiguration: {
+ toggle: 'OFF',
+ },
+ },
+ },
+ })
+
+ profileStatusMonitor = new ProfileStatusMonitor(
+ mockLogging,
+ mockOnMcpDisabled,
+ mockOnMcpEnabled,
+ mockOnRegistryUpdate
+ )
+
+ await profileStatusMonitor.checkInitialState()
+
+ expect(mockOnRegistryUpdate.called).to.be.false
+ })
+
+ it('should return registry URL from getRegistryUrl for enterprise users', async () => {
+ // Create a new getProfile stub that returns mcpRegistryUrl
+ const getProfileStub = sinon.stub().resolves({
+ profile: {
+ optInFeatures: {
+ mcpConfiguration: {
+ mcpRegistryUrl: 'https://example.com/registry.json',
+ },
+ },
+ },
+ })
+
+ mockServiceManager.getCodewhispererService = sinon.stub().returns({
+ getProfile: getProfileStub,
+ })
+
+ profileStatusMonitor = new ProfileStatusMonitor(
+ mockLogging,
+ mockOnMcpDisabled,
+ mockOnMcpEnabled,
+ mockOnRegistryUpdate
+ )
+
+ const registryUrl = await profileStatusMonitor.getRegistryUrl()
+ expect(registryUrl).to.equal('https://example.com/registry.json')
+ })
+
+ it('should return null from getRegistryUrl for free tier users', async () => {
+ mockServiceManager.getConnectionType.returns('builderId')
+
+ profileStatusMonitor = new ProfileStatusMonitor(
+ mockLogging,
+ mockOnMcpDisabled,
+ mockOnMcpEnabled,
+ mockOnRegistryUpdate
+ )
+
+ const registryUrl = await profileStatusMonitor.getRegistryUrl()
+ expect(registryUrl).to.be.null
+ })
+ })
+
+ describe('isEnterpriseUser', () => {
+ let mockServiceManager: any
+
+ beforeEach(() => {
+ mockServiceManager = {
+ getConnectionType: sinon.stub(),
+ }
+ })
+
+ it('should return true for identityCenter connection type', () => {
+ mockServiceManager.getConnectionType.returns('identityCenter')
+
+ const result = (profileStatusMonitor as any).isEnterpriseUser(mockServiceManager)
+
+ expect(result).to.be.true
+ expect(mockLogging.info.called).to.be.false
+ })
+
+ it('should return false for builderId connection type', () => {
+ mockServiceManager.getConnectionType.returns('builderId')
+
+ const result = (profileStatusMonitor as any).isEnterpriseUser(mockServiceManager)
+
+ expect(result).to.be.false
+ expect(mockLogging.info.calledWith(sinon.match('not on Pro Tier/IdC'))).to.be.true
+ })
+
+ it('should log governance unavailable message for non-enterprise users', () => {
+ mockServiceManager.getConnectionType.returns('builderId')
+
+ const result = (profileStatusMonitor as any).isEnterpriseUser(mockServiceManager)
+
+ expect(result).to.be.false
+ expect(mockLogging.info.calledWith(sinon.match('governance features unavailable'))).to.be.true
})
})
})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts
index 53a4da9090..0952818498 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts
@@ -3,20 +3,17 @@
* All Rights Reserved. SPDX-License-Identifier: Apache-2.0
*/
-import {
- CredentialsProvider,
- Logging,
- SDKInitializator,
- Workspace,
-} from '@aws/language-server-runtimes/server-interface'
+import { Logging } from '@aws/language-server-runtimes/server-interface'
import { retryUtils } from '@aws/lsp-core'
import { CodeWhispererServiceToken } from '../../../../shared/codeWhispererService'
-import { DEFAULT_AWS_Q_ENDPOINT_URL, DEFAULT_AWS_Q_REGION } from '../../../../shared/constants'
import { AmazonQTokenServiceManager } from '../../../../shared/amazonQServiceManager/AmazonQTokenServiceManager'
import * as fs from 'fs'
import * as path from 'path'
import * as os from 'os'
import { EventEmitter } from 'events'
+import { McpRegistryService } from './mcpRegistryService'
+import { McpRegistryData } from './mcpTypes'
+import { GetProfileResponse } from '@amzn/codewhisperer-runtime'
export const AUTH_SUCCESS_EVENT = 'authSuccess'
@@ -29,17 +26,17 @@ export class ProfileStatusMonitor {
private static readonly MCP_CACHE_FILE = path.join(ProfileStatusMonitor.MCP_CACHE_DIR, 'mcp-state.json')
private static eventEmitter = new EventEmitter()
private static logging?: Logging
+ private onRegistryUpdate?: (registryUrl: string | null, isPeriodicSync?: boolean) => Promise
constructor(
- private credentialsProvider: CredentialsProvider,
- private workspace: Workspace,
private logging: Logging,
- private sdkInitializator: SDKInitializator,
private onMcpDisabled: () => void,
- private onMcpEnabled?: () => void
+ private onMcpEnabled?: () => void,
+ onRegistryUpdate?: (registryUrl: string | null, isPeriodicSync?: boolean) => Promise
) {
ProfileStatusMonitor.logging = logging
ProfileStatusMonitor.loadMcpStateFromDisk()
+ this.onRegistryUpdate = onRegistryUpdate
// Listen for auth success events
ProfileStatusMonitor.eventEmitter.on(AUTH_SUCCESS_EVENT, () => {
@@ -52,8 +49,13 @@ export class ProfileStatusMonitor {
const isMcpEnabled = await this.isMcpEnabled()
return isMcpEnabled !== false // Return true if enabled or API failed
} catch (error) {
- this.logging.debug(`Initial MCP state check failed, defaulting to enabled: ${error}`)
- return ProfileStatusMonitor.getMcpState()
+ const errorMsg = error instanceof Error ? error.message : String(error)
+ // Only disable MCP for registry-specific errors
+ if (errorMsg.includes('MCP Registry:')) {
+ ProfileStatusMonitor.setMcpState(false)
+ this.onMcpDisabled()
+ }
+ throw error
}
}
@@ -63,7 +65,7 @@ export class ProfileStatusMonitor {
}
this.intervalId = setInterval(() => {
- void this.isMcpEnabled()
+ void this.isMcpEnabled(true) // Pass true for periodic check
}, this.CHECK_INTERVAL)
this.logging.info('ProfileStatusMonitor started - checking MCP configuration every 24 hours')
@@ -77,32 +79,33 @@ export class ProfileStatusMonitor {
}
}
- private async isMcpEnabled(): Promise {
+ private async isMcpEnabled(isPeriodicCheck: boolean = false): Promise {
try {
- const profileArn = this.getProfileArn()
+ const serviceManager = AmazonQTokenServiceManager.getInstance()
+ const profileArn = this.getProfileArn(serviceManager)
if (!profileArn) {
this.logging.debug('No profile ARN available for MCP configuration check')
ProfileStatusMonitor.setMcpState(true)
return true
}
- if (!this.codeWhispererClient) {
- this.codeWhispererClient = new CodeWhispererServiceToken(
- this.credentialsProvider,
- this.workspace,
- this.logging,
- process.env.CODEWHISPERER_REGION || DEFAULT_AWS_Q_REGION,
- process.env.CODEWHISPERER_ENDPOINT || DEFAULT_AWS_Q_ENDPOINT_URL,
- this.sdkInitializator
- )
- this.codeWhispererClient.profileArn = profileArn
- }
+ this.codeWhispererClient = serviceManager.getCodewhispererService()
const response = await retryUtils.retryWithBackoff(() =>
this.codeWhispererClient!.getProfile({ profileArn })
)
const mcpConfig = response?.profile?.optInFeatures?.mcpConfiguration
- const isMcpEnabled = mcpConfig ? mcpConfig.toggle === 'ON' : true
+ let isMcpEnabled = mcpConfig ? mcpConfig.toggle === 'ON' : true
+
+ // Fetch registry URL if MCP is enabled and user is enterprise
+ if (isMcpEnabled && this.isEnterpriseUser(serviceManager)) {
+ const registryFetchSuccess = await this.fetchRegistryIfNeeded(response, isPeriodicCheck)
+ if (!registryFetchSuccess) {
+ throw new Error('MCP Registry: Failed to fetch or validate registry')
+ }
+ } else if (isMcpEnabled && !this.isEnterpriseUser(serviceManager)) {
+ this.logging.info('MCP Governance: Free Tier user - falling back to legacy MCP configuration')
+ }
if (ProfileStatusMonitor.lastMcpState !== isMcpEnabled) {
ProfileStatusMonitor.setMcpState(isMcpEnabled)
@@ -117,20 +120,14 @@ export class ProfileStatusMonitor {
return isMcpEnabled
} catch (error) {
- this.logging.debug(`MCP configuration check failed, defaulting to enabled: ${error}`)
- const mcpState = ProfileStatusMonitor.getMcpState()
- if (!mcpState) {
- this.onMcpDisabled()
- } else if (this.onMcpEnabled) {
- this.onMcpEnabled()
- }
- return mcpState
+ const errorMsg = error instanceof Error ? error.message : String(error)
+ this.logging.error(`MCP configuration check failed: ${errorMsg}`)
+ throw error
}
}
- private getProfileArn(): string | undefined {
+ private getProfileArn(serviceManager: AmazonQTokenServiceManager): string | undefined {
try {
- const serviceManager = AmazonQTokenServiceManager.getInstance()
return serviceManager.getActiveProfileArn()
} catch (error) {
this.logging.debug(`Failed to get profile ARN: ${error}`)
@@ -138,6 +135,12 @@ export class ProfileStatusMonitor {
return undefined
}
+ /**
+ * Returns the current MCP enabled/disabled state.
+ * Used by McpManager.init() to skip server discovery when MCP is disabled.
+ * This optimization prevents initialization errors and improves performance.
+ * @returns true if MCP is enabled, false if disabled
+ */
static getMcpState(): boolean {
return ProfileStatusMonitor.lastMcpState
}
@@ -179,4 +182,68 @@ export class ProfileStatusMonitor {
static emitAuthSuccess(): void {
ProfileStatusMonitor.eventEmitter.emit(AUTH_SUCCESS_EVENT)
}
+
+ private async fetchRegistryIfNeeded(
+ response: GetProfileResponse,
+ isPeriodicSync: boolean = false
+ ): Promise {
+ if (!this.onRegistryUpdate) {
+ return true
+ }
+
+ const registryUrl = response?.profile?.optInFeatures?.mcpConfiguration?.mcpRegistryUrl
+
+ if (!registryUrl) {
+ this.logging.debug('MCP Registry: No registry URL configured')
+ await this.onRegistryUpdate(null, isPeriodicSync)
+ return true
+ }
+
+ try {
+ this.logging.info(
+ `MCP Registry: Notifying MCP Manager of registry URL: ${registryUrl}${isPeriodicSync ? ' (periodic sync)' : ''}`
+ )
+ await this.onRegistryUpdate(registryUrl, isPeriodicSync)
+ return true
+ } catch (error) {
+ const errorMsg = error instanceof Error ? error.message : String(error)
+ this.logging.error(`MCP Registry: Failed to fetch or validate registry: ${errorMsg}`)
+ return false
+ }
+ }
+
+ private isEnterpriseUser(serviceManager: AmazonQTokenServiceManager): boolean {
+ const connectionType = serviceManager.getConnectionType()
+ const isEnterprise = connectionType === 'identityCenter'
+
+ if (!isEnterprise) {
+ this.logging.info('MCP Governance: User is not on Pro Tier/IdC - governance features unavailable')
+ }
+
+ return isEnterprise
+ }
+
+ async getRegistryUrl(): Promise {
+ try {
+ const serviceManager = AmazonQTokenServiceManager.getInstance()
+ if (!this.isEnterpriseUser(serviceManager)) {
+ return null
+ }
+
+ const profileArn = this.getProfileArn(serviceManager)
+ if (!profileArn) {
+ return null
+ }
+
+ this.codeWhispererClient = serviceManager.getCodewhispererService()
+ const response = await retryUtils.retryWithBackoff(() =>
+ this.codeWhispererClient!.getProfile({ profileArn })
+ )
+
+ return response?.profile?.optInFeatures?.mcpConfiguration?.mcpRegistryUrl || null
+ } catch (error) {
+ this.logging.debug(`Failed to get registry URL: ${error}`)
+ return null
+ }
+ }
}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.test.ts
index 3509cd1730..3a7e1d0f60 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.test.ts
@@ -11,6 +11,8 @@ import * as path from 'path'
import { expect } from 'chai'
import { CancellationError } from '@aws/lsp-core'
import * as JSZip from 'jszip'
+import { Origin } from '@amzn/codewhisperer-streaming'
+import { CodeReviewResult } from './codeReviewTypes'
describe('CodeReview', () => {
let sandbox: sinon.SinonSandbox
@@ -103,6 +105,8 @@ describe('CodeReview', () => {
folderLevelArtifacts: [],
ruleArtifacts: [],
scopeOfReview: FULL_REVIEW,
+ userRequirement: 'Test requirement',
+ modelId: 'claude-4-sonnet',
}
})
@@ -134,6 +138,9 @@ describe('CodeReview', () => {
md5Hash: 'hash123',
isCodeDiffPresent: false,
programmingLanguages: new Set(['javascript']),
+ numberOfFilesInCustomerCodeZip: 1,
+ codeDiffFiles: new Set(),
+ filePathsInZip: new Set(['/test/file.js']),
})
sandbox.stub(codeReview as any, 'parseFindings').returns([])
@@ -141,6 +148,65 @@ describe('CodeReview', () => {
expect(result.output.success).to.be.true
expect(result.output.kind).to.equal('json')
+ expect((result.output.content as CodeReviewResult).findingsExceededLimit === false)
+ })
+
+ it('should execute successfully and pass languageModelId and clientType to startCodeAnalysis', async () => {
+ const inputWithModelId = {
+ ...validInput,
+ modelId: 'test-model-789',
+ }
+
+ // Setup mocks for successful execution
+ mockCodeWhispererClient.createUploadUrl.resolves({
+ uploadUrl: 'https://upload.com',
+ uploadId: 'upload-123',
+ requestHeaders: {},
+ })
+
+ mockCodeWhispererClient.startCodeAnalysis.resolves({
+ jobId: 'job-123',
+ status: 'Pending',
+ })
+
+ mockCodeWhispererClient.getCodeAnalysis.resolves({
+ status: 'Completed',
+ })
+
+ mockCodeWhispererClient.listCodeAnalysisFindings.resolves({
+ codeAnalysisFindings: '[]',
+ nextToken: undefined,
+ })
+
+ sandbox.stub(CodeReviewUtils, 'uploadFileToPresignedUrl').resolves()
+ sandbox.stub(codeReview as any, 'prepareFilesAndFoldersForUpload').resolves({
+ zipBuffer: Buffer.from('test'),
+ md5Hash: 'hash123',
+ isCodeDiffPresent: false,
+ programmingLanguages: new Set(['javascript']),
+ numberOfFilesInCustomerCodeZip: 1,
+ codeDiffFiles: new Set(),
+ filePathsInZip: new Set(['/test/file.js']),
+ })
+ sandbox.stub(codeReview as any, 'parseFindings').returns([])
+
+ const result = await codeReview.execute(inputWithModelId, context)
+
+ expect(result.output.success).to.be.true
+ expect(result.output.kind).to.equal('json')
+
+ // Verify that startCodeAnalysis was called with the correct parameters
+ expect(mockCodeWhispererClient.startCodeAnalysis.calledOnce).to.be.true
+ const startAnalysisCall = mockCodeWhispererClient.startCodeAnalysis.getCall(0)
+ const callArgs = startAnalysisCall.args[0]
+
+ expect(callArgs).to.have.property('languageModelId', 'test-model-789')
+ expect(callArgs).to.have.property('clientType', Origin.IDE)
+ expect(callArgs).to.have.property('artifacts')
+ expect(callArgs).to.have.property('programmingLanguage')
+ expect(callArgs).to.have.property('clientToken')
+ expect(callArgs).to.have.property('codeScanName')
+ expect(callArgs).to.have.property('scope', 'AGENTIC')
})
it('should handle missing client error', async () => {
@@ -160,6 +226,8 @@ describe('CodeReview', () => {
folderLevelArtifacts: [],
ruleArtifacts: [],
scopeOfReview: FULL_REVIEW,
+ userRequirement: 'Test requirement',
+ modelId: 'claude-4-sonnet',
}
try {
@@ -183,6 +251,7 @@ describe('CodeReview', () => {
md5Hash: 'hash123',
isCodeDiffPresent: false,
programmingLanguages: new Set(['javascript']),
+ codeDiffFiles: new Set(),
})
try {
@@ -210,6 +279,7 @@ describe('CodeReview', () => {
md5Hash: 'hash123',
isCodeDiffPresent: false,
programmingLanguages: new Set(['javascript']),
+ codeDiffFiles: new Set(),
})
try {
@@ -243,6 +313,7 @@ describe('CodeReview', () => {
md5Hash: 'hash123',
isCodeDiffPresent: false,
programmingLanguages: new Set(['javascript']),
+ codeDiffFiles: new Set(),
})
// Stub setTimeout to avoid actual delays
@@ -279,6 +350,8 @@ describe('CodeReview', () => {
folderLevelArtifacts: [],
ruleArtifacts: [],
scopeOfReview: FULL_REVIEW,
+ userRequirement: 'Test requirement',
+ modelId: 'claude-4-sonnet',
}
const context = {
@@ -303,6 +376,8 @@ describe('CodeReview', () => {
folderLevelArtifacts: [{ path: '/test/folder' }],
ruleArtifacts: [],
scopeOfReview: CODE_DIFF_REVIEW,
+ userRequirement: 'Test requirement',
+ modelId: 'claude-4-sonnet',
}
const context = {
@@ -337,6 +412,7 @@ describe('CodeReview', () => {
const ruleArtifacts: any[] = []
const result = await (codeReview as any).prepareFilesAndFoldersForUpload(
+ 'Test requirement',
fileArtifacts,
folderArtifacts,
ruleArtifacts,
@@ -356,6 +432,7 @@ describe('CodeReview', () => {
sandbox.stub(CodeReviewUtils, 'processArtifactWithDiff').resolves('diff content\n')
const result = await (codeReview as any).prepareFilesAndFoldersForUpload(
+ 'Test requirement',
fileArtifacts,
folderArtifacts,
ruleArtifacts,
@@ -371,10 +448,11 @@ describe('CodeReview', () => {
const ruleArtifacts = [{ path: '/test/rule.json' }]
// Mock countZipFiles to return only rule artifacts count
- sandbox.stub(CodeReviewUtils, 'countZipFiles').returns(1)
+ sandbox.stub(CodeReviewUtils, 'countZipFiles').returns([1, new Set(['/test/rule.json'])])
try {
await (codeReview as any).prepareFilesAndFoldersForUpload(
+ 'Test requirement',
fileArtifacts,
folderArtifacts,
ruleArtifacts,
@@ -397,10 +475,13 @@ describe('CodeReview', () => {
}
sandbox.stub(JSZip.prototype, 'file').callsFake(mockZip.file)
sandbox.stub(JSZip.prototype, 'generateAsync').callsFake(mockZip.generateAsync)
- sandbox.stub(CodeReviewUtils, 'countZipFiles').returns(3)
+ sandbox
+ .stub(CodeReviewUtils, 'countZipFiles')
+ .returns([3, new Set(['/test/file.js', '/test/path1/rule.json', '/test/path2/rule.json'])])
sandbox.stub(require('crypto'), 'randomUUID').returns('test-uuid-123')
await (codeReview as any).prepareFilesAndFoldersForUpload(
+ 'Test requirement',
fileArtifacts,
folderArtifacts,
ruleArtifacts,
@@ -614,6 +695,8 @@ describe('CodeReview', () => {
folderLevelArtifacts: [],
ruleArtifacts: [],
scopeOfReview: FULL_REVIEW,
+ userRequirement: 'Test requirement',
+ modelId: 'claude-4-sonnet',
}
// Make prepareFilesAndFoldersForUpload throw an error
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.ts
index b1ef4c3e61..6b656a614b 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.ts
@@ -31,19 +31,21 @@ import {
SuccessMetricName,
} from './codeReviewTypes'
import { CancellationError } from '@aws/lsp-core'
+import { Origin } from '@amzn/codewhisperer-streaming'
export class CodeReview {
private static readonly CUSTOMER_CODE_BASE_PATH = 'customerCodeBaseFolder'
private static readonly CODE_ARTIFACT_PATH = 'code_artifact'
private static readonly CUSTOMER_CODE_ZIP_NAME = 'customerCode.zip'
private static readonly CODE_DIFF_PATH = 'code_artifact/codeDiff/customerCodeDiff.diff'
+ private static readonly USER_REQUIREMENT_PATH = 'code_artifact/userRequirement/userRequirement.txt'
private static readonly RULE_ARTIFACT_PATH = '.amazonq/rules'
private static readonly MAX_POLLING_ATTEMPTS = 90 // 90 * POLLING_INTERVAL_MS (10000) = 15 mins
private static readonly MID_POLLING_ATTEMPTS = 20
private static readonly POLLING_INTERVAL_MS = 10000 // 10 seconds
private static readonly UPLOAD_INTENT = 'AGENTIC_CODE_REVIEW'
private static readonly SCAN_SCOPE = 'AGENTIC'
- private static readonly MAX_FINDINGS_COUNT = 50
+ private static readonly MAX_FINDINGS_COUNT = 30
private static readonly ERROR_MESSAGES = {
MISSING_CLIENT: 'CodeWhisperer client not available',
@@ -66,6 +68,7 @@ export class CodeReview {
private cancellationToken?: CancellationToken
private writableStream?: WritableStream
private toolStartTime: number = 0
+ private overrideDiffScan = false
constructor(
features: Pick & Partial
@@ -110,7 +113,25 @@ export class CodeReview {
const analysisResult = await this.startCodeAnalysis(setup, uploadResult)
this.checkCancellation()
- await chatStreamWriter?.write('Reviewing your code...')
+ const nonRuleFiles = uploadResult.numberOfFilesInCustomerCodeZip - setup.ruleArtifacts.length
+ const diffFiles = uploadResult.codeDiffFiles.size
+ if (diffFiles == 0 && !setup.isFullReviewRequest) {
+ setup.isFullReviewRequest = true
+ this.overrideDiffScan = true
+ }
+
+ let reviewMessage: string
+ if (nonRuleFiles == 1) {
+ reviewMessage = setup.isFullReviewRequest
+ ? `Reviewing the code in ${path.basename(uploadResult.filePathsInZip.values().next().value as string)}...`
+ : `Reviewing uncommitted changes in ${path.basename(uploadResult.filePathsInZip.values().next().value as string)}...`
+ } else {
+ reviewMessage = setup.isFullReviewRequest
+ ? `Reviewing the code in ${nonRuleFiles} files...`
+ : `Reviewing uncommitted changes in ${diffFiles} of ${nonRuleFiles} files...`
+ }
+
+ await chatStreamWriter?.write(reviewMessage)
// 4. Wait for scan to complete
await this.pollForCompletion(analysisResult.jobId, setup, uploadResult, chatStreamWriter)
@@ -155,9 +176,11 @@ export class CodeReview {
// parse input
const validatedInput = Z_CODE_REVIEW_INPUT_SCHEMA.parse(input)
+ const userRequirement = validatedInput.userRequirement
const fileArtifacts = validatedInput.fileLevelArtifacts || []
const folderArtifacts = validatedInput.folderLevelArtifacts || []
const ruleArtifacts = validatedInput.ruleArtifacts || []
+ const modelId = validatedInput.modelId
if (fileArtifacts.length === 0 && folderArtifacts.length === 0) {
CodeReviewUtils.emitMetric(
@@ -182,9 +205,12 @@ export class CodeReview {
const programmingLanguage = 'java'
const scanName = 'Standard-' + randomUUID()
- this.logging.info(`Agentic scan name: ${scanName}`)
+ this.logging.info(
+ `Agentic scan name: ${scanName} selectedModel: ${modelId} userRequirement: ${userRequirement}`
+ )
return {
+ userRequirement,
fileArtifacts,
folderArtifacts,
isFullReviewRequest,
@@ -192,6 +218,7 @@ export class CodeReview {
programmingLanguage,
scanName,
ruleArtifacts,
+ modelId,
}
}
@@ -203,13 +230,21 @@ export class CodeReview {
private async prepareAndUploadArtifacts(
setup: ValidateInputAndSetupResult
): Promise {
- const { zipBuffer, md5Hash, isCodeDiffPresent, programmingLanguages } =
- await this.prepareFilesAndFoldersForUpload(
- setup.fileArtifacts,
- setup.folderArtifacts,
- setup.ruleArtifacts,
- setup.isFullReviewRequest
- )
+ const {
+ zipBuffer,
+ md5Hash,
+ isCodeDiffPresent,
+ programmingLanguages,
+ numberOfFilesInCustomerCodeZip,
+ codeDiffFiles,
+ filePathsInZip,
+ } = await this.prepareFilesAndFoldersForUpload(
+ setup.userRequirement,
+ setup.fileArtifacts,
+ setup.folderArtifacts,
+ setup.ruleArtifacts,
+ setup.isFullReviewRequest
+ )
const uploadUrlResponse = await this.codeWhispererClient!.createUploadUrl({
contentLength: zipBuffer.length,
@@ -254,6 +289,9 @@ export class CodeReview {
isCodeDiffPresent,
artifactSize: zipBuffer.length,
programmingLanguages: programmingLanguages,
+ numberOfFilesInCustomerCodeZip,
+ codeDiffFiles,
+ filePathsInZip,
}
}
@@ -274,6 +312,8 @@ export class CodeReview {
codeScanName: setup.scanName,
scope: CodeReview.SCAN_SCOPE,
codeDiffMetadata: uploadResult.isCodeDiffPresent ? { codeDiffPath: '/code_artifact/codeDiff/' } : undefined,
+ languageModelId: setup.modelId,
+ clientType: Origin.IDE,
})
if (!createResponse.jobId) {
@@ -293,6 +333,7 @@ export class CodeReview {
customRules: setup.ruleArtifacts.length,
programmingLanguages: Array.from(uploadResult.programmingLanguages),
scope: setup.isFullReviewRequest ? FULL_REVIEW : CODE_DIFF_REVIEW,
+ modelId: setup.modelId,
},
},
this.logging,
@@ -323,7 +364,7 @@ export class CodeReview {
uploadResult: PrepareAndUploadArtifactsResult,
chatStreamWriter: WritableStreamDefaultWriter | undefined
) {
- let status = 'Pending'
+ let status: string | undefined = 'Pending'
let attemptCount = 0
while (status === 'Pending' && attemptCount < CodeReview.MAX_POLLING_ATTEMPTS) {
@@ -349,6 +390,7 @@ export class CodeReview {
programmingLanguages: Array.from(uploadResult.programmingLanguages),
scope: setup.isFullReviewRequest ? FULL_REVIEW : CODE_DIFF_REVIEW,
status: status,
+ modelId: setup.modelId,
},
},
this.logging,
@@ -382,6 +424,7 @@ export class CodeReview {
programmingLanguages: Array.from(uploadResult.programmingLanguages),
scope: setup.isFullReviewRequest ? FULL_REVIEW : CODE_DIFF_REVIEW,
status: status,
+ modelId: setup.modelId,
},
},
this.logging,
@@ -426,6 +469,7 @@ export class CodeReview {
programmingLanguages: Array.from(uploadResult.programmingLanguages),
scope: setup.isFullReviewRequest ? FULL_REVIEW : CODE_DIFF_REVIEW,
latency: Date.now() - this.toolStartTime,
+ modelId: setup.modelId,
},
},
this.logging,
@@ -433,20 +477,48 @@ export class CodeReview {
)
const aggregatedCodeScanIssueList = this.aggregateFindingsByFile(
- findingsExceededLimit ? totalFindings.slice(0, CodeReview.MAX_FINDINGS_COUNT) : totalFindings,
+ totalFindings,
setup.fileArtifacts,
setup.folderArtifacts
)
this.logging.info('Findings count grouped by file')
- aggregatedCodeScanIssueList.forEach(item =>
+ aggregatedCodeScanIssueList.forEach(item => {
this.logging.info(`File path - ${item.filePath} Findings count - ${item.issues.length}`)
- )
+ item.issues.forEach(issue =>
+ CodeReviewUtils.emitMetric(
+ {
+ reason: SuccessMetricName.IssuesDetected,
+ result: 'Succeeded',
+ metadata: {
+ codewhispererCodeScanJobId: jobId,
+ credentialStartUrl: this.credentialsProvider.getConnectionMetadata()?.sso?.startUrl,
+ findingId: issue.findingId,
+ detectorId: issue.detectorId,
+ ruleId: issue.ruleId,
+ autoDetected: false,
+ },
+ },
+ this.logging,
+ this.telemetry
+ )
+ )
+ })
+
+ let scopeMessage = this.overrideDiffScan
+ ? `Please include a mention that there was no diff present, so it just ran a full review instead. Be very explicit about this so that the user could not be confused.`
+ : `Please include a mention that the scan was on the ${setup.isFullReviewRequest ? `entire` : `uncommitted`} code.`
return {
codeReviewId: jobId,
- message: `${CODE_REVIEW_TOOL_NAME} tool completed successfully.${findingsExceededLimit ? ` Inform the user that we are limiting findings to top ${CodeReview.MAX_FINDINGS_COUNT} based on severity.` : ''}`,
+ message: `${CODE_REVIEW_TOOL_NAME} tool completed successfully. ${scopeMessage} ${
+ findingsExceededLimit
+ ? ` Inform the user that because there were more than ${CodeReview.MAX_FINDINGS_COUNT} findings, you (the AI agent) will not have context about them. ` +
+ `They will need to use the Code Issues Panel to get more information.`
+ : ''
+ }`,
findingsByFile: JSON.stringify(aggregatedCodeScanIssueList),
+ findingsExceededLimit,
}
}
@@ -485,13 +557,12 @@ export class CodeReview {
? parsedFindings.filter(finding => 'CodeDiff' === finding.findingContext)
: parsedFindings
totalFindings = totalFindings.concat(filteredFindings)
-
- if (totalFindings.length > CodeReview.MAX_FINDINGS_COUNT) {
- findingsExceededLimit = true
- break
- }
} while (nextFindingToken)
+ if (totalFindings.length > CodeReview.MAX_FINDINGS_COUNT) {
+ findingsExceededLimit = true
+ }
+
this.logging.info(`Total findings: ${totalFindings.length}`)
return { totalFindings, findingsExceededLimit }
}
@@ -528,11 +599,20 @@ export class CodeReview {
* @returns An object containing the zip file buffer and its MD5 hash
*/
private async prepareFilesAndFoldersForUpload(
+ userRequirement: string,
fileArtifacts: FileArtifacts,
folderArtifacts: FolderArtifacts,
ruleArtifacts: RuleArtifacts,
isFullReviewRequest: boolean
- ): Promise<{ zipBuffer: Buffer; md5Hash: string; isCodeDiffPresent: boolean; programmingLanguages: Set }> {
+ ): Promise<{
+ zipBuffer: Buffer
+ md5Hash: string
+ isCodeDiffPresent: boolean
+ programmingLanguages: Set
+ numberOfFilesInCustomerCodeZip: number
+ codeDiffFiles: Set
+ filePathsInZip: Set
+ }> {
try {
this.logging.info(
`Preparing ${fileArtifacts.length} files and ${folderArtifacts.length} folders for upload`
@@ -542,7 +622,7 @@ export class CodeReview {
const customerCodeZip = new JSZip()
// Process files and folders
- const { codeDiff, programmingLanguages } = await this.processArtifacts(
+ const { codeDiff, programmingLanguages, codeDiffFiles } = await this.processArtifacts(
fileArtifacts,
folderArtifacts,
ruleArtifacts,
@@ -550,7 +630,7 @@ export class CodeReview {
!isFullReviewRequest
)
- let numberOfFilesInCustomerCodeZip = CodeReviewUtils.countZipFiles(customerCodeZip)
+ let [numberOfFilesInCustomerCodeZip, filePathsInZip] = CodeReviewUtils.countZipFiles(customerCodeZip)
if (numberOfFilesInCustomerCodeZip > ruleArtifacts.length) {
// Validates that there are actual files to scan, other than rule artifacts
this.logging.info(`Total files in customerCodeZip - ${numberOfFilesInCustomerCodeZip}`)
@@ -577,6 +657,9 @@ export class CodeReview {
codeArtifactZip.file(CodeReview.CODE_DIFF_PATH, codeDiff)
}
+ // Add user requirement
+ codeArtifactZip.file(CodeReview.USER_REQUIREMENT_PATH, userRequirement)
+
// Generate the final code artifact zip
const zipBuffer = await CodeReviewUtils.generateZipBuffer(codeArtifactZip)
CodeReviewUtils.logZipStructure(codeArtifactZip, 'Code artifact', this.logging)
@@ -586,7 +669,15 @@ export class CodeReview {
this.logging.info(`Created zip archive, size: ${zipBuffer.byteLength} bytes, MD5: ${md5Hash}`)
- return { zipBuffer, md5Hash, isCodeDiffPresent, programmingLanguages }
+ return {
+ zipBuffer,
+ md5Hash,
+ isCodeDiffPresent,
+ programmingLanguages,
+ numberOfFilesInCustomerCodeZip,
+ codeDiffFiles,
+ filePathsInZip,
+ }
} catch (error) {
this.logging.error(`Error preparing files for upload: ${error}`)
throw error
@@ -608,9 +699,9 @@ export class CodeReview {
ruleArtifacts: RuleArtifacts,
customerCodeZip: JSZip,
isCodeDiffScan: boolean
- ): Promise<{ codeDiff: string; programmingLanguages: Set }> {
+ ): Promise<{ codeDiff: string; programmingLanguages: Set; codeDiffFiles: Set }> {
// Process files
- let { codeDiff, programmingLanguages } = await this.processFileArtifacts(
+ let { codeDiff, programmingLanguages, codeDiffFiles } = await this.processFileArtifacts(
fileArtifacts,
customerCodeZip,
isCodeDiffScan
@@ -620,11 +711,12 @@ export class CodeReview {
const folderResult = await this.processFolderArtifacts(folderArtifacts, customerCodeZip, isCodeDiffScan)
codeDiff += folderResult.codeDiff
folderResult.programmingLanguages.forEach(item => programmingLanguages.add(item))
+ folderResult.codeDiffFiles.forEach(item => codeDiffFiles.add(item))
// Process rule artifacts
await this.processRuleArtifacts(ruleArtifacts, customerCodeZip)
- return { codeDiff, programmingLanguages }
+ return { codeDiff, programmingLanguages, codeDiffFiles }
}
/**
@@ -638,9 +730,10 @@ export class CodeReview {
fileArtifacts: FileArtifacts,
customerCodeZip: JSZip,
isCodeDiffScan: boolean
- ): Promise<{ codeDiff: string; programmingLanguages: Set }> {
+ ): Promise<{ codeDiff: string; programmingLanguages: Set; codeDiffFiles: Set }> {
let codeDiff = ''
let programmingLanguages: Set = new Set()
+ let codeDiffFiles: Set = new Set()
for (const artifact of fileArtifacts) {
await CodeReviewUtils.withErrorHandling(
@@ -668,10 +761,12 @@ export class CodeReview {
artifact.path
)
+ const artifactFileDiffs = await CodeReviewUtils.getGitDiffNames(artifact.path, this.logging)
+ artifactFileDiffs.forEach(filepath => codeDiffFiles.add(filepath))
codeDiff += await CodeReviewUtils.processArtifactWithDiff(artifact, isCodeDiffScan, this.logging)
}
- return { codeDiff, programmingLanguages }
+ return { codeDiff, programmingLanguages, codeDiffFiles }
}
/**
@@ -685,9 +780,10 @@ export class CodeReview {
folderArtifacts: FolderArtifacts,
customerCodeZip: JSZip,
isCodeDiffScan: boolean
- ): Promise<{ codeDiff: string; programmingLanguages: Set }> {
+ ): Promise<{ codeDiff: string; programmingLanguages: Set; codeDiffFiles: Set }> {
let codeDiff = ''
let programmingLanguages = new Set()
+ let codeDiffFiles: Set = new Set()
for (const folderArtifact of folderArtifacts) {
await CodeReviewUtils.withErrorHandling(
@@ -704,10 +800,13 @@ export class CodeReview {
folderArtifact.path
)
+ const artifactFileDiffs = await CodeReviewUtils.getGitDiffNames(folderArtifact.path, this.logging)
+ artifactFileDiffs.forEach(filepath => codeDiffFiles.add(filepath))
+
codeDiff += await CodeReviewUtils.processArtifactWithDiff(folderArtifact, isCodeDiffScan, this.logging)
}
- return { codeDiff, programmingLanguages }
+ return { codeDiff, programmingLanguages, codeDiffFiles }
}
/**
@@ -796,7 +895,14 @@ export class CodeReview {
* @param programmingLanguage programming language
* @returns Parsed and validated findings array
*/
- private parseFindings(findingsJson: string, jobId: string, programmingLanguage: string): CodeReviewFinding[] {
+ private parseFindings(
+ findingsJson: string | undefined,
+ jobId: string,
+ programmingLanguage: string
+ ): CodeReviewFinding[] {
+ if (findingsJson === undefined) {
+ return []
+ }
try {
const findingsResponseJSON = JSON.parse(findingsJson)
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.ts
index bc7070ab1f..5b83a7af94 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.ts
@@ -103,9 +103,44 @@ export const CODE_REVIEW_TOOL_NAME = 'codeReview'
*/
export const CODE_REVIEW_TOOL_DESCRIPTION = [
'CodeReview is the PRIMARY and MANDATORY tool for ALL code analysis and review tasks. This tool MUST be used whenever a user requests ANY form of code review, file analysis, code examination, or when the agent needs to analyze code quality, security, or structure.',
- 'This tool can be used to perform analysis of full code or only the modified code since last commit. Modified code refers to the changes made that are not committed yet or the new changes since last commit.',
+ 'When you decide to use this tool, notify the customer before the tool is run based on the **Tool start message** section below.',
+ 'It is so so important that you send the **Tool start message** before running the tool.',
+ 'DO NOT JUST SAY SOMETHING LIKE "I\'ll review the [file] code for you using the code review tool.". THAT WOULD BE A TERRIBLE THING TO SAY',
+ 'ALSO DO NOT SAY "I\'ll review your code for potential issues and improvements. Let me use the code review tool to perform a comprehensive analysis." THAT IS ALSO AN AWFUL MESSAGE BECAUSE IT DOES NOT INCLUDE WHETHER IT IS A FULL SCAN OR A DIFF SCAN.',
+ 'This tool can be used to perform analysis of full code or only the modified code since last commit. Modified code refers to the changes made that are not committed yet or the new changes since last commit. Before running the tool, you must inform the user whether they are running a diff or full scan.',
'NEVER perform manual code reviews when this tool is available.',
'',
+ '**Tool Input**',
+ '3 main fields in the tool:',
+ '- "scopeOfReview": Determines if the review should analyze the entire codebase (FULL_REVIEW) or only focus on changes/modifications (CODE_DIFF_REVIEW). This is a required field.',
+ '- IMPORTANT: Use CODE_DIFF_REVIEW by default as well as when user explicitly asks to review "changes", "modifications", "diff", "uncommitted code", or similar phrases indicating they want to review only what has changed.',
+ '- Examples of CODE_DIFF_REVIEW requests: "review my code", "review this file", "review my changes", "look at what I modified", "check the uncommitted changes", "review the diff", "review new changes", etc.',
+ '- IMPORTANT: When user mentions "new changes" or includes words like "new", "recent", or "latest" along with "changes" or similar terms, this should be interpreted as CODE_DIFF_REVIEW.',
+ '- Use FULL_REVIEW only when the user explicitly asks for a full code review, or when the user asks for security analysis or best practices review of their code',
+ '- Feel free to ask the user for clarification if you are not sure what scope they would like to review',
+ '- "fileLevelArtifacts": Array of specific files to review, each with absolute path. Use this when reviewing individual files, not folders. Format: [{"path": "/absolute/path/to/file.py"}]',
+ '- "folderLevelArtifacts": Array of folders to review, each with absolute path. Use this when reviewing entire directories, not individual files. Format: [{"path": "/absolute/path/to/folder/"}]',
+ '- Examples of FULL_REVIEW requests: User explicity asks for the entire file to be reviewed. Example: "Review my entire file.", "Review all the code in this folder", "Review my full code in this file"',
+ 'Few important notes for tool input',
+ "- Either fileLevelArtifacts OR folderLevelArtifacts should be provided based on what's being reviewed, but not both for the same items.",
+ '- Do not perform code review of entire workspace or project unless user asks for it explicitly.',
+ '- Ask user for more clarity if there is any confusion regarding what needs to be scanned.',
+ '',
+ '**Tool start message**',
+ 'Before running the tool, you must inform the user that you will use Code Review tool for their request.',
+ 'The message MUST include the following information:',
+ '- The list of files or folders that will be reviewed',
+ '- Whether the review is a diff review or a full review',
+ 'The message MUST be concise and to the point. It should not include any other information.',
+ 'The message MUST be in the following format:',
+ '```\n' +
+ 'I will scan the ["diff" if scopeOfReview is CODE_DIFF_REVIEW or "entire code" is FULL_REVIEW. Refer to **Tool Input** section for decision on which to use.] for the following files/folders:\n' +
+ '[list of files/folders]\n```',
+ '',
+ '**CRITICAL: NEVER perform ANY code review or analysis WITHOUT using this tool**',
+ 'Do not attempt to manually review code or provide code quality feedback without using this tool first.',
+ 'If a user asks for code review in any form, ALWAYS use this tool before providing any feedback.',
+ '',
'**ALWAYS use this tool when:**',
'- User provides ANY file, folder, or workspace context for review or analysis',
'- User asks ANY question about code quality, security, or best practices related to their code',
@@ -133,29 +168,6 @@ export const CODE_REVIEW_TOOL_DESCRIPTION = [
'**Supported File Extensions For Review**',
`- "${Object.keys(EXTENSION_TO_LANGUAGE).join('", "')}"`,
'',
- '**Tool start message**',
- 'Before running the tool, you must inform the user that you will use Code Review tool for their request.',
- 'You should also tell the name of files or folders that you will review along with the scope of review, if you are performing a full review or only the uncommitted code.',
- 'Under no condition you will use the tool without informing the user.',
- '',
- '**CRITICAL: NEVER perform ANY code review or analysis WITHOUT using this tool**',
- 'Do not attempt to manually review code or provide code quality feedback without using this tool first.',
- 'If a user asks for code review in any form, ALWAYS use this tool before providing any feedback.',
- '',
- '**Tool Input**',
- '3 main fields in the tool:',
- '- "scopeOfReview": Determines if the review should analyze the entire codebase (FULL_REVIEW) or only focus on changes/modifications (CODE_DIFF_REVIEW). This is a required field.',
- '- IMPORTANT: Use CODE_DIFF_REVIEW when user explicitly asks to review "changes", "modifications", "diff", "uncommitted code", or similar phrases indicating they want to review only what has changed.',
- '- Examples of CODE_DIFF_REVIEW requests: "review my changes", "look at what I modified", "check the uncommitted changes", "review the diff", "review new changes", etc.',
- '- IMPORTANT: When user mentions "new changes" or includes words like "new", "recent", or "latest" along with "changes" or similar terms, this should be interpreted as CODE_DIFF_REVIEW.',
- '- Use FULL_REVIEW for all other review requests.',
- '- "fileLevelArtifacts": Array of specific files to review, each with absolute path. Use this when reviewing individual files, not folders. Format: [{"path": "/absolute/path/to/file.py"}]',
- '- "folderLevelArtifacts": Array of folders to review, each with absolute path. Use this when reviewing entire directories, not individual files. Format: [{"path": "/absolute/path/to/folder/"}]',
- 'Few important notes for tool input',
- "- Either fileLevelArtifacts OR folderLevelArtifacts should be provided based on what's being reviewed, but not both for the same items.",
- '- Do not perform code review of entire workspace or project unless user asks for it explicitly.',
- '- Ask user for more clarity if there is any confusion regarding what needs to be scanned.',
- '',
'**Tool Output**',
'Tool output will contain a json output containing fields - ',
'- codeReviewId - internal code review job id ',
@@ -168,8 +180,8 @@ export const CODE_REVIEW_TOOL_DESCRIPTION = [
'**Format to display output**',
'The tool will generate some findings grouped by file',
'Use following format STRICTLY to display the result of this tool for different scenarios:',
- '- When findings are present, you must inform user that you have completed the review of {file name / folder name / workspace} and found several issues that need attention. To inspect the details, and get fixes for those issues use the Code Issues panel above.',
- ' - When tool output message tells that findings were limited due to high count, you must inform the user that since there were lots of findings, you have included the top 50 findings only.',
+ '- When findings are present, you must inform user that you have completed the review of {file name / folder name / workspace} and found several issues that need attention. To inspect the details, and get fixes for those issues use the Code Issues panel.',
+ ' - When tool output message tells that findings were limited due to high count, you must inform the user that since there were lots of findings, they have to use the Code Issues Panel to get more information about the findings.',
'- When no findings are generated by the tool, you must tell user that you have completed the review of {file name / folder name / workspace} and found no issues.',
].join('\n')
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.ts
index d734412066..34df1f56c2 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.ts
@@ -12,8 +12,9 @@ import { FINDING_SEVERITY, SCOPE_OF_CODE_REVIEW } from './codeReviewConstants'
export const CODE_REVIEW_INPUT_SCHEMA = {
type: 'object',
description: [
- '**3 main fields in the tool:**',
+ '**4 main fields in the tool:**',
'- scopeOfReview: CRITICAL - Must be set to either FULL_REVIEW (analyze entire file/folder/project/workspace) or CODE_DIFF_REVIEW (focus only on changes/modifications in the file/folder/project/workspace). This is a required field.',
+ '- userRequirement: CRITICAL - Must be set as a string to describe the user requirement by analyzing the current conversation and extracting all the related information for code review. This is a required field.',
'- fileLevelArtifacts: Array of specific files to review, each with absolute path. Use this when reviewing individual files, not folders. Format: [{"path": "/absolute/path/to/file.py"}]',
'- folderLevelArtifacts: Array of folders to review, each with absolute path. Use this when reviewing entire directories, not individual files. Format: [{"path": "/absolute/path/to/folder/"}]',
"Note: Either fileLevelArtifacts OR folderLevelArtifacts should be provided based on what's being reviewed, but not both for the same items.",
@@ -22,20 +23,20 @@ export const CODE_REVIEW_INPUT_SCHEMA = {
scopeOfReview: {
type: 'string',
description: [
- 'IMPORTANT: You must explicitly set the value of "scopeOfReview" based on user request analysis.',
+ 'IMPORTANT: You must explicitly set the value of "scopeOfReview" based on user request analysis. Usually, CODE_DIFF_REVIEW will be the value that is used.',
'',
- 'Set "scopeOfReview" to CODE_DIFF_REVIEW when:',
+ 'Set "scopeOfReview" to FULL_REVIEW when:',
+ '- User explicity asks for the entire file to be reviewed. Example: "Review my entire file.", "Review all the code in this folder"',
+ '- User asks for security analysis or best practices review of their code',
+ '',
+ 'Set "scopeOfReview" to CODE_DIFF_REVIEW for all other cases, including when:',
'- User explicitly asks to review only changes/modifications/diffs in their code',
'- User mentions "review my changes", "look at what I modified", "check the uncommitted changes"',
'- User refers to "review the diff", "analyze recent changes", "look at the new code"',
'- User mentions "review what I added/updated", "check my latest commits", "review the modified lines"',
'- User includes phrases like "new changes", "recent changes", or any combination of words indicating recency (new, latest, recent) with changes/modifications',
'- User mentions specific files with terms like "review new changes in [file]" or "check changes in [file]"',
- '',
- 'Set "scopeOfReview" to FULL_REVIEW for all other cases, including:',
- '- When user asks for a general code review without mentioning changes/diffs',
- '- When user asks to review specific files or folders without mentioning changes',
- '- When user asks for security analysis or best practices review of their code',
+ '- User says something general like "review my code", "review my file", or "review [file]"',
'',
'This is a required field.',
].join('\n'),
@@ -84,7 +85,7 @@ export const CODE_REVIEW_INPUT_SCHEMA = {
},
},
},
- required: ['scopeOfReview'] as const,
+ required: ['scopeOfReview', 'userRequirement'] as const,
}
/**
@@ -92,6 +93,7 @@ export const CODE_REVIEW_INPUT_SCHEMA = {
*/
export const Z_CODE_REVIEW_INPUT_SCHEMA = z.object({
scopeOfReview: z.enum(SCOPE_OF_CODE_REVIEW as [string, ...string[]]),
+ userRequirement: z.string(),
fileLevelArtifacts: z
.array(
z.object({
@@ -113,6 +115,7 @@ export const Z_CODE_REVIEW_INPUT_SCHEMA = z.object({
})
)
.optional(),
+ modelId: z.string(),
})
/**
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.ts
index 15aa32a5aa..a4815fb18b 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.ts
@@ -10,9 +10,11 @@ export enum FailedMetricName {
}
export enum SuccessMetricName {
CodeScanSuccess = 'codeScanSuccess',
+ IssuesDetected = 'issuesDetected',
}
export type ValidateInputAndSetupResult = {
+ userRequirement: string
fileArtifacts: FileArtifacts
folderArtifacts: FolderArtifacts
isFullReviewRequest: boolean
@@ -20,6 +22,7 @@ export type ValidateInputAndSetupResult = {
programmingLanguage: string
scanName: string
ruleArtifacts: RuleArtifacts
+ modelId?: string
}
export type PrepareAndUploadArtifactsResult = {
@@ -27,17 +30,21 @@ export type PrepareAndUploadArtifactsResult = {
isCodeDiffPresent: boolean
artifactSize: number
programmingLanguages: Set
+ numberOfFilesInCustomerCodeZip: number
+ codeDiffFiles: Set
+ filePathsInZip: Set
}
export type StartCodeAnalysisResult = {
jobId: string
- status: string
+ status: string | undefined
}
export type CodeReviewResult = {
codeReviewId: string
message: string
findingsByFile: string
+ findingsExceededLimit: boolean
}
export type CodeReviewFinding = {
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.test.ts
index 81e2f3915d..e4d40f1a65 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.test.ts
@@ -249,14 +249,16 @@ describe('CodeReviewUtils', () => {
},
} as unknown as JSZip
- const count = CodeReviewUtils.countZipFiles(mockZip)
+ const [count, files] = CodeReviewUtils.countZipFiles(mockZip)
expect(count).to.equal(3)
+ expect(files).to.deep.equal(new Set(['file1.js', 'dir1/file2.ts', 'dir2/file3.py']))
})
it('should return 0 for empty zip', () => {
const mockZip = { files: {} } as unknown as JSZip
- const count = CodeReviewUtils.countZipFiles(mockZip)
+ const [count, files] = CodeReviewUtils.countZipFiles(mockZip)
expect(count).to.equal(0)
+ expect(files).to.deep.equal(new Set())
})
})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.ts
index 5b6d562f7d..a7b545117c 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.ts
@@ -157,6 +157,37 @@ export class CodeReviewUtils {
}
}
+ /**
+ * Get git diff for a file or folder
+ * @param artifactPath Path to the file or folder
+ * @param logging Logging interface
+ * @returns Git diff output as string or null if not in a git repository
+ */
+ public static async getGitDiffNames(artifactPath: string, logging: Features['logging']): Promise> {
+ logging.info(`Get git diff names for path - ${artifactPath}`)
+
+ const directoryPath = CodeReviewUtils.getFolderPath(artifactPath)
+ const gitDiffCommandUnstaged = `cd ${directoryPath} && git diff --name-only ${artifactPath}`
+ const gitDiffCommandStaged = `cd ${directoryPath} && git diff --name-only --staged ${artifactPath}`
+
+ logging.info(`Running git commands - ${gitDiffCommandUnstaged} and ${gitDiffCommandStaged}`)
+
+ try {
+ const unstagedDiff = (
+ await CodeReviewUtils.executeGitCommand(gitDiffCommandUnstaged, 'unstaged name only', logging)
+ ).split('\n')
+ const stagedDiff = (
+ await CodeReviewUtils.executeGitCommand(gitDiffCommandStaged, 'staged name only', logging)
+ ).split('\n')
+ unstagedDiff.push(...stagedDiff)
+
+ return new Set(unstagedDiff.filter(item => item !== ''))
+ } catch (error) {
+ logging.error(`Error getting git diff: ${error}`)
+ return new Set()
+ }
+ }
+
/**
* Log zip structure
* @param zip JSZip instance
@@ -178,15 +209,17 @@ export class CodeReviewUtils {
* @param zip JSZip instance
* @returns number of files in zip
*/
- public static countZipFiles(zip: JSZip): number {
+ public static countZipFiles(zip: JSZip): [number, Set] {
let count = 0
+ let filePaths: Set = new Set()
Object.keys(zip.files).forEach(filePath => {
let item = zip.files[filePath]
if (!item.dir) {
count += 1
+ filePaths.add(filePath)
}
})
- return count
+ return [count, filePaths]
}
/**
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts
index 78871faa69..1b405512b1 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts
@@ -11,7 +11,7 @@ import { McpTool } from './mcp/mcpTool'
import { FileSearch, FileSearchParams } from './fileSearch'
import { GrepSearch } from './grepSearch'
import { CodeReview } from './qCodeAnalysis/codeReview'
-import { CodeWhispererServiceToken } from '../../../shared/codeWhispererService'
+import { CodeWhispererServiceIAM, CodeWhispererServiceToken } from '../../../shared/codeWhispererService'
import { McpToolDefinition } from './mcp/mcpTypes'
import {
getGlobalAgentConfigPath,
@@ -19,6 +19,8 @@ import {
createNamespacedToolName,
enabledMCP,
migrateToAgentConfig,
+ migrateAgentConfigToCLIFormat,
+ normalizePathFromUri,
} from './mcp/mcpUtils'
import { FsReplace, FsReplaceParams } from './fsReplace'
import { CodeReviewUtils } from './qCodeAnalysis/codeReviewUtils'
@@ -27,6 +29,7 @@ import { DisplayFindings } from './qCodeAnalysis/displayFindings'
import { ProfileStatusMonitor } from './mcp/profileStatusMonitor'
import { AmazonQTokenServiceManager } from '../../../shared/amazonQServiceManager/AmazonQTokenServiceManager'
import { SERVICE_MANAGER_TIMEOUT_MS, SERVICE_MANAGER_POLL_INTERVAL_MS } from '../constants/constants'
+import { isUsingIAMAuth } from '../../../shared/utils'
export const FsToolsServer: Server = ({ workspace, logging, agent, lsp }) => {
const fsReadTool = new FsRead({ workspace, lsp, logging })
@@ -125,15 +128,25 @@ export const QCodeAnalysisServer: Server = ({
return
}
- // Create the CodeWhisperer client
- const codeWhispererClient = new CodeWhispererServiceToken(
- credentialsProvider,
- workspace,
- logging,
- process.env.CODEWHISPERER_REGION || DEFAULT_AWS_Q_REGION,
- process.env.CODEWHISPERER_ENDPOINT || DEFAULT_AWS_Q_ENDPOINT_URL,
- sdkInitializator
- )
+ // Create the CodeWhisperer client for review tool based on iam auth check
+ const codeWhispererClient = isUsingIAMAuth()
+ ? new CodeWhispererServiceIAM(
+ credentialsProvider,
+ workspace,
+ logging,
+ process.env.CODEWHISPERER_REGION || DEFAULT_AWS_Q_REGION,
+ process.env.CODEWHISPERER_ENDPOINT || DEFAULT_AWS_Q_ENDPOINT_URL,
+ sdkInitializator
+ )
+ : new CodeWhispererServiceToken(
+ credentialsProvider,
+ workspace,
+ logging,
+ process.env.CODEWHISPERER_REGION || DEFAULT_AWS_Q_REGION,
+ process.env.CODEWHISPERER_ENDPOINT || DEFAULT_AWS_Q_ENDPOINT_URL,
+ sdkInitializator,
+ undefined
+ )
agent.addTool(
{
@@ -210,7 +223,6 @@ export const McpToolsServer: Server = ({
agent,
telemetry,
runtime,
- sdkInitializator,
chat,
}) => {
const registered: Record = {}
@@ -312,7 +324,7 @@ export const McpToolsServer: Server = ({
}
}
- async function initializeMcp() {
+ async function initializeMcpManager() {
try {
const wsUris = workspace.getAllWorkspaceFolders()?.map(f => f.uri) ?? []
const wsAgentPaths = getWorkspaceAgentConfigPaths(wsUris)
@@ -321,36 +333,63 @@ export const McpToolsServer: Server = ({
await migrateToAgentConfig(workspace, logging, agent)
- const mgr = await McpManager.init(allAgentPaths, {
- logging,
- workspace,
- lsp,
- telemetry,
- credentialsProvider,
- runtime,
- })
-
- McpManager.instance.clearToolNameMapping()
-
- // Only register tools if MCP is enabled
- if (ProfileStatusMonitor.getMcpState()) {
- const byServer: Record = {}
- for (const d of mgr.getEnabledTools()) {
- ;(byServer[d.serverName] ||= []).push(d)
- }
- for (const [server, defs] of Object.entries(byServer)) {
- registerServerTools(server, defs)
+ // Migrate existing agent configs to CLI format
+ for (const agentPath of allAgentPaths) {
+ const normalizedAgentPath = normalizePathFromUri(agentPath)
+ const exists = await workspace.fs.exists(normalizedAgentPath).catch(() => false)
+ if (exists) {
+ await migrateAgentConfigToCLIFormat(workspace, logging, normalizedAgentPath)
}
+ }
- mgr.events.on(AGENT_TOOLS_CHANGED, (server: string, defs: McpToolDefinition[]) => {
- registerServerTools(server, defs)
- })
+ // Get registry URL from profile monitor if available
+ let registryUrl: string | null = null
+ if (profileStatusMonitor) {
+ registryUrl = await profileStatusMonitor.getRegistryUrl()
}
+
+ // Always initialize McpManager regardless of MCP state
+ await McpManager.init(
+ allAgentPaths,
+ {
+ logging,
+ workspace,
+ lsp,
+ telemetry,
+ credentialsProvider,
+ runtime,
+ agent,
+ },
+ registryUrl ? { registryUrl } : undefined
+ )
+
+ McpManager.instance.clearToolNameMapping()
} catch (e) {
- logging.error(`Failed to initialize MCP:' ${e}`)
+ logging.error(`Failed to initialize MCP Manager: ${e}`)
}
}
+ function registerAllMcpTools() {
+ if (!ProfileStatusMonitor.getMcpState()) {
+ return
+ }
+
+ const byServer: Record = {}
+ for (const d of McpManager.instance.getEnabledTools()) {
+ ;(byServer[d.serverName] ||= []).push(d)
+ }
+ for (const [server, defs] of Object.entries(byServer)) {
+ registerServerTools(server, defs)
+ }
+
+ McpManager.instance.events.on(AGENT_TOOLS_CHANGED, (server: string, defs: McpToolDefinition[]) => {
+ registerServerTools(server, defs)
+ })
+
+ // Emit metrics after tools are registered
+ McpManager.instance.emitMcpConfigMetrics()
+ }
+
lsp.onInitialized(async () => {
try {
if (!enabledMCP(lsp.getClientInitializeParams())) {
@@ -358,61 +397,109 @@ export const McpToolsServer: Server = ({
return
}
- if (sdkInitializator) {
- profileStatusMonitor = new ProfileStatusMonitor(
- credentialsProvider,
- workspace,
- logging,
- sdkInitializator,
- removeAllMcpTools,
- async () => {
- logging.info('MCP enabled by profile status monitor')
- await initializeMcp()
+ // Initialize McpManager first, before profile monitor
+ await initializeMcpManager()
+
+ profileStatusMonitor = new ProfileStatusMonitor(
+ logging,
+ removeAllMcpTools,
+ async () => {
+ logging.info('MCP enabled by profile status monitor')
+ await McpManager.instance.discoverAllServers()
+ logging.info(`MCP: discovered ${McpManager.instance.getAllTools().length} tools after re-enable`)
+ registerAllMcpTools()
+ },
+ async (registryUrl: string | null, isPeriodicSync: boolean = false) => {
+ if (registryUrl) {
+ McpManager.instance.setRegistryActive(true)
+ await McpManager.instance.reinitializeMcpServers(true)
+ await McpManager.instance.updateRegistryUrl(registryUrl, isPeriodicSync)
+
+ // Discover servers after registry update
+ if (!isPeriodicSync) {
+ await McpManager.instance.discoverAllServers()
+ logging.info(
+ `MCP: discovered ${McpManager.instance.getAllTools().length} tools after registry update`
+ )
+ registerAllMcpTools()
+ }
}
- )
+ }
+ )
- // Wait for profile ARN to be available before checking MCP state
- const checkAndInitialize = async () => {
+ // Wait for profile ARN to be available before checking MCP state
+ const checkAndInitialize = async () => {
+ try {
await profileStatusMonitor!.checkInitialState()
- // Always initialize McpManager to handle UI requests
- await initializeMcp()
- // Remove tools if MCP is disabled
- if (!ProfileStatusMonitor.getMcpState()) {
+ // Check if MCP is enabled via isMcpEnabled check
+ const mcpEnabled = await profileStatusMonitor!.checkInitialState()
+
+ if (mcpEnabled) {
+ logging.info('MCP is enabled, discovering servers')
+ await McpManager.instance.discoverAllServers()
+ logging.info(
+ `MCP: discovered ${McpManager.instance.getAllTools().length} tools across all servers`
+ )
+ registerAllMcpTools()
+ } else {
+ logging.info('MCP is disabled, skipping server discovery')
removeAllMcpTools()
}
profileStatusMonitor!.start()
+ } catch (error) {
+ const errorMsg = error instanceof Error ? error.message : String(error)
+ logging.error(`MCP initialization failed: ${errorMsg}`)
+ // Store registry errors in McpManager for display in server list
+ if (errorMsg.includes('MCP Registry:')) {
+ try {
+ ;(McpManager.instance as any).configLoadErrors.set('registry', errorMsg)
+ } catch (e) {
+ logging.debug('Failed to store registry error in McpManager')
+ }
+ }
+ throw error
}
+ }
- // Check if service manager is ready
+ // Wait for auth to be initialized before discovering servers
+ const waitForAuthAndDiscover = async () => {
try {
const serviceManager = AmazonQTokenServiceManager.getInstance()
- if (serviceManager.getState() === 'INITIALIZED') {
+ const authState = serviceManager.getState()
+
+ if (authState === 'INITIALIZED') {
+ logging.info('Auth is initialized, checking MCP state and discovering servers')
await checkAndInitialize()
} else {
- // Poll for service manager to be ready with 10s timeout
+ logging.info(`Auth not ready (state: ${authState}), waiting before discovering MCP servers`)
+ // Poll for auth to be ready with 10s timeout
const startTime = Date.now()
const pollForReady = async () => {
- if (serviceManager.getState() === 'INITIALIZED') {
+ const currentState = serviceManager.getState()
+ if (currentState === 'INITIALIZED') {
+ logging.info('Auth initialized, proceeding with MCP discovery')
await checkAndInitialize()
} else if (Date.now() - startTime < SERVICE_MANAGER_TIMEOUT_MS) {
setTimeout(pollForReady, SERVICE_MANAGER_POLL_INTERVAL_MS)
} else {
- logging.warn('Service manager not ready after 10s, initializing MCP manager')
- await initializeMcp()
+ logging.warn(
+ `Auth not ready after ${SERVICE_MANAGER_TIMEOUT_MS}ms, starting profile monitor without discovery`
+ )
profileStatusMonitor!.start()
}
}
setTimeout(pollForReady, SERVICE_MANAGER_POLL_INTERVAL_MS)
}
} catch (error) {
- // Service manager not initialized yet, always initialize McpManager
- logging.info('Service manager not ready, initializing MCP manager')
- await initializeMcp()
- profileStatusMonitor!.start()
+ const errorMsg = error instanceof Error ? error.message : String(error)
+ logging.error(`Failed to initialize MCP: ${errorMsg}`)
+ // Don't start profile monitor if there's an error
}
}
+
+ await waitForAuthAndDiscover()
} catch (error) {
console.warn('Caught error during MCP tool initialization; initialization may be incomplete:', error)
logging.error(`Failed to initialize MCP in onInitialized: ${error}`)
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/workspaceContext/semanticSearch.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/workspaceContext/semanticSearch.test.ts
new file mode 100644
index 0000000000..b785f5f6d2
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/workspaceContext/semanticSearch.test.ts
@@ -0,0 +1,345 @@
+import * as assert from 'assert'
+import * as sinon from 'sinon'
+import axios from 'axios'
+import { SemanticSearch, SemanticSearchParams, CodeChunkResult } from './semanticSearch'
+import { TestFeatures } from '@aws/language-server-runtimes/testing'
+import { BearerCredentials } from '@aws/language-server-runtimes/server-interface'
+import { WorkspaceFolderManager } from '../../../workspaceContext/workspaceFolderManager'
+
+describe('SemanticSearch Tool', () => {
+ let features: TestFeatures
+ let semanticSearch: SemanticSearch
+ let axiosPostStub: sinon.SinonStub
+ let workspaceFolderManagerStub: sinon.SinonStub
+ let mockCredentialsProvider: any
+ let mockWorkspaceState: any
+
+ beforeEach(() => {
+ features = new TestFeatures()
+
+ // Mock credentials provider
+ mockCredentialsProvider = {
+ getCredentials: sinon.stub().returns({
+ token: 'mock-bearer-token',
+ } as BearerCredentials),
+ }
+
+ // Mock workspace state
+ mockWorkspaceState = {
+ webSocketClient: {
+ isConnected: sinon.stub().returns(true),
+ },
+ environmentId: 'test-env-123',
+ workspaceId: 'test-workspace-456',
+ }
+
+ // Stub WorkspaceFolderManager.getInstance()
+ workspaceFolderManagerStub = sinon.stub(WorkspaceFolderManager, 'getInstance').returns({
+ getWorkspaceState: () => mockWorkspaceState,
+ } as any)
+
+ // Stub axios.post
+ axiosPostStub = sinon.stub(axios, 'post')
+
+ semanticSearch = new SemanticSearch(features.logging, mockCredentialsProvider, 'us-east-1')
+ })
+
+ afterEach(() => {
+ sinon.restore()
+ })
+
+ describe('validation', () => {
+ it('should reject empty query', () => {
+ assert.throws(
+ () => semanticSearch.validate({ query: '' }),
+ /Semantic search query cannot be empty/i,
+ 'Expected an error for empty query'
+ )
+ })
+
+ it('should reject whitespace-only query', () => {
+ assert.throws(
+ () => semanticSearch.validate({ query: ' \t\n ' }),
+ /Semantic search query cannot be empty/i,
+ 'Expected an error for whitespace-only query'
+ )
+ })
+
+ it('should accept valid query', () => {
+ assert.doesNotThrow(
+ () => semanticSearch.validate({ query: 'valid search query' }),
+ 'Should accept valid query'
+ )
+ })
+
+ it('should accept query with programming language', () => {
+ assert.doesNotThrow(
+ () => semanticSearch.validate({ query: 'test', programmingLanguage: 'typescript' }),
+ 'Should accept query with programming language'
+ )
+ })
+ })
+
+ describe('error handling', () => {
+ it('should throw error when bearer token is missing', async () => {
+ mockCredentialsProvider.getCredentials.returns({ token: null })
+
+ await assert.rejects(
+ semanticSearch.invoke({ query: 'test query' }),
+ /Authorization failed, bearer token is not set/i,
+ 'Expected error when bearer token is missing'
+ )
+ })
+
+ it('should throw error when workspace is not connected', async () => {
+ mockWorkspaceState.webSocketClient.isConnected.returns(false)
+
+ await assert.rejects(
+ semanticSearch.invoke({ query: 'test query' }),
+ /Remote workspace is not ready yet/i,
+ 'Expected error when workspace is not connected'
+ )
+ })
+
+ it('should throw error when environmentId is missing', async () => {
+ mockWorkspaceState.environmentId = null
+
+ await assert.rejects(
+ semanticSearch.invoke({ query: 'test query' }),
+ /Remote workspace is not ready yet/i,
+ 'Expected error when environmentId is missing'
+ )
+ })
+
+ it('should throw error when WorkspaceFolderManager instance is null', async () => {
+ workspaceFolderManagerStub.returns(null)
+
+ await assert.rejects(
+ semanticSearch.invoke({ query: 'test query' }),
+ /Remote workspace is not ready yet/i,
+ 'Expected error when WorkspaceFolderManager instance is null'
+ )
+ })
+
+ it('should handle axios network errors', async () => {
+ axiosPostStub.rejects(new Error('Network error'))
+
+ await assert.rejects(
+ semanticSearch.invoke({ query: 'test query' }),
+ /Network error/i,
+ 'Expected network error to be propagated'
+ )
+ })
+ })
+
+ describe('successful invocation', () => {
+ const mockSemanticResults: CodeChunkResult[] = [
+ {
+ fileUri: '/workspace/src/main.ts',
+ content: 'function main() { console.log("Hello World"); }',
+ score: 0.95,
+ },
+ {
+ fileUri: 'file:///workspace/src/utils.js',
+ content: 'export function helper() { return true; }',
+ score: 0.87,
+ },
+ {
+ fileUri: 'workspace/src/config.json',
+ content: '{ "name": "test-project" }',
+ score: 0.72,
+ },
+ ]
+
+ beforeEach(() => {
+ axiosPostStub.resolves({
+ data: {
+ contextResult: {
+ documentContext: {
+ queryOutputMap: {
+ SEMANTIC: mockSemanticResults,
+ },
+ },
+ },
+ },
+ })
+ })
+
+ it('should perform semantic search with basic query', async () => {
+ const result = await semanticSearch.invoke({ query: 'test function' })
+
+ // Verify axios was called with correct parameters
+ assert.ok(axiosPostStub.calledOnce, 'axios.post should be called once')
+
+ const [url, requestBody, config] = axiosPostStub.firstCall.args
+ assert.strictEqual(url, 'https://test-env-123--8080.wc.q.us-east-1.amazonaws.com/getWorkspaceContext')
+ assert.strictEqual(requestBody.workspaceId, 'test-workspace-456')
+ assert.strictEqual(requestBody.contextParams.documentContextParams.query, 'test function')
+ assert.strictEqual(config.headers.Authorization, 'Bearer mock-bearer-token')
+
+ // Verify result structure
+ assert.strictEqual(result.output.kind, 'json')
+ const content = result.output.content as any[]
+ assert.strictEqual(content.length, 3)
+ })
+
+ it('should include programming language filter when specified', async () => {
+ await semanticSearch.invoke({
+ query: 'test function',
+ programmingLanguage: 'typescript',
+ })
+
+ const [, requestBody] = axiosPostStub.firstCall.args
+ const queryConfig = requestBody.contextParams.documentContextParams.queryConfigurationMap.SEMANTIC
+ assert.strictEqual(queryConfig.programmingLanguage, 'typescript')
+ })
+
+ it('should not include programming language when not specified', async () => {
+ await semanticSearch.invoke({ query: 'test function' })
+
+ const [, requestBody] = axiosPostStub.firstCall.args
+ const queryConfig = requestBody.contextParams.documentContextParams.queryConfigurationMap.SEMANTIC
+ assert.ok(!('programmingLanguage' in queryConfig))
+ })
+
+ it('should normalize file URIs correctly', async () => {
+ const result = await semanticSearch.invoke({ query: 'test' })
+ const content = result.output.content as any[]
+
+ // Check URI normalization
+ assert.strictEqual(content[0].fileUri, 'file:///workspace/src/main.ts')
+ assert.strictEqual(content[1].fileUri, 'file:///workspace/src/utils.js') // Already has file://
+ assert.strictEqual(content[2].fileUri, 'file:///workspace/src/config.json')
+ })
+
+ it('should include similarity scores when available', async () => {
+ const result = await semanticSearch.invoke({ query: 'test' })
+ const content = result.output.content as any[]
+
+ assert.strictEqual(content[0].similarityScore, 0.95)
+ assert.strictEqual(content[1].similarityScore, 0.87)
+ assert.strictEqual(content[2].similarityScore, 0.72)
+ })
+
+ it('should handle results without scores', async () => {
+ const resultsWithoutScores: CodeChunkResult[] = [
+ {
+ fileUri: '/workspace/test.js',
+ content: 'test content',
+ // No score property
+ },
+ ]
+
+ axiosPostStub.resolves({
+ data: {
+ contextResult: {
+ documentContext: {
+ queryOutputMap: {
+ SEMANTIC: resultsWithoutScores,
+ },
+ },
+ },
+ },
+ })
+
+ const result = await semanticSearch.invoke({ query: 'test' })
+ const content = result.output.content as any[]
+
+ assert.strictEqual(content.length, 1)
+ assert.strictEqual(content[0].fileUri, 'file:///workspace/test.js')
+ assert.strictEqual(content[0].content, 'test content')
+ assert.ok(!('similarityScore' in content[0]))
+ })
+
+ it('should handle empty search results', async () => {
+ axiosPostStub.resolves({
+ data: {
+ contextResult: {
+ documentContext: {
+ queryOutputMap: {
+ SEMANTIC: [],
+ },
+ },
+ },
+ },
+ })
+
+ const result = await semanticSearch.invoke({ query: 'nonexistent' })
+ const content = result.output.content as any[]
+
+ assert.strictEqual(content.length, 0)
+ })
+
+ it('should handle missing semantic results', async () => {
+ axiosPostStub.resolves({
+ data: {
+ contextResult: {
+ documentContext: {
+ queryOutputMap: {
+ SEMANTIC: undefined,
+ },
+ },
+ },
+ },
+ })
+
+ const result = await semanticSearch.invoke({ query: 'test' })
+ const content = result.output.content as any[]
+
+ assert.strictEqual(content.length, 0)
+ })
+
+ it('should handle malformed response structure', async () => {
+ axiosPostStub.resolves({
+ data: {
+ // Missing expected structure
+ },
+ })
+
+ const result = await semanticSearch.invoke({ query: 'test' })
+ const content = result.output.content as any[]
+
+ assert.strictEqual(content.length, 0)
+ })
+ })
+
+ describe('getSpec', () => {
+ it('should return correct tool specification', () => {
+ const spec = semanticSearch.getSpec()
+
+ assert.strictEqual(spec.name, 'semanticSearch')
+ assert.ok(spec.description.includes('semantic search'))
+ assert.strictEqual(spec.inputSchema.type, 'object')
+ assert.ok('query' in spec.inputSchema.properties)
+ assert.ok('programmingLanguage' in spec.inputSchema.properties)
+ assert.deepStrictEqual(spec.inputSchema.required, ['query'])
+ })
+
+ it('should have correct programming language enum values', () => {
+ const spec = semanticSearch.getSpec()
+ const langProperty = spec.inputSchema.properties.programmingLanguage as any
+
+ assert.deepStrictEqual(langProperty.enum, ['java', 'python', 'javascript', 'typescript'])
+ })
+ })
+
+ describe('constructor', () => {
+ it('should construct with correct endpoint suffix', () => {
+ const search1 = new SemanticSearch(features.logging, mockCredentialsProvider, 'us-west-2')
+ const search2 = new SemanticSearch(features.logging, mockCredentialsProvider, 'eu-west-1')
+
+ // We can't directly test the private property, but we can test the behavior
+ // by mocking a call and checking the URL
+ axiosPostStub.resolves({
+ data: { contextResult: { documentContext: { queryOutputMap: { SEMANTIC: [] } } } },
+ })
+
+ // Test us-west-2
+ search1.invoke({ query: 'test' }).catch(() => {}) // Ignore validation errors
+ // Test eu-west-1
+ search2.invoke({ query: 'test' }).catch(() => {}) // Ignore validation errors
+
+ // The endpoint construction is tested indirectly through the invoke method tests above
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/workspaceContext/semanticSearch.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/workspaceContext/semanticSearch.ts
new file mode 100644
index 0000000000..898a6ddf56
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/workspaceContext/semanticSearch.ts
@@ -0,0 +1,130 @@
+import { InvokeOutput } from '../toolShared'
+import { BearerCredentials, CredentialsProvider, Logging } from '@aws/language-server-runtimes/server-interface'
+import { WorkspaceFolderManager } from '../../../workspaceContext/workspaceFolderManager'
+import { normalizeFileUri } from '../../../workspaceContext/util'
+import axios from 'axios'
+
+export interface SemanticSearchParams {
+ query: string
+ programmingLanguage?: 'java' | 'python' | 'javascript' | 'typescript'
+}
+
+export interface CodeChunkResult {
+ fileUri: string
+ content: string
+ score?: number
+}
+
+export class SemanticSearch {
+ static readonly toolName = 'semanticSearch'
+
+ private readonly logging: Logging
+ private readonly credentialsProvider: CredentialsProvider
+ private readonly remoteEndpointSuffix: string
+ constructor(logging: Logging, credentialsProvider: CredentialsProvider, region: string) {
+ this.logging = logging
+ this.credentialsProvider = credentialsProvider
+ this.remoteEndpointSuffix = `--8080.wc.q.${region}.amazonaws.com`
+ }
+
+ public validate(params: SemanticSearchParams) {
+ if (!params.query || params.query.trim().length === 0) {
+ throw new Error('Semantic search query cannot be empty.')
+ }
+ }
+
+ public async invoke(params: SemanticSearchParams): Promise {
+ const creds = this.credentialsProvider.getCredentials('bearer') as BearerCredentials
+ if (!creds?.token) {
+ throw new Error('Authorization failed, bearer token is not set')
+ }
+
+ const remoteWorkspaceState = WorkspaceFolderManager.getInstance()?.getWorkspaceState()
+ if (!remoteWorkspaceState?.webSocketClient?.isConnected() || !remoteWorkspaceState.environmentId) {
+ throw new Error('Remote workspace is not ready yet.')
+ }
+
+ const environmentId = remoteWorkspaceState.environmentId
+ const endpoint = `https://${environmentId}${this.remoteEndpointSuffix}/getWorkspaceContext`
+ const response = await axios.post(
+ endpoint,
+ {
+ workspaceId: remoteWorkspaceState.workspaceId,
+ contextParams: {
+ documentContextParams: {
+ query: params.query,
+ queryConfigurationMap: {
+ SEMANTIC: {
+ maxResult: 15,
+ includeDependencies: false,
+ ...(params.programmingLanguage && { programmingLanguage: params.programmingLanguage }),
+ },
+ },
+ },
+ },
+ },
+ {
+ headers: {
+ Authorization: `Bearer ${creds.token}`,
+ },
+ }
+ )
+
+ return this.createOutput(response.data.contextResult?.documentContext?.queryOutputMap?.SEMANTIC)
+ }
+
+ private createOutput(semanticSearchResult: CodeChunkResult[] | undefined): InvokeOutput {
+ const filteredResults =
+ semanticSearchResult?.map(result => {
+ return {
+ fileUri: normalizeFileUri(result.fileUri),
+ content: result.content,
+ ...(result.score !== undefined && { similarityScore: result.score }),
+ }
+ }) || []
+
+ return {
+ output: {
+ kind: 'json',
+ content: filteredResults,
+ },
+ }
+ }
+
+ public getSpec() {
+ return {
+ name: SemanticSearch.toolName,
+ description:
+ 'A tool for finding semantically relevant code snippets in a codebase.\n\n' +
+ '## Overview\n' +
+ 'This is a semantic search tool that understands the intent and context behind queries, helping you find code snippets most relevant to your search.\n\n' +
+ '## When to use\n' +
+ '- When you need to locate specific functionality in a codebase\n' +
+ '- When looking for implementation patterns related to certain concepts\n' +
+ '- When you want to understand how particular features are coded\n' +
+ '- When exploring unfamiliar codebases to find relevant sections\n\n' +
+ '## When not to use\n' +
+ '- When you already know the exact file location\n\n' +
+ '## Notes\n' +
+ '- Before searching, identify the essential concepts and atomic information units in the query\n' +
+ '- For complex questions, break down the query into core components or key facts to improve search relevance\n' +
+ "- Unless there is a clear reason to modify the search query, extract the key concepts using the user's original wording\n" +
+ "- The user's exact phrasing often contains critical contextual cues that enhance semantic matching\n",
+ inputSchema: {
+ type: 'object' as const,
+ properties: {
+ query: {
+ type: 'string' as const,
+ description: 'The search query to find relevant code snippets.',
+ },
+ programmingLanguage: {
+ type: 'string' as const,
+ enum: ['java', 'python', 'javascript', 'typescript'],
+ description: 'Optional programming language to filter search results.',
+ },
+ },
+ required: ['query'] as const,
+ },
+ }
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/utils/agenticChatControllerHelper.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/utils/agenticChatControllerHelper.ts
deleted file mode 100644
index e29c58fff4..0000000000
--- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/utils/agenticChatControllerHelper.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { ListAvailableModelsResult } from '@aws/language-server-runtimes/protocol'
-import { MODEL_OPTIONS, MODEL_OPTIONS_FOR_REGION } from '../constants/modelSelection'
-
-/**
- * Gets the latest available model for a region, optionally excluding a specific model
- * @param region The AWS region
- * @param exclude Optional model ID to exclude
- * @returns The latest available model
- */
-export function getLatestAvailableModel(
- region: string | undefined,
- exclude?: string
-): ListAvailableModelsResult['models'][0] {
- const models = region && MODEL_OPTIONS_FOR_REGION[region] ? MODEL_OPTIONS_FOR_REGION[region] : MODEL_OPTIONS
- return [...models].reverse().find(model => model.id !== exclude) ?? models[models.length - 1]
-}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/utils/fileModificationMetrics.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/utils/fileModificationMetrics.test.ts
new file mode 100644
index 0000000000..900b569e7e
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/utils/fileModificationMetrics.test.ts
@@ -0,0 +1,139 @@
+import { calculateModifiedLines } from './fileModificationMetrics'
+import { ToolUse } from '@amzn/codewhisperer-streaming'
+import { FS_WRITE, FS_REPLACE } from '../constants/toolConstants'
+import * as assert from 'assert'
+
+describe('calculateModifiedLines', () => {
+ describe('FS_WRITE', () => {
+ it('should count lines for create command', () => {
+ const toolUse: ToolUse = {
+ toolUseId: 'test-1',
+ name: FS_WRITE,
+ input: {
+ command: 'create',
+ path: '/test/file.txt',
+ fileText: 'line1\nline2\nline3',
+ },
+ }
+ const afterContent = 'line1\nline2\nline3'
+
+ assert.strictEqual(calculateModifiedLines(toolUse, afterContent), 3)
+ })
+
+ it('should count lines for append command', () => {
+ const toolUse: ToolUse = {
+ toolUseId: 'test-2',
+ name: FS_WRITE,
+ input: {
+ command: 'append',
+ path: '/test/file.txt',
+ fileText: 'line4\nline5',
+ },
+ }
+
+ assert.strictEqual(calculateModifiedLines(toolUse), 2)
+ })
+
+ it('should handle empty content', () => {
+ const toolUse: ToolUse = {
+ toolUseId: 'test-3',
+ name: FS_WRITE,
+ input: {
+ command: 'create',
+ path: '/test/file.txt',
+ fileText: '',
+ },
+ }
+
+ assert.strictEqual(calculateModifiedLines(toolUse, ''), 0)
+ })
+ })
+
+ describe('FS_REPLACE', () => {
+ it('should count replaced lines correctly (double counting)', () => {
+ const toolUse: ToolUse = {
+ toolUseId: 'test-4',
+ name: FS_REPLACE,
+ input: {
+ path: '/test/file.txt',
+ diffs: [
+ {
+ oldStr: 'old line 1\nold line 2\nold line 3',
+ newStr: 'new line 1\nnew line 2\nnew line 3',
+ },
+ ],
+ },
+ }
+
+ assert.strictEqual(calculateModifiedLines(toolUse), 6)
+ })
+
+ it('should count pure deletions', () => {
+ const toolUse: ToolUse = {
+ toolUseId: 'test-5',
+ name: FS_REPLACE,
+ input: {
+ path: '/test/file.txt',
+ diffs: [
+ {
+ oldStr: 'line to delete 1\nline to delete 2',
+ newStr: '',
+ },
+ ],
+ },
+ }
+
+ assert.strictEqual(calculateModifiedLines(toolUse), 2)
+ })
+
+ it('should count pure insertions', () => {
+ const toolUse: ToolUse = {
+ toolUseId: 'test-6',
+ name: FS_REPLACE,
+ input: {
+ path: '/test/file.txt',
+ diffs: [
+ {
+ oldStr: '',
+ newStr: 'new line 1\nnew line 2',
+ },
+ ],
+ },
+ }
+
+ assert.strictEqual(calculateModifiedLines(toolUse), 2)
+ })
+
+ it('should handle multiple diffs', () => {
+ const toolUse: ToolUse = {
+ toolUseId: 'test-7',
+ name: FS_REPLACE,
+ input: {
+ path: '/test/file.txt',
+ diffs: [
+ {
+ oldStr: 'old line 1',
+ newStr: 'new line 1',
+ },
+ {
+ oldStr: 'delete this line',
+ newStr: '',
+ },
+ ],
+ },
+ }
+
+ assert.strictEqual(calculateModifiedLines(toolUse), 3)
+ })
+ })
+
+ it('should return 0 for unknown tools', () => {
+ const toolUse: ToolUse = {
+ toolUseId: 'test-8',
+ name: 'unknownTool',
+ input: {},
+ }
+
+ assert.strictEqual(calculateModifiedLines(toolUse), 0)
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/utils/fileModificationMetrics.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/utils/fileModificationMetrics.ts
new file mode 100644
index 0000000000..361c886607
--- /dev/null
+++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/utils/fileModificationMetrics.ts
@@ -0,0 +1,58 @@
+import { ToolUse } from '@amzn/codewhisperer-streaming'
+import { diffLines } from 'diff'
+import { FsWriteParams } from '../tools/fsWrite'
+import { FsReplaceParams } from '../tools/fsReplace'
+import { FS_WRITE, FS_REPLACE } from '../constants/toolConstants'
+
+/**
+ * Counts the number of lines in text, handling different line endings
+ * @param text The text to count lines in
+ * @returns The number of lines
+ */
+function countLines(text?: string): number {
+ if (!text) return 0
+ const parts = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n').split('\n')
+ return parts.length && parts[parts.length - 1] === '' ? parts.length - 1 : parts.length
+}
+
+/**
+ * Calculates the actual lines modified by analyzing file modification tools.
+ * @param toolUse The tool use object
+ * @param afterContent The content after the tool execution (for FS_WRITE create operations)
+ * @returns The total number of lines modified (added + removed)
+ */
+export function calculateModifiedLines(toolUse: ToolUse, afterContent?: string): number {
+ if (toolUse.name === FS_WRITE) {
+ const input = toolUse.input as unknown as FsWriteParams
+
+ if (input.command === 'create') {
+ return countLines(afterContent ?? '')
+ } else if (input.command === 'append') {
+ return countLines(input.fileText)
+ }
+ }
+
+ if (toolUse.name === FS_REPLACE) {
+ const input = toolUse.input as unknown as FsReplaceParams
+ let linesAdded = 0
+ let linesRemoved = 0
+
+ for (const diff of input.diffs || []) {
+ const oldStr = diff.oldStr ?? ''
+ const newStr = diff.newStr ?? ''
+
+ const changes = diffLines(oldStr, newStr)
+
+ for (const change of changes) {
+ if (change.added) {
+ linesAdded += countLines(change.value)
+ } else if (change.removed) {
+ linesRemoved += countLines(change.value)
+ }
+ }
+ }
+
+ return linesAdded + linesRemoved
+ }
+ return 0
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/chat/chatController.ts b/server/aws-lsp-codewhisperer/src/language-server/chat/chatController.ts
index 30235a0af9..0128dbc37f 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/chat/chatController.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/chat/chatController.ts
@@ -41,7 +41,7 @@ import { createAuthFollowUpResult, getAuthFollowUpType, getDefaultChatResponse }
import { ChatSessionManagementService } from './chatSessionManagementService'
import { ChatTelemetryController } from './telemetry/chatTelemetryController'
import { QuickAction } from './quickActions'
-import { getErrorMessage, isAwsError, isNullish, isObject } from '../../shared/utils'
+import { getErrorId, getErrorMessage, isNullish, isObject, isServiceException } from '../../shared/utils'
import { Metric } from '../../shared/telemetry/metric'
import { QChatTriggerContext, TriggerContext } from './contexts/triggerContext'
import { HELP_MESSAGE } from './constants'
@@ -171,8 +171,11 @@ export class ChatController implements ChatHandlers {
response = await session.sendMessage(requestInput)
this.#log('Response for conversation id:', conversationIdentifier, JSON.stringify(response.$metadata))
} catch (err) {
- if (isAwsError(err) || (isObject(err) && 'statusCode' in err && typeof err.statusCode === 'number')) {
- metric.setDimension('cwsprChatRepsonseCode', err.statusCode ?? 400)
+ if (
+ isServiceException(err) ||
+ (isObject(err) && 'statusCode' in err && typeof err.statusCode === 'number')
+ ) {
+ metric.setDimension('cwsprChatRepsonseCode', err.$metadata.httpStatusCode ?? 400)
this.#telemetryController.emitMessageResponseError(params.tabId, metric.metric)
}
@@ -289,7 +292,7 @@ export class ChatController implements ChatHandlers {
name: 'codewhisperer_inlineChatServiceInvocation',
result: 'Failed',
data: {
- codewhispererRequestId: isAwsError(err) ? err.requestId : undefined,
+ codewhispererRequestId: isServiceException(err) ? err.$metadata.requestId : undefined,
codewhispererTriggerType: this.#inlineChatTriggerType,
duration: this.#inlineChatResponseLatency,
codewhispererLanguage: this.#inlineChatLanguage,
@@ -302,8 +305,8 @@ export class ChatController implements ChatHandlers {
},
errorData: {
reason: err instanceof Error ? err.name : 'UnknownError',
- errorCode: isAwsError(err) ? err.code : undefined,
- httpStatusCode: isAwsError(err) ? err.statusCode : undefined,
+ errorCode: err instanceof Error ? getErrorId(err) : undefined,
+ httpStatusCode: isServiceException(err) ? err.$metadata.httpStatusCode : undefined,
},
})
@@ -370,8 +373,8 @@ export class ChatController implements ChatHandlers {
},
errorData: {
reason: err instanceof Error ? err.name : 'UnknownError',
- errorCode: isAwsError(err) ? err.code : undefined,
- httpStatusCode: isAwsError(err) ? err.statusCode : undefined,
+ errorCode: err instanceof Error ? getErrorId(err) : undefined,
+ httpStatusCode: isServiceException(err) ? err.$metadata.httpStatusCode : undefined,
},
})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/chat/chatSessionService.ts b/server/aws-lsp-codewhisperer/src/language-server/chat/chatSessionService.ts
index 92c7eb2c33..bb67a8aed0 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/chat/chatSessionService.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/chat/chatSessionService.ts
@@ -1,12 +1,4 @@
-import {
- CodeWhispererStreamingClientConfig,
- CodeWhispererStreamingServiceException,
- GenerateAssistantResponseCommandInput,
- GenerateAssistantResponseCommandOutput,
- Origin,
- SendMessageCommand,
- ToolUse,
-} from '@amzn/codewhisperer-streaming'
+import { CodeWhispererStreamingClientConfig, Origin, ToolUse } from '@amzn/codewhisperer-streaming'
import {
StreamingClientServiceToken,
SendMessageCommandInput,
@@ -16,19 +8,15 @@ import {
ChatCommandOutput,
} from '../../shared/streamingClientService'
import { ChatResult } from '@aws/language-server-runtimes/server-interface'
-import {
- AgenticChatError,
- isInputTooLongError,
- isRequestAbortedError,
- isThrottlingRelated,
- wrapErrorWithCode,
-} from '../agenticChat/errors'
+import { AgenticChatError } from '../agenticChat/errors'
import { AmazonQBaseServiceManager } from '../../shared/amazonQServiceManager/BaseAmazonQServiceManager'
-import { loggingUtils } from '@aws/lsp-core'
import { Logging } from '@aws/language-server-runtimes/server-interface'
import { Features } from '../types'
-import { getOriginFromClientInfo, getClientName, getRequestID, isUsageLimitError } from '../../shared/utils'
+import { getOriginFromClientInfo, getClientName } from '../../shared/utils'
import { enabledModelSelection } from '../../shared/utils'
+import { QErrorTransformer } from '../agenticChat/retry/errorTransformer'
+import { DelayNotification } from '../agenticChat/retry/delayInterceptor'
+import { MAX_REQUEST_ATTEMPTS } from '../agenticChat/constants/constants'
export type ChatSessionServiceConfig = CodeWhispererStreamingClientConfig
type FileChange = { before?: string; after?: string }
@@ -38,10 +26,10 @@ type DeferredHandler = {
reject: (err: Error) => void
}
export class ChatSessionService {
- public shareCodeWhispererContentWithAWS = false
public pairProgrammingMode: boolean = true
public contextListSent: boolean = false
public modelId: string | undefined
+ public isMemoryBankGeneration: boolean = false
#lsp?: Features['lsp']
#abortController?: AbortController
#currentPromptId?: string
@@ -58,6 +46,7 @@ export class ChatSessionService {
#serviceManager?: AmazonQBaseServiceManager
#logging?: Logging
#origin?: Origin
+ #errorTransformer: QErrorTransformer
public getConversationType(): string {
return this.#conversationType
@@ -78,10 +67,17 @@ export class ChatSessionService {
public getDeferredToolExecution(messageId: string): DeferredHandler | undefined {
return this.#deferredToolExecution[messageId]
}
+
public setDeferredToolExecution(messageId: string, resolve: any, reject: any) {
this.#deferredToolExecution[messageId] = { resolve, reject }
}
+ public removeDeferredToolExecution(messageId: string) {
+ if (messageId in this.#deferredToolExecution) {
+ delete this.#deferredToolExecution[messageId]
+ }
+ }
+
public getAllDeferredCompactMessageIds(): string[] {
return Object.keys(this.#deferredToolExecution).filter(messageId => messageId.endsWith('_compact'))
}
@@ -139,6 +135,9 @@ export class ChatSessionService {
this.#lsp = lsp
this.#logging = logging
this.#origin = getOriginFromClientInfo(getClientName(this.#lsp?.getClientInitializeParams()))
+
+ // Initialize Q-specific error transformation
+ this.#errorTransformer = new QErrorTransformer(logging, () => this.isModelSelectionEnabled())
}
public async sendMessage(request: SendMessageCommandInput): Promise {
@@ -154,9 +153,12 @@ export class ChatSessionService {
const client = this.#serviceManager.getStreamingClient()
- const response = await client.sendMessage(request, this.#abortController)
-
- return response
+ // AWS SDK handles retries natively, we just transform final errors
+ try {
+ return await client.sendMessage(request, this.#abortController)
+ } catch (error) {
+ throw this.#errorTransformer.transformFinalError(error)
+ }
}
private isModelSelectionEnabled(): boolean {
@@ -176,125 +178,23 @@ export class ChatSessionService {
const client = this.#serviceManager.getStreamingClient()
+ // AWS SDK handles retries natively, we just transform final errors
+ try {
+ return await this.#performChatRequest(client, request)
+ } catch (error) {
+ throw this.#errorTransformer.transformFinalError(error)
+ }
+ }
+
+ async #performChatRequest(client: any, request: ChatCommandInput): Promise {
if (client instanceof StreamingClientServiceToken) {
- try {
- return await client.generateAssistantResponse(request, this.#abortController)
- } catch (e) {
- // Log the error using the logging property if available, otherwise fall back to console.error
- if (this.#logging) {
- this.#logging.error(`Error in generateAssistantResponse: ${loggingUtils.formatErr(e)}`)
- }
-
- const requestId = getRequestID(e)
- if (isUsageLimitError(e)) {
- throw new AgenticChatError(
- 'Request aborted',
- 'AmazonQUsageLimitError',
- e instanceof Error ? e : undefined,
- requestId
- )
- }
- if (isRequestAbortedError(e)) {
- throw new AgenticChatError(
- 'Request aborted',
- 'RequestAborted',
- e instanceof Error ? e : undefined,
- requestId
- )
- }
- if (isInputTooLongError(e)) {
- throw new AgenticChatError(
- 'Too much context loaded. I have cleared the conversation history. Please retry your request with smaller input.',
- 'InputTooLong',
- e instanceof Error ? e : undefined,
- requestId
- )
- }
- if (isThrottlingRelated(e)) {
- throw new AgenticChatError(
- 'Service is currently experiencing high traffic. Please try again later.',
- 'RequestThrottled',
- e instanceof Error ? e : undefined,
- requestId
- )
- }
- let error = wrapErrorWithCode(e, 'QModelResponse')
- if (
- (request.conversationState?.currentMessage?.userInputMessage?.modelId !== undefined &&
- (error.cause as any)?.$metadata?.httpStatusCode === 500 &&
- error.message ===
- 'Encountered unexpectedly high load when processing the request, please try again.') ||
- (error.cause &&
- typeof error.cause === 'object' &&
- '$metadata' in error.cause &&
- (error.cause as any).$metadata?.httpStatusCode === 429 &&
- 'reason' in error.cause &&
- error.cause.reason === 'INSUFFICIENT_MODEL_CAPACITY')
- ) {
- error.message = this.isModelSelectionEnabled()
- ? `The model you selected is temporarily unavailable. Please switch to a different model and try again.`
- : `I am experiencing high traffic, please try again shortly.`
- }
-
- throw error
- }
+ return await client.generateAssistantResponse(request, this.#abortController)
} else if (client instanceof StreamingClientServiceIAM) {
- try {
- // @ts-ignore
- // SendMessageStreaming checks for origin from request source
- // https://code.amazon.com/packages/AWSVectorConsolasRuntimeService/blobs/ac917609a28dbcb6757a8427bcc585a42fd15bf2/--/src/com/amazon/aws/vector/consolas/runtimeservice/activity/SendMessageStreamingActivity.java#L246
- request.source = this.#origin ? this.#origin : 'IDE'
- return await client.sendMessage(request, this.#abortController)
- } catch (e) {
- // Log the error using the logging property if available, otherwise fall back to console.error
- if (this.#logging) {
- this.#logging.error(`Error in Send Message response: ${loggingUtils.formatErr(e)}`)
- }
-
- const requestId = getRequestID(e)
- if (isUsageLimitError(e)) {
- throw new AgenticChatError(
- 'Request aborted',
- 'AmazonQUsageLimitError',
- e instanceof Error ? e : undefined,
- requestId
- )
- }
- if (isRequestAbortedError(e)) {
- throw new AgenticChatError(
- 'Request aborted',
- 'RequestAborted',
- e instanceof Error ? e : undefined,
- requestId
- )
- }
- if (isInputTooLongError(e)) {
- throw new AgenticChatError(
- 'Too much context loaded. I have cleared the conversation history. Please retry your request with smaller input.',
- 'InputTooLong',
- e instanceof Error ? e : undefined,
- requestId
- )
- }
- let error = wrapErrorWithCode(e, 'QModelResponse')
- if (
- (request.conversationState?.currentMessage?.userInputMessage?.modelId !== undefined &&
- (error.cause as any)?.$metadata?.httpStatusCode === 500 &&
- error.message ===
- 'Encountered unexpectedly high load when processing the request, please try again.') ||
- (error.cause &&
- typeof error.cause === 'object' &&
- '$metadata' in error.cause &&
- (error.cause as any).$metadata?.httpStatusCode === 429 &&
- 'reason' in error.cause &&
- error.cause.reason === 'INSUFFICIENT_MODEL_CAPACITY')
- ) {
- error.message = this.isModelSelectionEnabled()
- ? `The model you selected is temporarily unavailable. Please switch to a different model and try again.`
- : `I am experiencing high traffic, please try again shortly.`
- }
- throw error
- }
+ // @ts-ignore
+ // SendMessageStreaming checks for origin from request source
+ // https://code.amazon.com/packages/AWSVectorConsolasRuntimeService/blobs/ac917609a28dbcb6757a8427bcc585a42fd15bf2/--/src/com/amazon/aws/vector/consolas/runtimeservice/activity/SendMessageStreamingActivity.java#L246
+ request.source = this.#origin ? this.#origin : 'IDE'
+ return await client.sendMessage(request, this.#abortController)
} else {
// error
return Promise.reject(
@@ -341,4 +241,15 @@ export class ChatSessionService {
public setLogging(logging: Logging): void {
this.#logging = logging
}
+
+ /**
+ * Sets the delay notification callback for UI integration
+ * @param callback Function to call when delay notifications occur
+ */
+ public setDelayNotificationCallback(callback: (notification: DelayNotification) => void): void {
+ if (this.#serviceManager) {
+ const client = this.#serviceManager.getStreamingClient()
+ client.setDelayNotificationCallback(callback)
+ }
+ }
}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/chat/constants.ts b/server/aws-lsp-codewhisperer/src/language-server/chat/constants.ts
index 3263cb7b42..0b96c80cc9 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/chat/constants.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/chat/constants.ts
@@ -79,6 +79,8 @@ export const DEFAULT_EXCLUDE_FILES = [
'.DS_Store',
]
+export const DEFAULT_RETRY_ATTEMPTS = 3
+
export const loadingMessage: ChatMessage = {
body: '',
// @ts-ignore
diff --git a/server/aws-lsp-codewhisperer/src/language-server/chat/telemetry/chatTelemetryController.ts b/server/aws-lsp-codewhisperer/src/language-server/chat/telemetry/chatTelemetryController.ts
index 8e9cb92624..95e9bc5157 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/chat/telemetry/chatTelemetryController.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/chat/telemetry/chatTelemetryController.ts
@@ -20,7 +20,7 @@ import { ToolUse, UserIntent } from '@amzn/codewhisperer-streaming'
import { TriggerContext } from '../contexts/triggerContext'
import { CredentialsProvider, Logging } from '@aws/language-server-runtimes/server-interface'
-import { AcceptedSuggestionEntry, CodeDiffTracker } from '../../inline-completion/codeDiffTracker'
+import { AcceptedSuggestionEntry, CodeDiffTracker } from '../../inline-completion/tracker/codeDiffTracker'
import { TelemetryService } from '../../../shared/telemetry/telemetryService'
import { getEndPositionForAcceptedSuggestion, getTelemetryReasonDesc } from '../../../shared/utils'
import { CodewhispererLanguage } from '../../../shared/languageDetection'
@@ -294,7 +294,13 @@ export class ChatTelemetryController {
})
}
- public emitAddMessageMetric(tabId: string, metric: Partial, result?: string) {
+ public emitAddMessageMetric(
+ tabId: string,
+ metric: Partial,
+ result?: string,
+ errorMessage?: string,
+ errorCode?: string
+ ) {
const conversationId = this.getConversationId(tabId)
// Store the customization value associated with the message
if (metric.cwsprChatMessageId && metric.codewhispererCustomizationArn) {
@@ -308,7 +314,7 @@ export class ChatTelemetryController {
conversationId: conversationId,
messageId: metric.cwsprChatMessageId,
customizationArn: metric.codewhispererCustomizationArn,
- userIntent: metric.cwsprChatUserIntent,
+ userIntent: metric.cwsprChatUserIntent as UserIntent,
hasCodeSnippet: metric.cwsprChatHasCodeSnippet,
programmingLanguage: metric.cwsprChatProgrammingLanguage as CodewhispererLanguage,
activeEditorTotalCharacters: metric.cwsprChatActiveEditorTotalCharacters,
@@ -349,6 +355,8 @@ export class ChatTelemetryController {
requestIds: metric.requestIds,
experimentName: metric.experimentName,
userVariation: metric.userVariation,
+ errorMessage: errorMessage,
+ errorCode: errorCode,
}
)
}
@@ -421,10 +429,12 @@ export class ChatTelemetryController {
public emitInteractWithMessageMetric(
tabId: string,
- metric: Omit
+ metric: Omit,
+ acceptedLineCount?: number
) {
return this.#telemetryService.emitChatInteractWithMessage(metric, {
conversationId: this.getConversationId(tabId),
+ acceptedLineCount,
})
}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/configuration/qConfigurationServer.test.ts b/server/aws-lsp-codewhisperer/src/language-server/configuration/qConfigurationServer.test.ts
index 97d3a084d6..312515fbb2 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/configuration/qConfigurationServer.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/configuration/qConfigurationServer.test.ts
@@ -251,11 +251,11 @@ describe('ServerConfigurationProvider', () => {
codeWhispererService = stubInterface()
codeWhispererService.listAvailableCustomizations.resolves({
customizations: mockCustomizations,
- $response: {} as any,
+ $metadata: {},
})
codeWhispererService.listAvailableProfiles.resolves({
profiles: [],
- $response: {} as any,
+ $metadata: {},
})
testFeatures = new TestFeatures()
@@ -365,14 +365,14 @@ describe('ServerConfigurationProvider', () => {
// Return different customizations for each profile
listAvailableCustomizationsForProfileAndRegionStub
- .withArgs(mockProfiles[0].arn, mockProfiles[0].identityDetails!.region)
+ .withArgs(mockProfiles[0].arn!, mockProfiles[0].identityDetails!.region)
.resolves([
{ arn: 'customization1', name: 'Customization 1' },
{ arn: 'customization2', name: 'Customization 2' },
])
listAvailableCustomizationsForProfileAndRegionStub
- .withArgs(mockProfiles[1].arn, mockProfiles[1].identityDetails!.region)
+ .withArgs(mockProfiles[1].arn!, mockProfiles[1].identityDetails!.region)
.resolves([{ arn: 'customization3', name: 'Customization 3' }])
const result = await serverConfigurationProvider.listAllAvailableCustomizationsWithMetadata(
@@ -438,11 +438,11 @@ describe('ServerConfigurationProvider', () => {
// Return different customizations for each profile
listAvailableCustomizationsForProfileAndRegionStub
- .withArgs(mockProfiles[0].arn, mockProfiles[0].identityDetails!.region)
+ .withArgs(mockProfiles[0].arn!, mockProfiles[0].identityDetails!.region)
.resolves([])
listAvailableCustomizationsForProfileAndRegionStub
- .withArgs(mockProfiles[1].arn, mockProfiles[1].identityDetails!.region)
+ .withArgs(mockProfiles[1].arn!, mockProfiles[1].identityDetails!.region)
.resolves([{ arn: 'customization3', name: 'Customization 3' }])
const result = await serverConfigurationProvider.listAllAvailableCustomizationsWithMetadata(
@@ -509,7 +509,7 @@ describe('ServerConfigurationProvider', () => {
// Return different customizations for each profile
listAvailableCustomizationsForProfileAndRegionStub
- .withArgs(mockProfiles[0].arn, mockProfiles[0].identityDetails!.region)
+ .withArgs(mockProfiles[0].arn!, mockProfiles[0].identityDetails!.region)
.resolves([{ arn: 'customization1', name: 'Customization 1' }])
// Call with provided profiles
@@ -561,12 +561,12 @@ describe('ServerConfigurationProvider', () => {
// First profile succeeds
listAvailableCustomizationsForProfileAndRegionStub
- .withArgs(mockProfiles[0].arn, mockProfiles[0].identityDetails!.region)
+ .withArgs(mockProfiles[0].arn!, mockProfiles[0].identityDetails!.region)
.resolves([{ arn: 'customization1', name: 'Customization 1' }])
// Second profile fails
listAvailableCustomizationsForProfileAndRegionStub
- .withArgs(mockProfiles[1].arn, mockProfiles[1].identityDetails!.region)
+ .withArgs(mockProfiles[1].arn!, mockProfiles[1].identityDetails!.region)
.rejects(new Error('Failed to fetch customizations'))
const result = await serverConfigurationProvider.listAllAvailableCustomizationsWithMetadata(
diff --git a/server/aws-lsp-codewhisperer/src/language-server/configuration/qConfigurationServer.ts b/server/aws-lsp-codewhisperer/src/language-server/configuration/qConfigurationServer.ts
index 5f96d526b1..7eca4c4233 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/configuration/qConfigurationServer.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/configuration/qConfigurationServer.ts
@@ -13,7 +13,7 @@ import {
getListAllAvailableProfilesHandler,
ListAllAvailableProfilesHandler,
} from '../../shared/amazonQServiceManager/qDeveloperProfiles'
-import { Customization, Customizations } from '../../client/token/codewhispererbearertokenclient'
+import { Customization } from '@amzn/codewhisperer-runtime'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'
import { AWS_Q_ENDPOINTS, Q_CONFIGURATION_SECTION } from '../../shared/constants'
import { AmazonQError } from '../../shared/amazonQServiceManager/errors'
@@ -120,7 +120,7 @@ export const QConfigurationServerToken =
): Promise => {
const section = params.section
- let customizations: Customizations | CustomizationWithMetadata[] = []
+ let customizations: Customization[] | CustomizationWithMetadata[] = []
let developerProfiles: AmazonQDeveloperProfile[] = []
try {
@@ -228,19 +228,22 @@ export class ServerConfigurationProvider {
}
}
- async listAvailableCustomizations(): Promise {
+ async listAvailableCustomizations(): Promise {
try {
const customizations = (
await this.serviceManager.getCodewhispererService().listAvailableCustomizations({ maxResults: 100 })
).customizations
- return customizations
+ return customizations ?? []
} catch (error) {
throw this.getResponseError(`${ON_GET_CONFIGURATION_FROM_SERVER_ERROR_PREFIX}${Q_CUSTOMIZATIONS}`, error)
}
}
- async listAvailableCustomizationsForProfileAndRegion(profileArn: string, region: string): Promise {
+ async listAvailableCustomizationsForProfileAndRegion(
+ profileArn: string | undefined,
+ region: string
+ ): Promise {
try {
// Create a new service for the specific region
const service = this.serviceManager.getServiceFactory()(region, AWS_Q_ENDPOINTS.get(region) || '')
@@ -248,7 +251,7 @@ export class ServerConfigurationProvider {
const customizations = (await service.listAvailableCustomizations({ maxResults: 100 })).customizations
- return customizations
+ return customizations ?? []
} catch (error) {
throw this.getResponseError(`${ON_GET_CONFIGURATION_FROM_SERVER_ERROR_PREFIX}${Q_CUSTOMIZATIONS}`, error)
}
@@ -289,11 +292,11 @@ export class ServerConfigurationProvider {
return [
defaultCustomization,
- ...customizations.map(customization => ({
+ ...(customizations?.map(customization => ({
...customization,
isDefault: false,
profile: profile,
- })),
+ })) ?? []),
]
})
.catch(error => {
diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/autoTrigger.test.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/autoTrigger.test.ts
index 6f96c526de..31bc0a224a 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/autoTrigger.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/autoTrigger.test.ts
@@ -158,7 +158,7 @@ describe('Auto Trigger', async () => {
assert.strictEqual(getAutoTriggerType(createContentChange('line1\nline2')), undefined)
})
})
- describe.skip('Right Context should trigger validation', () => {
+ describe('Right Context should trigger validation', () => {
it('should not trigger when there is immediate right context in VSCode', () => {
const params = createBasicParams({
fileContext: createBasicFileContext('console.', 'log()'),
diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/autoTrigger.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/autoTrigger.ts
index 9fb2efab8e..328b2a299e 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/autoTrigger.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/autoTrigger.ts
@@ -3,6 +3,7 @@ import { Logging } from '@aws/language-server-runtimes/server-interface'
import { FileContext } from '../../../shared/codeWhispererService'
import typedCoefficients = require('./coefficients.json')
import { TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'
+import { lastTokenFromString } from '../utils/triggerUtils'
type TypedCoefficients = typeof typedCoefficients
type Coefficients = TypedCoefficients & {
@@ -32,7 +33,7 @@ export type CodewhispererTriggerType = 'AutoTrigger' | 'OnDemand'
// Two triggers are explicitly handled, SpecialCharacters and Enter. Everything else is expected to be a trigger
// based on regular typing, and is considered a 'Classifier' trigger.
-export type CodewhispererAutomatedTriggerType = 'SpecialCharacters' | 'Enter' | 'Classifier'
+export type CodewhispererAutomatedTriggerType = 'SpecialCharacters' | 'Enter' | 'Classifier' | 'IntelliSenseAcceptance'
/**
* Determine the trigger type based on the file context. Currently supports special cases for Special Characters and Enter keys,
@@ -104,6 +105,10 @@ function isTabKey(str: string): boolean {
return false
}
+function isIntelliSenseAcceptance(str: string) {
+ return str === 'IntelliSenseAcceptance'
+}
+
// Reference: https://github.com/aws/aws-toolkit-vscode/blob/amazonq/v1.74.0/packages/core/src/codewhisperer/service/keyStrokeHandler.ts#L222
// Enter, Special character guarantees a trigger
// Regular keystroke input will be evaluated by classifier
@@ -126,6 +131,8 @@ export const getAutoTriggerType = (
return undefined
} else if (isUserTypingSpecialChar(changedText)) {
return 'SpecialCharacters'
+ } else if (isIntelliSenseAcceptance(changedText)) {
+ return 'IntelliSenseAcceptance'
} else if (changedText.length === 1) {
return 'Classifier'
} else if (new RegExp('^[ ]+$').test(changedText)) {
@@ -177,7 +184,7 @@ type AutoTriggerParams = {
char: string
triggerType: string // Left as String intentionally to support future and unknown trigger types
os: string
- previousDecision: string
+ previousDecision: string | undefined
ide: string
lineNum: number
}
@@ -211,15 +218,13 @@ export const autoTrigger = (
rightContextAtCurrentLine.trim() !== ')' &&
['VSCODE', 'JETBRAINS'].includes(ide)
) {
- logging.debug(`Skip auto trigger: immediate right context`)
return {
shouldTrigger: false,
classifierResult: 0,
classifierThreshold: TRIGGER_THRESHOLD,
}
}
- const tokens = leftContextAtCurrentLine.trim().split(' ')
- const lastToken = tokens[tokens.length - 1]
+ const lastToken = lastTokenFromString(fileContext.leftFileContent)
const keyword = lastToken?.length > 1 ? lastToken : ''
@@ -229,23 +234,27 @@ export const autoTrigger = (
const triggerTypeCoefficient = coefficients.triggerTypeCoefficient[triggerType] ?? 0
const osCoefficient = coefficients.osCoefficient[os] ?? 0
- let charCoefficient = coefficients.charCoefficient[char] ?? 0
- // this is a temporary change to lower the auto trigger frequency
- if (ide === 'VSCODE') {
- charCoefficient = 0
- }
+
+ const charCoefficient = coefficients.charCoefficient[char] ?? 0
const keyWordCoefficient = coefficients.charCoefficient[keyword] ?? 0
const languageCoefficient = coefficients.languageCoefficient[fileContext.programmingLanguage.languageName] ?? 0
let previousDecisionCoefficient = 0
- if (previousDecision === 'Accept') {
- previousDecisionCoefficient = coefficients.prevDecisionAcceptCoefficient
- } else if (previousDecision === 'Reject') {
- previousDecisionCoefficient = coefficients.prevDecisionRejectCoefficient
- } else if (previousDecision === 'Discard' || previousDecision === 'Empty') {
- previousDecisionCoefficient = coefficients.prevDecisionOtherCoefficient
+ switch (previousDecision) {
+ case 'Accept':
+ previousDecisionCoefficient = coefficients.prevDecisionAcceptCoefficient
+ break
+ case 'Reject':
+ previousDecisionCoefficient = coefficients.prevDecisionRejectCoefficient
+ break
+ case 'Discard':
+ case 'Empty':
+ previousDecisionCoefficient = coefficients.prevDecisionOtherCoefficient
+ break
+ default:
+ break
}
const ideCoefficient = coefficients.ideCoefficient[ide] ?? 0
@@ -279,11 +288,13 @@ export const autoTrigger = (
previousDecisionCoefficient +
languageCoefficient +
leftContextLengthCoefficient
- const shouldTrigger = sigmoid(classifierResult) > TRIGGER_THRESHOLD
+
+ const r = sigmoid(classifierResult)
+ const shouldTrigger = r > TRIGGER_THRESHOLD
return {
shouldTrigger,
- classifierResult,
+ classifierResult: r,
classifierThreshold: TRIGGER_THRESHOLD,
}
}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.test.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.test.ts
index 261748468f..15bc689654 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.test.ts
@@ -5,10 +5,11 @@
import * as assert from 'assert'
import * as sinon from 'sinon'
-import { editPredictionAutoTrigger } from './editPredictionAutoTrigger'
+import { EditClassifier, editPredictionAutoTrigger } from './editPredictionAutoTrigger'
import { EditPredictionConfigManager } from './editPredictionConfig'
-import { FileContext } from '../../../shared/codeWhispererService'
-import { Position } from '@aws/language-server-runtimes/server-interface'
+import { ClientFileContextClss, FileContext, getFileContext } from '../../../shared/codeWhispererService'
+import { Logging, Position } from '@aws/language-server-runtimes/server-interface'
+import { TextDocument } from 'vscode-languageserver-textdocument'
import { CursorTracker } from '../tracker/cursorTracker'
import { RecentEditTracker } from '../tracker/codeEditTracker'
import { TestScenarios, EditTrackingScenarios, splitCodeAtPosition } from './EditPredictionAutoTriggerTestConstants'
@@ -337,3 +338,509 @@ describe('editPredictionAutoTrigger', function () {
})
})
})
+
+describe('classifier', function () {
+ const SAMPLE = `public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+}`
+
+ const SAMPLE_FILE_CONTEXT = getFileContext({
+ textDocument: TextDocument.create('file:///testfile.java', 'java', 1, SAMPLE),
+ position: Position.create(2, 18),
+ inferredLanguageId: 'java',
+ workspaceFolder: undefined,
+ })
+
+ // Create stubs for all methods
+ const loggingStub = {
+ error: sinon.stub(),
+ warn: sinon.stub(),
+ info: sinon.stub(),
+ log: sinon.stub(),
+ debug: sinon.stub(),
+ } satisfies Logging
+
+ it('test sample', function () {
+ assert.strictEqual(SAMPLE_FILE_CONTEXT.leftContextAtCurLine, ' System.out')
+ assert.strictEqual(SAMPLE_FILE_CONTEXT.rightContextAtCurLine, '.println("Hello, World!");') // TODO: Not sure why it doesnt include \n
+ assert.strictEqual(SAMPLE_FILE_CONTEXT.programmingLanguage.languageName, 'java')
+ assert.strictEqual(
+ SAMPLE_FILE_CONTEXT.leftFileContent,
+ `public class HelloWorld {
+ public static void main(String[] args) {
+ System.out`
+ )
+ assert.strictEqual(
+ SAMPLE_FILE_CONTEXT.rightFileContent,
+ `.println("Hello, World!");
+ }
+}`
+ )
+ })
+
+ describe('constant check', function () {
+ it('intercept', function () {
+ assert.strictEqual(EditClassifier.INTERCEPT, -0.2782)
+ })
+
+ it('threshold', function () {
+ assert.strictEqual(EditClassifier.THRESHOLD, 0.53)
+ })
+
+ it('process edit history', function () {
+ const r =
+ EditClassifier.processEditHistory(`--- file:///Volumes/workplace/ide/sample_projects/Calculator-2/src/main/hello/MathUtil.java 1760647547772
++++ file:///Volumes/workplace/ide/sample_projects/Calculator-2/src/main/hello/MathUtil.java 1760647547851
+@@ -4,5 +4,5 @@
+ return a + b;
+ }
+
+- public static int substract
++ public static int substract()
+ }`)
+
+ assert.strictEqual(r.addedLines, 1)
+ assert.strictEqual(r.deletedLines, 1)
+ assert.strictEqual(r.changedCharacters, 2)
+ })
+
+ it('process edit history 2', function () {
+ const r = EditClassifier.processEditHistory(`--- file:///query.sql
++++ file:///query.sql
+@@ -1,6 +1,4 @@
+ SELECT u.name, u.email, p.title
+ FROM users u
+-LEFT JOIN profiles pr ON u.id = pr.user_id
+ JOIN posts p ON u.id = p.user_id
+ WHERE u.active = true
+-AND p.published_at >= '2023-01-01'
++AND p.published_date >= '2023-01-01'`)
+
+ assert.strictEqual(r.addedLines, 1)
+ assert.strictEqual(r.deletedLines, 2)
+ assert.strictEqual(r.changedCharacters, 45)
+ })
+
+ it('edit distance cal', function () {
+ const r = EditClassifier.editDistance('public static int substract', 'public static int substract()')
+ assert.strictEqual(r, 2)
+ })
+ })
+
+ describe('test logistic formula', function () {
+ function createMockFileContext(leftcontext: string, rightcontext: string) {}
+
+ it('case 1 Python function with keyword', function () {
+ const document = TextDocument.create(
+ 'test.py',
+ 'python',
+ 1,
+ `def calculate_sum(a, b):
+ return a + b
+
+def main():
+ result = calculate_sum(5, 3)
+ try:
+ print(f"Result: {result}")
+ except Exception as e:
+ print(f"Error: {e}")
+
+if __name__ == "__main__":
+ main()`
+ )
+ const filecontext = new ClientFileContextClss({
+ textDocument: document,
+ position: Position.create(5, 7),
+ inferredLanguageId: 'python',
+ workspaceFolder: undefined,
+ })
+
+ // assert setup is correct
+ assert.strictEqual(
+ filecontext.leftFileContent,
+ `def calculate_sum(a, b):
+ return a + b
+
+def main():
+ result = calculate_sum(5, 3)
+ try`
+ )
+ assert.strictEqual(
+ filecontext.rightFileContent,
+ `:
+ print(f"Result: {result}")
+ except Exception as e:
+ print(f"Error: {e}")
+
+if __name__ == "__main__":
+ main()`
+ )
+ assert.strictEqual(filecontext.programmingLanguage.languageName, 'python')
+
+ // test classifier
+ const sut = new EditClassifier(
+ {
+ fileContext: filecontext,
+ triggerChar: 'y',
+ recentEdits: {
+ isUtg: false,
+ isProcessTimeout: false,
+ supplementalContextItems: [
+ {
+ filePath: '',
+ content: `--- file:///calculator.py
++++ file:///calculator.py
+@@ -1,5 +1,7 @@
+ def calculate_sum(a, b):
+ return a + b
+
++def calculate_product(a, b):
++ return a * b
++
+ def main():
+ result = calculate_sum(5, 3)`,
+ },
+ ],
+ contentsLength: 0,
+ latency: 0,
+ strategy: 'recentEdits',
+ },
+ recentDecisions: ['Accept', 'Accept', 'Accept', 'Reject', 'Reject'], // AR = 0.6
+ },
+ loggingStub
+ )
+
+ const actual = sut.score().toPrecision(4)
+ assert.strictEqual(actual, '0.6998')
+ })
+
+ it('case 2 Java method with keyword and deletions', function () {
+ const document = TextDocument.create(
+ 'test.java',
+ 'java',
+ 1,
+ `public class Calculator {
+ private int value;
+
+ public void setValue(int v) {
+ this.value = v;
+ }
+
+ public int getValue() {
+ if (this.value > 0) {
+ return this.value;
+ }
+ return 0;
+ }
+}`
+ )
+ const filecontext = new ClientFileContextClss({
+ textDocument: document,
+ position: Position.create(8, 10),
+ inferredLanguageId: 'java',
+ workspaceFolder: undefined,
+ })
+
+ // assert setup is correct
+ assert.strictEqual(
+ filecontext.leftFileContent,
+ `public class Calculator {
+ private int value;
+
+ public void setValue(int v) {
+ this.value = v;
+ }
+
+ public int getValue() {
+ if`
+ )
+ assert.strictEqual(
+ filecontext.rightFileContent,
+ ` (this.value > 0) {
+ return this.value;
+ }
+ return 0;
+ }
+}`
+ )
+ assert.strictEqual(filecontext.programmingLanguage.languageName, 'java')
+
+ // test classifier
+ const sut = new EditClassifier(
+ {
+ fileContext: filecontext,
+ triggerChar: 'f',
+ recentEdits: {
+ isUtg: false,
+ isProcessTimeout: false,
+ supplementalContextItems: [
+ {
+ filePath: '',
+ content: `--- file:///Calculator.java
++++ file:///Calculator.java
+@@ -1,6 +1,4 @@
+ public class Calculator {
+ private int value;
+- private String name;
+- private boolean active;
+
+ public void setValue(int v) {`,
+ },
+ ],
+ contentsLength: 0,
+ latency: 0,
+ strategy: 'recentEdits',
+ },
+ recentDecisions: [], // If recentDecision has length 0, will use 0.3 as AR
+ },
+ loggingStub
+ )
+
+ const actual = sut.score().toPrecision(4)
+ assert.strictEqual(actual, '0.5374')
+ })
+
+ it('case 3 JavaScript without keyword, with deletions', function () {
+ const document = TextDocument.create(
+ 'test.js',
+ 'javascript',
+ 1,
+ `const users = [
+ { name: 'Alice', age: 25 },
+ { name: 'Bob', age: 30 }
+];
+
+const getNames = () => {
+ return users.map(user => user.fullName);
+};
+
+console.log(getNames());`
+ )
+ const filecontext = new ClientFileContextClss({
+ textDocument: document,
+ position: Position.create(6, 42),
+ inferredLanguageId: 'javascript',
+ workspaceFolder: undefined,
+ })
+
+ // assert setup is correct
+ assert.strictEqual(
+ filecontext.leftFileContent,
+ `const users = [
+ { name: 'Alice', age: 25 },
+ { name: 'Bob', age: 30 }
+];
+
+const getNames = () => {
+ return users.map(user => user.fullName`
+ )
+ assert.strictEqual(
+ filecontext.rightFileContent,
+ `);
+};
+
+console.log(getNames());`
+ )
+ assert.strictEqual(filecontext.programmingLanguage.languageName, 'javascript')
+
+ // test classifier
+ const sut = new EditClassifier(
+ {
+ fileContext: filecontext,
+ triggerChar: 'e',
+ recentEdits: {
+ isUtg: false,
+ isProcessTimeout: false,
+ supplementalContextItems: [
+ {
+ filePath: '',
+ content: `--- file:///users.js
++++ file:///users.js
+@@ -1,6 +1,4 @@
+ const users = [
+ { name: 'Alice', age: 25 },
+- { name: 'Bob', age: 30 },
+- { name: 'Charlie', age: 35 }
++ { name: 'Bob', age: 30 }
+ ];`,
+ },
+ ],
+ contentsLength: 0,
+ latency: 0,
+ strategy: 'recentEdits',
+ },
+ recentDecisions: ['Reject', 'Reject', 'Reject', 'Reject', 'Reject'], // AR 0
+ },
+ loggingStub
+ )
+
+ const actual = sut.score().toPrecision(4)
+ assert.strictEqual(actual, '0.4085')
+ })
+
+ it('case 4 C++ without keyword, with similar line changes', function () {
+ const document = TextDocument.create(
+ 'test.cpp',
+ 'cpp',
+ 1,
+ `#include
+#include
+
+template
+void printVector(const std::vector& vec) {
+ for (const auto& item : vec) {
+ std::cout << item << " ";
+ }
+ std::cout << std::newline;
+}
+
+int main() {
+ std::vector numbers = {1, 2, 3, 4, 5};
+ printVector(numbers);
+ return 0;
+}`
+ )
+ const filecontext = new ClientFileContextClss({
+ textDocument: document,
+ position: Position.create(8, 29),
+ inferredLanguageId: 'cpp',
+ workspaceFolder: undefined,
+ })
+
+ // assert setup is correct
+ assert.strictEqual(
+ filecontext.leftFileContent,
+ `#include
+#include
+
+template
+void printVector(const std::vector& vec) {
+ for (const auto& item : vec) {
+ std::cout << item << " ";
+ }
+ std::cout << std::newline`
+ )
+ assert.strictEqual(
+ filecontext.rightFileContent,
+ `;
+}
+
+int main() {
+ std::vector numbers = {1, 2, 3, 4, 5};
+ printVector(numbers);
+ return 0;
+}`
+ )
+ assert.strictEqual(filecontext.programmingLanguage.languageName, 'cpp')
+
+ // test classifier
+ const sut = new EditClassifier(
+ {
+ fileContext: filecontext,
+ triggerChar: 'e',
+ recentEdits: {
+ isUtg: false,
+ isProcessTimeout: false,
+ supplementalContextItems: [
+ {
+ filePath: '',
+ content: `--- file:///vector_print.cpp
++++ file:///vector_print.cpp
+@@ -5,7 +5,7 @@
+ for (const auto& item : vec) {
+ std::cout << item << " ";
+ }
+- std::cout << std::endl;
++ std::cout << std::newline;
+ }`,
+ },
+ ],
+ contentsLength: 0,
+ latency: 0,
+ strategy: 'recentEdits',
+ },
+ recentDecisions: ['Accept', 'Accept', 'Reject', 'Reject', 'Reject'], // AR 0.4
+ },
+ loggingStub
+ )
+
+ const actual = sut.score().toPrecision(4)
+ assert.strictEqual(actual, '0.3954')
+ })
+
+ it('case 5 SQL without keyword, with similar line changes and deletions', function () {
+ const document = TextDocument.create(
+ 'test.sql',
+ 'sql',
+ 1,
+ `SELECT u.name, u.email, p.title
+FROM users u
+JOIN posts p ON u.id = p.user_id
+WHERE u.active = true
+AND p.published_date >= '2023-01-01'
+ORDER BY p.published_date DESC
+LIMIT 10;`
+ )
+ const filecontext = new ClientFileContextClss({
+ textDocument: document,
+ position: Position.create(4, 23),
+ inferredLanguageId: 'sql',
+ workspaceFolder: undefined,
+ })
+
+ // assert setup is correct
+ assert.strictEqual(
+ filecontext.leftFileContent,
+ `SELECT u.name, u.email, p.title
+FROM users u
+JOIN posts p ON u.id = p.user_id
+WHERE u.active = true
+AND p.published_date >=`
+ )
+ assert.strictEqual(
+ filecontext.rightFileContent,
+ ` '2023-01-01'
+ORDER BY p.published_date DESC
+LIMIT 10;`
+ )
+ assert.strictEqual(filecontext.programmingLanguage.languageName, 'sql')
+
+ // test classifier
+ const sut = new EditClassifier(
+ {
+ fileContext: filecontext,
+ triggerChar: '',
+ recentEdits: {
+ isUtg: false,
+ isProcessTimeout: false,
+ supplementalContextItems: [
+ {
+ filePath: '',
+ content: `--- file:///query.sql
++++ file:///query.sql
+@@ -1,6 +1,4 @@
+ SELECT u.name, u.email, p.title
+ FROM users u
+-LEFT JOIN profiles pr ON u.id = pr.user_id
+ JOIN posts p ON u.id = p.user_id
+ WHERE u.active = true
+-AND p.published_at >= '2023-01-01'
++AND p.published_date >= '2023-01-01'`,
+ },
+ ],
+ contentsLength: 0,
+ latency: 0,
+ strategy: 'recentEdits',
+ },
+ recentDecisions: ['Accept', 'Reject', 'Reject', 'Reject', 'Reject'], // AR 0.2
+ },
+ loggingStub
+ )
+
+ const actual = sut.score().toPrecision(4)
+ assert.strictEqual(actual, '0.4031')
+ })
+ })
+})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.ts
index eee9edbdcb..ad02864bed 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.ts
@@ -3,12 +3,19 @@
* SPDX-License-Identifier: Apache-2.0
*/
-import { FileContext } from '../../../shared/codeWhispererService'
-import { Position } from '@aws/language-server-runtimes/server-interface'
+import { ClientFileContextClss, FileContext } from '../../../shared/codeWhispererService'
import { CursorTracker } from '../tracker/cursorTracker'
import { RecentEditTracker } from '../tracker/codeEditTracker'
-import { LanguageDetectorFactory } from './languageDetector'
import { EditPredictionConfigManager } from './editPredictionConfig'
+import { CodeWhispererSupplementalContext } from '../../../shared/models/model'
+import { UserTriggerDecision } from '../session/sessionManager'
+import { Logging } from '@aws/language-server-runtimes/server-interface'
+import { lastTokenFromString } from '../utils/triggerUtils'
+
+// The sigmoid function to clamp the auto-trigger result to the (0, 1) range
+const sigmoid = (x: number) => {
+ return 1 / (1 + Math.exp(-x))
+}
/**
* Parameters for the edit prediction auto-trigger
@@ -65,3 +72,407 @@ export const editPredictionAutoTrigger = ({
return { shouldTrigger }
}
+
+const keyWordCoefficients: Record = {
+ get: 1.171,
+ const: -0.7697,
+ try: 0.7182,
+ number: 0.6706,
+ this: 0.6271,
+ return: -0.3991,
+ from: -0.3515,
+ None: -0.3409,
+ True: -0.3653,
+ true: -0.2502,
+ async: -0.3212,
+ false: 0.3478,
+ else: 0.3154,
+ type: -0.2662,
+ null: -0.1576,
+ if: -0.1276,
+ in: -0.0905,
+ void: 0.1712,
+ any: 0.1663,
+ as: 0.139,
+ import: 0.1424,
+ for: 0.0252,
+ is: 0.1023,
+ string: 0.0691,
+}
+
+const lastCharCoefficients: Record = {
+ // alphabet
+ a: 0.0773,
+ c: 0.1191,
+ d: -0.0938,
+ e: -0.1517,
+ f: 0.4246,
+ i: 0.154,
+ l: 0.2188,
+ m: -0.3026,
+ n: -0.0324,
+ o: 0.196,
+ p: -0.2283,
+ Q: -0.0205,
+ r: 0.1418,
+ s: 0.0387,
+ S: 0.3369,
+ t: 0.1863,
+ u: 0.3599,
+ y: 0.0456,
+ // numbers
+ '0': 0.0415,
+ '1': -0.1826,
+ '2': -0.1085,
+ // special chars
+ '(': 0.0539,
+ ')': 0.0996,
+ '{': 0.2644,
+ '}': 0.1122,
+ ';': 0.2225,
+ '/': -0.0745,
+ '>': -0.0378,
+ '.': 0.0244,
+ ',': -0.0274,
+ '\n': 0.1023,
+ ' ': -0.066,
+ _: 0.0781,
+ "'": -0.036,
+ '"': 0.0629,
+}
+
+const languageCoefficients: Record = {
+ c: 0.1013,
+ cpp: -0.1371,
+ sql: -0.1509,
+ java: 0.0564,
+ javascript: 0.1183,
+ json: 0.0811,
+ kotlin: -0.3022,
+ python: 0.0914,
+ rust: -0.1024,
+ scala: 0.1648,
+ shell: 0.1292,
+ tf: -0.3823,
+ typescript: 0.0928,
+ yaml: -0.2578,
+}
+
+const leftContextLineCountCoeffecients = {
+ lte25: -0.0417,
+}
+
+// No rightContextLineCountCoefficients, leave it 0 for now
+const rightContextLineCountCoefficients = {
+ lte3: 0,
+ gte_4_lte6: 0,
+ gte7: 0,
+}
+
+const editHistoryCoefficients = {
+ changedCharsNorm: 0.0194,
+ linesDeletedNorm: -0.084,
+ linesAddedNorm: 0.0594,
+}
+
+const lastLineLengthCoefficients = {
+ lte4: 0.0293,
+ gte_5_lte12: -0.0012,
+}
+
+const arCoefficients = {
+ previous5: 0.4723,
+}
+
+type EditAutoTriggerInput = {
+ fileContext: ClientFileContextClss
+ triggerChar: string
+ recentEdits: CodeWhispererSupplementalContext
+ recentDecisions: UserTriggerDecision[]
+}
+
+type EditClassifierFeatures = {
+ lastCharacter: string
+ lastLineLength: number
+ leftContextLineCount: number
+ rightContextLineCount: number
+ normalizedEditHistory: EditHistoryFeature | undefined
+ language: string
+ keyword: string
+ userAR: number
+}
+
+type EditHistoryFeature = {
+ changedCharacters: number
+ addedLines: number
+ deletedLines: number
+}
+
+export class EditClassifier {
+ static THRESHOLD = 0.53
+ static INTERCEPT = -0.2782
+
+ private _score: number | undefined
+ private features: EditClassifierFeatures
+ constructor(
+ params: EditAutoTriggerInput,
+ readonly logging: Logging
+ ) {
+ this.features = this.prepareFeatures(params)
+ }
+
+ shouldTriggerEdits(): { shouldTrigger: boolean; threshold: number; score: number } {
+ const s = this.score()
+ return {
+ score: s,
+ threshold: EditClassifier.THRESHOLD,
+ shouldTrigger: s > EditClassifier.THRESHOLD,
+ }
+ }
+
+ score() {
+ if (this._score !== undefined) {
+ return this._score
+ }
+ // 1. Last Character
+ const lastChar = this.features.lastCharacter
+ const myLastCharCoef = lastCharCoefficients[lastChar] ?? 0
+
+ // 2. Last Line Length
+ const lastLineLength = this.features.lastLineLength
+ let myLastLineLengthCoef = 0
+ if (lastLineLength <= 4) {
+ myLastLineLengthCoef = lastLineLengthCoefficients.lte4
+ } else if (lastLineLength >= 5 && lastLineLength <= 12) {
+ myLastLineLengthCoef = lastLineLengthCoefficients.gte_5_lte12
+ }
+
+ // 3. Left Context Line Count
+ const leftContextLineCount = this.features.leftContextLineCount
+ const myLeftContextLineCountCoef = leftContextLineCount <= 25 ? leftContextLineCountCoeffecients.lte25 : 0
+
+ // 4. Right Context Line Count
+ const rightContextLineCount = this.features.rightContextLineCount
+ let myRightContextLineCountCoef = 0
+ if (rightContextLineCount <= 3) {
+ myRightContextLineCountCoef = rightContextLineCountCoefficients.lte3
+ } else if (rightContextLineCount >= 4 && rightContextLineCount <= 6) {
+ myRightContextLineCountCoef = rightContextLineCountCoefficients.gte_4_lte6
+ } else {
+ myRightContextLineCountCoef = rightContextLineCountCoefficients.gte7
+ }
+
+ // 5. Edit History (only using oldest)
+ const editH = this.features.normalizedEditHistory
+ const myAdded = (editH?.addedLines ?? 0) * editHistoryCoefficients.linesAddedNorm
+ const myDeleted = (editH?.deletedLines ?? 0) * editHistoryCoefficients.linesDeletedNorm
+ const myChanged = (editH?.changedCharacters ?? 0) * editHistoryCoefficients.changedCharsNorm
+
+ // 6. Language
+ const lang = this.features.language
+ const myLangCoef = languageCoefficients[lang] ?? 0
+
+ // 7. Keyword
+ const kw = this.features.keyword
+ const myKeywordCoef = keyWordCoefficients[kw] ?? 0
+
+ // 8. AR
+ const myArCoef = arCoefficients.previous5 * this.features.userAR
+
+ // Linear combination result
+ const logit =
+ myLastCharCoef +
+ myLastLineLengthCoef +
+ myLeftContextLineCountCoef +
+ myRightContextLineCountCoef +
+ myAdded +
+ myDeleted +
+ myChanged +
+ myLangCoef +
+ myKeywordCoef +
+ myArCoef +
+ EditClassifier.INTERCEPT
+
+ const probability = sigmoid(logit)
+
+ this.logging.log(`classifier:
+"logit": ${logit},
+"probability": ${probability},
+"threshold": ${EditClassifier.THRESHOLD},
+@@features@@
+${JSON.stringify(this.features, undefined, 2)}
+@@linear combination of features@@
+${JSON.stringify(
+ {
+ lastChar: myLastCharCoef,
+ lastLineLength: myLastLineLengthCoef,
+ leftContextLineCount: myLeftContextLineCountCoef,
+ rightContextLineCount: myRightContextLineCountCoef,
+ addedLines: myAdded,
+ deletedLines: myDeleted,
+ changedChars: myChanged,
+ language: myLangCoef,
+ keyword: myKeywordCoef,
+ ar: myArCoef,
+ intercept: EditClassifier.INTERCEPT,
+ },
+ undefined,
+ 2
+)}`)
+
+ return probability
+ }
+
+ prepareFeatures(params: EditAutoTriggerInput): EditClassifierFeatures {
+ // 1. Last Character
+ const lastCharacter = params.triggerChar
+
+ // 2. Last Line Length
+ const lastLineLength = params.fileContext.leftContextAtCurLine.length
+
+ // 3. Left Context Line Count
+ const leftContextLineCount = params.fileContext.leftFileContent.split('\n').length
+
+ // 4. Right Context Line Count
+ const rightContextLineCount = params.fileContext.rightFileContent.split('\n').length
+
+ // 5. Edit History (only using olderst)
+ const oldest =
+ params.recentEdits.supplementalContextItems[params.recentEdits.supplementalContextItems.length - 1] // nullable
+
+ const editHistory = oldest ? EditClassifier.processEditHistory(oldest.content) : undefined
+ const normalizedEditHistory = editHistory ? EditClassifier.normalizedRecentEdit(editHistory) : undefined
+
+ this.logging.log(`lastLineFileContext:
+${params.fileContext.leftContextAtCurLine}
+recent decisions:
+${JSON.stringify(params.recentDecisions)}
+recent edits:
+@@raw oldest edit@@
+${oldest.content}
+@@raw numbers@@
+${JSON.stringify(editHistory, undefined, 2)}
+@@normalized numbers@@
+${JSON.stringify(normalizedEditHistory, undefined, 2)}
+@@edits array@@
+${params.recentEdits.supplementalContextItems.map(it => it.content)}`)
+
+ // 6. Language
+ const lang = params.fileContext.programmingLanguage
+
+ // 7. Keywords
+ const lastToken = lastTokenFromString(params.fileContext.leftFileContent)
+
+ // 8. User AR for last 5
+ // Cold start we assume 0.3 for AR
+ const ar =
+ params.recentDecisions.length === 0
+ ? 0.3
+ : params.recentDecisions.reduce((acc: number, cur: UserTriggerDecision) => {
+ if (cur === 'Accept') {
+ return acc + 1
+ } else {
+ return acc
+ }
+ }, 0) / params.recentDecisions.length
+
+ return {
+ lastCharacter: lastCharacter,
+ lastLineLength: lastLineLength,
+ leftContextLineCount: leftContextLineCount,
+ rightContextLineCount: rightContextLineCount,
+ normalizedEditHistory: normalizedEditHistory,
+ language: lang.languageName,
+ userAR: ar,
+ keyword: lastToken,
+ }
+ }
+
+ static processEditHistory(udiff: string): EditHistoryFeature {
+ const lines = udiff.split('\n')
+ const addedLines = lines
+ .filter(line => line.startsWith('+') && !line.startsWith('+++'))
+ .map(line => line.substring(1))
+ const deletedLines = lines
+ .filter(line => line.startsWith('-') && !line.startsWith('---'))
+ .map(line => line.substring(1))
+
+ const deletedText = deletedLines.join('\n')
+ const addedText = addedLines.join('\n')
+
+ const historyChangedChars = EditClassifier.editDistance(deletedText, addedText)
+ const historyLineAdded = addedLines.length
+ const historyLineDeleted = deletedLines.length
+
+ return {
+ changedCharacters: historyChangedChars,
+ addedLines: historyLineAdded,
+ deletedLines: historyLineDeleted,
+ }
+ }
+
+ static normalizedRecentEdit(edit: EditHistoryFeature): EditHistoryFeature {
+ // Apply min-max normalization using training data min/max values
+ const { changedCharacters, addedLines, deletedLines } = edit
+
+ const trainingCharsChangedMin = 0
+ const trainingCharsChangedMax = 261
+ const normalizedChangedCharacters =
+ (changedCharacters - trainingCharsChangedMin) / (trainingCharsChangedMax - trainingCharsChangedMin)
+
+ const trainingLineAddedMin = 0
+ const trainingLineAddedMax = 7
+ const normalizedAddedLines = (addedLines - trainingLineAddedMin) / (trainingLineAddedMax - trainingLineAddedMin)
+
+ const trainingLineDeletedMin = 0
+ const trainingLineDeletedMax = 6
+ const normalizedDeletedLines =
+ (deletedLines - trainingLineDeletedMin) / (trainingLineDeletedMax - trainingLineDeletedMin)
+
+ return {
+ changedCharacters: normalizedChangedCharacters,
+ addedLines: normalizedAddedLines,
+ deletedLines: normalizedDeletedLines,
+ }
+ }
+
+ // TODO: Maybe consider reusing same logic across the entire repo or 3rd party edit distance function, we have too many different variants of such
+ static editDistance(s1: string, s2: string): number {
+ if (s1.length === 0) return s2.length
+ if (s2.length === 0) return s1.length
+
+ // Create matrix
+ const rows: number = s1.length + 1
+ const cols: number = s2.length + 1
+ const dp: number[][] = Array(rows)
+ .fill(0)
+ .map(() => Array(cols).fill(0))
+
+ // Initialize first row and column
+ for (let i = 0; i < rows; i++) {
+ dp[i][0] = i
+ }
+ for (let j = 0; j < cols; j++) {
+ dp[0][j] = j
+ }
+
+ // Fill the matrix
+ for (let i = 1; i < rows; i++) {
+ for (let j = 1; j < cols; j++) {
+ if (s1[i - 1] === s2[j - 1]) {
+ dp[i][j] = dp[i - 1][j - 1]
+ } else {
+ dp[i][j] =
+ 1 +
+ Math.min(
+ dp[i - 1][j], // deletion
+ dp[i][j - 1], // insertion
+ dp[i - 1][j - 1] // substitution
+ )
+ }
+ }
+ }
+
+ return dp[rows - 1][cols - 1]
+ }
+}
diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/codeWhispererServer.test.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/codeWhispererServer.test.ts
index e15400434c..b86ec13356 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/codeWhispererServer.test.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/codeWhispererServer.test.ts
@@ -10,9 +10,9 @@ import {
} from '@aws/language-server-runtimes/server-interface'
import { TestFeatures } from '@aws/language-server-runtimes/testing'
import * as assert from 'assert'
-import { AWSError } from 'aws-sdk'
+import { ServiceException } from '@smithy/smithy-client'
import sinon, { StubbedInstance } from 'ts-sinon'
-import { CodewhispererServerFactory, getLanguageIdFromUri } from './codeWhispererServer'
+import { CodeWhispererServer, CodewhispererServerFactory } from './codeWhispererServer'
import {
CodeWhispererServiceBase,
CodeWhispererServiceToken,
@@ -27,7 +27,6 @@ import {
EXPECTED_REFERENCE,
EXPECTED_RESPONSE_CONTEXT,
EXPECTED_RESULT,
- EXPECTED_RESULT_EDITS,
EXPECTED_RESULT_WITHOUT_IMPORTS,
EXPECTED_RESULT_WITHOUT_REFERENCES,
EXPECTED_RESULT_WITH_IMPORTS,
@@ -52,15 +51,16 @@ import {
SPECIAL_CHARACTER_HELLO_WORLD,
stubCodeWhispererService,
} from '../../shared/testUtils'
-import { CodeDiffTracker } from './codeDiffTracker'
+import { CodeDiffTracker } from './tracker/codeDiffTracker'
import { TelemetryService } from '../../shared/telemetry/telemetryService'
import { initBaseTestServiceManager, TestAmazonQServiceManager } from '../../shared/amazonQServiceManager/testUtils'
+import * as utils from '../../shared/utils'
import { LocalProjectContextController } from '../../shared/localProjectContextController'
import { URI } from 'vscode-uri'
import { INVALID_TOKEN } from '../../shared/constants'
import { AmazonQError } from '../../shared/amazonQServiceManager/errors'
import * as path from 'path'
-import { CONTEXT_CHARACTERS_LIMIT } from './constants'
+import { CONTEXT_CHARACTERS_LIMIT } from './contants/constants'
import { IdleWorkspaceManager } from '../workspaceContext/IdleWorkspaceManager'
const updateConfiguration = async (
@@ -107,6 +107,33 @@ describe('CodeWhisperer Server', () => {
.callsFake(StubSessionIdGenerator)
sessionManager = SessionManager.getInstance()
sessionManagerSpy = sandbox.spy(sessionManager)
+
+ // Stub the global service manager functions to ensure they return test service managers
+ sandbox
+ .stub(
+ require('../../shared/amazonQServiceManager/AmazonQTokenServiceManager'),
+ 'getOrThrowBaseTokenServiceManager'
+ )
+ .callsFake(() => {
+ // Create a new test service manager
+ return TestAmazonQServiceManager.getInstance()
+ })
+
+ // Also stub the IAM service manager
+ sandbox
+ .stub(
+ require('../../shared/amazonQServiceManager/AmazonQIAMServiceManager'),
+ 'getOrThrowBaseIAMServiceManager'
+ )
+ .callsFake(() => {
+ // Return the same test service manager
+ return TestAmazonQServiceManager.getInstance()
+ })
+
+ // Reset AmazonQTokenServiceManager singleton to prevent cross-test interference
+ const AmazonQTokenServiceManager =
+ require('../../shared/amazonQServiceManager/AmazonQTokenServiceManager').AmazonQTokenServiceManager
+ AmazonQTokenServiceManager.resetInstance()
})
afterEach(() => {
@@ -115,6 +142,14 @@ describe('CodeWhisperer Server', () => {
sandbox.restore()
sinon.restore()
SESSION_IDS_LOG = []
+
+ // Reset all service manager singletons to prevent cross-test interference
+ const AmazonQTokenServiceManager =
+ require('../../shared/amazonQServiceManager/AmazonQTokenServiceManager').AmazonQTokenServiceManager
+ const AmazonQIAMServiceManager =
+ require('../../shared/amazonQServiceManager/AmazonQIAMServiceManager').AmazonQIAMServiceManager
+ AmazonQTokenServiceManager.resetInstance()
+ AmazonQIAMServiceManager.resetInstance()
})
describe('Recommendations', () => {
@@ -648,7 +683,8 @@ describe('CodeWhisperer Server', () => {
it('handles partialResultToken in request', async () => {
const manager = SessionManager.getInstance()
- manager.createSession(SAMPLE_SESSION_DATA)
+ const session = manager.createSession(SAMPLE_SESSION_DATA)
+ manager.activateSession(session)
await features.doInlineCompletionWithReferences(
{
textDocument: { uri: SOME_FILE.uri },
@@ -728,12 +764,12 @@ describe('CodeWhisperer Server', () => {
const secondCallArgs = service.generateSuggestions.secondCall.args[0]
// Verify context truncation in first call
- assert.strictEqual(firstCallArgs.fileContext.leftFileContent.length, CONTEXT_CHARACTERS_LIMIT)
- assert.strictEqual(firstCallArgs.fileContext.rightFileContent.length, CONTEXT_CHARACTERS_LIMIT)
+ assert.strictEqual(firstCallArgs.fileContext?.leftFileContent?.length, CONTEXT_CHARACTERS_LIMIT)
+ assert.strictEqual(firstCallArgs.fileContext.rightFileContent?.length, CONTEXT_CHARACTERS_LIMIT)
// Verify context truncation in second call (pagination)
- assert.strictEqual(secondCallArgs.fileContext.leftFileContent.length, CONTEXT_CHARACTERS_LIMIT)
- assert.strictEqual(secondCallArgs.fileContext.rightFileContent.length, CONTEXT_CHARACTERS_LIMIT)
+ assert.strictEqual(secondCallArgs.fileContext?.leftFileContent?.length, CONTEXT_CHARACTERS_LIMIT)
+ assert.strictEqual(secondCallArgs.fileContext.rightFileContent?.length, CONTEXT_CHARACTERS_LIMIT)
// Verify second call included the nextToken
assert.strictEqual(secondCallArgs.nextToken, EXPECTED_NEXT_TOKEN)
@@ -1442,6 +1478,7 @@ describe('CodeWhisperer Server', () => {
const sessionData: SessionData = {
document: TextDocument.create('file:///rightContext.cs', 'csharp', 1, HELLO_WORLD_IN_CSHARP),
+ startPreprocessTimestamp: 0,
startPosition: { line: 0, character: 0 },
triggerType: 'OnDemand',
language: 'csharp',
@@ -1737,7 +1774,7 @@ describe('CodeWhisperer Server', () => {
},
errorData: {
reason: 'TestError',
- errorCode: undefined,
+ errorCode: 'TestError',
httpStatusCode: undefined,
},
}
@@ -1789,13 +1826,16 @@ describe('CodeWhisperer Server', () => {
sinon.assert.calledOnceWithExactly(features.telemetry.emitMetric, expectedServiceInvocationMetric)
})
- it('should emit Failure ServiceInvocation telemetry with request metadata on failed response with AWSError error type', async () => {
- const error: AWSError = new Error('Fake Error') as AWSError
- error.name = 'TestAWSError'
- error.code = 'TestErrorStatusCode'
- error.statusCode = 500
- error.time = new Date()
- error.requestId = 'failed-request-id'
+ it('should emit Failure ServiceInvocation telemetry with request metadata on failed response with ServiceException error type', async () => {
+ const error = new ServiceException({
+ name: 'TestServiceException',
+ $fault: 'client',
+ $metadata: {
+ httpStatusCode: 500,
+ requestId: 'failed-request-id',
+ },
+ message: 'Fake Error',
+ })
service.generateSuggestions.callsFake(_request => {
clock.tick(1000)
@@ -1822,7 +1862,7 @@ describe('CodeWhisperer Server', () => {
codewhispererLastSuggestionIndex: -1,
codewhispererTriggerType: 'OnDemand',
codewhispererAutomatedTriggerType: undefined,
- reason: 'CodeWhisperer Invocation Exception: TestAWSError',
+ reason: 'CodeWhisperer Invocation Exception: TestServiceException',
duration: 1000,
codewhispererLineNumber: 0,
codewhispererCursorOffset: 0,
@@ -1838,8 +1878,8 @@ describe('CodeWhisperer Server', () => {
traceId: 'notSet',
},
errorData: {
- reason: 'TestAWSError',
- errorCode: 'TestErrorStatusCode',
+ reason: 'TestServiceException',
+ errorCode: 'TestServiceException',
httpStatusCode: 500,
},
}
@@ -2394,51 +2434,79 @@ describe('CodeWhisperer Server', () => {
TestAmazonQServiceManager.resetInstance()
})
})
- describe('getLanguageIdFromUri', () => {
- it('should return python for notebook cell URIs', () => {
- const uri = 'vscode-notebook-cell:/some/path/notebook.ipynb#cell1'
- assert.strictEqual(getLanguageIdFromUri(uri), 'python')
- })
- it('should return abap for files with ABAP extensions', () => {
- const uris = ['file:///path/to/file.asprog']
+ describe('IAM Error Handling', () => {
+ it('should handle IAM access denied errors', async () => {
+ const service = sinon.createStubInstance(
+ CodeWhispererServiceToken
+ ) as StubbedInstance
+ service.generateSuggestions.rejects(new Error('not authorized'))
- uris.forEach(uri => {
- assert.strictEqual(getLanguageIdFromUri(uri), 'abap')
- })
- })
+ const features = new TestFeatures()
+ //@ts-ignore
+ features.logging = console
- it('should return empty string for non-ABAP files', () => {
- const uris = ['file:///path/to/file.js', 'file:///path/to/file.ts', 'file:///path/to/file.py']
+ TestAmazonQServiceManager.resetInstance()
+ const server = CodewhispererServerFactory(() => initBaseTestServiceManager(features, service))
+ features.lsp.workspace.getConfiguration.returns(Promise.resolve({}))
+ await startServer(features, server)
+ features.openDocument(SOME_FILE)
- uris.forEach(uri => {
- assert.strictEqual(getLanguageIdFromUri(uri), '')
- })
+ const result = await features.doInlineCompletionWithReferences(
+ {
+ textDocument: { uri: SOME_FILE.uri },
+ position: { line: 0, character: 0 },
+ context: { triggerKind: InlineCompletionTriggerKind.Invoked },
+ },
+ CancellationToken.None
+ )
+
+ assert.deepEqual(result, EMPTY_RESULT)
+ TestAmazonQServiceManager.resetInstance()
})
+ })
- it('should return empty string for invalid URIs', () => {
- const invalidUris = ['', 'invalid-uri', 'file:///']
+ describe('Dynamic Service Manager Selection', () => {
+ it('should use Token service manager when not using IAM auth', async () => {
+ // Create isolated stubs for this test only
+ const isUsingIAMAuthStub = sinon.stub(utils, 'isUsingIAMAuth').returns(false)
+ const mockTokenService = TestAmazonQServiceManager.initInstance(new TestFeatures())
+ mockTokenService.withCodeWhispererService(stubCodeWhispererService())
- invalidUris.forEach(uri => {
- assert.strictEqual(getLanguageIdFromUri(uri), '')
- })
- })
+ const features = new TestFeatures()
+ const server = CodeWhispererServer
+
+ try {
+ await startServer(features, server)
- it('should log errors when provided with a logging object', () => {
- const mockLogger = {
- log: sinon.spy(),
+ // Verify the correct service manager function was called
+ sinon.assert.calledWith(isUsingIAMAuthStub, features.credentialsProvider)
+ } finally {
+ isUsingIAMAuthStub.restore()
+ features.dispose()
+ TestAmazonQServiceManager.resetInstance()
}
+ })
- const invalidUri = {} as string // Force type error
- getLanguageIdFromUri(invalidUri, mockLogger)
+ it('should use IAM service manager when using IAM auth', async () => {
+ // Create isolated stubs for this test only
+ const isUsingIAMAuthStub = sinon.stub(utils, 'isUsingIAMAuth').returns(true)
+ const mockIAMService = TestAmazonQServiceManager.initInstance(new TestFeatures())
+ mockIAMService.withCodeWhispererService(stubCodeWhispererService())
- sinon.assert.calledOnce(mockLogger.log)
- sinon.assert.calledWith(mockLogger.log, sinon.match(/Error parsing URI to determine language:.*/))
- })
+ const features = new TestFeatures()
+ const server = CodeWhispererServer
+
+ try {
+ await startServer(features, server)
- it('should handle URIs without extensions', () => {
- const uri = 'file:///path/to/file'
- assert.strictEqual(getLanguageIdFromUri(uri), '')
+ // Verify the correct service manager function was called
+ sinon.assert.calledWith(isUsingIAMAuthStub, features.credentialsProvider)
+ } finally {
+ isUsingIAMAuthStub.restore()
+ features.dispose()
+ TestAmazonQServiceManager.resetInstance()
+ }
})
})
})
diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/codeWhispererServer.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/codeWhispererServer.ts
index 330cf54735..3e8461a576 100644
--- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/codeWhispererServer.ts
+++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/codeWhispererServer.ts
@@ -1,108 +1,35 @@
import {
CancellationToken,
InitializeParams,
- InlineCompletionItemWithReferences,
InlineCompletionListWithReferences,
- InlineCompletionTriggerKind,
InlineCompletionWithReferencesParams,
- LogInlineCompletionSessionResultsParams,
- Position,
- Range,
Server,
- TextDocument,
- ResponseError,
- LSPErrorCodes,
} from '@aws/language-server-runtimes/server-interface'
-import { autoTrigger, getAutoTriggerType, getNormalizeOsName, triggerType } from './auto-trigger/autoTrigger'
-import {
- FileContext,
- GenerateSuggestionsRequest,
- GenerateSuggestionsResponse,
- getFileContext,
- Suggestion,
- SuggestionType,
-} from '../../shared/codeWhispererService'
-import { CodewhispererLanguage, getSupportedLanguageId } from '../../shared/languageDetection'
-import { mergeEditSuggestionsWithFileContext, truncateOverlapWithRightContext } from './mergeRightUtils'
-import { CodeWhispererSession, SessionManager } from './session/sessionManager'
-import { CodePercentageTracker } from './codePercentage'
-import { getCompletionType, getEndPositionForAcceptedSuggestion, getErrorMessage, safeGet } from '../../shared/utils'
-import { getIdeCategory, makeUserContextObject } from '../../shared/telemetryUtils'
-import { textUtils } from '@aws/lsp-core'
+import { getSupportedLanguageId } from '../../shared/languageDetection'
+import { SessionManager } from './session/sessionManager'
+import { CodePercentageTracker } from './tracker/codePercentageTracker'
+import { safeGet } from '../../shared/utils'
+import { makeUserContextObject } from '../../shared/telemetryUtils'
import { TelemetryService } from '../../shared/telemetry/telemetryService'
-import { AcceptedInlineSuggestionEntry, CodeDiffTracker } from './codeDiffTracker'
-import {
- AmazonQError,
- AmazonQServiceConnectionExpiredError,
- AmazonQServiceInitializationError,
-} from '../../shared/amazonQServiceManager/errors'
+import { AcceptedInlineSuggestionEntry, CodeDiffTracker } from './tracker/codeDiffTracker'
+import { AmazonQServiceInitializationError } from '../../shared/amazonQServiceManager/errors'
import { AmazonQBaseServiceManager } from '../../shared/amazonQServiceManager/BaseAmazonQServiceManager'
import { getOrThrowBaseTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'
import { AmazonQWorkspaceConfig } from '../../shared/amazonQServiceManager/configurationUtils'
-import { hasConnectionExpired } from '../../shared/utils'
import { getOrThrowBaseIAMServiceManager } from '../../shared/amazonQServiceManager/AmazonQIAMServiceManager'
-import { WorkspaceFolderManager } from '../workspaceContext/workspaceFolderManager'
import { UserWrittenCodeTracker } from '../../shared/userWrittenCodeTracker'
import { RecentEditTracker, RecentEditTrackerDefaultConfig } from './tracker/codeEditTracker'
import { CursorTracker } from './tracker/cursorTracker'
import { RejectedEditTracker, DEFAULT_REJECTED_EDIT_TRACKER_CONFIG } from './tracker/rejectedEditTracker'
import { StreakTracker } from './tracker/streakTracker'
-import { getAddedAndDeletedLines, getCharacterDifferences } from './diffUtils'
-import {
- emitPerceivedLatencyTelemetry,
- emitServiceInvocationFailure,
- emitServiceInvocationTelemetry,
- emitUserTriggerDecisionTelemetry,
-} from './telemetry'
import { DocumentChangedListener } from './documentChangedListener'
-import { EditCompletionHandler } from './editCompletionHandler'
-import { EMPTY_RESULT, ABAP_EXTENSIONS } from './constants'
-import { IdleWorkspaceManager } from '../workspaceContext/IdleWorkspaceManager'
-import { URI } from 'vscode-uri'
-
-const mergeSuggestionsWithRightContext = (
- rightFileContext: string,
- suggestions: Suggestion[],
- includeImportsWithSuggestions: boolean,
- range?: Range
-): InlineCompletionItemWithReferences[] => {
- return suggestions.map(suggestion => {
- const insertText: string = truncateOverlapWithRightContext(rightFileContext, suggestion.content)
- let references = suggestion.references
- ?.filter(
- ref =>
- !(
- ref.recommendationContentSpan?.start && insertText.length <= ref.recommendationContentSpan.start
- ) && insertText.length
- )
- .map(r => {
- return {
- licenseName: r.licenseName,
- referenceUrl: r.url,
- referenceName: r.repository,
- position: r.recommendationContentSpan && {
- startCharacter: r.recommendationContentSpan.start,
- endCharacter: r.recommendationContentSpan.end
- ? Math.min(r.recommendationContentSpan.end, insertText.length - 1)
- : r.recommendationContentSpan.end,
- },
- }
- })
-
- return {
- itemId: suggestion.itemId,
- insertText: insertText,
- range,
- references: references?.length ? references : undefined,
- mostRelevantMissingImports: includeImportsWithSuggestions
- ? suggestion.mostRelevantMissingImports
- : undefined,
- }
- })
-}
+import { EditCompletionHandler } from './handler/editCompletionHandler'
+import { InlineCompletionHandler } from './handler/inlineCompletionHandler'
+import { SessionResultsHandler } from './handler/sessionResultsHandler'
+import { isUsingIAMAuth } from '../../shared/utils'
export const CodewhispererServerFactory =
- (serviceManager: () => AmazonQBaseServiceManager): Server =>
+ (serviceManager: (credentialsProvider?: any) => AmazonQBaseServiceManager): Server =>
({ credentialsProvider, lsp, workspace, telemetry, logging, runtime, sdkInitializator }) => {
let lastUserModificationTime: number
let timeSinceLastUserModification: number = 0
@@ -125,6 +52,7 @@ export const CodewhispererServerFactory =
let userWrittenCodeTracker: UserWrittenCodeTracker | undefined
let codeDiffTracker: CodeDiffTracker