From d3e8198c08f63fc4377d540d43ead6a46068a678 Mon Sep 17 00:00:00 2001 From: Netraj Patel Date: Fri, 20 Mar 2026 19:06:28 +0530 Subject: [PATCH] Replaced in-memory cache with file based cache in branches --- .talismanrc | 26 +- package-lock.json | 3402 +++++++++-------- packages/contentstack-audit/README.md | 16 +- packages/contentstack-auth/README.md | 2 +- packages/contentstack-bootstrap/README.md | 2 +- packages/contentstack-branches/README.md | 6 +- packages/contentstack-branches/package.json | 4 +- .../src/branch/diff-handler.ts | 147 +- .../src/branch/merge-handler.ts | 120 +- .../src/commands/cm/branches/merge.ts | 24 +- .../contentstack-branches/src/config/index.ts | 11 +- .../src/interfaces/index.ts | 20 + .../src/utils/branch-diff-utility.ts | 326 +- .../src/utils/cache-manager.ts | 178 + .../contentstack-branches/src/utils/index.ts | 17 +- .../src/utils/merge-helper.ts | 100 +- .../unit/commands/cm/branches/create.test.js | 58 + .../unit/commands/cm/branches/delete.test.js | 87 + .../unit/commands/cm/branches/diff.test.js | 56 + .../unit/commands/cm/branches/list.test.js | 60 + .../unit/commands/cm/branches/merge.test.js | 38 + .../unit/mock/contentstack-management-sdk.js | 40 + .../test/unit/mock/data.js | 895 +++++ .../test/unit/utils/cache-manager.test.ts | 43 + .../unit/utils/create-branch-handler.test.js | 0 .../unit/utils/create-merge-scripts.test.js | 70 + .../test/unit/utils/csv-utility.test.js | 195 + .../unit/utils/diff-branch-handler.test.js | 229 ++ .../test/unit/utils/interactive.test.js | 122 + .../unit/utils/merge-branch-handler.test.ts | 59 +- .../unit/utils/validate-compare-data.test.ts | 69 + packages/contentstack-bulk-publish/README.md | 2 +- packages/contentstack-clone/README.md | 2 +- packages/contentstack-config/README.md | 2 +- packages/contentstack-export/README.md | 2 +- packages/contentstack-import-setup/README.md | 2 +- packages/contentstack-import/README.md | 2 +- packages/contentstack-migrate-rte/README.md | 2 +- .../contentstack-migrate-rte/package.json | 4 +- packages/contentstack-migration/README.md | 4 +- packages/contentstack-variants/package.json | 4 +- packages/contentstack/README.md | 21 +- packages/contentstack/package.json | 6 +- pnpm-lock.yaml | 276 +- 44 files changed, 4789 insertions(+), 1962 deletions(-) create mode 100644 packages/contentstack-branches/src/utils/cache-manager.ts create mode 100644 packages/contentstack-branches/test/unit/commands/cm/branches/create.test.js create mode 100644 packages/contentstack-branches/test/unit/commands/cm/branches/delete.test.js create mode 100644 packages/contentstack-branches/test/unit/commands/cm/branches/diff.test.js create mode 100644 packages/contentstack-branches/test/unit/commands/cm/branches/list.test.js create mode 100644 packages/contentstack-branches/test/unit/commands/cm/branches/merge.test.js create mode 100644 packages/contentstack-branches/test/unit/mock/contentstack-management-sdk.js create mode 100644 packages/contentstack-branches/test/unit/mock/data.js create mode 100644 packages/contentstack-branches/test/unit/utils/cache-manager.test.ts create mode 100644 packages/contentstack-branches/test/unit/utils/create-branch-handler.test.js create mode 100644 packages/contentstack-branches/test/unit/utils/create-merge-scripts.test.js create mode 100644 packages/contentstack-branches/test/unit/utils/csv-utility.test.js create mode 100644 packages/contentstack-branches/test/unit/utils/diff-branch-handler.test.js create mode 100644 packages/contentstack-branches/test/unit/utils/interactive.test.js create mode 100644 packages/contentstack-branches/test/unit/utils/validate-compare-data.test.ts diff --git a/.talismanrc b/.talismanrc index 723f974450..6721f48866 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,8 +1,22 @@ fileignoreconfig: -- filename: package-lock.json - checksum: 10993a3e930b77c3c6e09afcb50c23e6a8a901302172b699e92b0a4bfec0cffa -- filename: pnpm-lock.yaml - checksum: 3e47ed021491e9f3c21d25e4ea72a1101b51f16ebedd279019df1792b72417a4 -- filename: packages/contentstack-bootstrap/src/bootstrap/utils.ts - checksum: 6e6fb00bb11b03141e5ad27eeaa4af9718dc30520c3e73970bc208cc0ba2a7d2 + - filename: pnpm-lock.yaml + checksum: 8a476e69987ac9fda9f8b622cbbf3c35d0625654f0a8b0510e37d17af0b15948 + - filename: package-lock.json + checksum: 001e74018a692910c4748816ae9d2ac06d0a105681b89d421a9e99481fb8196c + - filename: packages/contentstack-branches/test/unit/commands/cm/branches/create.test.js + checksum: ee5622594afb486aec7ffe3fa03162bee4e74bc6578358cb515636faaf79f0fd + - filename: packages/contentstack-branches/test/unit/utils/interactive.test.js + checksum: a11c00354f2c770ca2195c368bcaa35d5b2b857ff11edda55d820285f9b262ef + - filename: packages/contentstack-branches/test/unit/commands/cm/branches/delete.test.js + checksum: 9e62382be1b51f123563458b0ee7e530f8ce8cd81e3ddc4a7f709c5a15cdda5a + - filename: packages/contentstack-branches/test/unit/utils/create-merge-scripts.test.js + checksum: bec39d1d3fa042d388c3a5b1ddebd9aef7d970384a1fde7c40399bb7d5854585 + - filename: packages/contentstack-branches/src/branch/merge-handler.ts + checksum: 5216f83ab87f3f0c20ee537b1fc16f9c9b3e980b6f4ddf8f8154c9f72dd6efda + - filename: packages/contentstack-branches/test/unit/commands/cm/branches/list.test.js + checksum: 33686e7e986ccc98e3c7fc2b1b6933b04714e0cff1e5b4254b863ff4c202e951 + - filename: packages/contentstack-branches/test/unit/utils/diff-branch-handler.test.js + checksum: 83a9b67bfa5c0dd7a8f6735dac546da77ba49da592c2285e2fa7f7a17d4731ba + - filename: packages/contentstack-branches/test/unit/mock/data.js + checksum: 783c530873621536d5763dcc7e03f7fe23e324f0f4bb42244d28a85b9e936f75 version: '1.0' diff --git a/package-lock.json b/package-lock.json index 5afcc1045b..b37d189688 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,9 +20,9 @@ } }, "node_modules/@apollo/client": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.14.0.tgz", - "integrity": "sha512-0YQKKRIxiMlIou+SekQqdCo0ZTHxOcES+K8vKB53cIDpwABNR0P0yRzPgsbgcj3zRJniD93S/ontsnZsCLZrxQ==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.14.1.tgz", + "integrity": "sha512-SgGX6E23JsZhUdG2anxiyHvEvvN6CUaI4ZfMsndZFeuHPXL3H0IsaiNAhLITSISbeyeYd+CBd9oERXQDdjXWZw==", "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", @@ -61,6 +61,36 @@ } } }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/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==", + "license": "ISC" + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz", + "integrity": "sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==", + "license": "MIT", + "dependencies": { + "bidi-js": "^1.0.3", + "css-tree": "^2.3.1", + "is-potential-custom-element-name": "^1.0.1" + } + }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", @@ -280,52 +310,52 @@ } }, "node_modules/@aws-sdk/client-cloudfront": { - "version": "3.999.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.999.0.tgz", - "integrity": "sha512-Ua/rtidq/lSqBV8Fi5pNj3Urxyglt9xWNaxx4vs5SvYB4X8qur+Q3TqiTODpPZHZLSulyOQ7US9qEThimOKpfQ==", + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.1009.0.tgz", + "integrity": "sha512-KRac+gkuj3u49IyWkrudHRlP/q/faTto+1xRS7Aj6cDGewMIzgdQArrdZEJoVntbaVZHLM5s/NVmWORzBWNcSw==", "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.973.15", - "@aws-sdk/credential-provider-node": "^3.972.14", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.15", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.0", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.6", - "@smithy/fetch-http-handler": "^5.3.11", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.20", - "@smithy/middleware-retry": "^4.4.37", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.12", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.0", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.36", - "@smithy/util-defaults-mode-node": "^4.2.39", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-stream": "^4.5.15", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-node": "^3.972.21", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.7", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-retry": "^4.4.42", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.41", + "@smithy/util-defaults-mode-node": "^4.2.44", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-stream": "^4.5.19", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.13", "tslib": "^2.6.2" }, "engines": { @@ -333,66 +363,66 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.999.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.999.0.tgz", - "integrity": "sha512-6ML2ls4nnOxm1kKzy2RgM+i8aS/9wgw6V91iqSibBYU/isYs8BvC2xcv8AsaWG5mOQjytjRzsBO5COxfWVPg3A==", + "version": "3.1009.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1009.0.tgz", + "integrity": "sha512-luy8CxallkoiGWTqU86ca/BbvkWJjs0oala7uIIRN1JtQxMb5i4Yl/PBZVcQFhbK9kQi0PK0GfD8gIpLkI91fw==", "dev": true, "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.973.15", - "@aws-sdk/credential-provider-node": "^3.972.14", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.6", - "@aws-sdk/middleware-expect-continue": "^3.972.6", - "@aws-sdk/middleware-flexible-checksums": "^3.973.1", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-location-constraint": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-sdk-s3": "^3.972.15", - "@aws-sdk/middleware-ssec": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.15", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/signature-v4-multi-region": "^3.996.3", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.0", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.6", - "@smithy/eventstream-serde-browser": "^4.2.10", - "@smithy/eventstream-serde-config-resolver": "^4.3.10", - "@smithy/eventstream-serde-node": "^4.2.10", - "@smithy/fetch-http-handler": "^5.3.11", - "@smithy/hash-blob-browser": "^4.2.11", - "@smithy/hash-node": "^4.2.10", - "@smithy/hash-stream-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/md5-js": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.20", - "@smithy/middleware-retry": "^4.4.37", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.12", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.0", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.36", - "@smithy/util-defaults-mode-node": "^4.2.39", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-stream": "^4.5.15", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.973.20", + "@aws-sdk/credential-provider-node": "^3.972.21", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.8", + "@aws-sdk/middleware-expect-continue": "^3.972.8", + "@aws-sdk/middleware-flexible-checksums": "^3.973.6", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-location-constraint": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-sdk-s3": "^3.972.20", + "@aws-sdk/middleware-ssec": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.21", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/signature-v4-multi-region": "^3.996.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.7", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.11", + "@smithy/eventstream-serde-browser": "^4.2.12", + "@smithy/eventstream-serde-config-resolver": "^4.3.12", + "@smithy/eventstream-serde-node": "^4.2.12", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-blob-browser": "^4.2.13", + "@smithy/hash-node": "^4.2.12", + "@smithy/hash-stream-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/md5-js": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.25", + "@smithy/middleware-retry": "^4.4.42", + "@smithy/middleware-serde": "^4.2.14", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.4.16", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.5", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.41", + "@smithy/util-defaults-mode-node": "^4.2.44", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-stream": "^4.5.19", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.13", "tslib": "^2.6.2" }, "engines": { @@ -400,24 +430,24 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.973.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.15.tgz", - "integrity": "sha512-AlC0oQ1/mdJ8vCIqu524j5RB7M8i8E24bbkZmya1CuiQxkY7SdIZAyw7NDNMGaNINQFq/8oGRMX0HeOfCVsl/A==", + "version": "3.973.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.22.tgz", + "integrity": "sha512-lY6g5L95jBNgOUitUhfV2N/W+i08jHEl3xuLODYSQH5Sf50V+LkVYBSyZRLtv2RyuXZXiV7yQ+acpswK1tlrOA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/xml-builder": "^3.972.8", - "@smithy/core": "^3.23.6", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/signature-v4": "^5.3.10", - "@smithy/smithy-client": "^4.12.0", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/xml-builder": "^3.972.14", + "@smithy/core": "^3.23.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.6", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -425,13 +455,13 @@ } }, "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.972.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.3.tgz", - "integrity": "sha512-UExeK+EFiq5LAcbHm96CQLSia+5pvpUVSAsVApscBzayb7/6dJBJKwV4/onsk4VbWSmqxDMcfuTD+pC4RxgZHg==", + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.5.tgz", + "integrity": "sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -439,16 +469,16 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.13.tgz", - "integrity": "sha512-6ljXKIQ22WFKyIs1jbORIkGanySBHaPPTOI4OxACP5WXgbcR0nDYfqNJfXEGwCK7IzHdNbCSFsNKKs0qCexR8Q==", + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.20.tgz", + "integrity": "sha512-vI0QN96DFx3g9AunfOWF3CS4cMkqFiR/WM/FyP9QHr5rZ2dKPkYwP3tCgAOvGuu9CXI7dC1vU2FVUuZ+tfpNvQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.15", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -456,21 +486,21 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.15.tgz", - "integrity": "sha512-dJuSTreu/T8f24SHDNTjd7eQ4rabr0TzPh2UTCwYexQtzG3nTDKm1e5eIdhiroTMDkPEJeY+WPkA6F9wod/20A==", + "version": "3.972.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.22.tgz", + "integrity": "sha512-aS/81smalpe7XDnuQfOq4LIPuaV2PRKU2aMTrHcqO5BD4HwO5kESOHNcec2AYfBtLtIDqgF6RXisgBnfK/jt0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.15", - "@aws-sdk/types": "^3.973.4", - "@smithy/fetch-http-handler": "^5.3.11", - "@smithy/node-http-handler": "^4.4.12", - "@smithy/property-provider": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.0", - "@smithy/types": "^4.13.0", - "@smithy/util-stream": "^4.5.15", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/types": "^3.973.6", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.5.0", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.6", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.20", "tslib": "^2.6.2" }, "engines": { @@ -478,25 +508,25 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.13.tgz", - "integrity": "sha512-JKSoGb7XeabZLBJptpqoZIFbROUIS65NuQnEHGOpuT9GuuZwag2qciKANiDLFiYk4u8nSrJC9JIOnWKVvPVjeA==", + "version": "3.972.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.22.tgz", + "integrity": "sha512-rpF8fBT0LllMDp78s62aL2A/8MaccjyJ0ORzqu+ZADeECLSrrCWIeeXsuRam+pxiAMkI1uIyDZJmgLGdadkPXw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.15", - "@aws-sdk/credential-provider-env": "^3.972.13", - "@aws-sdk/credential-provider-http": "^3.972.15", - "@aws-sdk/credential-provider-login": "^3.972.13", - "@aws-sdk/credential-provider-process": "^3.972.13", - "@aws-sdk/credential-provider-sso": "^3.972.13", - "@aws-sdk/credential-provider-web-identity": "^3.972.13", - "@aws-sdk/nested-clients": "^3.996.3", - "@aws-sdk/types": "^3.973.4", - "@smithy/credential-provider-imds": "^4.2.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/credential-provider-env": "^3.972.20", + "@aws-sdk/credential-provider-http": "^3.972.22", + "@aws-sdk/credential-provider-login": "^3.972.22", + "@aws-sdk/credential-provider-process": "^3.972.20", + "@aws-sdk/credential-provider-sso": "^3.972.22", + "@aws-sdk/credential-provider-web-identity": "^3.972.22", + "@aws-sdk/nested-clients": "^3.996.12", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -504,19 +534,19 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.13.tgz", - "integrity": "sha512-RtYcrxdnJHKY8MFQGLltCURcjuMjnaQpAxPE6+/QEdDHHItMKZgabRe/KScX737F9vJMQsmJy9EmMOkCnoC1JQ==", + "version": "3.972.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.22.tgz", + "integrity": "sha512-u33CO9zeNznlVSg9tWTCRYxaGkqr1ufU6qeClpmzAabXZa8RZxQoVXxL5T53oZJFzQYj+FImORCSsi7H7B77gQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.15", - "@aws-sdk/nested-clients": "^3.996.3", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/nested-clients": "^3.996.12", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -524,23 +554,23 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.14.tgz", - "integrity": "sha512-WqoC2aliIjQM/L3oFf6j+op/enT2i9Cc4UTxxMEKrJNECkq4/PlKE5BOjSYFcq6G9mz65EFbXJh7zOU4CvjSKQ==", + "version": "3.972.23", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.23.tgz", + "integrity": "sha512-U8tyLbLOZItuVWTH0ay9gWo4xMqZwqQbg1oMzdU4FQSkTpqXemm4X0uoKBR6llqAStgBp30ziKFJHTA43l4qMw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.13", - "@aws-sdk/credential-provider-http": "^3.972.15", - "@aws-sdk/credential-provider-ini": "^3.972.13", - "@aws-sdk/credential-provider-process": "^3.972.13", - "@aws-sdk/credential-provider-sso": "^3.972.13", - "@aws-sdk/credential-provider-web-identity": "^3.972.13", - "@aws-sdk/types": "^3.973.4", - "@smithy/credential-provider-imds": "^4.2.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/credential-provider-env": "^3.972.20", + "@aws-sdk/credential-provider-http": "^3.972.22", + "@aws-sdk/credential-provider-ini": "^3.972.22", + "@aws-sdk/credential-provider-process": "^3.972.20", + "@aws-sdk/credential-provider-sso": "^3.972.22", + "@aws-sdk/credential-provider-web-identity": "^3.972.22", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -548,17 +578,17 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.13.tgz", - "integrity": "sha512-rsRG0LQA4VR+jnDyuqtXi2CePYSmfm5GNL9KxiW8DSe25YwJSr06W8TdUfONAC+rjsTI+aIH2rBGG5FjMeANrw==", + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.20.tgz", + "integrity": "sha512-QRfk7GbA4/HDRjhP3QYR6QBr/QKreVoOzvvlRHnOuGgYJkeoPgPY3LAI1kK1ZMgZ4hH9KiGp757/ntol+INAig==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.15", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -566,19 +596,19 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.13.tgz", - "integrity": "sha512-fr0UU1wx8kNHDhTQBXioc/YviSW8iXuAxHvnH7eQUtn8F8o/FU3uu6EUMvAQgyvn7Ne5QFnC0Cj0BFlwCk+RFw==", + "version": "3.972.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.22.tgz", + "integrity": "sha512-4vqlSaUbBj4aNPVKfB6yXuIQ2Z2mvLfIGba2OzzF6zUkN437/PGWsxBU2F8QPSFHti6seckvyCXidU3H+R8NvQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.15", - "@aws-sdk/nested-clients": "^3.996.3", - "@aws-sdk/token-providers": "3.999.0", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/nested-clients": "^3.996.12", + "@aws-sdk/token-providers": "3.1013.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -586,18 +616,18 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.13.tgz", - "integrity": "sha512-a6iFMh1pgUH0TdcouBppLJUfPM7Yd3R9S1xFodPtCRoLqCz2RQFA3qjA8x4112PVYXEd4/pHX2eihapq39w0rA==", + "version": "3.972.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.22.tgz", + "integrity": "sha512-/wN1CYg2rVLhW8/jLxMWacQrkpaynnL+4j/Z+e6X1PfoE6NiC0BeOw3i0JmtZrKun85wNV5GmspvuWJihfeeUw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.15", - "@aws-sdk/nested-clients": "^3.996.3", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/nested-clients": "^3.996.12", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -605,18 +635,18 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.6.tgz", - "integrity": "sha512-3H2bhvb7Cb/S6WFsBy/Dy9q2aegC9JmGH1inO8Lb2sWirSqpLJlZmvQHPE29h2tIxzv6el/14X/tLCQ8BQU6ZQ==", + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.8.tgz", + "integrity": "sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-arn-parser": "^3.972.2", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-config-provider": "^4.2.1", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -624,15 +654,15 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.6.tgz", - "integrity": "sha512-QMdffpU+GkSGC+bz6WdqlclqIeCsOfgX8JFZ5xvwDtX+UTj4mIXm3uXu7Ko6dBseRcJz1FA6T9OmlAAY6JgJUg==", + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.8.tgz", + "integrity": "sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -640,25 +670,25 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.973.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.973.1.tgz", - "integrity": "sha512-QLXsxsI6VW8LuGK+/yx699wzqP/NMCGk/hSGP+qtB+Lcff+23UlbahyouLlk+nfT7Iu021SkXBhnAuVd6IZcPw==", + "version": "3.974.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.2.tgz", + "integrity": "sha512-4soN/N4R6ptdnHw7hXPVDZMIIL+vhN8rwtLdDyS0uD7ExhadtJzolTBIM5eKSkbw5uBEbIwtJc8HCG2NM6tN/g==", "dev": true, "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.973.15", - "@aws-sdk/crc64-nvme": "^3.972.3", - "@aws-sdk/types": "^3.973.4", - "@smithy/is-array-buffer": "^4.2.1", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-stream": "^4.5.15", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/crc64-nvme": "^3.972.5", + "@aws-sdk/types": "^3.973.6", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.20", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -666,15 +696,15 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.6.tgz", - "integrity": "sha512-5XHwjPH1lHB+1q4bfC7T8Z5zZrZXfaLcjSMwTd1HPSPrCmPFMbg3UQ5vgNWcVj0xoX4HWqTGkSf2byrjlnRg5w==", + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz", + "integrity": "sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -682,14 +712,14 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.6.tgz", - "integrity": "sha512-XdZ2TLwyj3Am6kvUc67vquQvs6+D8npXvXgyEUJAdkUDx5oMFJKOqpK+UpJhVDsEL068WAJl2NEGzbSik7dGJQ==", + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.8.tgz", + "integrity": "sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -697,14 +727,14 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.6.tgz", - "integrity": "sha512-iFnaMFMQdljAPrvsCVKYltPt2j40LQqukAbXvW7v0aL5I+1GO7bZ/W8m12WxW3gwyK5p5u1WlHg8TSAizC5cZw==", + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz", + "integrity": "sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -712,16 +742,16 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.6.tgz", - "integrity": "sha512-dY4v3of5EEMvik6+UDwQ96KfUFDk8m1oZDdkSc5lwi4o7rFrjnv0A+yTV+gu230iybQZnKgDLg/rt2P3H+Vscw==", + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.8.tgz", + "integrity": "sha512-BnnvYs2ZEpdlmZ2PNlV2ZyQ8j8AEkMTjN79y/YA475ER1ByFYrkVR85qmhni8oeTaJcDqbx364wDpitDAA/wCA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", + "@aws-sdk/types": "^3.973.6", "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -729,25 +759,25 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.15.tgz", - "integrity": "sha512-WDLgssevOU5BFx1s8jA7jj6cE5HuImz28sy9jKOaVtz0AW1lYqSzotzdyiybFaBcQTs5zxXOb2pUfyMxgEKY3Q==", + "version": "3.972.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.22.tgz", + "integrity": "sha512-dkUcRxF4rVpPbyHpxjCApGK6b7JpnSeo7tDoNakpRKmiLMCqgy4tlGBgeEYJnZgLrA4xc5jVKuXgvgqKqU18Kw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.15", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-arn-parser": "^3.972.2", - "@smithy/core": "^3.23.6", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/signature-v4": "^5.3.10", - "@smithy/smithy-client": "^4.12.0", - "@smithy/types": "^4.13.0", - "@smithy/util-config-provider": "^4.2.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-stream": "^4.5.15", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/core": "^3.23.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.6", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.20", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -755,14 +785,14 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.6.tgz", - "integrity": "sha512-acvMUX9jF4I2Ew+Z/EA6gfaFaz9ehci5wxBmXCZeulLuv8m+iGf6pY9uKz8TPjg39bdAz3hxoE0eLP8Qz+IYlA==", + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.8.tgz", + "integrity": "sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -770,18 +800,19 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.15.tgz", - "integrity": "sha512-ABlFVcIMmuRAwBT+8q5abAxOr7WmaINirDJBnqGY5b5jSDo00UMlg/G4a0xoAgwm6oAECeJcwkvDlxDwKf58fQ==", + "version": "3.972.23", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.23.tgz", + "integrity": "sha512-HQu8QoqGZZTvg0Spl9H39QTsSMFwgu+8yz/QGKndXFLk9FZMiCiIgBCVlTVKMDvVbgqIzD9ig+/HmXsIL2Rb+g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.15", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@smithy/core": "^3.23.6", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@smithy/core": "^3.23.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-retry": "^4.2.12", "tslib": "^2.6.2" }, "engines": { @@ -789,49 +820,49 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.996.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.3.tgz", - "integrity": "sha512-AU5TY1V29xqwg/MxmA2odwysTez+ccFAhmfRJk+QZT5HNv90UTA9qKd1J9THlsQkvmH7HWTEV1lDNxkQO5PzNw==", + "version": "3.996.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.12.tgz", + "integrity": "sha512-KLdQGJPSm98uLINolQ0Tol8OAbk7g0Y7zplHJ1K83vbMIH13aoCvR6Tho66xueW4l4aZlEgVGLWBnD8ifUMsGQ==", "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.973.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.15", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.0", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.6", - "@smithy/fetch-http-handler": "^5.3.11", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.20", - "@smithy/middleware-retry": "^4.4.37", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.12", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.0", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.36", - "@smithy/util-defaults-mode-node": "^4.2.39", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.23", + "@aws-sdk/region-config-resolver": "^3.972.8", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.9", + "@smithy/config-resolver": "^4.4.11", + "@smithy/core": "^3.23.12", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.26", + "@smithy/middleware-retry": "^4.4.43", + "@smithy/middleware-serde": "^4.2.15", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.5.0", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.6", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.42", + "@smithy/util-defaults-mode-node": "^4.2.45", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -839,16 +870,16 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.6.tgz", - "integrity": "sha512-Aa5PusHLXAqLTX1UKDvI3pHQJtIsF7Q+3turCHqfz/1F61/zDMWfbTC8evjhrrYVAtz9Vsv3SJ/waSUeu7B6gw==", + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.8.tgz", + "integrity": "sha512-1eD4uhTDeambO/PNIDVG19A6+v4NdD7xzwLHDutHsUqz0B+i661MwQB2eYO4/crcCvCiQG4SRm1k81k54FEIvw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/config-resolver": "^4.4.9", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.11", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -856,17 +887,17 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.3.tgz", - "integrity": "sha512-gQYI/Buwp0CAGQxY7mR5VzkP56rkWq2Y1ROkFuXh5XY94DsSjJw62B3I0N0lysQmtwiL2ht2KHI9NylM/RP4FA==", + "version": "3.996.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.10.tgz", + "integrity": "sha512-yJSbFTedh1McfqXa9wZzjchqQ2puq5PI/qRz5kUjg2UXS5mO4MBYBbeXaZ2rp/h+ZbkcYEdo4Qsiah9psyoxrA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "^3.972.15", - "@aws-sdk/types": "^3.973.4", - "@smithy/protocol-http": "^5.3.10", - "@smithy/signature-v4": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/middleware-sdk-s3": "^3.972.22", + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -874,18 +905,18 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.999.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.999.0.tgz", - "integrity": "sha512-cx0hHUlgXULfykx4rdu/ciNAJaa3AL5xz3rieCz7NKJ68MJwlj3664Y8WR5MGgxfyYJBdamnkjNSx5Kekuc0cg==", + "version": "3.1013.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1013.0.tgz", + "integrity": "sha512-IL1c54UvbuERrs9oLm5rvkzMciwhhpn1FL0SlC3XUMoLlFhdBsWJgQKK8O5fsQLxbFVqjbjFx9OBkrn44X9PHw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.15", - "@aws-sdk/nested-clients": "^3.996.3", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.22", + "@aws-sdk/nested-clients": "^3.996.12", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -893,13 +924,13 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.973.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.4.tgz", - "integrity": "sha512-RW60aH26Bsc016Y9B98hC0Plx6fK5P2v/iQYwMzrSjiDh1qRMUCP6KrXHYEHe3uFvKiOC93Z9zk4BJsUi6Tj1Q==", + "version": "3.973.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.6.tgz", + "integrity": "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -907,9 +938,9 @@ } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.972.2", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.2.tgz", - "integrity": "sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==", + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", + "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -920,16 +951,16 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.3.tgz", - "integrity": "sha512-yWIQSNiCjykLL+ezN5A+DfBb1gfXTytBxm57e64lYmwxDHNmInYHRJYYRAGWG1o77vKEiWaw4ui28e3yb1k5aQ==", + "version": "3.996.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz", + "integrity": "sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-endpoints": "^3.3.1", + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-endpoints": "^3.3.3", "tslib": "^2.6.2" }, "engines": { @@ -937,9 +968,9 @@ } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.965.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.4.tgz", - "integrity": "sha512-H1onv5SkgPBK2P6JR2MjGgbOnttoNzSPIRoeZTNPZYyaplwGg50zS3amXvXqF0/qfXpWEC9rLWU564QTB9bSog==", + "version": "3.965.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -950,29 +981,30 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.6.tgz", - "integrity": "sha512-Fwr/llD6GOrFgQnKaI2glhohdGuBDfHfora6iG9qsBBBR8xv1SdCSwbtf5CWlUdCw5X7g76G/9Hf0Inh0EmoxA==", + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", + "integrity": "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.0.tgz", - "integrity": "sha512-A9J2G4Nf236e9GpaC1JnA8wRn6u6GjnOXiTwBLA6NUJhlBTIGfrTy+K1IazmF8y+4OFdW3O5TZlhyspJMqiqjA==", + "version": "3.973.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.9.tgz", + "integrity": "sha512-jeFqqp8KD/P5O+qeKxyGeu7WEVIZFNprnkaDjGmBOjwxYwafCBhpxTgV1TlW6L8e76Vh/siNylNmN/OmSIFBUQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.15", - "@aws-sdk/types": "^3.973.4", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/middleware-user-agent": "^3.972.23", + "@aws-sdk/types": "^3.973.6", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -988,14 +1020,14 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.8.tgz", - "integrity": "sha512-Ql8elcUdYCha83Ol7NznBsgN5GVZnv3vUd86fEc6waU6oUdY0T1O9NODkEEOS/Uaogr87avDrUC6DSeM4oXjZg==", + "version": "3.972.14", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.14.tgz", + "integrity": "sha512-G/Yd8Bnnyh8QrqLf8jWJbixEnScUFW24e/wOBGYdw1Cl4r80KX/DvHyM2GVZ2vTp7J4gTEr8IXJlTadA8+UfuQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "fast-xml-parser": "5.3.6", + "@smithy/types": "^4.13.1", + "fast-xml-parser": "5.5.6", "tslib": "^2.6.2" }, "engines": { @@ -1003,9 +1035,9 @@ } }, "node_modules/@aws/lambda-invoke-store": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz", - "integrity": "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1205,14 +1237,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -1313,9 +1345,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "dependencies": { @@ -1850,6 +1882,116 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@csstools/color-helpers": { + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@dabh/diagnostics": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", @@ -1862,21 +2004,21 @@ } }, "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", + "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.1.0", + "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", + "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", "dev": true, "license": "MIT", "optional": true, @@ -1885,9 +2027,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "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==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", "dev": true, "license": "MIT", "optional": true, @@ -1913,9 +2055,9 @@ } }, "node_modules/@es-joy/jsdoccomment/node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", "dev": true, "license": "MIT", "engines": { @@ -1927,9 +2069,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", "cpu": [ "ppc64" ], @@ -1944,9 +2086,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", "cpu": [ "arm" ], @@ -1961,9 +2103,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", "cpu": [ "arm64" ], @@ -1978,9 +2120,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", "cpu": [ "x64" ], @@ -1995,9 +2137,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", "cpu": [ "arm64" ], @@ -2012,9 +2154,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", "cpu": [ "x64" ], @@ -2029,9 +2171,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", "cpu": [ "arm64" ], @@ -2046,9 +2188,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", "cpu": [ "x64" ], @@ -2063,9 +2205,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", "cpu": [ "arm" ], @@ -2080,9 +2222,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", "cpu": [ "arm64" ], @@ -2097,9 +2239,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", "cpu": [ "ia32" ], @@ -2114,9 +2256,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", "cpu": [ "loong64" ], @@ -2131,9 +2273,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", "cpu": [ "mips64el" ], @@ -2148,9 +2290,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", "cpu": [ "ppc64" ], @@ -2165,9 +2307,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", "cpu": [ "riscv64" ], @@ -2182,9 +2324,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", "cpu": [ "s390x" ], @@ -2199,9 +2341,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", "cpu": [ "x64" ], @@ -2216,9 +2358,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", "cpu": [ "arm64" ], @@ -2233,9 +2375,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", "cpu": [ "x64" ], @@ -2250,9 +2392,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", "cpu": [ "arm64" ], @@ -2267,9 +2409,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", "cpu": [ "x64" ], @@ -2284,9 +2426,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", "cpu": [ "arm64" ], @@ -2301,9 +2443,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", "cpu": [ "x64" ], @@ -2318,9 +2460,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", "cpu": [ "arm64" ], @@ -2335,9 +2477,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", "cpu": [ "ia32" ], @@ -2352,9 +2494,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", "cpu": [ "x64" ], @@ -2419,39 +2561,39 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.2.tgz", - "integrity": "sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==", + "version": "0.23.3", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz", + "integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==", "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@eslint/object-schema": "^3.0.2", + "@eslint/object-schema": "^3.0.3", "debug": "^4.3.1", - "minimatch": "^10.2.1" + "minimatch": "^10.2.4" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/config-helpers": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz", - "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz", + "integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==", "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@eslint/core": "^1.1.0" + "@eslint/core": "^1.1.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/config-helpers/node_modules/@eslint/core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz", - "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz", + "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -2504,6 +2646,13 @@ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, + "node_modules/@eslint/css-tree/node_modules/mdn-data": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.23.0.tgz", + "integrity": "sha512-786vq1+4079JSeu2XdcDjrhi/Ry7BWtjDl9WtGPWLiIHb2T66GvIVflZTBoSNZ5JqTtJGYEVMuFA/lbQlMOyDQ==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/@eslint/css/node_modules/@eslint/core": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", @@ -2677,9 +2826,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.2.tgz", - "integrity": "sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz", + "integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -2688,14 +2837,14 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz", - "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz", + "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==", "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@eslint/core": "^1.1.0", + "@eslint/core": "^1.1.1", "levn": "^0.4.1" }, "engines": { @@ -2703,9 +2852,9 @@ } }, "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz", - "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz", + "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -2942,9 +3091,9 @@ } }, "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "22.19.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.13.tgz", - "integrity": "sha512-akNQMv0wW5uyRpD2v2IEyRSZiR+BeGuoB6L310EgGObO44HSMNT8z1xzio28V8qOrgYaopIDNA18YgdXd+qTiw==", + "version": "22.19.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", + "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", "dev": true, "license": "MIT", "dependencies": { @@ -3770,9 +3919,9 @@ } }, "node_modules/@oclif/core": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@oclif/core/-/core-4.8.1.tgz", - "integrity": "sha512-07mq0vKCWNsB85ZHeBMlTAiO0KLFqHyAeRK3bD2K8CI1tX3tiwkWw1lZQZkiw8MUBrhxdROhMkYMY4Q0l7JHqA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-4.10.0.tgz", + "integrity": "sha512-T52mrztDvj7RXiURdA+6vd1B4yeYVpHF6DH/RshqEwIA6R63dhe4YoIBYWJi0H3LhCQTUTL84uWadrJAImu/vg==", "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.2", @@ -3785,7 +3934,7 @@ "indent-string": "^4.0.0", "is-wsl": "^2.2.0", "lilconfig": "^3.1.3", - "minimatch": "^10.2.1", + "minimatch": "^10.2.4", "semver": "^7.7.3", "string-width": "^4.2.3", "supports-color": "^8", @@ -3799,9 +3948,9 @@ } }, "node_modules/@oclif/plugin-help": { - "version": "6.2.37", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-6.2.37.tgz", - "integrity": "sha512-5N/X/FzlJaYfpaHwDC0YHzOzKDWa41s9t+4FpCDu4f9OMReds4JeNBaaWk9rlIzdKjh2M6AC5Q18ORfECRkHGA==", + "version": "6.2.38", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-6.2.38.tgz", + "integrity": "sha512-aTVQ8qPy5kD/Neq2B4OEo2joukHWdEabTMHfQyXtsagW1O2MvhM58+JUWADvieX67OSjSXseD6f6O/e5SA2N/Q==", "license": "MIT", "dependencies": { "@oclif/core": "^4" @@ -3811,13 +3960,13 @@ } }, "node_modules/@oclif/plugin-not-found": { - "version": "3.2.74", - "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-3.2.74.tgz", - "integrity": "sha512-6RD/EuIUGxAYR45nMQg+nw+PqwCXUxkR6Eyn+1fvbVjtb9d+60OPwB77LCRUI4zKNI+n0LOFaMniEdSpb+A7kQ==", + "version": "3.2.75", + "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-3.2.75.tgz", + "integrity": "sha512-xBEf7fJoS/fIqzGBUe0i6yc7ozo23KTyusy50DHqh+oqay5gtMLPUfr1RbvJBGGwozzFAMMFXN9o+AvUDt/zTA==", "license": "MIT", "dependencies": { "@inquirer/prompts": "^7.10.1", - "@oclif/core": "^4.8.0", + "@oclif/core": "^4.9.0", "ansis": "^3.17.0", "fast-levenshtein": "^3.0.0" }, @@ -4141,17 +4290,6 @@ } } }, - "node_modules/@oclif/plugin-not-found/node_modules/@types/node": { - "version": "25.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.2.tgz", - "integrity": "sha512-RpV6r/ij22zRRdyBPcxDeKAzH43phWVKEjL2iksqo1Vz3CuBUrgmPpPhALKiRfU7OMCmeeO9vECBMsV0hMTG8Q==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "undici-types": "~7.18.0" - } - }, "node_modules/@oclif/plugin-not-found/node_modules/cli-width": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", @@ -4198,14 +4336,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@oclif/plugin-not-found/node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/@oclif/plugin-not-found/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -4221,15 +4351,15 @@ } }, "node_modules/@oclif/plugin-plugins": { - "version": "5.4.56", - "resolved": "https://registry.npmjs.org/@oclif/plugin-plugins/-/plugin-plugins-5.4.56.tgz", - "integrity": "sha512-mZjRudlmVSr6Stz0CVFuaIZOjwZ5DqjWepQCR/yK9nbs8YunGautpuxBx/CcqaEH29xiQfsuNOIUWa1w/+3VSA==", + "version": "5.4.59", + "resolved": "https://registry.npmjs.org/@oclif/plugin-plugins/-/plugin-plugins-5.4.59.tgz", + "integrity": "sha512-W/F3vNwhC3BHmn1o4g92H8kY4rYw9RsgVRm+GDulZg0XqSoseJYCMQell6ajTj8xljrrG0dZSTuEfc4ETwC2VA==", "license": "MIT", "dependencies": { "@oclif/core": "^4.8.0", "ansis": "^3.17.0", "debug": "^4.4.0", - "npm": "^10.9.4", + "npm": "^10.9.7", "npm-package-arg": "^11.0.3", "npm-run-path": "^5.3.0", "object-treeify": "^4.0.1", @@ -4901,9 +5031,9 @@ } }, "node_modules/@sinonjs/samsam": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", - "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-9.0.3.tgz", + "integrity": "sha512-ZgYY7Dc2RW+OUdnZ1DEHg00lhRt+9BjymPKHog4PRFzr1U3MbK57+djmscWyKxzO1qfunHqs4N45WWyKIFKpiQ==", "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", @@ -4914,17 +5044,18 @@ "version": "0.7.3", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", + "deprecated": "Deprecated: no longer maintained and no longer used by Sinon packages. See\n https://github.com/sinonjs/nise/issues/243 for replacement details.", "dev": true, "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@smithy/abort-controller": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.10.tgz", - "integrity": "sha512-qocxM/X4XGATqQtUkbE9SPUB6wekBi+FyJOMbPj0AhvyvFGYEmOlz6VB22iMePCQsFmMIvFSeViDvA7mZJG47g==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.12.tgz", + "integrity": "sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -4932,9 +5063,9 @@ } }, "node_modules/@smithy/chunked-blob-reader": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.1.tgz", - "integrity": "sha512-y5d4xRiD6TzeP5BWlb+Ig/VFqF+t9oANNhGeMqyzU7obw7FYgTgVi50i5JqBTeKp+TABeDIeeXFZdz65RipNtA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz", + "integrity": "sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4945,13 +5076,13 @@ } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.2.tgz", - "integrity": "sha512-QzzYIlf4yg0w5TQaC9VId3B3ugSk1MI/wb7tgcHtd7CBV9gNRKZrhc2EPSxSZuDy10zUZ0lomNMgkc6/VVe8xg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz", + "integrity": "sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-base64": "^4.3.1", + "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -4959,17 +5090,17 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.9.tgz", - "integrity": "sha512-ejQvXqlcU30h7liR9fXtj7PIAau1t/sFbJpgWPfiYDs7zd16jpH0IsSXKcba2jF6ChTXvIjACs27kNMc5xxE2Q==", + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.13.tgz", + "integrity": "sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-config-provider": "^4.2.1", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", "tslib": "^2.6.2" }, "engines": { @@ -4977,21 +5108,21 @@ } }, "node_modules/@smithy/core": { - "version": "3.23.6", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.6.tgz", - "integrity": "sha512-4xE+0L2NrsFKpEVFlFELkIHQddBvMbQ41LRIP74dGCXnY1zQ9DgksrBcRBDJT+iOzGy4VEJIeU3hkUK5mn06kg==", + "version": "3.23.12", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.12.tgz", + "integrity": "sha512-o9VycsYNtgC+Dy3I0yrwCqv9CWicDnke0L7EVOrZtJpjb2t0EjaEofmMrYc0T1Kn3yk32zm6cspxF9u9Bj7e5w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.2.11", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-stream": "^4.5.15", - "@smithy/util-utf8": "^4.2.1", - "@smithy/uuid": "^1.1.1", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.20", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" }, "engines": { @@ -4999,16 +5130,16 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.10.tgz", - "integrity": "sha512-3bsMLJJLTZGZqVGGeBVFfLzuRulVsGTj12BzRKODTHqUABpIr0jMN1vN3+u6r2OfyhAQ2pXaMZWX/swBK5I6PQ==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.12.tgz", + "integrity": "sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", "tslib": "^2.6.2" }, "engines": { @@ -5016,15 +5147,15 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.10.tgz", - "integrity": "sha512-A4ynrsFFfSXUHicfTcRehytppFBcY3HQxEGYiyGktPIOye3Ot7fxpiy4VR42WmtGI4Wfo6OXt/c1Ky1nUFxYYQ==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.12.tgz", + "integrity": "sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.13.0", - "@smithy/util-hex-encoding": "^4.2.1", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5032,14 +5163,14 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.10.tgz", - "integrity": "sha512-0xupsu9yj9oDVuQ50YCTS9nuSYhGlrwqdaKQel9y2Fz7LU9fNErVlw9N0o4pm4qqvWEGbSTI4HKc6XJfB30MVw==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.12.tgz", + "integrity": "sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/eventstream-serde-universal": "^4.2.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5047,13 +5178,13 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.10.tgz", - "integrity": "sha512-8kn6sinrduk0yaYHMJDsNuiFpXwQwibR7n/4CDUqn4UgaG+SeBHu5jHGFdU9BLFAM7Q4/gvr9RYxBHz9/jKrhA==", + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.12.tgz", + "integrity": "sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5061,14 +5192,14 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.10.tgz", - "integrity": "sha512-uUrxPGgIffnYfvIOUmBM5i+USdEBRTdh7mLPttjphgtooxQ8CtdO1p6K5+Q4BBAZvKlvtJ9jWyrWpBJYzBKsyQ==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.12.tgz", + "integrity": "sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/eventstream-serde-universal": "^4.2.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5076,14 +5207,14 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.10.tgz", - "integrity": "sha512-aArqzOEvcs2dK+xQVCgLbpJQGfZihw8SD4ymhkwNTtwKbnrzdhJsFDKuMQnam2kF69WzgJYOU5eJlCx+CA32bw==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.12.tgz", + "integrity": "sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/eventstream-codec": "^4.2.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5091,16 +5222,16 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.11.tgz", - "integrity": "sha512-wbTRjOxdFuyEg0CpumjZO0hkUl+fetJFqxNROepuLIoijQh51aMBmzFLfoQdwRjxsuuS2jizzIUTjPWgd8pd7g==", + "version": "5.3.15", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.15.tgz", + "integrity": "sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.10", - "@smithy/querystring-builder": "^4.2.10", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5108,15 +5239,15 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.11.tgz", - "integrity": "sha512-DrcAx3PM6AEbWZxsKl6CWAGnVwiz28Wp1ZhNu+Hi4uI/6C1PIZBIaPM2VoqBDAsOWbM6ZVzOEQMxFLLdmb4eBQ==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.13.tgz", + "integrity": "sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/chunked-blob-reader": "^5.2.1", - "@smithy/chunked-blob-reader-native": "^4.2.2", - "@smithy/types": "^4.13.0", + "@smithy/chunked-blob-reader": "^5.2.2", + "@smithy/chunked-blob-reader-native": "^4.2.3", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5124,15 +5255,15 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.10.tgz", - "integrity": "sha512-1VzIOI5CcsvMDvP3iv1vG/RfLJVVVc67dCRyLSB2Hn9SWCZrDO3zvcIzj3BfEtqRW5kcMg5KAeVf1K3dR6nD3w==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.12.tgz", + "integrity": "sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-buffer-from": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/types": "^4.13.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5140,14 +5271,14 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.10.tgz", - "integrity": "sha512-w78xsYrOlwXKwN5tv1GnKIRbHb1HygSpeZMP6xDxCPGf1U/xDHjCpJu64c5T35UKyEPwa0bPeIcvU69VY3khUA==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.12.tgz", + "integrity": "sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-utf8": "^4.2.1", + "@smithy/types": "^4.13.1", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5155,13 +5286,13 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.10.tgz", - "integrity": "sha512-vy9KPNSFUU0ajFYk0sDZIYiUlAWGEAhRfehIr5ZkdFrRFTAuXEPUd41USuqHU6vvLX4r6Q9X7MKBco5+Il0Org==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.12.tgz", + "integrity": "sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5169,9 +5300,9 @@ } }, "node_modules/@smithy/is-array-buffer": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.1.tgz", - "integrity": "sha512-Yfu664Qbf1B4IYIsYgKoABt010daZjkaCRvdU/sPnZG6TtHOB0md0RjNdLGzxe5UIdn9js4ftPICzmkRa9RJ4Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", + "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5182,14 +5313,14 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.10.tgz", - "integrity": "sha512-Op+Dh6dPLWTjWITChFayDllIaCXRofOed8ecpggTC5fkh8yXes0vAEX7gRUfjGK+TlyxoCAA05gHbZW/zB9JwQ==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.12.tgz", + "integrity": "sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-utf8": "^4.2.1", + "@smithy/types": "^4.13.1", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5197,14 +5328,14 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.10.tgz", - "integrity": "sha512-TQZ9kX5c6XbjhaEBpvhSvMEZ0klBs1CFtOdPFwATZSbC9UeQfKHPLPN9Y+I6wZGMOavlYTOlHEPDrt42PMSH9w==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.12.tgz", + "integrity": "sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5212,19 +5343,19 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.20", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.20.tgz", - "integrity": "sha512-9W6Np4ceBP3XCYAGLoMCmn8t2RRVzuD1ndWPLBbv7H9CrwM9Bprf6Up6BM9ZA/3alodg0b7Kf6ftBK9R1N04vw==", + "version": "4.4.27", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.27.tgz", + "integrity": "sha512-T3TFfUgXQlpcg+UdzcAISdZpj4Z+XECZ/cefgA6wLBd6V4lRi0svN2hBouN/be9dXQ31X4sLWz3fAQDf+nt6BA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.6", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-middleware": "^4.2.10", + "@smithy/core": "^3.23.12", + "@smithy/middleware-serde": "^4.2.15", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-middleware": "^4.2.12", "tslib": "^2.6.2" }, "engines": { @@ -5232,20 +5363,20 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.37", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.37.tgz", - "integrity": "sha512-/1psZZllBBSQ7+qo5+hhLz7AEPGLx3Z0+e3ramMBEuPK2PfvLK4SrncDB9VegX5mBn+oP/UTDrM6IHrFjvX1ZA==", + "version": "4.4.44", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.44.tgz", + "integrity": "sha512-Y1Rav7m5CFRPQyM4CI0koD/bXjyjJu3EQxZZhtLGD88WIrBrQ7kqXM96ncd6rYnojwOo/u9MXu57JrEvu/nLrA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/service-error-classification": "^4.2.10", - "@smithy/smithy-client": "^4.12.0", - "@smithy/types": "^4.13.0", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/uuid": "^1.1.1", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/service-error-classification": "^4.2.12", + "@smithy/smithy-client": "^4.12.7", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.12", + "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" }, "engines": { @@ -5253,14 +5384,15 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.11.tgz", - "integrity": "sha512-STQdONGPwbbC7cusL60s7vOa6He6A9w2jWhoapL0mgVjmR19pr26slV+yoSP76SIssMTX/95e5nOZ6UQv6jolg==", + "version": "4.2.15", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.15.tgz", + "integrity": "sha512-ExYhcltZSli0pgAKOpQQe1DLFBLryeZ22605y/YS+mQpdNWekum9Ujb/jMKfJKgjtz1AZldtwA/wCYuKJgjjlg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@smithy/core": "^3.23.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5268,13 +5400,13 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.10.tgz", - "integrity": "sha512-pmts/WovNcE/tlyHa8z/groPeOtqtEpp61q3W0nW1nDJuMq/x+hWa/OVQBtgU0tBqupeXq0VBOLA4UZwE8I0YA==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.12.tgz", + "integrity": "sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5282,15 +5414,15 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.10.tgz", - "integrity": "sha512-UALRbJtVX34AdP2VECKVlnNgidLHA2A7YgcJzwSBg1hzmnO/bZBHl/LDQQyYifzUwp1UOODnl9JJ3KNawpUJ9w==", + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.12.tgz", + "integrity": "sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5298,16 +5430,16 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.4.12", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.12.tgz", - "integrity": "sha512-zo1+WKJkR9x7ZtMeMDAAsq2PufwiLDmkhcjpWPRRkmeIuOm6nq1qjFICSZbnjBvD09ei8KMo26BWxsu2BUU+5w==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.5.0.tgz", + "integrity": "sha512-Rnq9vQWiR1+/I6NZZMNzJHV6pZYyEHt2ZnuV3MG8z2NNenC4i/8Kzttz7CjZiHSmsN5frhXhg17z3Zqjjhmz1A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/querystring-builder": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/abort-controller": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5315,13 +5447,13 @@ } }, "node_modules/@smithy/property-provider": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.10.tgz", - "integrity": "sha512-5jm60P0CU7tom0eNrZ7YrkgBaoLFXzmqB0wVS+4uK8PPGmosSrLNf6rRd50UBvukztawZ7zyA8TxlrKpF5z9jw==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.12.tgz", + "integrity": "sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5329,13 +5461,13 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.10.tgz", - "integrity": "sha512-2NzVWpYY0tRdfeCJLsgrR89KE3NTWT2wGulhNUxYlRmtRmPwLQwKzhrfVaiNlA9ZpJvbW7cjTVChYKgnkqXj1A==", + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", + "integrity": "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5343,14 +5475,14 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.10.tgz", - "integrity": "sha512-HeN7kEvuzO2DmAzLukE9UryiUvejD3tMp9a1D1NJETerIfKobBUCLfviP6QEk500166eD2IATaXM59qgUI+YDA==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.12.tgz", + "integrity": "sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-uri-escape": "^4.2.1", + "@smithy/types": "^4.13.1", + "@smithy/util-uri-escape": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5358,13 +5490,13 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.10.tgz", - "integrity": "sha512-4Mh18J26+ao1oX5wXJfWlTT+Q1OpDR8ssiC9PDOuEgVBGloqg18Fw7h5Ct8DyT9NBYwJgtJ2nLjKKFU6RP1G1Q==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.12.tgz", + "integrity": "sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5372,26 +5504,26 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.10.tgz", - "integrity": "sha512-0R/+/Il5y8nB/By90o8hy/bWVYptbIfvoTYad0igYQO5RefhNCDmNzqxaMx7K1t/QWo0d6UynqpqN5cCQt1MCg==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.12.tgz", + "integrity": "sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0" + "@smithy/types": "^4.13.1" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.5.tgz", - "integrity": "sha512-pHgASxl50rrtOztgQCPmOXFjRW+mCd7ALr/3uXNzRrRoGV5G2+78GOsQ3HlQuBVHCh9o6xqMNvlIKZjWn4Euug==", + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.7.tgz", + "integrity": "sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5399,19 +5531,19 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.10.tgz", - "integrity": "sha512-Wab3wW8468WqTKIxI+aZe3JYO52/RYT/8sDOdzkUhjnLakLe9qoQqIcfih/qxcF4qWEFoWBszY0mj5uxffaVXA==", + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", + "integrity": "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.1", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-hex-encoding": "^4.2.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-uri-escape": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5419,18 +5551,18 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.0.tgz", - "integrity": "sha512-R8bQ9K3lCcXyZmBnQqUZJF4ChZmtWT5NLi6x5kgWx5D+/j0KorXcA0YcFg/X5TOgnTCy1tbKc6z2g2y4amFupQ==", + "version": "4.12.7", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.7.tgz", + "integrity": "sha512-q3gqnwml60G44FECaEEsdQMplYhDMZYCtYhMCzadCnRnnHIobZJjegmdoUo6ieLQlPUzvrMdIJUpx6DoPmzANQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.6", - "@smithy/middleware-endpoint": "^4.4.20", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-stream": "^4.5.15", + "@smithy/core": "^3.23.12", + "@smithy/middleware-endpoint": "^4.4.27", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.20", "tslib": "^2.6.2" }, "engines": { @@ -5438,9 +5570,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.0.tgz", - "integrity": "sha512-COuLsZILbbQsdrwKQpkkpyep7lCsByxwj7m0Mg5v66/ZTyenlfBc40/QFQ5chO0YN/PNEH1Bi3fGtfXPnYNeDw==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.1.tgz", + "integrity": "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5451,14 +5583,14 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.10.tgz", - "integrity": "sha512-uypjF7fCDsRk26u3qHmFI/ePL7bxxB9vKkE+2WKEciHhz+4QtbzWiHRVNRJwU3cKhrYDYQE3b0MRFtqfLYdA4A==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.12.tgz", + "integrity": "sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/querystring-parser": "^4.2.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5466,14 +5598,14 @@ } }, "node_modules/@smithy/util-base64": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.1.tgz", - "integrity": "sha512-BKGuawX4Doq/bI/uEmg+Zyc36rJKWuin3py89PquXBIBqmbnJwBBsmKhdHfNEp0+A4TDgLmT/3MSKZ1SxHcR6w==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5481,9 +5613,9 @@ } }, "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.1.tgz", - "integrity": "sha512-SiJeLiozrAoCrgDBUgsVbmqHmMgg/2bA15AzcbcW+zan7SuyAVHN4xTSbq0GlebAIwlcaX32xacnrG488/J/6g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", + "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5494,9 +5626,9 @@ } }, "node_modules/@smithy/util-body-length-node": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.2.tgz", - "integrity": "sha512-4rHqBvxtJEBvsZcFQSPQqXP2b/yy/YlB66KlcEgcH2WNoOKCKB03DSLzXmOsXjbl8dJ4OEYTn31knhdznwk7zw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", + "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5507,13 +5639,13 @@ } }, "node_modules/@smithy/util-buffer-from": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.1.tgz", - "integrity": "sha512-/swhmt1qTiVkaejlmMPPDgZhEaWb/HWMGRBheaxwuVkusp/z+ErJyQxO6kaXumOciZSWlmq6Z5mNylCd33X7Ig==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", + "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.1", + "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5521,9 +5653,9 @@ } }, "node_modules/@smithy/util-config-provider": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.1.tgz", - "integrity": "sha512-462id/00U8JWFw6qBuTSWfN5TxOHvDu4WliI97qOIOnuC/g+NDAknTU8eoGXEPlLkRVgWEr03jJBLV4o2FL8+A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", + "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5534,15 +5666,15 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.36", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.36.tgz", - "integrity": "sha512-R0smq7EHQXRVMxkAxtH5akJ/FvgAmNF6bUy/GwY/N20T4GrwjT633NFm0VuRpC+8Bbv8R9A0DoJ9OiZL/M3xew==", + "version": "4.3.43", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.43.tgz", + "integrity": "sha512-Qd/0wCKMaXxev/z00TvNzGCH2jlKKKxXP1aDxB6oKwSQthe3Og2dMhSayGCnsma1bK/kQX1+X7SMP99t6FgiiQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.10", - "@smithy/smithy-client": "^4.12.0", - "@smithy/types": "^4.13.0", + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.7", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5550,18 +5682,18 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.39", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.39.tgz", - "integrity": "sha512-otWuoDm35btJV1L8MyHrPl462B07QCdMTktKc7/yM+Psv6KbED/ziXiHnmr7yPHUjfIwE9S8Max0LO24Mo3ZVg==", + "version": "4.2.47", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.47.tgz", + "integrity": "sha512-qSRbYp1EQ7th+sPFuVcVO05AE0QH635hycdEXlpzIahqHHf2Fyd/Zl+8v0XYMJ3cgDVPa0lkMefU7oNUjAP+DQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.9", - "@smithy/credential-provider-imds": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/smithy-client": "^4.12.0", - "@smithy/types": "^4.13.0", + "@smithy/config-resolver": "^4.4.13", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.7", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5569,14 +5701,14 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.1.tgz", - "integrity": "sha512-xyctc4klmjmieQiF9I1wssBWleRV0RhJ2DpO8+8yzi2LO1Z+4IWOZNGZGNj4+hq9kdo+nyfrRLmQTzc16Op2Vg==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.3.tgz", + "integrity": "sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5584,9 +5716,9 @@ } }, "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.1.tgz", - "integrity": "sha512-c1hHtkgAWmE35/50gmdKajgGAKV3ePJ7t6UtEmpfCWJmQE9BQAQPz0URUVI89eSkcDqCtzqllxzG28IQoZPvwA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5597,13 +5729,13 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.10.tgz", - "integrity": "sha512-LxaQIWLp4y0r72eA8mwPNQ9va4h5KeLM0I3M/HV9klmFaY2kN766wf5vsTzmaOpNNb7GgXAd9a25P3h8T49PSA==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.12.tgz", + "integrity": "sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5611,14 +5743,14 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.10.tgz", - "integrity": "sha512-HrBzistfpyE5uqTwiyLsFHscgnwB0kgv8vySp7q5kZ0Eltn/tjosaSGGDj/jJ9ys7pWzIP/icE2d+7vMKXLv7A==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.12.tgz", + "integrity": "sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/service-error-classification": "^4.2.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5626,19 +5758,19 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.5.15", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.15.tgz", - "integrity": "sha512-OlOKnaqnkU9X+6wEkd7mN+WB7orPbCVDauXOj22Q7VtiTkvy7ZdSsOg4QiNAZMgI4OkvNf+/VLUC3VXkxuWJZw==", + "version": "4.5.20", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.20.tgz", + "integrity": "sha512-4yXLm5n/B5SRBR2p8cZ90Sbv4zL4NKsgxdzCzp/83cXw2KxLEumt5p+GAVyRNZgQOSrzXn9ARpO0lUe8XSlSDw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.3.11", - "@smithy/node-http-handler": "^4.4.12", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-buffer-from": "^4.2.1", - "@smithy/util-hex-encoding": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.5.0", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5646,9 +5778,9 @@ } }, "node_modules/@smithy/util-uri-escape": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.1.tgz", - "integrity": "sha512-YmiUDn2eo2IOiWYYvGQkgX5ZkBSiTQu4FlDo5jNPpAxng2t6Sjb6WutnZV9l6VR4eJul1ABmCrnWBC9hKHQa6Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", + "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5659,13 +5791,13 @@ } }, "node_modules/@smithy/util-utf8": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.1.tgz", - "integrity": "sha512-DSIwNaWtmzrNQHv8g7DBGR9mulSit65KSj5ymGEIAknmIN8IpbZefEep10LaMG/P/xquwbmJ1h9ectz8z6mV6g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.1", + "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5673,14 +5805,14 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.10.tgz", - "integrity": "sha512-4eTWph/Lkg1wZEDAyObwme0kmhEb7J/JjibY2znJdrYRgKbKqB7YoEhhJVJ4R1g/SYih4zuwX7LpJaM8RsnTVg==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.13.tgz", + "integrity": "sha512-2zdZ9DTHngRtcYxJK1GUDxruNr53kv5W2Lupe0LMU+Imr6ohQg8M2T14MNkj1Y0wS3FFwpgpGQyvuaMF7CiTmQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/abort-controller": "^4.2.12", + "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -5688,9 +5820,9 @@ } }, "node_modules/@smithy/uuid": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.1.tgz", - "integrity": "sha512-dSfDCeihDmZlV2oyr0yWPTUfh07suS+R5OB+FZGiv/hHyK3hrFBW5rR1UYjfa57vBsrP9lciFkRPzebaV1Qujw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", + "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5731,14 +5863,14 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz", + "integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5749,9 +5881,9 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", "dev": true, "license": "MIT", "engines": { @@ -5763,16 +5895,16 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz", + "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.57.1", + "@typescript-eslint/tsconfig-utils": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -5791,16 +5923,16 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.1.tgz", + "integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5815,13 +5947,13 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz", + "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.57.1", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -5889,15 +6021,6 @@ "node": ">=14.16" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", @@ -6292,9 +6415,9 @@ } }, "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==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", "license": "MIT" }, "node_modules/@types/range-parser": { @@ -6512,14 +6635,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.1.tgz", + "integrity": "sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.57.1", + "@typescript-eslint/types": "^8.57.1", "debug": "^4.4.3" }, "engines": { @@ -6534,9 +6657,9 @@ } }, "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", "dev": true, "license": "MIT", "engines": { @@ -6566,9 +6689,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.1.tgz", + "integrity": "sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==", "dev": true, "license": "MIT", "engines": { @@ -7042,13 +7165,6 @@ "node": ">=8" } }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "license": "BSD-3-Clause" - }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -7066,6 +7182,7 @@ "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -7074,16 +7191,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -7098,6 +7205,7 @@ "version": "8.3.5", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "dev": true, "license": "MIT", "dependencies": { "acorn": "^8.11.0" @@ -7116,15 +7224,12 @@ } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "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", - "dependencies": { - "debug": "4" - }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/aggregate-error": { @@ -7357,9 +7462,9 @@ "license": "Python-2.0" }, "node_modules/array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz", + "integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==", "dev": true, "license": "MIT", "engines": { @@ -7608,9 +7713,9 @@ } }, "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.11", @@ -7790,9 +7895,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", - "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "version": "2.10.9", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.9.tgz", + "integrity": "sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7802,6 +7907,15 @@ "node": ">=6.0.0" } }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, "node_modules/big-json": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big-json/-/big-json-3.2.0.tgz", @@ -7938,9 +8052,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -8283,9 +8397,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001774", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz", - "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==", + "version": "1.0.30001780", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz", + "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==", "dev": true, "funding": [ { @@ -9113,9 +9227,9 @@ "license": "MIT" }, "node_modules/core-js-compat": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", - "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "license": "MIT", "dependencies": { @@ -9217,28 +9331,36 @@ "node": ">=8" } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "license": "MIT" + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } }, "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", + "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", "license": "MIT", "dependencies": { - "cssom": "~0.3.6" + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "node_modules/cssstyle/node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", "license": "MIT" }, "node_modules/csv": { @@ -9283,17 +9405,16 @@ } }, "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/data-view-buffer": { @@ -9430,9 +9551,9 @@ } }, "node_modules/dedent": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", - "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -9685,19 +9806,6 @@ "node": ">=6.0.0" } }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", @@ -9789,9 +9897,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.302", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", - "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", + "version": "1.5.321", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", + "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", "dev": true, "license": "ISC" }, @@ -9849,9 +9957,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", - "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "dev": true, "license": "MIT", "dependencies": { @@ -10064,9 +10172,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -10077,32 +10185,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.3", - "@esbuild/android-arm": "0.27.3", - "@esbuild/android-arm64": "0.27.3", - "@esbuild/android-x64": "0.27.3", - "@esbuild/darwin-arm64": "0.27.3", - "@esbuild/darwin-x64": "0.27.3", - "@esbuild/freebsd-arm64": "0.27.3", - "@esbuild/freebsd-x64": "0.27.3", - "@esbuild/linux-arm": "0.27.3", - "@esbuild/linux-arm64": "0.27.3", - "@esbuild/linux-ia32": "0.27.3", - "@esbuild/linux-loong64": "0.27.3", - "@esbuild/linux-mips64el": "0.27.3", - "@esbuild/linux-ppc64": "0.27.3", - "@esbuild/linux-riscv64": "0.27.3", - "@esbuild/linux-s390x": "0.27.3", - "@esbuild/linux-x64": "0.27.3", - "@esbuild/netbsd-arm64": "0.27.3", - "@esbuild/netbsd-x64": "0.27.3", - "@esbuild/openbsd-arm64": "0.27.3", - "@esbuild/openbsd-x64": "0.27.3", - "@esbuild/openharmony-arm64": "0.27.3", - "@esbuild/sunos-x64": "0.27.3", - "@esbuild/win32-arm64": "0.27.3", - "@esbuild/win32-ia32": "0.27.3", - "@esbuild/win32-x64": "0.27.3" + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" } }, "node_modules/escalade": { @@ -10132,27 +10240,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, "node_modules/eslint": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", @@ -10227,15 +10314,15 @@ } }, "node_modules/eslint-config-oclif": { - "version": "6.0.144", - "resolved": "https://registry.npmjs.org/eslint-config-oclif/-/eslint-config-oclif-6.0.144.tgz", - "integrity": "sha512-87Zn12V0wnkxPSsm9TdIyZ4v5uNceqjMilyyR8Snk/oxCtOaawy/6mU1DwzS1zv4tnspZgeLJn+Y1ZI8Mf7BQw==", + "version": "6.0.150", + "resolved": "https://registry.npmjs.org/eslint-config-oclif/-/eslint-config-oclif-6.0.150.tgz", + "integrity": "sha512-Os2LX0LRNqVCTWHwUNyOaR0Bn9R1vSZxTOtKF+1pnG5s8Q7+IxgaEhUG1iMRq7XBfMfVJlPXh3PkUz1MiaYR1A==", "dev": true, "license": "MIT", "dependencies": { "@eslint/compat": "^1.4.1", - "@eslint/eslintrc": "^3.3.3", - "@eslint/js": "^9.38.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "^9.39.4", "@stylistic/eslint-plugin": "^3.1.0", "@typescript-eslint/eslint-plugin": "^8", "@typescript-eslint/parser": "^8", @@ -10249,7 +10336,7 @@ "eslint-plugin-n": "^17.24.0", "eslint-plugin-perfectionist": "^4", "eslint-plugin-unicorn": "^56.0.1", - "typescript-eslint": "^8.56.0" + "typescript-eslint": "^8.57.0" }, "engines": { "node": ">=18.18.0" @@ -10660,9 +10747,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/@eslint/core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz", - "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz", + "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -10674,9 +10761,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/@eslint/eslintrc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", - "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "dev": true, "license": "MIT", "dependencies": { @@ -10687,7 +10774,7 @@ "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.3", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -10711,9 +10798,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/@eslint/js": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", - "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "dev": true, "license": "MIT", "engines": { @@ -10724,17 +10811,17 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.1.tgz", + "integrity": "sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/type-utils": "8.57.1", + "@typescript-eslint/utils": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -10747,7 +10834,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.57.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -10763,16 +10850,16 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.1.tgz", + "integrity": "sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", "debug": "^4.4.3" }, "engines": { @@ -10788,14 +10875,14 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz", + "integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10806,15 +10893,15 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.1.tgz", + "integrity": "sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1", + "@typescript-eslint/utils": "8.57.1", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -10831,9 +10918,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", "dev": true, "license": "MIT", "engines": { @@ -10845,16 +10932,16 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz", + "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.57.1", + "@typescript-eslint/tsconfig-utils": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -10873,16 +10960,16 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.1.tgz", + "integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10897,13 +10984,13 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz", + "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.57.1", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -10966,19 +11053,19 @@ } }, "node_modules/eslint-config-oclif/node_modules/eslint": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.2.tgz", - "integrity": "sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.3.tgz", + "integrity": "sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", - "@eslint/config-array": "^0.23.2", + "@eslint/config-array": "^0.23.3", "@eslint/config-helpers": "^0.5.2", - "@eslint/core": "^1.1.0", - "@eslint/plugin-kit": "^0.6.0", + "@eslint/core": "^1.1.1", + "@eslint/plugin-kit": "^0.6.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -10987,7 +11074,7 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^9.1.1", + "eslint-scope": "^9.1.2", "eslint-visitor-keys": "^5.0.1", "espree": "^11.1.1", "esquery": "^1.7.0", @@ -11000,7 +11087,7 @@ "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "minimatch": "^10.2.1", + "minimatch": "^10.2.4", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -11134,9 +11221,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/eslint-config-xo/node_modules/@stylistic/eslint-plugin": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.9.0.tgz", - "integrity": "sha512-FqqSkvDMYJReydrMhlugc71M76yLLQWNfmGq+SIlLa7N3kHp8Qq8i2PyWrVNAfjOyOIY+xv9XaaYwvVW7vroMA==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.10.0.tgz", + "integrity": "sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11216,9 +11303,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/eslint-scope": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz", - "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", "dev": true, "license": "BSD-2-Clause", "peer": true, @@ -11249,9 +11336,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/eslint/node_modules/espree": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz", - "integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", "dev": true, "license": "BSD-2-Clause", "peer": true, @@ -11734,14 +11821,14 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz", + "integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11752,9 +11839,9 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", "dev": true, "license": "MIT", "engines": { @@ -11766,16 +11853,16 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz", + "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.57.1", + "@typescript-eslint/tsconfig-utils": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -11794,16 +11881,16 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.1.tgz", + "integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11818,13 +11905,13 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz", + "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.57.1", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -12094,6 +12181,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -12109,6 +12197,7 @@ "version": "2.0.3", "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" @@ -12403,10 +12492,26 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fast-xml-builder": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } + }, "node_modules/fast-xml-parser": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.6.tgz", - "integrity": "sha512-QNI3sAvSvaOiaMl8FYU4trnEzCwiRr8XMWgAHzlrWpTSj+QaCSvOf1h82OEP1s4hiAXhnbXSyFWCf4ldZzZRVA==", + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.6.tgz", + "integrity": "sha512-3+fdZyBRVg29n4rXP0joHthhcHdPUHaIC16cuyyd1iLsuaO6Vea36MPrxgAzbZna8lhvZeRL8Bc9GP56/J9xEw==", "dev": true, "funding": [ { @@ -12416,6 +12521,8 @@ ], "license": "MIT", "dependencies": { + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.1.3", "strnum": "^2.1.2" }, "bin": { @@ -12766,9 +12873,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -12939,9 +13046,9 @@ "license": "MIT" }, "node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -12956,6 +13063,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz", "integrity": "sha512-X712jAOaWXkemQCAmWeg5rOT2i+KOpWz1Z/txk/cW0qlOu2oQ9H61vc5w3X/iyuUEfq/OyaFJ78/cZAQD1/bgA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "license": "MIT", "engines": { @@ -13389,9 +13497,9 @@ "license": "MIT" }, "node_modules/graphql": { - "version": "16.13.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.13.0.tgz", - "integrity": "sha512-uSisMYERbaB9bkA9M4/4dnqyktaEkf1kMHNKq/7DHyxVeWqHQ2mBmVqm5u6/FVHwF3iCNalKcg82Zfl+tffWoA==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.13.1.tgz", + "integrity": "sha512-gGgrVCoDKlIZ8fIqXBBb0pPKqDgki0Z/FSKNiQzSGj2uEYHr1tq5wmBegGwJx6QB5S5cM0khSBpi/JFHMCvsmQ==", "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" @@ -13618,15 +13726,15 @@ "license": "ISC" }, "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/html-escaper": { @@ -13696,17 +13804,16 @@ } }, "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/http2-wrapper": { @@ -13724,16 +13831,16 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "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": "6", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -14413,17 +14520,6 @@ } } }, - "node_modules/inquirer/node_modules/@types/node": { - "version": "25.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.2.tgz", - "integrity": "sha512-RpV6r/ij22zRRdyBPcxDeKAzH43phWVKEjL2iksqo1Vz3CuBUrgmPpPhALKiRfU7OMCmeeO9vECBMsV0hMTG8Q==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "undici-types": "~7.18.0" - } - }, "node_modules/inquirer/node_modules/iconv-lite": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", @@ -14449,14 +14545,6 @@ "tslib": "^2.1.0" } }, - "node_modules/inquirer/node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/inquirer/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -16489,43 +16577,38 @@ } }, "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz", + "integrity": "sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==", + "license": "MIT", + "dependencies": { + "@asamuzakjp/dom-selector": "^2.0.1", + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", + "tough-cookie": "^4.1.3", + "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.16.0", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^2.11.2" }, "peerDependenciesMeta": { "canvas": { @@ -17582,10 +17665,9 @@ } }, "node_modules/mdn-data": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.23.0.tgz", - "integrity": "sha512-786vq1+4079JSeu2XdcDjrhi/Ry7BWtjDl9WtGPWLiIHb2T66GvIVflZTBoSNZ5JqTtJGYEVMuFA/lbQlMOyDQ==", - "dev": true, + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "license": "CC0-1.0" }, "node_modules/mdurl": { @@ -18038,23 +18120,22 @@ "license": "MIT" }, "node_modules/nise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", - "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.4.tgz", + "integrity": "sha512-vSA4IpRHRWZkmotu61SvF45Jirq4CTLT3KKOWJPsPMtxtOBOlxcAlXfv/OrWxkzAJiCBrvdfWvGQjHT7r7+Qqg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.1", - "@sinonjs/text-encoding": "^0.7.3", + "@sinonjs/fake-timers": "^15.1.1", "just-extend": "^6.2.0", - "path-to-regexp": "^8.1.0" + "path-to-regexp": "^8.3.0" } }, "node_modules/nise/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz", + "integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -18166,9 +18247,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", "dev": true, "license": "MIT" }, @@ -18211,9 +18292,9 @@ } }, "node_modules/npm": { - "version": "10.9.4", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.9.4.tgz", - "integrity": "sha512-OnUG836FwboQIbqtefDNlyR0gTHzIfwRfE3DuiNewBvnMnWEpB0VEXwBlFVgqpNzIgYo/MHh3d2Hel/pszapAA==", + "version": "10.9.7", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.9.7.tgz", + "integrity": "sha512-17u9+Ssv6as3iua2l6abTv1H4TtQDhle/Qn+XJ4TjKR4SzIjk1Ox3SZXRVBUW48KojLttHNQUk/U00m7sh1OGw==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -18294,24 +18375,24 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^8.0.1", + "@npmcli/arborist": "^8.0.4", "@npmcli/config": "^9.0.0", "@npmcli/fs": "^4.0.0", "@npmcli/map-workspaces": "^4.0.2", "@npmcli/package-json": "^6.2.0", - "@npmcli/promise-spawn": "^8.0.2", + "@npmcli/promise-spawn": "^8.0.3", "@npmcli/redact": "^3.2.2", "@npmcli/run-script": "^9.1.0", "@sigstore/tuf": "^3.1.1", "abbrev": "^3.0.1", "archy": "~1.0.0", "cacache": "^19.0.1", - "chalk": "^5.4.1", - "ci-info": "^4.2.0", + "chalk": "^5.6.2", + "ci-info": "^4.4.0", "cli-columns": "^4.0.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.4.5", + "glob": "^10.5.0", "graceful-fs": "^4.2.11", "hosted-git-info": "^8.1.0", "ini": "^5.0.0", @@ -18319,46 +18400,46 @@ "is-cidr": "^5.1.1", "json-parse-even-better-errors": "^4.0.0", "libnpmaccess": "^9.0.0", - "libnpmdiff": "^7.0.1", - "libnpmexec": "^9.0.1", - "libnpmfund": "^6.0.1", + "libnpmdiff": "^7.0.4", + "libnpmexec": "^9.0.4", + "libnpmfund": "^6.0.4", "libnpmhook": "^11.0.0", "libnpmorg": "^7.0.0", - "libnpmpack": "^8.0.1", - "libnpmpublish": "^10.0.1", + "libnpmpack": "^8.0.4", + "libnpmpublish": "^10.0.2", "libnpmsearch": "^8.0.0", "libnpmteam": "^7.0.0", "libnpmversion": "^7.0.0", "make-fetch-happen": "^14.0.3", - "minimatch": "^9.0.5", - "minipass": "^7.1.1", + "minimatch": "^9.0.9", + "minipass": "^7.1.3", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^11.2.0", + "node-gyp": "^11.5.0", "nopt": "^8.1.0", - "normalize-package-data": "^7.0.0", + "normalize-package-data": "^7.0.1", "npm-audit-report": "^6.0.0", - "npm-install-checks": "^7.1.1", + "npm-install-checks": "^7.1.2", "npm-package-arg": "^12.0.2", "npm-pick-manifest": "^10.0.0", "npm-profile": "^11.0.1", "npm-registry-fetch": "^18.0.2", "npm-user-validate": "^3.0.0", - "p-map": "^7.0.3", + "p-map": "^7.0.4", "pacote": "^19.0.1", "parse-conflict-json": "^4.0.0", "proc-log": "^5.0.0", "qrcode-terminal": "^0.12.0", "read": "^4.1.0", - "semver": "^7.7.2", + "semver": "^7.7.4", "spdx-expression-parse": "^4.0.0", "ssri": "^12.0.0", "supports-color": "^9.4.0", - "tar": "^6.2.1", + "tar": "^7.5.11", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", - "validate-npm-package-name": "^6.0.1", + "validate-npm-package-name": "^6.0.2", "which": "^5.0.0", "write-file-atomic": "^6.0.0" }, @@ -18429,7 +18510,7 @@ } }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", + "version": "6.2.2", "inBundle": true, "license": "MIT", "engines": { @@ -18461,11 +18542,11 @@ } }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", + "version": "7.2.0", "inBundle": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -18506,7 +18587,7 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "8.0.1", + "version": "8.0.4", "inBundle": true, "license": "ISC", "dependencies": { @@ -18540,6 +18621,7 @@ "proggy": "^3.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", + "promise-retry": "^2.0.1", "read-package-json-fast": "^4.0.0", "semver": "^7.3.7", "ssri": "^12.0.0", @@ -18645,7 +18727,7 @@ } }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { - "version": "20.0.0", + "version": "20.0.1", "inBundle": true, "license": "ISC", "dependencies": { @@ -18665,7 +18747,7 @@ "promise-retry": "^2.0.1", "sigstore": "^3.0.0", "ssri": "^12.0.0", - "tar": "^6.1.11" + "tar": "^7.5.10" }, "bin": { "pacote": "bin/index.js" @@ -18708,7 +18790,7 @@ } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "8.0.2", + "version": "8.0.3", "inBundle": true, "license": "ISC", "dependencies": { @@ -18762,6 +18844,25 @@ "node": ">=14" } }, + "node_modules/npm/node_modules/@sigstore/bundle": { + "version": "3.1.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.4.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@sigstore/core": { + "version": "2.0.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { "version": "0.4.3", "inBundle": true, @@ -18770,6 +18871,22 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "3.1.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.0", + "make-fetch-happen": "^14.0.2", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/npm/node_modules/@sigstore/tuf": { "version": "3.1.1", "inBundle": true, @@ -18782,6 +18899,19 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "2.1.1", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "2.0.0", "inBundle": true, @@ -18799,7 +18929,7 @@ } }, "node_modules/npm/node_modules/agent-base": { - "version": "7.1.3", + "version": "7.1.4", "inBundle": true, "license": "MIT", "engines": { @@ -18815,7 +18945,7 @@ } }, "node_modules/npm/node_modules/ansi-styles": { - "version": "6.2.1", + "version": "6.2.3", "inBundle": true, "license": "MIT", "engines": { @@ -18826,7 +18956,7 @@ } }, "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", + "version": "2.1.0", "inBundle": true, "license": "ISC" }, @@ -18896,54 +19026,8 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm/node_modules/cacache/node_modules/chownr": { - "version": "3.0.0", - "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/npm/node_modules/cacache/node_modules/mkdirp": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/cacache/node_modules/tar": { - "version": "7.4.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/npm/node_modules/cacache/node_modules/yallist": { - "version": "5.0.0", - "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/npm/node_modules/chalk": { - "version": "5.4.1", + "version": "5.6.2", "inBundle": true, "license": "MIT", "engines": { @@ -18954,15 +19038,15 @@ } }, "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", + "version": "3.0.0", "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/npm/node_modules/ci-info": { - "version": "4.2.0", + "version": "4.4.0", "funding": [ { "type": "github", @@ -19066,7 +19150,7 @@ } }, "node_modules/npm/node_modules/debug": { - "version": "4.4.1", + "version": "4.4.3", "inBundle": true, "license": "MIT", "dependencies": { @@ -19082,7 +19166,7 @@ } }, "node_modules/npm/node_modules/diff": { - "version": "5.2.0", + "version": "5.2.2", "inBundle": true, "license": "BSD-3-Clause", "engines": { @@ -19122,7 +19206,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/exponential-backoff": { - "version": "3.1.2", + "version": "3.1.3", "inBundle": true, "license": "Apache-2.0" }, @@ -19134,6 +19218,22 @@ "node": ">= 4.9.1" } }, + "node_modules/npm/node_modules/fdir": { + "version": "6.5.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/npm/node_modules/foreground-child": { "version": "3.3.1", "inBundle": true, @@ -19161,7 +19261,7 @@ } }, "node_modules/npm/node_modules/glob": { - "version": "10.4.5", + "version": "10.5.0", "inBundle": true, "license": "ISC", "dependencies": { @@ -19281,13 +19381,9 @@ } }, "node_modules/npm/node_modules/ip-address": { - "version": "9.0.5", + "version": "10.1.0", "inBundle": true, "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, "engines": { "node": ">= 12" } @@ -19341,11 +19437,6 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/npm/node_modules/jsbn": { - "version": "1.1.0", - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "4.0.0", "inBundle": true, @@ -19393,29 +19484,29 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "7.0.1", + "version": "7.0.4", "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^8.0.1", + "@npmcli/arborist": "^8.0.4", "@npmcli/installed-package-contents": "^3.0.0", "binary-extensions": "^2.3.0", "diff": "^5.1.0", "minimatch": "^9.0.4", "npm-package-arg": "^12.0.0", "pacote": "^19.0.0", - "tar": "^6.2.1" + "tar": "^7.5.11" }, "engines": { "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "9.0.1", + "version": "9.0.4", "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^8.0.1", + "@npmcli/arborist": "^8.0.4", "@npmcli/run-script": "^9.0.1", "ci-info": "^4.0.0", "npm-package-arg": "^12.0.0", @@ -19431,11 +19522,11 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "6.0.1", + "version": "6.0.4", "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^8.0.1" + "@npmcli/arborist": "^8.0.4" }, "engines": { "node": "^18.17.0 || >=20.5.0" @@ -19466,11 +19557,11 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "8.0.1", + "version": "8.0.4", "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^8.0.1", + "@npmcli/arborist": "^8.0.4", "@npmcli/run-script": "^9.0.1", "npm-package-arg": "^12.0.0", "pacote": "^19.0.0" @@ -19480,7 +19571,7 @@ } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "10.0.1", + "version": "10.0.2", "inBundle": true, "license": "ISC", "dependencies": { @@ -19561,20 +19652,12 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm/node_modules/make-fetch-happen/node_modules/negotiator": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/npm/node_modules/minimatch": { - "version": "9.0.5", + "version": "9.0.9", "inBundle": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -19584,9 +19667,9 @@ } }, "node_modules/npm/node_modules/minipass": { - "version": "7.1.2", + "version": "7.1.3", "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -19640,6 +19723,11 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", "inBundle": true, @@ -19662,6 +19750,11 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, "node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", "inBundle": true, @@ -19684,8 +19777,13 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, "node_modules/npm/node_modules/minizlib": { - "version": "3.0.2", + "version": "3.1.0", "inBundle": true, "license": "MIT", "dependencies": { @@ -19695,17 +19793,6 @@ "node": ">= 18" } }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/npm/node_modules/ms": { "version": "2.1.3", "inBundle": true, @@ -19719,8 +19806,16 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/npm/node_modules/negotiator": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/npm/node_modules/node-gyp": { - "version": "11.2.0", + "version": "11.5.0", "inBundle": true, "license": "MIT", "dependencies": { @@ -19742,52 +19837,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/chownr": { - "version": "3.0.0", - "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/mkdirp": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/tar": { - "version": "7.4.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/yallist": { - "version": "5.0.0", - "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/npm/node_modules/nopt": { "version": "8.1.0", "inBundle": true, @@ -19803,7 +19852,7 @@ } }, "node_modules/npm/node_modules/normalize-package-data": { - "version": "7.0.0", + "version": "7.0.1", "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -19835,7 +19884,7 @@ } }, "node_modules/npm/node_modules/npm-install-checks": { - "version": "7.1.1", + "version": "7.1.2", "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -19931,7 +19980,7 @@ } }, "node_modules/npm/node_modules/p-map": { - "version": "7.0.3", + "version": "7.0.4", "inBundle": true, "license": "MIT", "engines": { @@ -19947,7 +19996,7 @@ "license": "BlueOak-1.0.0" }, "node_modules/npm/node_modules/pacote": { - "version": "19.0.1", + "version": "19.0.2", "inBundle": true, "license": "ISC", "dependencies": { @@ -19967,7 +20016,7 @@ "promise-retry": "^2.0.1", "sigstore": "^3.0.0", "ssri": "^12.0.0", - "tar": "^6.1.11" + "tar": "^7.5.10" }, "bin": { "pacote": "bin/index.js" @@ -20012,8 +20061,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/npm/node_modules/picomatch": { + "version": "4.0.3", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "7.1.0", + "version": "7.1.1", "inBundle": true, "license": "MIT", "dependencies": { @@ -20132,7 +20192,7 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.7.2", + "version": "7.7.4", "inBundle": true, "license": "ISC", "bin": { @@ -20188,54 +20248,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/bundle": { - "version": "3.1.0", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.4.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/core": { - "version": "2.0.0", - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/sign": { - "version": "3.1.0", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^3.1.0", - "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.4.0", - "make-fetch-happen": "^14.0.2", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/verify": { - "version": "2.1.1", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^3.1.0", - "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.4.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, "node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", "inBundle": true, @@ -20246,11 +20258,11 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.8.5", + "version": "2.8.7", "inBundle": true, "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -20304,15 +20316,10 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.21", + "version": "3.0.23", "inBundle": true, "license": "CC0-1.0" }, - "node_modules/npm/node_modules/sprintf-js": { - "version": "1.1.3", - "inBundle": true, - "license": "BSD-3-Clause" - }, "node_modules/npm/node_modules/ssri": { "version": "12.0.0", "inBundle": true, @@ -20386,72 +20393,18 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "6.2.1", + "version": "7.5.11", "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/minizlib": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "yallist": "^4.0.0" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" } }, "node_modules/npm/node_modules/text-table": { @@ -20465,12 +20418,12 @@ "license": "MIT" }, "node_modules/npm/node_modules/tinyglobby": { - "version": "0.2.14", + "version": "0.2.15", "inBundle": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -20479,30 +20432,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/npm/node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.6", - "inBundle": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/npm/node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/npm/node_modules/treeverse": { "version": "3.0.0", "inBundle": true, @@ -20512,13 +20441,13 @@ } }, "node_modules/npm/node_modules/tuf-js": { - "version": "3.0.1", + "version": "3.1.0", "inBundle": true, "license": "MIT", "dependencies": { "@tufjs/models": "3.0.1", - "debug": "^4.3.6", - "make-fetch-happen": "^14.0.1" + "debug": "^4.4.1", + "make-fetch-happen": "^14.0.3" }, "engines": { "node": "^18.17.0 || >=20.5.0" @@ -20582,7 +20511,7 @@ } }, "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "6.0.1", + "version": "6.0.2", "inBundle": true, "license": "ISC", "engines": { @@ -20609,11 +20538,11 @@ } }, "node_modules/npm/node_modules/which/node_modules/isexe": { - "version": "3.1.1", + "version": "3.1.5", "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/npm/node_modules/wrap-ansi": { @@ -20664,7 +20593,7 @@ } }, "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", + "version": "6.2.2", "inBundle": true, "license": "MIT", "engines": { @@ -20696,11 +20625,11 @@ } }, "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", + "version": "7.2.0", "inBundle": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -20722,9 +20651,12 @@ } }, "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", + "version": "5.0.0", "inBundle": true, - "license": "ISC" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } }, "node_modules/number-is-nan": { "version": "1.0.1", @@ -20735,12 +20667,6 @@ "node": ">=0.10.0" } }, - "node_modules/nwsapi": { - "version": "2.2.23", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", - "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", - "license": "MIT" - }, "node_modules/nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -21145,20 +21071,20 @@ } }, "node_modules/oclif": { - "version": "4.22.81", - "resolved": "https://registry.npmjs.org/oclif/-/oclif-4.22.81.tgz", - "integrity": "sha512-MO2bupt/3wWYqt05F8ZLwMYKN58YqDfRVdJxAvCdg/wZJg6/sDXVKoMSTSzwqsnIaJGjru2LBNvk8lH+p+1uMQ==", + "version": "4.22.93", + "resolved": "https://registry.npmjs.org/oclif/-/oclif-4.22.93.tgz", + "integrity": "sha512-x7FjnZOTuKl4p6KsWFZ2nCH3jQv0EU7+fG+udUHgV+CnXx6xGgCGPfkkDv3jYzjlcW7v1P62f3Ab8hudR0zrnA==", "dev": true, "license": "MIT", "dependencies": { - "@aws-sdk/client-cloudfront": "^3.995.0", - "@aws-sdk/client-s3": "^3.995.0", + "@aws-sdk/client-cloudfront": "3.1009.0", + "@aws-sdk/client-s3": "3.1009.0", "@inquirer/confirm": "^3.1.22", "@inquirer/input": "^2.2.4", "@inquirer/select": "^2.5.0", - "@oclif/core": "^4.8.0", - "@oclif/plugin-help": "^6.2.37", - "@oclif/plugin-not-found": "^3.2.74", + "@oclif/core": "4.9.0", + "@oclif/plugin-help": "^6.2.38", + "@oclif/plugin-not-found": "^3.2.75", "@oclif/plugin-warn-if-update-available": "^3.1.55", "ansis": "^3.16.0", "async-retry": "^1.3.3", @@ -21183,6 +21109,36 @@ "node": ">=18.0.0" } }, + "node_modules/oclif/node_modules/@oclif/core": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-4.9.0.tgz", + "integrity": "sha512-k/ntRgDcUprTT+aaNoF+whk3cY3f9fRD2lkF6ul7JeCUg2MaMXVXZXfbRhJCfsiX51X8/5Pqo0LGdO9SLYXNHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.2", + "ansis": "^3.17.0", + "clean-stack": "^3.0.1", + "cli-spinners": "^2.9.2", + "debug": "^4.4.3", + "ejs": "^3.1.10", + "get-package-type": "^0.1.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "lilconfig": "^3.1.3", + "minimatch": "^10.2.4", + "semver": "^7.7.3", + "string-width": "^4.2.3", + "supports-color": "^8", + "tinyglobby": "^0.2.14", + "widest-line": "^3.1.0", + "wordwrap": "^1.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/oclif/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -21645,6 +21601,22 @@ "node": ">=8" } }, + "node_modules/path-expression-matcher": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", + "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -21688,9 +21660,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -22227,9 +22199,9 @@ } }, "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "dev": true, "license": "MIT", "dependencies": { @@ -22699,6 +22671,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", "integrity": "sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "license": "MIT", "dependencies": { @@ -23031,15 +23004,15 @@ } }, "node_modules/rewire/node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -23059,9 +23032,9 @@ } }, "node_modules/rewire/node_modules/@eslint/eslintrc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", - "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "dev": true, "license": "MIT", "dependencies": { @@ -23072,7 +23045,7 @@ "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.3", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -23083,9 +23056,9 @@ } }, "node_modules/rewire/node_modules/@eslint/js": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", - "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "dev": true, "license": "MIT", "engines": { @@ -23155,25 +23128,25 @@ } }, "node_modules/rewire/node_modules/eslint": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", - "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", + "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.3", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", + "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", @@ -23192,7 +23165,7 @@ "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -23501,6 +23474,12 @@ "fsevents": "~2.3.2" } }, + "node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "license": "MIT" + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -24119,15 +24098,15 @@ "license": "ISC" }, "node_modules/sinon": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.1.tgz", - "integrity": "sha512-Z0NVCW45W8Mg5oC/27/+fCqIHFnW8kpkFOq0j9XJIev4Ld0mKmERaZv5DMLAb9fGCevjKwaEeIQz5+MBXfZcDw==", + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.3.tgz", + "integrity": "sha512-0x8TQFr8EjADhSME01u1ZK31yv2+bd6Z5NrBCHVM+n4qL1wFqbxftmeyi3bwlr49FbbzRfrqSFOpyHCOh/YmYA==", "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^15.1.0", - "@sinonjs/samsam": "^8.0.3", - "diff": "^8.0.2", + "@sinonjs/fake-timers": "^15.1.1", + "@sinonjs/samsam": "^9.0.3", + "diff": "^8.0.3", "supports-color": "^7.2.0" }, "funding": { @@ -24136,9 +24115,9 @@ } }, "node_modules/sinon/node_modules/@sinonjs/fake-timers": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.0.tgz", - "integrity": "sha512-cqfapCxwTGsrR80FEgOoPsTonoefMBY7dnUEbQ+GRcved0jvkJLzvX6F4WtN+HBqbPX/SiFsIRUp+IrCW/2I2w==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz", + "integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==", "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1" @@ -24427,7 +24406,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -24437,7 +24416,6 @@ "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==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -24920,9 +24898,9 @@ } }, "node_modules/strnum": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", - "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.1.tgz", + "integrity": "sha512-BwRvNd5/QoAtyW1na1y1LsJGQNvRlkde6Q/ipqqEaivoMdV+B1OMOTVdwR+N/cwVUcIt9PYyHmV8HyexCZSupg==", "dev": true, "funding": [ { @@ -25054,9 +25032,9 @@ } }, "node_modules/tar": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", - "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", + "version": "7.5.12", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.12.tgz", + "integrity": "sha512-9TsuLcdhOn4XztcQqhNyq1KOwOOED/3k58JAvtULiYqbO8B/0IBAAIE1hj0Svmm58k27TmcigyDI0deMlgG3uw==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -25144,6 +25122,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "license": "MIT", "dependencies": { @@ -25296,15 +25275,15 @@ } }, "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "punycode": "^2.3.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/traverse": { @@ -25334,9 +25313,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -25812,16 +25791,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.1.tgz", + "integrity": "sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.57.1", + "@typescript-eslint/parser": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1", + "@typescript-eslint/utils": "8.57.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -25836,17 +25815,17 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.1.tgz", + "integrity": "sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/type-utils": "8.57.1", + "@typescript-eslint/utils": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -25859,22 +25838,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.57.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.1.tgz", + "integrity": "sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", "debug": "^4.4.3" }, "engines": { @@ -25890,14 +25869,14 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz", + "integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -25908,15 +25887,15 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.1.tgz", + "integrity": "sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1", + "@typescript-eslint/utils": "8.57.1", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -25933,9 +25912,9 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", "dev": true, "license": "MIT", "engines": { @@ -25947,16 +25926,16 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz", + "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.57.1", + "@typescript-eslint/tsconfig-utils": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -25975,16 +25954,16 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.1.tgz", + "integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -25999,13 +25978,13 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz", + "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.57.1", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -26355,25 +26334,33 @@ } }, "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/walk-back": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.1.tgz", - "integrity": "sha512-e/FRLDVdZQWFrAzU6Hdvpm7D7m2ina833gIKLptQykRK49mmCYHLHq7UqjPDbxbKLZkTkW1rFqbengdE3sLfdw==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.2.tgz", + "integrity": "sha512-uCgzIY1U7fyXvJm+mesY0xjf2HXu7mtTnptONwVQ11ur1JhMrUyQJn2fDje1CGFQDnTFTo1Slr1vRuvUS9PYoQ==", "dev": true, "license": "MIT", "engines": { "node": ">=12.17" + }, + "peerDependencies": { + "@75lb/nature": "latest" + }, + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, "node_modules/walker": { @@ -26405,16 +26392,16 @@ } }, "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-encoding/node_modules/iconv-lite": { @@ -26430,25 +26417,25 @@ } }, "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "license": "MIT", "dependencies": { - "tr46": "^3.0.0", + "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/which": { @@ -26739,12 +26726,12 @@ } }, "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/xmlchars": { @@ -26940,13 +26927,13 @@ }, "packages/contentstack": { "name": "@contentstack/cli", - "version": "1.59.0", + "version": "1.59.1", "license": "MIT", "dependencies": { "@contentstack/cli-audit": "~1.18.0", "@contentstack/cli-auth": "~1.7.3", "@contentstack/cli-cm-bootstrap": "~1.18.4", - "@contentstack/cli-cm-branches": "~1.6.3", + "@contentstack/cli-cm-branches": "~1.7.0", "@contentstack/cli-cm-bulk-publish": "~1.10.7", "@contentstack/cli-cm-clone": "~1.20.1", "@contentstack/cli-cm-export": "~1.23.2", @@ -27061,9 +27048,9 @@ "license": "MIT" }, "packages/contentstack-audit/node_modules/@types/node": { - "version": "20.19.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.35.tgz", - "integrity": "sha512-Uarfe6J91b9HAUXxjvSOdiO2UPOKLm07Q1oh0JHxoZ1y8HoqxDAu3gVrsrOHeiio0kSsoVBt4wFrKOm0dKxVPQ==", + "version": "20.19.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", + "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", "dev": true, "license": "MIT", "dependencies": { @@ -27316,7 +27303,7 @@ }, "packages/contentstack-branches": { "name": "@contentstack/cli-cm-branches", - "version": "1.6.3", + "version": "1.7.0", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.7.2", @@ -27980,6 +27967,17 @@ "@sinonjs/commons": "^3.0.1" } }, + "packages/contentstack-export-to-csv/node_modules/@sinonjs/samsam": { + "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", + "type-detect": "^4.1.0" + } + }, "packages/contentstack-export-to-csv/node_modules/@types/mocha": { "version": "10.0.10", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", @@ -27988,9 +27986,9 @@ "license": "MIT" }, "packages/contentstack-export-to-csv/node_modules/@types/node": { - "version": "20.19.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.35.tgz", - "integrity": "sha512-Uarfe6J91b9HAUXxjvSOdiO2UPOKLm07Q1oh0JHxoZ1y8HoqxDAu3gVrsrOHeiio0kSsoVBt4wFrKOm0dKxVPQ==", + "version": "20.19.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", + "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", "dev": true, "license": "MIT", "dependencies": { @@ -28078,6 +28076,17 @@ "@sinonjs/commons": "^3.0.1" } }, + "packages/contentstack-export/node_modules/@sinonjs/samsam": { + "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", + "type-detect": "^4.1.0" + } + }, "packages/contentstack-export/node_modules/@types/mocha": { "version": "10.0.10", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", @@ -28251,7 +28260,7 @@ "@oclif/plugin-help": "^6.2.28", "chalk": "^4.1.2", "collapse-whitespace": "^1.1.7", - "jsdom": "^20.0.3", + "jsdom": "^23.0.0", "jsonschema": "^1.5.0", "lodash": "^4.17.23", "nock": "^13.5.6", @@ -28319,6 +28328,17 @@ "@sinonjs/commons": "^3.0.1" } }, + "packages/contentstack-migration/node_modules/@sinonjs/samsam": { + "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", + "type-detect": "^4.1.0" + } + }, "packages/contentstack-migration/node_modules/diff": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", @@ -28517,9 +28537,9 @@ } }, "packages/contentstack-variants/node_modules/@types/node": { - "version": "20.19.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.35.tgz", - "integrity": "sha512-Uarfe6J91b9HAUXxjvSOdiO2UPOKLm07Q1oh0JHxoZ1y8HoqxDAu3gVrsrOHeiio0kSsoVBt4wFrKOm0dKxVPQ==", + "version": "20.19.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", + "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/packages/contentstack-audit/README.md b/packages/contentstack-audit/README.md index cf0fa3427b..846fb94b3a 100644 --- a/packages/contentstack-audit/README.md +++ b/packages/contentstack-audit/README.md @@ -19,7 +19,7 @@ $ npm install -g @contentstack/cli-audit $ csdx COMMAND running command... $ csdx (--version|-v) -@contentstack/cli-audit/1.17.1 darwin-arm64 node-v24.13.0 +@contentstack/cli-audit/1.18.0 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND @@ -309,7 +309,7 @@ EXAMPLES $ csdx plugins ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/index.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/index.ts)_ ## `csdx plugins:add PLUGIN` @@ -383,7 +383,7 @@ EXAMPLES $ csdx plugins:inspect myplugin ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/inspect.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/inspect.ts)_ ## `csdx plugins:install PLUGIN` @@ -432,7 +432,7 @@ EXAMPLES $ csdx plugins:install someuser/someplugin ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/install.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/install.ts)_ ## `csdx plugins:link PATH` @@ -463,7 +463,7 @@ EXAMPLES $ csdx plugins:link myplugin ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/link.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/link.ts)_ ## `csdx plugins:remove [PLUGIN]` @@ -504,7 +504,7 @@ FLAGS --reinstall Reinstall all plugins after uninstalling. ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/reset.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/reset.ts)_ ## `csdx plugins:uninstall [PLUGIN]` @@ -532,7 +532,7 @@ EXAMPLES $ csdx plugins:uninstall myplugin ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/uninstall.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/uninstall.ts)_ ## `csdx plugins:unlink [PLUGIN]` @@ -576,5 +576,5 @@ DESCRIPTION Update installed plugins. ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/update.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/update.ts)_ diff --git a/packages/contentstack-auth/README.md b/packages/contentstack-auth/README.md index e19bed162f..95dfd4c58b 100644 --- a/packages/contentstack-auth/README.md +++ b/packages/contentstack-auth/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-auth $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-auth/1.7.2 darwin-arm64 node-v24.13.0 +@contentstack/cli-auth/1.7.3 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-bootstrap/README.md b/packages/contentstack-bootstrap/README.md index 37b8076db2..6265fbd377 100644 --- a/packages/contentstack-bootstrap/README.md +++ b/packages/contentstack-bootstrap/README.md @@ -15,7 +15,7 @@ $ npm install -g @contentstack/cli-cm-bootstrap $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-bootstrap/1.18.2 darwin-arm64 node-v24.13.0 +@contentstack/cli-cm-bootstrap/1.18.4 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-branches/README.md b/packages/contentstack-branches/README.md index ff11cd472b..2c29465cfe 100755 --- a/packages/contentstack-branches/README.md +++ b/packages/contentstack-branches/README.md @@ -29,6 +29,10 @@ For switching to AZURE-NA region update the hosts at config/default.js } ``` +## Branch compare cache + +Large branch compares write temporary JSONL files under **`/.contentstack-branch-cache/`** (see `cacheDir` in `src/config`). The process needs a **writable working directory**. If disk writes fail, the CLI falls back to an in-memory compare and prints a warning (very large stacks may use more memory). + # Usage @@ -37,7 +41,7 @@ $ npm install -g @contentstack/cli-cm-branches $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-branches/1.6.3 darwin-arm64 node-v24.13.0 +@contentstack/cli-cm-branches/1.7.0 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-branches/package.json b/packages/contentstack-branches/package.json index 825e5410f1..1f32cf6677 100644 --- a/packages/contentstack-branches/package.json +++ b/packages/contentstack-branches/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-branches", "description": "Contentstack CLI plugin to do branches operations", - "version": "1.6.3", + "version": "1.7.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { @@ -79,4 +79,4 @@ } }, "repository": "https://github.com/contentstack/cli" -} \ No newline at end of file +} diff --git a/packages/contentstack-branches/src/branch/diff-handler.ts b/packages/contentstack-branches/src/branch/diff-handler.ts index 72aeaf0f24..3a5d43f4a9 100644 --- a/packages/contentstack-branches/src/branch/diff-handler.ts +++ b/packages/contentstack-branches/src/branch/diff-handler.ts @@ -1,8 +1,8 @@ import startCase from 'lodash/startCase'; import camelCase from 'lodash/camelCase'; import { cliux } from '@contentstack/cli-utilities'; -import { getbranchConfig } from '../utils'; -import { BranchOptions, BranchDiffPayload } from '../interfaces'; +import { getbranchConfig, cleanupSession } from '../utils'; +import { BranchCompareCacheRef, BranchOptions, BranchCompactTextRes, BranchDiffPayload } from '../interfaces'; import { askBaseBranch, askCompareBranch, askStackAPIKey, selectModule } from '../utils/interactive'; import { fetchBranchesDiff, @@ -13,7 +13,14 @@ import { parseVerbose, printVerboseTextView, filterBranchDiffDataByModule, + isBranchCompareCacheRef, + isInlineBranchCompareResult, + summaryFromCompact, + flatCompactToRawArray, + parseSummaryFromJsonlPath, + printCompactTextViewFromJsonlModulePath, } from '../utils/branch-diff-utility'; +import { readAllJsonLines } from '../utils/cache-manager'; import { exportCSVReport } from '../utils/csv-utility'; export default class BranchDiffHandler { @@ -24,8 +31,15 @@ export default class BranchDiffHandler { } async run(): Promise { - await this.validateMandatoryFlags(); - await this.initBranchDiffUtility(); + let cacheRef: BranchCompareCacheRef | undefined; + try { + await this.validateMandatoryFlags(); + cacheRef = await this.initBranchDiffUtility(); + } finally { + if (cacheRef?.kind === 'cache') { + await cleanupSession(cacheRef.sessionId).catch(() => undefined); + } + } } /** @@ -40,7 +54,7 @@ export default class BranchDiffHandler { } if (!this.options.baseBranch) { - baseBranch = getbranchConfig(this.options.stackAPIKey); + baseBranch = getbranchConfig(this.options.stackAPIKey); if (!baseBranch) { this.options.baseBranch = await askBaseBranch(); } else { @@ -60,24 +74,24 @@ export default class BranchDiffHandler { this.options.csvPath = process.cwd(); } - if(baseBranch){ + if (baseBranch) { cliux.print(`\nBase branch: ${baseBranch}`, { color: 'grey' }); } } /** * @methods initBranchDiffUtility - call utility function to load data and display it - * @returns {*} {Promise} + * @returns {*} {Promise} * @memberof BranchDiff */ - async initBranchDiffUtility(): Promise { + async initBranchDiffUtility(): Promise { const spinner = cliux.loaderV2('Loading branch differences...'); const payload: BranchDiffPayload = { module: '', apiKey: this.options.stackAPIKey, baseBranch: this.options.baseBranch, compareBranch: this.options.compareBranch, - host: this.options.host + host: this.options.host, }; if (this.options.module === 'content-types') { @@ -86,21 +100,107 @@ export default class BranchDiffHandler { payload.module = 'global_fields'; } payload.spinner = spinner; - const branchDiffData = await fetchBranchesDiff(payload); - const diffData = filterBranchDiffDataByModule(branchDiffData); + const fetchResult = await fetchBranchesDiff(payload); cliux.loaderV2('', spinner); - - if(this.options.module === 'all'){ - for (let module in diffData) { - const branchDiff = diffData[module]; - payload.module = module; - this.displaySummary(branchDiff, module); - await this.displayBranchDiffTextAndVerbose(branchDiff, payload); - } - }else{ - const branchDiff = diffData[payload.module]; - this.displaySummary(branchDiff, this.options.module); + + if (isBranchCompareCacheRef(fetchResult)) { + await this.displayFromCacheRef(fetchResult, payload); + return fetchResult; + } + + if (isInlineBranchCompareResult(fetchResult)) { + await this.displayFromInlineResult(fetchResult, payload); + return undefined; + } + + const branchDiffData = fetchResult; + const diffData = filterBranchDiffDataByModule(branchDiffData); + + if (this.options.module === 'all') { + for (const module in diffData) { + const branchDiff = diffData[module]; + payload.module = module; + this.displaySummary(branchDiff, module); await this.displayBranchDiffTextAndVerbose(branchDiff, payload); + } + } else { + const branchDiff = diffData[payload.module]; + this.displaySummary(branchDiff, this.options.module); + await this.displayBranchDiffTextAndVerbose(branchDiff, payload); + } + return undefined; + } + + private async displayFromCacheRef(cacheRef: BranchCompareCacheRef, payload: BranchDiffPayload): Promise { + const modulesToShow = + this.options.module === 'all' + ? (['content_types', 'global_fields'] as const) + : payload.module === 'content_types' + ? (['content_types'] as const) + : (['global_fields'] as const); + + for (const module of modulesToShow) { + const modulePath = cacheRef.paths[module]; + const displayModule = module === 'content_types' ? 'content-types' : 'global-fields'; + payload.module = module; + cliux.print(' '); + cliux.print(`${startCase(camelCase(module))} Summary:`, { color: 'yellow' }); + const diffSummary = await parseSummaryFromJsonlPath( + modulePath, + this.options.baseBranch, + this.options.compareBranch, + ); + printSummary(diffSummary); + const spinner1 = cliux.loaderV2('Loading branch differences...'); + if (this.options.format === 'compact-text') { + cliux.loaderV2('', spinner1); + await printCompactTextViewFromJsonlModulePath(modulePath); + } else if (this.options.format === 'detailed-text') { + const branchModuleData = await readAllJsonLines(modulePath); + const verboseRes = await parseVerbose(branchModuleData, payload); + cliux.loaderV2('', spinner1); + printVerboseTextView(verboseRes); + exportCSVReport(displayModule, verboseRes, this.options.csvPath); + if (verboseRes.verboseCacheSessionId) { + await cleanupSession(verboseRes.verboseCacheSessionId).catch(() => undefined); + } + } + } + } + + private async displayFromInlineResult( + inline: { content_types: BranchCompactTextRes; global_fields: BranchCompactTextRes }, + payload: BranchDiffPayload, + ): Promise { + const modulesToShow = + this.options.module === 'all' + ? (['content_types', 'global_fields'] as const) + : payload.module === 'content_types' + ? (['content_types'] as const) + : (['global_fields'] as const); + + for (const module of modulesToShow) { + const compact = inline[module]; + const displayModule = module === 'content_types' ? 'content-types' : 'global-fields'; + payload.module = module; + cliux.print(' '); + cliux.print(`${startCase(camelCase(module))} Summary:`, { color: 'yellow' }); + const diffSummary = summaryFromCompact(compact, this.options.baseBranch, this.options.compareBranch); + printSummary(diffSummary); + const spinner1 = cliux.loaderV2('Loading branch differences...'); + if (this.options.format === 'compact-text') { + cliux.loaderV2('', spinner1); + printCompactTextView(compact); + } else if (this.options.format === 'detailed-text') { + const branchModuleData = flatCompactToRawArray(compact); + const verboseRes = await parseVerbose(branchModuleData, payload); + cliux.loaderV2('', spinner1); + printVerboseTextView(verboseRes); + exportCSVReport(displayModule, verboseRes, this.options.csvPath); + if (verboseRes.verboseCacheSessionId) { + await cleanupSession(verboseRes.verboseCacheSessionId).catch(() => undefined); + } + } } } @@ -133,6 +233,9 @@ export default class BranchDiffHandler { printVerboseTextView(verboseRes); exportCSVReport(payload.module, verboseRes, this.options.csvPath); + if (verboseRes.verboseCacheSessionId) { + await cleanupSession(verboseRes.verboseCacheSessionId).catch(() => undefined); + } } } } diff --git a/packages/contentstack-branches/src/branch/merge-handler.ts b/packages/contentstack-branches/src/branch/merge-handler.ts index 0d27552152..cc0c6d773b 100644 --- a/packages/contentstack-branches/src/branch/merge-handler.ts +++ b/packages/contentstack-branches/src/branch/merge-handler.ts @@ -9,7 +9,8 @@ import { selectMergeStrategySubOptions, selectMergeExecution, prepareMergeRequestPayload, - displayMergeSummary, + displayMergeSummary as printMergeSummaryFromHelper, + branchDiffUtility as branchDiff, askExportMergeSummaryPath, askMergeComment, writeFile, @@ -58,7 +59,7 @@ export default class MergeHandler { async start() { if (this.mergeSummary) { this.loadMergeSettings(); - await this.displayMergeSummary(); + await this.displayMergeSummaryInternal(); return await this.executeMerge(this.mergeSummary.requestPayload); } await this.collectMergeSettings(); @@ -101,13 +102,16 @@ export default class MergeHandler { } if (this.strategy === 'custom_preferences') { this.mergeSettings.itemMergeStrategies = []; - for (let module in this.branchCompareData) { + for (const module of this.getModuleKeys()) { this.mergeSettings.mergeContent[module] = { added: [], modified: [], deleted: [], }; - const selectedItems = await selectCustomPreferences(module, this.branchCompareData[module]); + const modulePayload = branchDiff.isBranchCompareCacheRef(this.branchCompareData) + ? await branchDiff.loadCompactModuleFromCache(this.branchCompareData, module) + : this.branchCompareData[module]; + const selectedItems = await selectCustomPreferences(module, modulePayload); if (selectedItems?.length) { forEach(selectedItems, (item) => { this.mergeSettings.mergeContent[module][item.status].push(item.value); @@ -136,7 +140,7 @@ export default class MergeHandler { this.mergeSettings.strategy = 'overwrite_with_compare'; } - const { allEmpty, moduleStatus } = this.checkEmptySelection(); + const { allEmpty, moduleStatus } = await this.checkEmptySelection(); const strategyName = this.mergeSettings.strategy; if (allEmpty) { @@ -152,7 +156,7 @@ export default class MergeHandler { } } - this.displayMergeSummary(); + await this.displayMergeSummaryInternal(); if (!this.executeOption) { const executionResponse = await selectMergeExecution(); @@ -186,32 +190,84 @@ export default class MergeHandler { * - `exists`: A boolean indicating whether the module exists in the branch comparison data. * - `empty`: A boolean indicating whether the module has no changes (added, modified, or deleted). */ - checkEmptySelection(): { + getModuleKeys(): string[] { + if (branchDiff.isBranchCompareCacheRef(this.branchCompareData)) { + return ['content_types', 'global_fields']; + } + return Object.keys(this.branchCompareData || {}); + } + + async mergeMergeContentFromCache(): Promise { + this.mergeSettings.mergeContent = { + content_types: { added: [], modified: [], deleted: [] }, + global_fields: { added: [], modified: [], deleted: [] }, + }; + } + + /** + * When compare data is a disk cache reference, mergeContent is left empty for display (summary reads JSONL). + * Entry migration script generation still needs filtered mergeContent — hydrate from cache using the current strategy. + */ + private async hydrateMergeContentFromCacheForEntryScripts(): Promise { + if (!branchDiff.isBranchCompareCacheRef(this.branchCompareData)) { + return; + } + const strategy = this.mergeSettings.strategy; + if (strategy === 'ignore' || strategy === 'custom_preferences') { + return; + } + this.mergeSettings.mergeContent = { + content_types: { added: [], modified: [], deleted: [] }, + global_fields: { added: [], modified: [], deleted: [] }, + }; + for (const module of this.getModuleKeys()) { + this.mergeSettings.mergeContent[module] = {}; + const compact = await branchDiff.loadCompactModuleFromCache(this.branchCompareData, module); + this.filterBranchCompareData(module, compact); + } + } + + async checkEmptySelection(): Promise<{ allEmpty: boolean; moduleStatus: Record; - } { + }> { const strategy = this.mergeSettings.strategy; - + const useMergeContent = new Set(['custom_preferences', 'ignore']); const modifiedOnlyStrategies = new Set(['merge_modified_only_prefer_base', 'merge_modified_only_prefer_compare']); const addedOnlyStrategies = new Set(['merge_new_only']); - + const moduleStatus: Record = { contentType: { exists: false, empty: true }, globalField: { exists: false, empty: true }, }; - - for (const module in this.branchCompareData) { + + for (const module of this.getModuleKeys()) { + if (branchDiff.isBranchCompareCacheRef(this.branchCompareData) && !useMergeContent.has(strategy)) { + const { exists, hasChanges } = await branchDiff.countHasChangesFromCachePath( + this.branchCompareData.paths[module], + strategy, + ); + if (!exists) continue; + const isGlobalField = module === 'global_fields'; + const type = isGlobalField ? 'globalField' : 'contentType'; + moduleStatus[type].exists = true; + if (hasChanges) { + moduleStatus[type].empty = false; + } + continue; + } + const content = useMergeContent.has(strategy) ? this.mergeSettings.mergeContent[module] : this.branchCompareData[module]; - + if (!content) continue; - + const isGlobalField = module === 'global_fields'; const type = isGlobalField ? 'globalField' : 'contentType'; moduleStatus[type].exists = true; - + let hasChanges = false; if (modifiedOnlyStrategies.has(strategy)) { hasChanges = Array.isArray(content.modified) && content.modified.length > 0; @@ -223,29 +279,34 @@ export default class MergeHandler { (Array.isArray(content.added) && content.added.length > 0) || (Array.isArray(content.deleted) && content.deleted.length > 0); } - + if (hasChanges) { moduleStatus[type].empty = false; } } - - const allEmpty = Object.values(moduleStatus).every( - (status) => !status.exists || status.empty - ); - + + const allEmpty = Object.values(moduleStatus).every((status) => !status.exists || status.empty); + return { allEmpty, moduleStatus }; } - - displayMergeSummary() { + + async displayMergeSummaryInternal() { if (this.mergeSettings.strategy !== 'ignore') { - for (let module in this.branchCompareData) { - this.mergeSettings.mergeContent[module] = {}; - this.filterBranchCompareData(module, this.branchCompareData[module]); + if (branchDiff.isBranchCompareCacheRef(this.branchCompareData)) { + await this.mergeMergeContentFromCache(); + } else { + for (const module of this.getModuleKeys()) { + this.mergeSettings.mergeContent[module] = {}; + this.filterBranchCompareData(module, this.branchCompareData[module]); + } } } - displayMergeSummary({ + await printMergeSummaryFromHelper({ format: this.displayFormat, compareData: this.mergeSettings.mergeContent, + branchCompareCache: branchDiff.isBranchCompareCacheRef(this.branchCompareData) + ? this.branchCompareData + : undefined, }); } @@ -296,7 +357,7 @@ export default class MergeHandler { cliux.success('Exported the summary successfully'); if (this.enableEntryExp) { - this.executeEntryExpFlow(this.stackAPIKey, mergePayload); + await this.executeEntryExpFlow(this.stackAPIKey, mergePayload); } } @@ -314,7 +375,7 @@ export default class MergeHandler { cliux.success(`Merged the changes successfully. Merge UID: ${mergeResponse.uid}`); if (this.enableEntryExp) { - this.executeEntryExpFlow(mergeResponse.uid, mergePayload); + await this.executeEntryExpFlow(mergeResponse.uid, mergePayload); } } catch (error) { cliux.loaderV2('', spinner); @@ -323,6 +384,7 @@ export default class MergeHandler { } async executeEntryExpFlow(mergeJobUID: string, mergePayload) { + await this.hydrateMergeContentFromCacheForEntryScripts(); const { mergeContent } = this.mergeSettings; let mergePreference = await selectContentMergePreference(); diff --git a/packages/contentstack-branches/src/commands/cm/branches/merge.ts b/packages/contentstack-branches/src/commands/cm/branches/merge.ts index 0fae9a34d3..da925d4362 100644 --- a/packages/contentstack-branches/src/commands/cm/branches/merge.ts +++ b/packages/contentstack-branches/src/commands/cm/branches/merge.ts @@ -1,6 +1,13 @@ import { Command } from '@contentstack/cli-command'; import { cliux, flags, isAuthenticated } from '@contentstack/cli-utilities'; -import { setupMergeInputs, displayBranchStatus, handleErrorMsg, validateCompareData } from '../../../utils'; +import { + setupMergeInputs, + displayBranchStatus, + handleErrorMsg, + validateCompareData, + cleanupSession, + branchDiffUtility as branchDiff, +} from '../../../utils'; import { MergeHandler } from '../../../branch'; export default class BranchMergeCommand extends Command { static description: string = 'Merge changes from a branch'; //TBD update the description @@ -62,6 +69,7 @@ export default class BranchMergeCommand extends Command { static aliases: string[] = []; // Note: alternative usage if any async run(): Promise { + let branchCompareData: any; try { let { flags: branchMergeFlags } = await this.parse(BranchMergeCommand); branchMergeFlags = await setupMergeInputs(branchMergeFlags); @@ -70,15 +78,15 @@ export default class BranchMergeCommand extends Command { handleErrorMsg(err); } // display branch status - const branchCompareData = await displayBranchStatus({ + branchCompareData = await displayBranchStatus({ stackAPIKey: branchMergeFlags['stack-api-key'], baseBranch: branchMergeFlags['base-branch'], compareBranch: branchMergeFlags['compare-branch'], host: this.cmaHost, format: 'compact-text', }); - const isCompareDataValid = validateCompareData(branchCompareData); - if(isCompareDataValid) { + const isCompareDataValid = await validateCompareData(branchCompareData); + if (isCompareDataValid) { await new MergeHandler({ stackAPIKey: branchMergeFlags['stack-api-key'], compareBranch: branchMergeFlags['compare-branch'], @@ -94,12 +102,16 @@ export default class BranchMergeCommand extends Command { mergeSummary: branchMergeFlags.mergeSummary, host: this.cmaHost, enableEntryExp: false, - }).start(); + }).start(); } else { - cliux.print("No changes found to merge."); + cliux.print('No changes found to merge.'); } } catch (error) { console.log('Error in Merge operations', error); + } finally { + if (branchCompareData && branchDiff.isBranchCompareCacheRef(branchCompareData)) { + await cleanupSession(branchCompareData.sessionId).catch(() => undefined); + } } } } diff --git a/packages/contentstack-branches/src/config/index.ts b/packages/contentstack-branches/src/config/index.ts index c5a62ca1cc..7b95856439 100644 --- a/packages/contentstack-branches/src/config/index.ts +++ b/packages/contentstack-branches/src/config/index.ts @@ -1,5 +1,14 @@ const config = { skip: 0, - limit: 100 + limit: 100, + /** Directory under cwd for branch diff/merge JSONL cache */ + cacheDir: '.contentstack-branch-cache', + /** Items per batch when streaming JSONL reads */ + chunkSize: 50, + /** Below this total diff item count, materialize in memory (same as pre-cache behavior) */ + maxMemoryItems: 1000, + /** Batch size for verbose modified-item SDK calls */ + verboseBatchSize: 10, + jsonLinesFormat: true, }; export default config; diff --git a/packages/contentstack-branches/src/interfaces/index.ts b/packages/contentstack-branches/src/interfaces/index.ts index 62b5655f6b..fb67dbf53a 100644 --- a/packages/contentstack-branches/src/interfaces/index.ts +++ b/packages/contentstack-branches/src/interfaces/index.ts @@ -123,6 +123,22 @@ export interface BranchDiffVerboseRes { added?: BranchDiffRes[]; deleted?: BranchDiffRes[]; csvData?: CSVRow[]; // Pre-processed CSV data + /** Temp session for verbose diff JSONL (cleanup when done) */ + verboseCacheSessionId?: string; +} + +export interface BranchCompareCacheRef { + kind: 'cache'; + sessionId: string; + paths: { + content_types: string; + global_fields: string; + }; +} + +export interface InlineBranchCompareResult { + content_types: BranchCompactTextRes; + global_fields: BranchCompactTextRes; } export interface BranchDiffPayload { @@ -135,6 +151,10 @@ export interface BranchDiffPayload { uid?: string; spinner?: any; url?: string; + /** When false, fetch uses legacy in-memory pagination (e.g. tests). Default: disk-backed fetch. */ + useDiskCache?: boolean; + /** Reuse an existing cache session directory */ + cacheSessionId?: string; } export type MergeStrategy = diff --git a/packages/contentstack-branches/src/utils/branch-diff-utility.ts b/packages/contentstack-branches/src/utils/branch-diff-utility.ts index fc76eb5d57..6e257206b2 100644 --- a/packages/contentstack-branches/src/utils/branch-diff-utility.ts +++ b/packages/contentstack-branches/src/utils/branch-diff-utility.ts @@ -8,6 +8,9 @@ import find from 'lodash/find'; import { cliux, messageHandler, managementSDKClient } from '@contentstack/cli-utilities'; import isArray from 'lodash/isArray'; import { diff } from 'just-diff'; +import path from 'path'; +import fs from 'fs'; +import readline from 'readline'; import { extractValueFromPath, getFieldDisplayName, generateCSVDataFromVerbose } from './csv-utility'; import { @@ -19,20 +22,25 @@ import { BranchDiffSummary, BranchCompactTextRes, BranchDiffVerboseRes, + BranchCompareCacheRef, + InlineBranchCompareResult, } from '../interfaces/index'; import config from '../config'; +import { + createSessionId, + ensureSessionDir, + appendJsonLine, + splitRawDiffToModules, + safeUnlink, + cleanupSession, + countJsonLines, + readAllJsonLines, +} from './cache-manager'; /** - * Fetch differences between two branches - * @async - * @method - * @param payload - * @param branchesDiffData - * @param skip - * @param limit - * @returns {*} Promise + * Legacy in-memory pagination (used when payload.useDiskCache === false, e.g. unit tests). */ -async function fetchBranchesDiff( +async function fetchBranchesDiffInMemory( payload: BranchDiffPayload, branchesDiffData = [], skip = config.skip, @@ -42,17 +50,89 @@ async function fetchBranchesDiff( const diffData = branchDiffData?.diff; const nextUrl = branchDiffData?.next_url || ''; - if (branchesDiffData?.length) { - branchesDiffData = [...branchesDiffData, ...diffData]; + let merged = branchesDiffData; + if (merged?.length) { + merged = [...merged, ...diffData]; } else { - branchesDiffData = diffData; + merged = diffData; } if (nextUrl) { skip = skip + limit; - return await fetchBranchesDiff(payload, branchesDiffData, skip, limit); + return await fetchBranchesDiffInMemory(payload, merged, skip, limit); + } + return merged; +} + +/** + * Fetch differences between two branches. + * By default writes paginated results to JSONL on disk to avoid unbounded heap growth, then + * either materializes compact results (small diffs) or returns a cache reference (large diffs). + */ +async function fetchBranchesDiff( + payload: BranchDiffPayload, + branchesDiffData: any[] = [], + skip = config.skip, + limit = config.limit, +): Promise { + if (payload.useDiskCache === false) { + return fetchBranchesDiffInMemory(payload, branchesDiffData, skip, limit); + } + + const sessionId = payload.cacheSessionId || createSessionId(); + try { + const sessionDir = await ensureSessionDir(sessionId); + const rawPath = path.join(sessionDir, 'all.diff.jsonl'); + let currentSkip = skip; + let hasMore = true; + + while (hasMore) { + const branchDiffData = await branchCompareSDK(payload, currentSkip, limit); + const diffData = branchDiffData?.diff || []; + for (const item of diffData) { + await appendJsonLine(rawPath, item); + } + if (branchDiffData?.next_url) { + currentSkip += limit; + } else { + hasMore = false; + } + } + + const { contentTypesPath, globalFieldsPath } = await splitRawDiffToModules(rawPath, sessionDir); + await safeUnlink(rawPath); + + const totalCount = + (await countJsonLines(contentTypesPath)) + (await countJsonLines(globalFieldsPath)); + + if (totalCount <= config.maxMemoryItems) { + const ctRaw = await readAllJsonLines(contentTypesPath); + const gfRaw = await readAllJsonLines(globalFieldsPath); + await cleanupSession(sessionId); + const result: InlineBranchCompareResult = { + content_types: parseCompactText(ctRaw), + global_fields: parseCompactText(gfRaw), + }; + return result; + } + + const ref: BranchCompareCacheRef = { + kind: 'cache', + sessionId, + paths: { + content_types: contentTypesPath, + global_fields: globalFieldsPath, + }, + }; + return ref; + } catch { + await cleanupSession(sessionId).catch(() => undefined); + cliux.print( + 'Warning: Could not write branch compare cache to disk (ensure the current working directory is writable). Falling back to in-memory compare; very large stacks may use more memory.', + { color: 'yellow' }, + ); + return fetchBranchesDiffInMemory(payload, branchesDiffData, skip, limit); } - return branchesDiffData; } /** @@ -214,6 +294,162 @@ function printCompactTextView(branchTextRes: BranchCompactTextRes): void { } } +/** + * Type guard for disk-backed branch compare cache. + */ +function isBranchCompareCacheRef(data: unknown): data is BranchCompareCacheRef { + return Boolean( + data && + typeof data === 'object' && + (data as BranchCompareCacheRef).kind === 'cache' && + typeof (data as BranchCompareCacheRef).sessionId === 'string' && + (data as BranchCompareCacheRef).paths, + ); +} + +/** + * Type guard for in-memory compact branch compare (small diffs). + */ +function isInlineBranchCompareResult(data: unknown): data is InlineBranchCompareResult { + if (!data || typeof data !== 'object' || Array.isArray(data)) return false; + const o = data as Record; + if ((o as { kind?: string }).kind === 'cache') return false; + return 'content_types' in o && 'global_fields' in o; +} + +function summaryFromCompact( + compact: BranchCompactTextRes, + baseBranch: string, + compareBranch: string, +): BranchDiffSummary { + return { + base: baseBranch, + compare: compareBranch, + base_only: compact.deleted?.length ?? 0, + compare_only: compact.added?.length ?? 0, + modified: compact.modified?.length ?? 0, + }; +} + +async function parseSummaryFromJsonlPath( + modulePath: string, + baseBranch: string, + compareBranch: string, +): Promise { + const resolved = path.resolve(modulePath); + let baseCount = 0, + compareCount = 0, + modifiedCount = 0; + if (!fs.existsSync(resolved)) { + return { + base: baseBranch, + compare: compareBranch, + base_only: 0, + compare_only: 0, + modified: 0, + }; + } + const stream = fs.createReadStream(resolved, { encoding: 'utf8' }); + const rl = readline.createInterface({ input: stream, crlfDelay: Infinity }); + for await (const line of rl) { + const t = line.trim(); + if (!t) continue; + const diff = JSON.parse(t) as BranchDiffRes; + if (diff.status === 'compare_only') compareCount++; + else if (diff.status === 'base_only') baseCount++; + else if (diff.status === 'modified') modifiedCount++; + } + return { + base: baseBranch, + compare: compareBranch, + base_only: baseCount, + compare_only: compareCount, + modified: modifiedCount, + }; +} + +function flatCompactToRawArray(compact: BranchCompactTextRes): BranchDiffRes[] { + return [...(compact.added ?? []), ...(compact.modified ?? []), ...(compact.deleted ?? [])]; +} + +/** + * Print compact diff for one module from JSONL (three passes preserve added → modified → deleted order). + */ +async function printCompactTextViewFromJsonlModulePath(modulePath: string): Promise { + const resolved = path.resolve(modulePath); + if (!fs.existsSync(resolved)) return; + + const printOne = (diff: BranchDiffRes) => { + if (diff.merge_strategy === 'ignore') return; + if (diff.status === 'compare_only') { + cliux.print(chalk.green(`+ '${diff.title}' ${startCase(camelCase(diff.type))}`)); + } else if (diff.status === 'modified') { + cliux.print(chalk.blue(`± '${diff.title}' ${startCase(camelCase(diff.type))}`)); + } else if (diff.status === 'base_only') { + cliux.print(chalk.red(`- '${diff.title}' ${startCase(camelCase(diff.type))}`)); + } + }; + + const printStatus = async (status: string) => { + const stream = fs.createReadStream(resolved, { encoding: 'utf8' }); + const rl = readline.createInterface({ input: stream, crlfDelay: Infinity }); + for await (const line of rl) { + const t = line.trim(); + if (!t) continue; + const diff = JSON.parse(t) as BranchDiffRes; + if (diff.status === status) printOne(diff); + } + }; + + cliux.print(' '); + await printStatus('compare_only'); + await printStatus('modified'); + await printStatus('base_only'); +} + +async function countHasChangesFromCachePath( + modulePath: string, + strategy: string, +): Promise<{ exists: boolean; hasChanges: boolean }> { + const resolved = path.resolve(modulePath); + if (!fs.existsSync(resolved)) { + return { exists: false, hasChanges: false }; + } + const modifiedOnlyStrategies = new Set(['merge_modified_only_prefer_base', 'merge_modified_only_prefer_compare']); + const addedOnlyStrategies = new Set(['merge_new_only']); + + let hasModified = 0; + let hasAdded = 0; + let hasDeleted = 0; + const stream = fs.createReadStream(resolved, { encoding: 'utf8' }); + const rl = readline.createInterface({ input: stream, crlfDelay: Infinity }); + for await (const line of rl) { + const t = line.trim(); + if (!t) continue; + const diff = JSON.parse(t) as BranchDiffRes; + if (diff.status === 'modified') hasModified++; + else if (diff.status === 'compare_only') hasAdded++; + else if (diff.status === 'base_only') hasDeleted++; + } + + const exists = hasModified + hasAdded + hasDeleted > 0; + let hasChanges = false; + if (modifiedOnlyStrategies.has(strategy)) { + hasChanges = hasModified > 0; + } else if (addedOnlyStrategies.has(strategy)) { + hasChanges = hasAdded > 0; + } else { + hasChanges = hasModified > 0 || hasAdded > 0 || hasDeleted > 0; + } + return { exists, hasChanges }; +} + +async function loadCompactModuleFromCache(cache: BranchCompareCacheRef, module: string): Promise { + const p = cache.paths[module as 'content_types' | 'global_fields']; + const raw = await readAllJsonLines(p); + return parseCompactText(raw); +} + /** * filter out text verbose details - deleted, added, modified details * @async @@ -225,34 +461,53 @@ function printCompactTextView(branchTextRes: BranchCompactTextRes): void { async function parseVerbose(branchesDiffData: any[], payload: BranchDiffPayload): Promise { const { added, modified, deleted } = parseCompactText(branchesDiffData); let modifiedDetailList: BranchModifiedDetails[] = []; - - for (let i = 0; i < modified?.length; i++) { - const diff: BranchDiffRes = modified[i]; - payload.uid = diff?.uid; - const branchDiff = await branchCompareSDK(payload); - if (branchDiff) { - const { listOfModifiedFields, listOfAddedFields, listOfDeletedFields } = await prepareBranchVerboseRes( - branchDiff, + let verboseSessionId: string | undefined; + + if (modified?.length) { + verboseSessionId = createSessionId(); + const sessionDir = await ensureSessionDir(verboseSessionId); + const modifiedDetailsPath = path.join(sessionDir, 'verbose-modified.jsonl'); + + const batchSize = config.verboseBatchSize; + for (let i = 0; i < modified.length; i += batchSize) { + const chunk = modified.slice(i, i + batchSize); + const results = await Promise.all( + chunk.map(async (diff: BranchDiffRes) => { + payload.uid = diff?.uid; + const branchDiff = await branchCompareSDK(payload); + if (branchDiff) { + const { listOfModifiedFields, listOfAddedFields, listOfDeletedFields } = await prepareBranchVerboseRes( + branchDiff, + ); + return { + moduleDetails: diff, + modifiedFields: { + modified: listOfModifiedFields, + deleted: listOfDeletedFields, + added: listOfAddedFields, + }, + } as BranchModifiedDetails; + } + return null; + }), ); - modifiedDetailList.push({ - moduleDetails: diff, - modifiedFields: { - modified: listOfModifiedFields, - deleted: listOfDeletedFields, - added: listOfAddedFields, - }, - }); + for (const r of results) { + if (r) await appendJsonLine(modifiedDetailsPath, r); + } } + + modifiedDetailList = (await readAllJsonLines(modifiedDetailsPath)) as BranchModifiedDetails[]; } const verboseRes: BranchDiffVerboseRes = { modified: modifiedDetailList, added: added, deleted: deleted, + verboseCacheSessionId: verboseSessionId, }; verboseRes.csvData = generateCSVDataFromVerbose(verboseRes); - + return verboseRes; } @@ -629,6 +884,7 @@ function prepareModifiedField(params: { export { fetchBranchesDiff, + fetchBranchesDiffInMemory, parseSummary, printSummary, parseCompactText, @@ -640,4 +896,12 @@ export { prepareBranchVerboseRes, deepDiff, prepareModifiedDiff, + isBranchCompareCacheRef, + isInlineBranchCompareResult, + summaryFromCompact, + flatCompactToRawArray, + printCompactTextViewFromJsonlModulePath, + countHasChangesFromCachePath, + loadCompactModuleFromCache, + parseSummaryFromJsonlPath, }; diff --git a/packages/contentstack-branches/src/utils/cache-manager.ts b/packages/contentstack-branches/src/utils/cache-manager.ts new file mode 100644 index 0000000000..6e5570fea0 --- /dev/null +++ b/packages/contentstack-branches/src/utils/cache-manager.ts @@ -0,0 +1,178 @@ +import fs from 'fs'; +import path from 'path'; +import readline from 'readline'; +import { randomBytes } from 'crypto'; +import { promisify } from 'util'; +import { sanitizePath } from '@contentstack/cli-utilities'; +import config from '../config'; + +const mkdir = promisify(fs.mkdir); +const appendFile = promisify(fs.appendFile); +const unlink = promisify(fs.unlink); +const rm = promisify(fs.rm); + +export interface JsonLineWriter { + readonly filePath: string; + writeLine(obj: unknown): Promise; + close(): Promise; +} + +/** + * Root directory for branch diff cache (under cwd). + */ +export function getCacheRootDir(): string { + return path.resolve(process.cwd(), sanitizePath(config.cacheDir)); +} + +/** + * Session directory for a single merge/diff operation. + */ +export function getSessionDir(sessionId: string): string { + return path.join(getCacheRootDir(), sanitizePath(sessionId)); +} + +export function createSessionId(): string { + return randomBytes(16).toString('hex'); +} + +export async function ensureSessionDir(sessionId: string): Promise { + const dir = getSessionDir(sessionId); + await mkdir(dir, { recursive: true }); + return dir; +} + +/** + * Create a JSON Lines writer (one JSON object per line). + */ +export function createJsonLineWriter(filePath: string): JsonLineWriter { + const resolved = path.resolve(sanitizePath(filePath)); + let closed = false; + return { + filePath: resolved, + async writeLine(obj: unknown): Promise { + if (closed) return; + const line = `${JSON.stringify(obj)}\n`; + await appendFile(resolved, line, 'utf8'); + }, + async close(): Promise { + closed = true; + }, + }; +} + +/** + * Append a single JSON line to a file (convenience for hot paths). + */ +export async function appendJsonLine(filePath: string, obj: unknown): Promise { + const resolved = path.resolve(sanitizePath(filePath)); + const line = `${JSON.stringify(obj)}\n`; + await appendFile(resolved, line, 'utf8'); +} + +/** + * Count non-empty lines in a JSONL file (streaming). + */ +export async function countJsonLines(filePath: string): Promise { + const resolved = path.resolve(sanitizePath(filePath)); + if (!fs.existsSync(resolved)) return 0; + const stream = fs.createReadStream(resolved, { encoding: 'utf8' }); + const rl = readline.createInterface({ input: stream, crlfDelay: Infinity }); + let count = 0; + for await (const line of rl) { + if (line.trim()) count++; + } + return count; +} + +/** + * Read all lines as parsed JSON (use only when total size is bounded by maxMemoryItems). + */ +export async function readAllJsonLines(filePath: string): Promise { + const resolved = path.resolve(sanitizePath(filePath)); + if (!fs.existsSync(resolved)) return []; + const out: T[] = []; + const stream = fs.createReadStream(resolved, { encoding: 'utf8' }); + const rl = readline.createInterface({ input: stream, crlfDelay: Infinity }); + for await (const line of rl) { + const t = line.trim(); + if (!t) continue; + out.push(JSON.parse(t) as T); + } + return out; +} + +/** + * Async generator: yield arrays of up to chunkSize parsed JSON objects. + */ +export async function* readJsonLinesChunked( + filePath: string, + chunkSize: number, +): AsyncGenerator { + const resolved = path.resolve(sanitizePath(filePath)); + if (!fs.existsSync(resolved)) return; + const stream = fs.createReadStream(resolved, { encoding: 'utf8' }); + const rl = readline.createInterface({ input: stream, crlfDelay: Infinity }); + let batch: T[] = []; + for await (const line of rl) { + const t = line.trim(); + if (!t) continue; + batch.push(JSON.parse(t) as T); + if (batch.length >= chunkSize) { + yield batch; + batch = []; + } + } + if (batch.length) yield batch; +} + +/** + * Split a combined diff JSONL file into content_types and global_fields JSONL files. + * Returns paths to the two module files. + */ +export async function splitRawDiffToModules( + rawDiffPath: string, + sessionDir: string, +): Promise<{ contentTypesPath: string; globalFieldsPath: string }> { + const contentTypesPath = path.join(sessionDir, 'content_types.jsonl'); + const globalFieldsPath = path.join(sessionDir, 'global_fields.jsonl'); + const ctWriter = createJsonLineWriter(contentTypesPath); + const gfWriter = createJsonLineWriter(globalFieldsPath); + try { + for await (const batch of readJsonLinesChunked>(rawDiffPath, 500)) { + for (const item of batch) { + const t = item?.type as string | undefined; + if (t === 'content_type' || t === 'content_types') { + await ctWriter.writeLine(item); + } else if (t === 'global_field' || t === 'global_fields') { + await gfWriter.writeLine(item); + } + } + } + } finally { + await ctWriter.close(); + await gfWriter.close(); + } + return { contentTypesPath, globalFieldsPath }; +} + +/** + * Remove session directory and all files. + */ +export async function cleanupSession(sessionId: string): Promise { + const dir = getSessionDir(sessionId); + if (fs.existsSync(dir)) { + await rm(dir, { recursive: true, force: true }); + } +} + +/** + * Remove a file if it exists (ignore errors). + */ +export async function safeUnlink(filePath: string): Promise { + try { + const resolved = path.resolve(sanitizePath(filePath)); + if (fs.existsSync(resolved)) await unlink(resolved); + } catch { + /* ignore */ + } +} diff --git a/packages/contentstack-branches/src/utils/index.ts b/packages/contentstack-branches/src/utils/index.ts index 64645a298a..b5473354f2 100644 --- a/packages/contentstack-branches/src/utils/index.ts +++ b/packages/contentstack-branches/src/utils/index.ts @@ -5,6 +5,7 @@ import fs from 'fs'; import path from 'path'; import forEach from 'lodash/forEach'; import { configHandler, cliux, messageHandler, sanitizePath } from '@contentstack/cli-utilities'; +import { countJsonLines } from './cache-manager'; import { MergeParams } from '../interfaces'; export const getbranchesList = (branchResult, baseBranch: string) => { @@ -118,7 +119,20 @@ export async function handleErrorMsg(err, retryCallback?: () => Promise) { process.exit(1); } -export function validateCompareData(branchCompareData) { +export async function validateCompareData(branchCompareData): Promise { + if (!branchCompareData) { + return false; + } + if (branchCompareData.kind === 'cache' && branchCompareData.paths) { + const ctPath = branchCompareData.paths.content_types; + const gfPath = branchCompareData.paths.global_fields; + if (!ctPath || !gfPath) { + return false; + } + const ct = await countJsonLines(ctPath); + const gf = await countJsonLines(gfPath); + return ct + gf > 0; + } let validCompareData = false; if (branchCompareData.content_types) { forEach(branchCompareData.content_types, (value, key) => { @@ -146,4 +160,5 @@ export * from './entry-update-script'; export * from './entry-create-script'; export * as interactive from './interactive'; export * as branchDiffUtility from './branch-diff-utility'; +export { cleanupSession } from './cache-manager'; export * as deleteBranchUtility from './delete-branch'; diff --git a/packages/contentstack-branches/src/utils/merge-helper.ts b/packages/contentstack-branches/src/utils/merge-helper.ts index 2fbcef2863..d6911aef3d 100644 --- a/packages/contentstack-branches/src/utils/merge-helper.ts +++ b/packages/contentstack-branches/src/utils/merge-helper.ts @@ -2,7 +2,7 @@ import startCase from 'lodash/startCase'; import camelCase from 'lodash/camelCase'; import path from 'path'; import { cliux, managementSDKClient } from '@contentstack/cli-utilities'; -import { BranchDiffPayload, MergeSummary } from '../interfaces'; +import { BranchCompareCacheRef, BranchDiffPayload, MergeSummary } from '../interfaces'; import { askCompareBranch, askStackAPIKey, @@ -14,6 +14,7 @@ import { getMergeQueueStatus, readFile, } from './'; +import { readAllJsonLines } from './cache-manager'; export const prepareMergeRequestPayload = (options) => { return { @@ -94,11 +95,73 @@ export const displayBranchStatus = async (options) => { }; payload.spinner = spinner; - const branchDiffData = await branchDiff.fetchBranchesDiff(payload); - const diffData = branchDiff.filterBranchDiffDataByModule(branchDiffData); + const fetchResult = await branchDiff.fetchBranchesDiff(payload); cliux.loaderV2('', spinner); - let parsedResponse = {}; + const parsedResponse: Record = {}; + + if (branchDiff.isBranchCompareCacheRef(fetchResult)) { + const cacheRef = fetchResult as BranchCompareCacheRef; + for (const module of ['content_types', 'global_fields'] as const) { + payload.module = module; + const modulePath = cacheRef.paths[module]; + cliux.print(' '); + cliux.print(`${startCase(camelCase(module))} Summary:`, { color: 'yellow' }); + const diffSummary = await branchDiff.parseSummaryFromJsonlPath( + modulePath, + options.baseBranch, + options.compareBranch, + ); + branchDiff.printSummary(diffSummary); + const spinner1 = cliux.loaderV2('Loading branch differences...'); + if (options.format === 'compact-text') { + cliux.loaderV2('', spinner1); + await branchDiff.printCompactTextViewFromJsonlModulePath(modulePath); + } else if (options.format === 'detailed-text') { + const branchModuleData = await readAllJsonLines(modulePath); + const verboseRes = await branchDiff.parseVerbose(branchModuleData, payload); + cliux.loaderV2('', spinner1); + branchDiff.printVerboseTextView(verboseRes); + if (verboseRes.verboseCacheSessionId) { + const { cleanupSession } = await import('./cache-manager'); + await cleanupSession(verboseRes.verboseCacheSessionId); + } + } + } + return cacheRef; + } + + if (branchDiff.isInlineBranchCompareResult(fetchResult)) { + for (const module of ['content_types', 'global_fields'] as const) { + const branchTextRes = fetchResult[module]; + payload.module = module; + cliux.print(' '); + cliux.print(`${startCase(camelCase(module))} Summary:`, { color: 'yellow' }); + const diffSummary = branchDiff.summaryFromCompact(branchTextRes, options.baseBranch, options.compareBranch); + branchDiff.printSummary(diffSummary); + const spinner1 = cliux.loaderV2('Loading branch differences...'); + if (options.format === 'compact-text') { + cliux.loaderV2('', spinner1); + branchDiff.printCompactTextView(branchTextRes); + parsedResponse[module] = branchTextRes; + } else if (options.format === 'detailed-text') { + const branchModuleData = branchDiff.flatCompactToRawArray(branchTextRes); + const verboseRes = await branchDiff.parseVerbose(branchModuleData, payload); + cliux.loaderV2('', spinner1); + branchDiff.printVerboseTextView(verboseRes); + parsedResponse[module] = verboseRes; + if (verboseRes.verboseCacheSessionId) { + const { cleanupSession } = await import('./cache-manager'); + await cleanupSession(verboseRes.verboseCacheSessionId); + } + } + } + return { content_types: parsedResponse.content_types, global_fields: parsedResponse.global_fields }; + } + + const branchDiffData = fetchResult; + const diffData = branchDiff.filterBranchDiffDataByModule(branchDiffData); + for (let module in diffData) { const branchModuleData = diffData[module]; payload.module = module; @@ -117,19 +180,36 @@ export const displayBranchStatus = async (options) => { cliux.loaderV2('', spinner1); branchDiff.printVerboseTextView(verboseRes); parsedResponse[module] = verboseRes; + if (verboseRes.verboseCacheSessionId) { + const { cleanupSession } = await import('./cache-manager'); + await cleanupSession(verboseRes.verboseCacheSessionId); + } } } return parsedResponse; }; -export const displayMergeSummary = (options) => { +export const displayMergeSummary = async (options: { + format: string; + compareData: Record; + branchCompareCache?: BranchCompareCacheRef; +}) => { cliux.print(' '); cliux.print(`Merge Summary:`, { color: 'yellow' }); - for (let module in options.compareData) { - if (options.format === 'compact-text') { - branchDiff.printCompactTextView(options.compareData[module]); - } else if (options.format === 'detailed-text') { - branchDiff.printVerboseTextView(options.compareData[module]); + if (options.branchCompareCache) { + for (const module of ['content_types', 'global_fields'] as const) { + const p = options.branchCompareCache.paths[module]; + if (options.format === 'compact-text') { + await branchDiff.printCompactTextViewFromJsonlModulePath(p); + } + } + } else { + for (let module in options.compareData) { + if (options.format === 'compact-text') { + branchDiff.printCompactTextView(options.compareData[module]); + } else if (options.format === 'detailed-text') { + branchDiff.printVerboseTextView(options.compareData[module]); + } } } cliux.print(' '); diff --git a/packages/contentstack-branches/test/unit/commands/cm/branches/create.test.js b/packages/contentstack-branches/test/unit/commands/cm/branches/create.test.js new file mode 100644 index 0000000000..18e27ade09 --- /dev/null +++ b/packages/contentstack-branches/test/unit/commands/cm/branches/create.test.js @@ -0,0 +1,58 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const mocha_1 = require("mocha"); +const chai_1 = require("chai"); +const sinon_1 = require("sinon"); +const create_1 = tslib_1.__importDefault(require("../../../../../src/commands/cm/branches/create")); +const data_1 = require("../../../mock/data"); +const utils_1 = require("../../../../../src/utils"); +(0, mocha_1.describe)('Create branch', () => { + (0, mocha_1.it)('Create branch with all flags, should be successful', async function () { + const stub1 = (0, sinon_1.stub)(create_1.default.prototype, 'run').resolves(data_1.createBranchMockData.flags); + const args = [ + '--stack-api-key', + data_1.createBranchMockData.flags.apiKey, + '--source', + data_1.createBranchMockData.flags.source, + '--uid', + data_1.createBranchMockData.flags.uid, + ]; + await create_1.default.run(args); + (0, chai_1.expect)(stub1.calledOnce).to.be.true; + stub1.restore(); + }); + (0, mocha_1.it)('Should prompt when api key is not passed', async () => { + const askStackAPIKey = (0, sinon_1.stub)(utils_1.interactive, 'askStackAPIKey').resolves(data_1.createBranchMockData.flags.apiKey); + await create_1.default.run([ + '--source', + data_1.createBranchMockData.flags.source, + '--uid', + data_1.createBranchMockData.flags.uid, + ]); + (0, chai_1.expect)(askStackAPIKey.calledOnce).to.be.true; + askStackAPIKey.restore(); + }); + (0, mocha_1.it)('Should prompt when source branch is not passed', async () => { + const askSourceBranch = (0, sinon_1.stub)(utils_1.interactive, 'askSourceBranch').resolves(data_1.createBranchMockData.flags.source); + await create_1.default.run([ + '--stack-api-key', + data_1.createBranchMockData.flags.apiKey, + '--uid', + data_1.createBranchMockData.flags.uid, + ]); + (0, chai_1.expect)(askSourceBranch.calledOnce).to.be.true; + askSourceBranch.restore(); + }); + (0, mocha_1.it)('Should prompt when new branch uid is not passed', async () => { + const askBranchUid = (0, sinon_1.stub)(utils_1.interactive, 'askBranchUid').resolves(data_1.createBranchMockData.flags.uid); + await create_1.default.run([ + '--stack-api-key', + data_1.createBranchMockData.flags.apiKey, + '--source', + data_1.createBranchMockData.flags.source, + ]); + (0, chai_1.expect)(askBranchUid.calledOnce).to.be.true; + askBranchUid.restore(); + }); +}); diff --git a/packages/contentstack-branches/test/unit/commands/cm/branches/delete.test.js b/packages/contentstack-branches/test/unit/commands/cm/branches/delete.test.js new file mode 100644 index 0000000000..cd5d4ecbfe --- /dev/null +++ b/packages/contentstack-branches/test/unit/commands/cm/branches/delete.test.js @@ -0,0 +1,87 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const mocha_1 = require("mocha"); +const chai_1 = require("chai"); +const sinon_1 = require("sinon"); +const delete_1 = tslib_1.__importDefault(require("../../../../../src/commands/cm/branches/delete")); +const data_1 = require("../../../mock/data"); +const utils_1 = require("../../../../../src/utils"); +(0, mocha_1.describe)('Delete branch', () => { + let deleteBranchStub; + let isAuthenticatedStub; + beforeEach(() => { + // Mock the deleteBranch function to prevent actual API calls + deleteBranchStub = (0, sinon_1.stub)().resolves(); + // Mock isAuthenticated to return true + isAuthenticatedStub = (0, sinon_1.stub)().returns(true); + }); + afterEach(() => { + (0, sinon_1.restore)(); + }); + (0, mocha_1.it)('Delete branch with all flags, should be successful', async function () { + // Mock the deleteBranch function + const deleteBranchMock = (0, sinon_1.stub)().resolves(); + // Stub the deleteBranch import + const deleteBranchStub = (0, sinon_1.stub)().resolves(); + // Mock the command's run method to avoid actual execution + const runStub = (0, sinon_1.stub)(delete_1.default.prototype, 'run').callsFake(async function () { + // Mock the internal logic + const { flags } = await this.parse(delete_1.default); + (0, chai_1.expect)(flags['stack-api-key']).to.equal(data_1.deleteBranchMockData.flags.apiKey); + (0, chai_1.expect)(flags.uid).to.equal(data_1.deleteBranchMockData.flags.uid); + (0, chai_1.expect)(flags.yes).to.be.true; + return deleteBranchMock(); + }); + await delete_1.default.run([ + '--stack-api-key', + data_1.deleteBranchMockData.flags.apiKey, + '--uid', + data_1.deleteBranchMockData.flags.uid, + '-y', + ]); + (0, chai_1.expect)(runStub.calledOnce).to.be.true; + }); + (0, mocha_1.it)('Should prompt when api key is not passed', async () => { + const askStackAPIKey = (0, sinon_1.stub)(utils_1.interactive, 'askStackAPIKey').resolves(data_1.deleteBranchMockData.flags.apiKey); + // Mock the command's run method + const runStub = (0, sinon_1.stub)(delete_1.default.prototype, 'run').callsFake(async function () { + const { flags } = await this.parse(delete_1.default); + (0, chai_1.expect)(flags.uid).to.equal(data_1.deleteBranchMockData.flags.uid); + (0, chai_1.expect)(flags.yes).to.be.true; + return Promise.resolve(); + }); + await delete_1.default.run(['--uid', data_1.deleteBranchMockData.flags.uid, "--yes"]); + (0, chai_1.expect)(runStub.calledOnce).to.be.true; + }); + (0, mocha_1.it)('Should prompt when branch is not passed and also ask confirmation wihtout -y flag', async () => { + const askSourceBranch = (0, sinon_1.stub)(utils_1.interactive, 'askBranchUid').resolves(data_1.deleteBranchMockData.flags.uid); + // Mock the command's run method + const runStub = (0, sinon_1.stub)(delete_1.default.prototype, 'run').callsFake(async function () { + const { flags } = await this.parse(delete_1.default); + (0, chai_1.expect)(flags['stack-api-key']).to.equal(data_1.deleteBranchMockData.flags.apiKey); + (0, chai_1.expect)(flags.yes).to.be.true; + return Promise.resolve(); + }); + await delete_1.default.run(['--stack-api-key', data_1.deleteBranchMockData.flags.apiKey, "--yes"]); + (0, chai_1.expect)(runStub.calledOnce).to.be.true; + }); + (0, mocha_1.it)('Should ask branch name confirmation if yes not provided, success if same branch uid provided', async () => { + const askConfirmation = (0, sinon_1.stub)(utils_1.interactive, 'askBranchNameConfirmation').resolves(data_1.deleteBranchMockData.flags.uid); + // Mock the command's run method + const runStub = (0, sinon_1.stub)(delete_1.default.prototype, 'run').callsFake(async function () { + const { flags } = await this.parse(delete_1.default); + (0, chai_1.expect)(flags['stack-api-key']).to.equal(data_1.deleteBranchMockData.flags.apiKey); + (0, chai_1.expect)(flags.uid).to.equal(data_1.deleteBranchMockData.flags.uid); + (0, chai_1.expect)(flags.yes).to.be.undefined; + return Promise.resolve(); + }); + await delete_1.default.run([ + '--stack-api-key', + data_1.deleteBranchMockData.flags.apiKey, + '--uid', + data_1.deleteBranchMockData.flags.uid + ]); + (0, chai_1.expect)(runStub.calledOnce).to.be.true; + }); +}); diff --git a/packages/contentstack-branches/test/unit/commands/cm/branches/diff.test.js b/packages/contentstack-branches/test/unit/commands/cm/branches/diff.test.js new file mode 100644 index 0000000000..f6eb27af70 --- /dev/null +++ b/packages/contentstack-branches/test/unit/commands/cm/branches/diff.test.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const mocha_1 = require("mocha"); +const chai_1 = require("chai"); +const sinon_1 = require("sinon"); +const diff_1 = tslib_1.__importDefault(require("../../../../../src/commands/cm/branches/diff")); +const branch_1 = require("../../../../../src/branch"); +const data_1 = require("../../../mock/data"); +(0, mocha_1.describe)('Diff Command', () => { + (0, mocha_1.it)('Branch diff with all flags, should be successful', async function () { + const stub1 = (0, sinon_1.stub)(branch_1.BranchDiffHandler.prototype, 'run').resolves(data_1.mockData.data); + await diff_1.default.run([ + '--compare-branch', + data_1.mockData.flags.compareBranch, + '--module', + data_1.mockData.flags.module, + '-k', + data_1.mockData.flags.stackAPIKey, + '--base-branch', + data_1.mockData.flags.baseBranch, + ]); + (0, chai_1.expect)(stub1.calledOnce).to.be.true; + stub1.restore(); + }); + (0, mocha_1.it)('Branch diff when format type is verbose, should display verbose view', async function () { + const stub1 = (0, sinon_1.stub)(diff_1.default.prototype, 'run').resolves(data_1.mockData.verboseContentTypeRes); + await diff_1.default.run([ + '--compare-branch', + data_1.mockData.flags.compareBranch, + '--base-branch', + data_1.mockData.flags.baseBranch, + '--module', + data_1.mockData.flags.module, + '-k', + data_1.mockData.flags.stackAPIKey, + '--format', + 'verbose' + ]); + stub1.restore(); + }).timeout(10000); + (0, mocha_1.it)('Branch summary when module is of both type(content_types & global fields)', async function () { + const stub1 = (0, sinon_1.stub)(diff_1.default.prototype, 'run').resolves(data_1.mockData.data); + await diff_1.default.run([ + '--compare-branch', + data_1.mockData.flags.compareBranch, + '--base-branch', + data_1.mockData.flags.baseBranch, + '--module', + 'all', + '-k', + data_1.mockData.flags.stackAPIKey + ]); + stub1.restore(); + }); +}); diff --git a/packages/contentstack-branches/test/unit/commands/cm/branches/list.test.js b/packages/contentstack-branches/test/unit/commands/cm/branches/list.test.js new file mode 100644 index 0000000000..eb5c579d61 --- /dev/null +++ b/packages/contentstack-branches/test/unit/commands/cm/branches/list.test.js @@ -0,0 +1,60 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const mocha_1 = require("mocha"); +const chai_1 = require("chai"); +const sinon_1 = require("sinon"); +const index_1 = tslib_1.__importDefault(require("../../../../../src/commands/cm/branches/index")); +const data_1 = require("../../../mock/data"); +const utils_1 = require("../../../../../src/utils"); +const cli_utilities_1 = require("@contentstack/cli-utilities"); +(0, mocha_1.describe)('List branches', () => { + afterEach(() => { + (0, sinon_1.restore)(); + }); + (0, mocha_1.it)('List branches with all flags, should be successful', async function () { + // Mock the command's run method to avoid actual API calls + const runStub = (0, sinon_1.stub)(index_1.default.prototype, 'run').callsFake(async function () { + const { flags } = await this.parse(index_1.default); + (0, chai_1.expect)(flags['stack-api-key']).to.equal(data_1.branchMockData.flags.apiKey); + return Promise.resolve(); + }); + const args = ['--stack-api-key', data_1.branchMockData.flags.apiKey]; + await index_1.default.run(args); + (0, chai_1.expect)(runStub.calledOnce).to.be.true; + }); + (0, mocha_1.it)('Should prompt when api key is not passed', async () => { + const askStackAPIKey = (0, sinon_1.stub)(utils_1.interactive, 'askStackAPIKey').resolves(data_1.branchMockData.flags.apiKey); + // Mock the command's run method + const runStub = (0, sinon_1.stub)(index_1.default.prototype, 'run').callsFake(async function () { + return Promise.resolve(); + }); + await index_1.default.run([]); + (0, chai_1.expect)(runStub.calledOnce).to.be.true; + }); + (0, mocha_1.it)('branches with verbose flag, should list branches in table', async () => { + const branchStub = (0, sinon_1.stub)(cli_utilities_1.cliux, 'table').callsFake((branches) => { + (0, chai_1.expect)(branches).to.have.length.greaterThan(0); + }); + // Mock the command's run method + const runStub = (0, sinon_1.stub)(index_1.default.prototype, 'run').callsFake(async function () { + const { flags } = await this.parse(index_1.default); + (0, chai_1.expect)(flags['stack-api-key']).to.equal(data_1.branchMockData.flags.apiKey); + (0, chai_1.expect)(flags.verbose).to.be.true; + return Promise.resolve(); + }); + await index_1.default.run(['-k', data_1.branchMockData.flags.apiKey, '--verbose']); + (0, chai_1.expect)(runStub.calledOnce).to.be.true; + }); + (0, mocha_1.it)('Branch diff when format type is verbose, should display verbose view', async function () { + // Mock the command's run method + const runStub = (0, sinon_1.stub)(index_1.default.prototype, 'run').callsFake(async function () { + const { flags } = await this.parse(index_1.default); + (0, chai_1.expect)(flags['stack-api-key']).to.equal(data_1.branchMockData.flags.apiKey); + (0, chai_1.expect)(flags.verbose).to.be.true; + return Promise.resolve(); + }); + await index_1.default.run(['-k', data_1.branchMockData.flags.apiKey, '--verbose']); + (0, chai_1.expect)(runStub.calledOnce).to.be.true; + }); +}); diff --git a/packages/contentstack-branches/test/unit/commands/cm/branches/merge.test.js b/packages/contentstack-branches/test/unit/commands/cm/branches/merge.test.js new file mode 100644 index 0000000000..af73405991 --- /dev/null +++ b/packages/contentstack-branches/test/unit/commands/cm/branches/merge.test.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const mocha_1 = require("mocha"); +const chai_1 = require("chai"); +const sinon_1 = require("sinon"); +const merge_1 = tslib_1.__importDefault(require("../../../../../src/commands/cm/branches/merge")); +const cli_utilities_1 = require("@contentstack/cli-utilities"); +const data_1 = require("../../../mock/data"); +const mergeHelper = tslib_1.__importStar(require("../../../../../src/utils/merge-helper")); +const index_1 = require("../../../../../src/branch/index"); +(0, mocha_1.describe)('Merge Command', () => { + let successMessageStub; + (0, mocha_1.beforeEach)(function () { + successMessageStub = (0, sinon_1.stub)(cli_utilities_1.cliux, 'print'); + }); + (0, mocha_1.afterEach)(function () { + successMessageStub.restore(); + }); + (0, mocha_1.it)('Merge branch changes with all flags, should be successful', async function () { + const mergeInputStub = (0, sinon_1.stub)(mergeHelper, 'setupMergeInputs').resolves(data_1.mockData.mergeData.flags); + const displayBranchStatusStub = (0, sinon_1.stub)(mergeHelper, 'displayBranchStatus').resolves(data_1.mockData.mergeData.branchCompareData); + const mergeHandlerStub = (0, sinon_1.stub)(index_1.MergeHandler.prototype, 'start').resolves(); + await merge_1.default.run([ + '--compare-branch', + data_1.mockData.flags.compareBranch, + '-k', + data_1.mockData.flags.stackAPIKey, + '--base-branch', + data_1.mockData.flags.baseBranch, + ]); + (0, chai_1.expect)(mergeHandlerStub.calledOnce).to.be.true; + mergeInputStub.restore(); + displayBranchStatusStub.restore(); + mergeHandlerStub.restore(); + }); +}); +// commands diff --git a/packages/contentstack-branches/test/unit/mock/contentstack-management-sdk.js b/packages/contentstack-branches/test/unit/mock/contentstack-management-sdk.js new file mode 100644 index 0000000000..e2e35ed1e2 --- /dev/null +++ b/packages/contentstack-branches/test/unit/mock/contentstack-management-sdk.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.client = exports.sdk = void 0; +function sdk(mocData = {}, resolve = true) { + const { findOneData, findData, countData, fetchData, downloadData } = mocData; + const query = (param) => { + return { + find: () => { + return Promise[resolve ? 'resolve' : 'reject'](findData); + }, + count: () => { + return Promise[resolve ? 'resolve' : 'reject'](countData); + }, + findOne: () => { + return Promise[resolve ? 'resolve' : 'reject'](findOneData); + }, + }; + }; + const asset = (uid) => { + return { + query, + download: () => Promise[resolve ? 'resolve' : 'reject'](downloadData), + }; + }; + const stack = () => { + return { + query, + asset, + fetch: (param) => { + return Promise[resolve ? 'resolve' : 'reject'](fetchData); + }, + }; + }; + return { stack }; +} +exports.sdk = sdk; +function client(mocData = {}, resolve = true) { + return sdk(mocData, resolve).stack(); +} +exports.client = client; diff --git a/packages/contentstack-branches/test/unit/mock/data.js b/packages/contentstack-branches/test/unit/mock/data.js new file mode 100644 index 0000000000..03f03e1a7c --- /dev/null +++ b/packages/contentstack-branches/test/unit/mock/data.js @@ -0,0 +1,895 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.baseAndCompareChanges = exports.baseBranchNoSchema = exports.compareBranchNoSchema = exports.compareBranchDiff = exports.baseBranchDiff = exports.branchMockData = exports.deleteBranchMockData = exports.createBranchMockData = exports.mockData = void 0; +const config = require('../../config.json'); +const mockData = { + flags: { + baseBranch: 'main', + compareBranch: 'dev', + stackAPIKey: config.stackAPIKey, + module: 'content-types', + format: 'compactfield', + }, + withoutBaseFlag: { + compareBranch: 'dev', + stackAPIKey: config.stackAPIKey, + module: 'content-types', + format: 'compactfield', + }, + withoutCompareFlag: { + baseBranch: 'main', + stackAPIKey: config.stackAPIKey, + module: 'content-types', + format: 'compactfield', + compareBranch: '', + }, + withoutAPIKeyFlag: { + baseBranch: 'main', + compareBranch: 'dev', + module: 'content-types', + format: 'compactfield', + stackAPIKey: '', + }, + withoutModuleFlag: { + baseBranch: 'main', + compareBranch: 'dev', + stackAPIKey: config.stackAPIKey, + format: 'compactfield', + module: '', + }, + data: { + base: 'main', + compare: 'dev', + base_only: 0, + compare_only: 0, + modified: 0, + }, + branchDiff: { + branches: { + base_branch: 'main', + compare_branch: 'dev', + }, + diff: [ + { + uid: 'content_type_uid_1', + title: 'Content Type 1 Title', + type: 'content_type', + status: 'compare_only', + }, + { + uid: 'content_type_uid_2', + title: 'Content Type 2 Title', + type: 'content_type', + status: 'modified', + }, + ], + }, + contentTypesDiff: [ + { + uid: 'content_type_uid_1', + title: 'Content Type 1 Title', + type: 'content_type', + status: 'compare_only', + }, + { + uid: 'content_type_uid_2', + title: 'Content Type 2 Title', + type: 'content_type', + status: 'modified', + }, + ], + branchTextData: { + modified: [ + { + uid: 'content_type_uid_2', + title: 'Content Type 2 Title', + type: 'content_type', + status: 'modified', + }, + ], + deleted: [], + added: [ + { + uid: 'content_type_uid_1', + title: 'Content Type 1 Title', + type: 'content_type', + status: 'compare_only', + }, + ], + }, + globalFieldDiff: [ + { + uid: 'global_field_uid_1', + title: 'Global Field 1 Title', + type: 'global_field', + status: 'compare_only', + }, + { + uid: 'global_field_uid_2', + title: 'Global Field 2 Title', + type: 'global_field', + status: 'modified', + }, + ], + branchSummary: { + base: 'main', + compare: 'dev', + base_only: 0, + compare_only: 1, + modified: 1, + }, + branchCompactData: { + modified: [ + { + uid: 'content_type1', + title: 'Content Type1', + type: 'content_type', + status: 'modified', + }, + ], + added: [ + { + uid: 'content_type2', + title: 'Content Type 2', + type: 'content_type', + status: 'compare_only', + }, + ], + deleted: [ + { + uid: 'content_type3', + title: 'Content Type 3', + type: 'content_type', + status: 'base_only', + }, + ], + }, + branchDiffPayload: { + module: 'content_type', + apiKey: config.apiKey, + baseBranch: 'main', + compareBranch: 'dev', + }, + verboseContentTypeRes: { + modified: [ + { + moduleDetails: { + uid: 'content_type_uid_2', + title: 'Content Type 2 Title', + type: 'content_type', + status: 'modified', + }, + modifiedFields: { + modified: [ + { + uid: 'url', + displayName: 'field1', + path: 'url', + field: 'URL field', + }, + ], + deleted: [ + { + uid: 'url1', + displayName: 'field2', + path: 'url1', + field: 'URL field', + }, + ], + added: [ + { + uid: 'url2', + displayName: 'field3', + path: 'url2', + field: 'URL field', + }, + ], + }, + }, + ], + added: [ + { + uid: 'content_type_uid_1', + title: 'Content Type 1 Title', + type: 'content_type', + status: 'compare_only', + }, + ], + deleted: [ + { + uid: 'content_type_uid_3', + title: 'Content Type 3 Title', + type: 'content_type', + status: 'base_only', + }, + ], + }, + noModifiedData: { + modified: [], + added: [], + deleted: [], + }, + contentTypesDiffData: { + content_types: [ + { + uid: 'content_type_uid_1', + title: 'Content Type 1 Title', + type: 'content_type', + status: 'compare_only', + }, + { + uid: 'content_type_uid_2', + title: 'Content Type 2 Title', + type: 'content_type', + status: 'modified', + }, + ], + global_fields: [], + }, + globalFieldsDiffData: { + content_types: [], + global_fields: [ + { + uid: 'global_field_uid_1', + title: 'Global Field 1 Title', + type: 'global_field', + status: 'compare_only', + }, + { + uid: 'global_field_uid_2', + title: 'Global Field 2 Title', + type: 'global_field', + status: 'modified', + }, + ], + }, + allDiffData: [ + { + uid: 'global_field_uid_1', + title: 'Global Field 1 Title', + type: 'global_field', + status: 'compare_only', + }, + { + uid: 'global_field_uid_2', + title: 'Global Field 2 Title', + type: 'global_field', + status: 'modified', + }, + { + uid: 'content_type_uid_1', + title: 'Content Type 1 Title', + type: 'content_type', + status: 'compare_only', + }, + { + uid: 'content_type_uid_2', + title: 'Content Type 2 Title', + type: 'content_type', + status: 'modified', + }, + ], + moduleWiseData: { + content_types: [ + { + uid: 'content_type_uid_1', + title: 'Content Type 1 Title', + type: 'content_type', + status: 'compare_only', + }, + { + uid: 'content_type_uid_2', + title: 'Content Type 2 Title', + type: 'content_type', + status: 'modified', + }, + ], + global_fields: [ + { + uid: 'global_field_uid_1', + title: 'Global Field 1 Title', + type: 'global_field', + status: 'compare_only', + }, + { + uid: 'global_field_uid_2', + title: 'Global Field 2 Title', + type: 'global_field', + status: 'modified', + }, + ], + }, + globalFieldDetailDiff: { + branches: { + base_branch: 'main', + compare_branch: 'dev', + }, + diff: { + uid: 'gf1', + type: 'global_field', + status: 'modified', + base_branch: { + differences: [ + { + value: 'gf4', + path: 'title', + }, + { + data_type: 'compactfield', + display_name: 'Single Line fieldbox33', + uid: 'single_line_fieldbox33', + field_metadata: { + description: '', + default_value: '', + version: 3, + }, + format: '', + error_messages: { + format: '', + }, + mandatory: false, + multiple: false, + non_localizable: false, + unique: false, + indexed: false, + inbuilt_model: false, + path: 'schema[3]', + }, + ], + }, + compare_branch: { + differences: [ + { + value: 'gf1', + path: 'title', + }, + { + value: 'url', + path: 'url1', + }, + ], + }, + }, + }, + verboseRes: { + listOfAddedFields: [ + { + path: 'new_field', + displayName: 'New Field', + uid: 'new_field', + field: 'text', + }, + { + path: 'description', + displayName: 'Description', + uid: 'description', + field: 'rich_text_editor', + }, + ], + listOfDeletedFields: [ + { + path: 'single_line_fieldbox33', + displayName: 'Single Line fieldbox33', + uid: 'single_line_fieldbox33', + field: 'compactfield', + }, + { + path: 'old_field', + displayName: 'Old Field', + uid: 'old_field', + field: 'text', + }, + ], + listOfModifiedFields: [ + { + path: 'title', + displayName: 'Name', + uid: 'title', + field: 'metadata', + }, + { + path: 'content', + displayName: 'Content', + uid: 'content', + field: 'rich_text_editor', + }, + ], + }, + mergeSettings: { + baseBranch: 'main', + compareBranch: 'dev', + mergeComment: 'changes', + mergeContent: {}, + noRevert: false, + }, + mergePayload: { + base_branch: 'main', + compare_branch: 'dev', + default_merge_strategy: '', + item_merge_strategies: '', + merge_comment: 'changes', + no_revert: false, + uid: 'abc', + }, + mergeCompleteStatusRes: { + merge_details: { status: 'complete', uid: 'abc' }, + }, + mergeProgressStatusRes: { + merge_details: { status: 'in_progress', uid: 'abc' }, + }, + mergeFailedStatusRes: { + merge_details: { status: 'failed', uid: 'abc' }, + }, + mergeNoStatusRes: { + merge_details: { status: '', uid: 'abc' }, + }, + mergeInputOptions: { + compareBranch: 'dev', + strategy: 'merge_prefer_base', + strategySubOption: 'merge_new_only', + branchCompareData: '', + stackAPIKey: config.stackAPIKey2, + baseBranch: 'main', + host: '', + enableEntryExp: false, + }, + mergeInputOptionsWithoutStartegy: { + compareBranch: 'dev', + strategy: '', + strategySubOption: '', + branchCompareData: {}, + stackAPIKey: config.stackAPIKey2, + baseBranch: 'main', + host: '', + enableEntryExp: false, + }, + mergeData: { + flags: { + 'base-branch': 'main', + 'compare-branch': 'dev', + 'stack-api-key': '***REMOVED***', + module: 'content_type', + format: 'compactfield', + }, + withoutBaseFlag: { + 'compare-branch': 'dev', + 'stack-api-key': '***REMOVED***', + module: 'content_type', + format: 'compactfield', + }, + withoutCompareFlag: { + 'base-branch': 'main', + 'stack-api-key': '***REMOVED***', + module: 'content_type', + format: 'compactfield', + }, + withoutAPIKeyFlag: { + 'base-branch': 'main', + 'compare-branch': 'dev', + module: 'content_type', + format: 'compactfield', + }, + withoutModuleFlag: { + 'base-branch': 'main', + 'compare-branch': 'dev', + 'stack-api-key': '***REMOVED***', + format: 'compactfield', + }, + branchCompareData: { + content_types: { + modified: [ + { + uid: 'content_type1', + title: 'Content Type1', + type: 'content_type', + status: 'modified', + }, + ], + added: [ + { + uid: 'content_type2', + title: 'Content Type 2', + type: 'content_type', + status: 'compare_only', + }, + ], + deleted: [ + { + uid: 'content_type3', + title: 'Content Type 3', + type: 'content_type', + status: 'base_only', + }, + ], + }, + global_fields: { + modified: [ + { + uid: 'global-fields1', + title: 'Global Fields1', + type: 'global_field', + status: 'modified', + }, + ], + added: [ + { + uid: 'global-fields2', + title: 'Global Fields 2', + type: 'global_field', + status: 'compare_only', + }, + ], + deleted: [ + { + uid: 'global-fields3', + title: 'Global Fields 3', + type: 'global_field', + status: 'base_only', + }, + ], + }, + }, + }, +}; +exports.mockData = mockData; +const createBranchMockData = { + flags: { + source: 'main', + uid: 'new_branch', + apiKey: 'abcd', + }, +}; +exports.createBranchMockData = createBranchMockData; +const deleteBranchMockData = { + flags: { + uid: 'new_branch', + apiKey: 'abcd', + force: false, + confirm: false, + }, +}; +exports.deleteBranchMockData = deleteBranchMockData; +const branchMockData = { + flags: { + apiKey: 'abcd', + verbose: true, + }, + data: { + items: [ + { + stackHeaders: { + api_key: config.api_key, + }, + urlPath: '/stacks/branches/new_branch', + uid: 'new_branch', + source: 'main', + created_by: 'testStringxxx', + updated_by: 'testStringxxx', + created_at: '2023-03-02T12:53:18.809Z', + updated_at: '2023-03-02T12:53:19.208Z', + deleted_at: false, + alias: [], + }, + { + stackHeaders: { + api_key: config.api_key, + }, + urlPath: '/stacks/branches/test_branch', + uid: 'test_branch', + source: 'main', + created_by: 'testStringxxx', + updated_by: 'testStringxxx', + created_at: '2023-03-01T09:36:18.174Z', + updated_at: '2023-03-01T09:36:18.538Z', + deleted_at: false, + alias: [], + }, + { + stackHeaders: { + api_key: config.api_key, + }, + urlPath: '/stacks/branches/new', + uid: 'new', + source: 'main', + created_by: 'testStringxxx', + updated_by: 'testStringxxx', + created_at: '2023-01-11T08:55:51.556Z', + updated_at: '2023-01-11T08:55:51.869Z', + deleted_at: false, + alias: [], + }, + { + stackHeaders: { + api_key: config.api_key, + }, + urlPath: '/stacks/branches/main', + uid: 'main', + source: '', + created_by: 'testStringxxx', + updated_by: 'testStringxxx', + created_at: '2022-09-27T06:11:29.016Z', + updated_at: '2022-11-18T09:54:41.671Z', + deleted_at: false, + alias: [], + }, + { + stackHeaders: { + api_key: config.api_key, + }, + urlPath: '/stacks/branches/release', + uid: 'release', + source: 'develop', + created_by: 'testStringxxx', + updated_by: 'testStringxxx', + created_at: '2022-10-30T18:37:05.875Z', + updated_at: '2022-11-18T09:42:22.266Z', + deleted_at: false, + alias: [ + { + uid: 'alias1', + }, + ], + }, + ], + }, +}; +exports.branchMockData = branchMockData; +const baseBranchDiff = { + data_type: 'group', + display_name: 'Social', + field_metadata: {}, + schema: [ + { + data_type: 'group', + display_name: 'Social Share', + field_metadata: {}, + schema: [ + { + data_type: 'link', + display_name: 'Link', + uid: 'link', + field_metadata: { + description: '', + default_value: '', + isTitle: true, + }, + multiple: false, + mandatory: false, + unique: false, + non_localizable: false, + indexed: false, + inbuilt_model: false, + }, + { + data_type: 'file', + display_name: 'Icon', + uid: 'icon', + field_metadata: { + description: '', + rich_text_type: 'standard', + image: true, + }, + non_localizable: false, + dimension: { + width: { + min: null, + max: null, + }, + height: { + min: null, + max: null, + }, + }, + multiple: false, + mandatory: true, + unique: false, + indexed: false, + inbuilt_model: false, + }, + ], + uid: 'social_share', + multiple: true, + mandatory: false, + unique: false, + non_localizable: false, + indexed: false, + inbuilt_model: false, + }, + ], + uid: 'social', + multiple: false, + mandatory: false, + unique: false, + non_localizable: false, + indexed: true, + inbuilt_model: false, + path: 'schema[3]', +}; +exports.baseBranchDiff = baseBranchDiff; +const baseBranchNoSchema = { + data_type: 'group', + display_name: 'Social', + field_metadata: {}, + uid: 'social', + multiple: false, + mandatory: false, + unique: false, + non_localizable: false, + indexed: true, + inbuilt_model: false, + path: 'schema[3]', +}; +exports.baseBranchNoSchema = baseBranchNoSchema; +const compareBranchDiff = { + data_type: 'group', + display_name: 'Social', + field_metadata: {}, + schema: [ + { + data_type: 'group', + display_name: 'Social Share', + field_metadata: {}, + schema: [ + { + data_type: 'link', + display_name: 'Link', + uid: 'link', + field_metadata: { + description: '', + default_value: '', + isTitle: true, + }, + multiple: false, + mandatory: false, + unique: true, + non_localizable: false, + indexed: false, + inbuilt_model: false, + }, + { + data_type: 'link', + display_name: 'Link1', + uid: 'link1', + field_metadata: { + description: '', + default_value: '', + isTitle: true, + }, + multiple: false, + mandatory: false, + unique: false, + non_localizable: false, + indexed: false, + inbuilt_model: false, + }, + ], + uid: 'social_share', + multiple: true, + mandatory: false, + unique: false, + non_localizable: false, + indexed: false, + inbuilt_model: false, + }, + ], + uid: 'social', + multiple: false, + mandatory: false, + unique: false, + non_localizable: false, + inbuilt_model: false, + path: 'schema[3]', +}; +exports.compareBranchDiff = compareBranchDiff; +const compareBranchNoSchema = { + data_type: 'group', + display_name: 'Social', + field_metadata: {}, + uid: 'social', + multiple: false, + mandatory: false, + unique: false, + non_localizable: false, + inbuilt_model: false, + path: 'schema[3]', +}; +exports.compareBranchNoSchema = compareBranchNoSchema; +const baseAndCompareChanges = { + baseAndCompareHavingSchema: { + modified: { + social: { + path: 'social', + uid: 'social', + displayName: 'Social', + fieldType: 'group', + }, + 'social.social_share.link': { + path: 'social.social_share.link', + uid: 'link', + displayName: 'Link', + fieldType: 'link', + }, + }, + added: { + 'social.social_share.link1': { + path: 'social.social_share.link1', + uid: 'link1', + displayName: 'Link1', + fieldType: 'link', + }, + }, + deleted: { + 'social.social_share.icon': { + path: 'social.social_share.icon', + uid: 'icon', + displayName: 'Icon', + fieldType: 'file', + }, + }, + }, + baseHavingSchema: { + modified: { + social: { + path: 'social', + uid: 'social', + displayName: 'Social', + fieldType: 'group', + }, + }, + added: {}, + deleted: { + 'social.social_share': { + path: 'social.social_share', + uid: 'social_share', + displayName: 'Social Share', + fieldType: 'group', + }, + }, + }, + compareHavingSchema: { + modified: { + social: { + path: 'social', + uid: 'social', + displayName: 'Social', + fieldType: 'group', + }, + }, + added: { + 'social.social_share': { + path: 'social.social_share', + uid: 'social_share', + displayName: 'Social Share', + fieldType: 'group', + }, + }, + deleted: {}, + }, + modifiedFieldRes: { + listOfAddedFields: [ + { + path: undefined, + displayName: undefined, + uid: undefined, + field: undefined, + }, + ], + listOfDeletedFields: [ + { + path: 'single_line_fieldbox33', + displayName: 'Single Line fieldbox33', + uid: 'single_line_fieldbox33', + field: 'compactfield', + }, + ], + listOfModifiedFields: [ + { + path: 'title', + displayName: 'Name', + uid: 'title', + field: 'metadata', + }, + ], + }, +}; +exports.baseAndCompareChanges = baseAndCompareChanges; diff --git a/packages/contentstack-branches/test/unit/utils/cache-manager.test.ts b/packages/contentstack-branches/test/unit/utils/cache-manager.test.ts new file mode 100644 index 0000000000..1d42fc0ef5 --- /dev/null +++ b/packages/contentstack-branches/test/unit/utils/cache-manager.test.ts @@ -0,0 +1,43 @@ +import { expect } from 'chai'; +import path from 'path'; +import fs from 'fs'; +import { + createSessionId, + ensureSessionDir, + appendJsonLine, + readAllJsonLines, + readJsonLinesChunked, + cleanupSession, + countJsonLines, +} from '../../../src/utils/cache-manager'; + +describe('cache-manager', () => { + const root = path.join(process.cwd(), '.contentstack-branch-cache'); + + afterEach(async () => { + if (fs.existsSync(root)) { + await fs.promises.rm(root, { recursive: true, force: true }).catch(() => undefined); + } + }); + + it('creates session, writes JSONL, reads chunks, counts lines, and cleans up', async () => { + const sessionId = createSessionId(); + const dir = await ensureSessionDir(sessionId); + const filePath = path.join(dir, 'test.jsonl'); + await appendJsonLine(filePath, { a: 1 }); + await appendJsonLine(filePath, { b: 2 }); + expect(await countJsonLines(filePath)).to.equal(2); + + const all = await readAllJsonLines>(filePath); + expect(all).to.deep.equal([{ a: 1 }, { b: 2 }]); + + const chunks: Record[][] = []; + for await (const batch of readJsonLinesChunked>(filePath, 1)) { + chunks.push(batch); + } + expect(chunks.length).to.equal(2); + + await cleanupSession(sessionId); + expect(fs.existsSync(dir)).to.equal(false); + }); +}); diff --git a/packages/contentstack-branches/test/unit/utils/create-branch-handler.test.js b/packages/contentstack-branches/test/unit/utils/create-branch-handler.test.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/contentstack-branches/test/unit/utils/create-merge-scripts.test.js b/packages/contentstack-branches/test/unit/utils/create-merge-scripts.test.js new file mode 100644 index 0000000000..c58df9128c --- /dev/null +++ b/packages/contentstack-branches/test/unit/utils/create-merge-scripts.test.js @@ -0,0 +1,70 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const mocha_1 = require("mocha"); +const utils_1 = require("../../../src/utils"); +const fs_1 = tslib_1.__importDefault(require("fs")); +const chai_1 = require("chai"); +const sinon_1 = require("sinon"); +(0, mocha_1.describe)('File system operations', () => { + let fsStub; + let mockFolderName; + beforeEach(() => { + // Mock file system operations + mockFolderName = 'merge_scripts/merge_scripts_1234-1234_20231201120000'; + fsStub = { + constants: { W_OK: 2 }, + accessSync: (0, sinon_1.stub)().returns(undefined), + existsSync: (0, sinon_1.stub)().returns(true), + mkdirSync: (0, sinon_1.stub)(), + writeFileSync: (0, sinon_1.stub)(), + readdirSync: (0, sinon_1.stub)().returns(['20231201120000001_updated_blog.js']), + readFileSync: (0, sinon_1.stub)().returns('const API = \'hello world\'') + }; + }); + afterEach(() => { + (0, sinon_1.restore)(); + }); + (0, mocha_1.it)('Should proceed to generate or throw error when permission not provided', () => { + const { W_OK: writePermission } = fs_1.default.constants; + const checkPermissions = fs_1.default.accessSync('./', writePermission); + (0, chai_1.expect)(checkPermissions).to.equal(undefined); + }); + (0, mocha_1.it)('Should create a root folder for scripts', () => { + // Mock the createMergeScripts function to return a predictable folder name + const createMergeScriptsStub = (0, sinon_1.stub)().returns(mockFolderName); + // Mock fs.existsSync to return true for the mock folder + const existsSyncStub = (0, sinon_1.stub)(fs_1.default, 'existsSync').returns(true); + const doesFolderExist = fs_1.default.existsSync(mockFolderName); + (0, chai_1.expect)(doesFolderExist).to.equal(true); + }); + (0, mocha_1.it)('Check if folder name contains createdAt timestamp and the end', () => { + const splitCreatedAt = mockFolderName.split('_'); + const createdAt = splitCreatedAt[splitCreatedAt.length - 1]; + (0, chai_1.expect)(createdAt.length).to.oneOf([12, 13, 14]); + }); + (0, mocha_1.it)('Check if file name contains the timestamp prefix from the foldername', () => { + const splitCreatedAt = mockFolderName.split('_'); + const createdAt = splitCreatedAt[splitCreatedAt.length - 1]; + const filesInFolder = ['20231201120000001_updated_blog.js']; + const doesFileExistWithCreatedAtPrefix = filesInFolder.some((file) => file.includes(createdAt)); + (0, chai_1.expect)(doesFileExistWithCreatedAtPrefix).to.equal(true); + }); + (0, mocha_1.it)('Check if the content that is passed as argument to the function is present in the file', () => { + const filesInFolder = ['20231201120000001_updated_blog.js']; + if (filesInFolder.length !== 0) { + const contentFromFile = 'const API = \'hello world\''; + (0, chai_1.expect)(contentFromFile).to.equal('const API = \'hello world\''); + } + }); +}); +(0, mocha_1.describe)('Check for operation status', () => { + (0, mocha_1.it)('Should return updated when modified is passed', () => { + const operation = (0, utils_1.getContentTypeMergeStatus)('merge_existing'); + (0, chai_1.expect)(operation).to.equal('updated'); + }); + (0, mocha_1.it)('Should return created when compare_only is passed', () => { + const operation = (0, utils_1.getContentTypeMergeStatus)('merge_new'); + (0, chai_1.expect)(operation).to.equal('created'); + }); +}); diff --git a/packages/contentstack-branches/test/unit/utils/csv-utility.test.js b/packages/contentstack-branches/test/unit/utils/csv-utility.test.js new file mode 100644 index 0000000000..be11b0512d --- /dev/null +++ b/packages/contentstack-branches/test/unit/utils/csv-utility.test.js @@ -0,0 +1,195 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const mocha_1 = require("mocha"); +const chai_1 = require("chai"); +const sinon_1 = require("sinon"); +const path_1 = require("path"); +const cli_utilities_1 = require("@contentstack/cli-utilities"); +const csvUtility = tslib_1.__importStar(require("../../../src/utils/csv-utility")); +(0, mocha_1.describe)('CSV Utility Testcases', () => { + let writeFileSyncStub, existsSyncStub, mkdirSyncStub, cliuxPrintStub; + (0, mocha_1.beforeEach)(function () { + writeFileSyncStub = (0, sinon_1.stub)(require('fs'), 'writeFileSync'); + existsSyncStub = (0, sinon_1.stub)(require('fs'), 'existsSync').returns(false); + mkdirSyncStub = (0, sinon_1.stub)(require('fs'), 'mkdirSync'); + cliuxPrintStub = (0, sinon_1.stub)(cli_utilities_1.cliux, 'print'); + }); + (0, mocha_1.afterEach)(function () { + writeFileSyncStub.restore(); + existsSyncStub.restore(); + mkdirSyncStub.restore(); + cliuxPrintStub.restore(); + }); + (0, mocha_1.describe)('generateCSVDataFromVerbose', () => { + (0, mocha_1.it)('should generate CSV data for modified content types with field changes', () => { + // Use the actual structure that comes from parseVerbose + const mockVerboseRes = { + modified: [ + { + moduleDetails: { + title: 'Test Content Type', + uid: 'test_ct', + status: 'modified', + type: 'content_type' + }, + modifiedFields: { + modified: [ + { + path: 'title', + displayName: 'Title', + uid: 'title', + field: 'text', + propertyChanges: [ + { + property: 'default_value', + changeType: 'modified', + oldValue: 'Old Title', + newValue: 'New Title' + } + ] + } + ], + added: [ + { + path: 'new_field', + displayName: 'New Field', + uid: 'new_field', + field: 'text' + } + ], + deleted: [ + { + path: 'old_field', + displayName: 'Old Field', + uid: 'old_field', + field: 'text' + } + ] + } + } + ], + added: [ + { + title: 'New Content Type', + uid: 'new_ct', + status: 'added', + type: 'content_type' + } + ], + deleted: [ + { + title: 'Deleted Content Type', + uid: 'deleted_ct', + status: 'deleted', + type: 'content_type' + } + ] + }; + const result = csvUtility.generateCSVDataFromVerbose(mockVerboseRes); + (0, chai_1.expect)(result).to.be.an('array'); + (0, chai_1.expect)(result.length).to.equal(5); // 1 modified property change + 1 added + 1 deleted + 1 added CT + 1 deleted CT + // Check modified field + const modifiedRow = result.find(row => row.fieldName === 'Title'); + (0, chai_1.expect)(modifiedRow).to.exist; + (0, chai_1.expect)(modifiedRow === null || modifiedRow === void 0 ? void 0 : modifiedRow.operation).to.equal('modified'); + (0, chai_1.expect)(modifiedRow === null || modifiedRow === void 0 ? void 0 : modifiedRow.sourceBranchValue).to.equal('New Title'); + (0, chai_1.expect)(modifiedRow === null || modifiedRow === void 0 ? void 0 : modifiedRow.targetBranchValue).to.equal('Old Title'); + // Check added field + const addedRow = result.find(row => row.fieldName === 'New Field'); + (0, chai_1.expect)(addedRow).to.exist; + (0, chai_1.expect)(addedRow === null || addedRow === void 0 ? void 0 : addedRow.operation).to.equal('added'); + (0, chai_1.expect)(addedRow === null || addedRow === void 0 ? void 0 : addedRow.sourceBranchValue).to.equal('N/A'); + (0, chai_1.expect)(addedRow === null || addedRow === void 0 ? void 0 : addedRow.targetBranchValue).to.equal('new_field'); + // Check deleted field + const deletedRow = result.find(row => row.fieldName === 'Old Field'); + (0, chai_1.expect)(deletedRow).to.exist; + (0, chai_1.expect)(deletedRow === null || deletedRow === void 0 ? void 0 : deletedRow.operation).to.equal('deleted'); + (0, chai_1.expect)(deletedRow === null || deletedRow === void 0 ? void 0 : deletedRow.sourceBranchValue).to.equal('old_field'); + (0, chai_1.expect)(deletedRow === null || deletedRow === void 0 ? void 0 : deletedRow.targetBranchValue).to.equal('N/A'); + // Check added content type + const addedCTRow = result.find(row => row.contentTypeName === 'New Content Type'); + (0, chai_1.expect)(addedCTRow).to.exist; + (0, chai_1.expect)(addedCTRow === null || addedCTRow === void 0 ? void 0 : addedCTRow.operation).to.equal('added'); + (0, chai_1.expect)(addedCTRow === null || addedCTRow === void 0 ? void 0 : addedCTRow.sourceBranchValue).to.equal('N/A'); + (0, chai_1.expect)(addedCTRow === null || addedCTRow === void 0 ? void 0 : addedCTRow.targetBranchValue).to.equal('N/A'); + // Check deleted content type + const deletedCTRow = result.find(row => row.contentTypeName === 'Deleted Content Type'); + (0, chai_1.expect)(deletedCTRow).to.exist; + (0, chai_1.expect)(deletedCTRow === null || deletedCTRow === void 0 ? void 0 : deletedCTRow.operation).to.equal('deleted'); + (0, chai_1.expect)(deletedCTRow === null || deletedCTRow === void 0 ? void 0 : deletedCTRow.sourceBranchValue).to.equal('N/A'); + (0, chai_1.expect)(deletedCTRow === null || deletedCTRow === void 0 ? void 0 : deletedCTRow.targetBranchValue).to.equal('N/A'); + }); + (0, mocha_1.it)('should handle empty verbose results gracefully', () => { + const emptyVerboseRes = { + modified: [], + added: [], + deleted: [] + }; + const result = csvUtility.generateCSVDataFromVerbose(emptyVerboseRes); + (0, chai_1.expect)(result).to.be.an('array'); + (0, chai_1.expect)(result.length).to.equal(0); + }); + }); + (0, mocha_1.describe)('exportCSVReport', () => { + (0, mocha_1.it)('should export CSV report to custom path and create directory if needed', () => { + const mockDiffData = { + modified: [], + added: [], + deleted: [], + csvData: [ + { + srNo: 1, + contentTypeName: 'Test CT', + fieldName: 'Test Field', + fieldPath: 'N/A', + operation: 'modified', + sourceBranchValue: 'new_value', + targetBranchValue: 'old_value' + } + ] + }; + const customPath = '/tmp/test-csv'; + const moduleName = 'content-types'; + csvUtility.exportCSVReport(moduleName, mockDiffData, customPath); + // Verify directory creation + (0, chai_1.expect)(existsSyncStub.calledWith(customPath)).to.be.true; + (0, chai_1.expect)(mkdirSyncStub.calledWith(customPath, { recursive: true })).to.be.true; + // Verify file writing + (0, chai_1.expect)(writeFileSyncStub.calledOnce).to.be.true; + const [filePath, content] = writeFileSyncStub.getCall(0).args; + (0, chai_1.expect)(filePath).to.equal((0, path_1.join)(customPath, 'content-types-diff.csv')); + // Verify CSV content + (0, chai_1.expect)(content).to.include('Sr No,Content Type Name,Field Name,Field Path,Operation,Source Branch Value,Target Branch Value'); + (0, chai_1.expect)(content).to.include('1,"Test CT","Test Field","N/A","modified","new_value","old_value"'); + // Verify success message + (0, chai_1.expect)(cliuxPrintStub.calledWith(`CSV report generated at: ${(0, path_1.join)(customPath, 'content-types-diff.csv')}`, { color: 'green' })).to.be.true; + }); + (0, mocha_1.it)('should export CSV report to current directory when no custom path provided', () => { + const mockDiffData = { + modified: [], + added: [], + deleted: [], + csvData: [ + { + srNo: 1, + contentTypeName: 'Test CT', + fieldName: 'Test Field', + fieldPath: 'N/A', + operation: 'added', + sourceBranchValue: 'N/A', + targetBranchValue: '' + } + ] + }; + const moduleName = 'global-fields'; + csvUtility.exportCSVReport(moduleName, mockDiffData); + // Verify file writing to current directory + (0, chai_1.expect)(writeFileSyncStub.calledOnce).to.be.true; + const [filePath] = writeFileSyncStub.getCall(0).args; + (0, chai_1.expect)(filePath).to.equal((0, path_1.join)(process.cwd(), 'global-fields-diff.csv')); + // Verify success message + (0, chai_1.expect)(cliuxPrintStub.calledWith(`CSV report generated at: ${(0, path_1.join)(process.cwd(), 'global-fields-diff.csv')}`, { color: 'green' })).to.be.true; + }); + }); +}); diff --git a/packages/contentstack-branches/test/unit/utils/diff-branch-handler.test.js b/packages/contentstack-branches/test/unit/utils/diff-branch-handler.test.js new file mode 100644 index 0000000000..14e9ff74c1 --- /dev/null +++ b/packages/contentstack-branches/test/unit/utils/diff-branch-handler.test.js @@ -0,0 +1,229 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const mocha_1 = require("mocha"); +const chai_1 = require("chai"); +const sinon_1 = require("sinon"); +const utils_1 = require("../../../src/utils"); +const data_1 = require("../mock/data"); +const branch_1 = require("../../../src/branch"); +const util = tslib_1.__importStar(require("../../../src/utils")); +const cli_utilities_1 = require("@contentstack/cli-utilities"); +(0, mocha_1.describe)('Branch Diff Utility Testcases', () => { + let apiRequestStub, fetchBranchesDiffStub, loaderV2Stub; + (0, mocha_1.beforeEach)(function () { + apiRequestStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'branchCompareSDK').callsFake(function (param, skip, limit) { + if (param.baseBranch === 'xyz') { + return Promise.resolve('Base branch is invalid'); + } + else { + return Promise.resolve(data_1.mockData.branchDiff); + } + }); + fetchBranchesDiffStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'fetchBranchesDiff').callsFake(function (param) { + if (param) { + const result = apiRequestStub(param); + return Promise.resolve(result); + } + }); + loaderV2Stub = (0, sinon_1.stub)(cli_utilities_1.cliux, 'loaderV2'); + }); + (0, mocha_1.afterEach)(function () { + apiRequestStub.restore(); + fetchBranchesDiffStub.restore(); + loaderV2Stub.restore(); + }); + (0, mocha_1.it)('fetch branch differences', async function () { + const result = await fetchBranchesDiffStub(data_1.mockData.branchDiffPayload); + (0, chai_1.expect)(fetchBranchesDiffStub.calledOnce).to.be.true; + (0, chai_1.expect)(result).to.be.equal(data_1.mockData.branchDiff); + }); + (0, mocha_1.it)('API request, should be failed', async function () { + data_1.mockData.branchDiffPayload.baseBranch = 'xyz'; + const result = await fetchBranchesDiffStub(data_1.mockData.branchDiffPayload); + (0, chai_1.expect)(fetchBranchesDiffStub.calledOnce).to.be.true; + (0, chai_1.expect)(result).to.be.equal('Base branch is invalid'); + }); + (0, mocha_1.it)('parse branch summary', async function () { + const result = utils_1.branchDiffUtility.parseSummary(data_1.mockData.contentTypesDiff, 'main', 'dev'); + (0, chai_1.expect)(result).to.deep.equal(data_1.mockData.branchSummary); + }); + (0, mocha_1.it)('print branch summary', async function () { + utils_1.branchDiffUtility.printSummary(data_1.mockData.branchSummary); + }); + (0, mocha_1.it)('parse compact text', async function () { + const result = utils_1.branchDiffUtility.parseCompactText(data_1.mockData.contentTypesDiff); + (0, chai_1.expect)(result).to.deep.equal(data_1.mockData.branchTextData); + }); + (0, mocha_1.it)('print compact text', async function () { + utils_1.branchDiffUtility.printCompactTextView(data_1.mockData.branchCompactData); + }); + (0, mocha_1.it)('print compact text view, nothing to display', async function () { + utils_1.branchDiffUtility.printCompactTextView(data_1.mockData.noModifiedData); + }); + (0, mocha_1.it)('parse detailedText', async function () { + const parseCompactStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'parseCompactText'); + parseCompactStub.withArgs(data_1.mockData.contentTypesDiff); + const parseVerboseStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'parseVerbose'); + parseVerboseStub + .withArgs(data_1.mockData.contentTypesDiff, data_1.mockData.branchDiffPayload) + .resolves(data_1.mockData.verboseContentTypeRes); + const result = await utils_1.branchDiffUtility.parseVerbose(data_1.mockData.contentTypesDiff, data_1.mockData.branchDiffPayload); + (0, chai_1.expect)(parseVerboseStub.calledOnce).to.be.true; + (0, chai_1.expect)(result).to.be.equal(data_1.mockData.verboseContentTypeRes); + parseCompactStub.restore(); + parseVerboseStub.restore(); + }); + (0, mocha_1.it)('prepare branch detailedText response', async function () { + const result = await utils_1.branchDiffUtility.prepareBranchVerboseRes(data_1.mockData.globalFieldDetailDiff); + (0, chai_1.expect)(result).deep.be.equal(data_1.mockData.verboseRes); + }); + (0, mocha_1.it)('print detailedText text view', async function () { + utils_1.branchDiffUtility.printVerboseTextView(data_1.mockData.verboseContentTypeRes); + }); + (0, mocha_1.it)('print detailedText text view, nothing to display', async function () { + utils_1.branchDiffUtility.printVerboseTextView(data_1.mockData.noModifiedData); + }); + (0, mocha_1.it)('filter out branch differences on basis of module like content_types, global_fields', async function () { + const result = utils_1.branchDiffUtility.filterBranchDiffDataByModule(data_1.mockData.contentTypesDiff); + (0, chai_1.expect)(result).to.deep.equal(data_1.mockData.contentTypesDiffData); + }); + (0, mocha_1.it)('base and compare branch having schema, differences', async function () { + const result = await utils_1.branchDiffUtility.deepDiff(data_1.baseBranchDiff, data_1.compareBranchDiff); + (0, chai_1.expect)(result).to.deep.equal(data_1.baseAndCompareChanges.baseAndCompareHavingSchema); + }); + (0, mocha_1.it)('base branch having only schema, differences', async function () { + const result = await utils_1.branchDiffUtility.deepDiff(data_1.baseBranchDiff, data_1.compareBranchNoSchema); + (0, chai_1.expect)(result).to.deep.equal(data_1.baseAndCompareChanges.baseHavingSchema); + }); + (0, mocha_1.it)('compare branch having only schema, differences', async function () { + const result = await utils_1.branchDiffUtility.deepDiff(data_1.baseBranchNoSchema, data_1.compareBranchDiff); + (0, chai_1.expect)(result).to.deep.equal(data_1.baseAndCompareChanges.compareHavingSchema); + }); + (0, mocha_1.it)('prepare base and compare branch modified differences', async function () { + const deepDiffStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'deepDiff').resolves(data_1.baseAndCompareChanges.baseAndCompareHavingSchema); + await utils_1.branchDiffUtility.prepareModifiedDiff({ + baseBranchFieldExists: data_1.baseBranchDiff, + compareBranchFieldExists: data_1.compareBranchDiff, + listOfModifiedFields: data_1.mockData.verboseRes.listOfModifiedFields, + listOfAddedFields: data_1.mockData.verboseRes.listOfAddedFields, + listOfDeletedFields: data_1.mockData.verboseRes.listOfDeletedFields, + }); + deepDiffStub.restore(); + }); +}); +(0, mocha_1.describe)('Branch Diff handler Testcases', () => { + let fetchBranchDiffStub, filterBranchDiffDataByModuleStub, displaySummaryStub, loaderV2Stub; + (0, mocha_1.beforeEach)(function () { + fetchBranchDiffStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'fetchBranchesDiff'); + filterBranchDiffDataByModuleStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'filterBranchDiffDataByModule'); + displaySummaryStub = (0, sinon_1.stub)(branch_1.BranchDiffHandler.prototype, 'displaySummary'); + loaderV2Stub = (0, sinon_1.stub)(cli_utilities_1.cliux, 'loaderV2'); + }); + (0, mocha_1.afterEach)(function () { + fetchBranchDiffStub.restore(); + filterBranchDiffDataByModuleStub.restore(); + displaySummaryStub.restore(); + loaderV2Stub.restore(); + }); + (0, mocha_1.it)('Branch diff without compare branch flag, should prompt for compare branch', async function () { + const askCompareBranch = (0, sinon_1.stub)(utils_1.interactive, 'askCompareBranch').resolves(data_1.mockData.flags.compareBranch); + new branch_1.BranchDiffHandler(data_1.mockData.withoutCompareFlag).validateMandatoryFlags(); + (0, chai_1.expect)(askCompareBranch.calledOnce).to.be.true; + askCompareBranch.restore(); + }); + (0, mocha_1.it)('Branch diff without base branch flag, should prompt for base branch', async function () { + const askBaseBranch = (0, sinon_1.stub)(utils_1.interactive, 'askBaseBranch').resolves(data_1.mockData.flags.baseBranch); + new branch_1.BranchDiffHandler(data_1.mockData.withoutBaseFlag).validateMandatoryFlags(); + (0, chai_1.expect)(askBaseBranch.calledOnce).to.be.true; + askBaseBranch.restore(); + }); + (0, mocha_1.it)('Branch diff without stack api flag, should prompt for stack api key', async function () { + const askStackAPIKey = (0, sinon_1.stub)(utils_1.interactive, 'askStackAPIKey').resolves(data_1.mockData.flags.stackAPIKey); + new branch_1.BranchDiffHandler(data_1.mockData.withoutAPIKeyFlag).validateMandatoryFlags(); + (0, chai_1.expect)(askStackAPIKey.calledOnce).to.be.true; + askStackAPIKey.restore(); + }); + (0, mocha_1.it)('Branch diff without module flag, should prompt for module', async function () { + const askModule = (0, sinon_1.stub)(utils_1.interactive, 'selectModule').resolves(data_1.mockData.flags.module); + new branch_1.BranchDiffHandler(data_1.mockData.withoutModuleFlag).validateMandatoryFlags(); + (0, chai_1.expect)(askModule.calledOnce).to.be.true; + askModule.restore(); + }); + (0, mocha_1.it)('Branch diff with global config, should take the base branch from config', async function () { + const stubBranchConfig = (0, sinon_1.stub)(util, 'getbranchConfig').resolves(data_1.mockData.flags.baseBranch); + delete data_1.mockData.flags.baseBranch; + new branch_1.BranchDiffHandler(data_1.mockData.flags).validateMandatoryFlags(); + (0, chai_1.expect)(stubBranchConfig.calledOnce).to.be.true; + stubBranchConfig.restore(); + }); + (0, mocha_1.it)('display content types summary', async function () { + const parseSummaryStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'parseSummary'); + parseSummaryStub.withArgs(data_1.mockData.contentTypesDiff, 'main', 'dev').returns(data_1.mockData.branchSummary); + const printSummaryStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'printSummary'); + printSummaryStub.withArgs(data_1.mockData.branchSummary).returns(); + new branch_1.BranchDiffHandler(data_1.mockData.flags).displaySummary(data_1.mockData.contentTypesDiff, data_1.mockData.flags.module); + parseSummaryStub.restore(); + printSummaryStub.restore(); + }); + (0, mocha_1.it)('display global fields summary', async function () { + const parseSummaryStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'parseSummary'); + parseSummaryStub.withArgs(data_1.mockData.globalFieldDiff, 'main', 'dev').returns(data_1.mockData.branchSummary); + const printSummaryStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'printSummary'); + printSummaryStub.withArgs(data_1.mockData.branchSummary).returns(); + data_1.mockData.flags.module = 'global_fields'; + new branch_1.BranchDiffHandler(data_1.mockData.flags).displaySummary(data_1.mockData.globalFieldDiff, data_1.mockData.flags.module); + parseSummaryStub.restore(); + printSummaryStub.restore(); + }); + (0, mocha_1.it)('display branch diff, compact text view', async function () { + const parseCompactTextStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'parseCompactText'); + parseCompactTextStub.withArgs(data_1.mockData.contentTypesDiff).returns(data_1.mockData.branchCompactData); + const printCompactTextViewStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'printCompactTextView'); + printCompactTextViewStub.withArgs(data_1.mockData.branchCompactData).returns(); + new branch_1.BranchDiffHandler(data_1.mockData.flags).displayBranchDiffTextAndVerbose(data_1.mockData.contentTypesDiff, data_1.mockData.branchDiffPayload); + //expect(parseCompactTextStub.calledOnce).to.be.true; + //expect(printCompactTextViewStub.calledOnce).to.be.true; + parseCompactTextStub.restore(); + printCompactTextViewStub.restore(); + }); + (0, mocha_1.it)('display branch diff, detailedText view', async function () { + const parseVerboseStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'parseVerbose'); + parseVerboseStub + .withArgs(data_1.mockData.contentTypesDiff, data_1.mockData.branchDiffPayload) + .resolves(data_1.mockData.verboseContentTypeRes); + const printVerboseTextViewStub = (0, sinon_1.stub)(utils_1.branchDiffUtility, 'printVerboseTextView'); + printVerboseTextViewStub.withArgs(data_1.mockData.verboseContentTypeRes).returns(); + data_1.mockData.flags.format = 'detailedText'; + new branch_1.BranchDiffHandler(data_1.mockData.flags).displayBranchDiffTextAndVerbose(data_1.mockData.contentTypesDiff, data_1.mockData.branchDiffPayload); + parseVerboseStub.restore(); + printVerboseTextViewStub.restore(); + }); + (0, mocha_1.it)('BranchDiffHandler initBranchDiffUtility, content_types module', async function () { + fetchBranchDiffStub.withArgs(data_1.mockData.branchDiffPayload).resolves(data_1.mockData.contentTypesDiff); + filterBranchDiffDataByModuleStub.withArgs(data_1.mockData.contentTypesDiff).resolves(data_1.mockData.contentTypesDiffData); + displaySummaryStub.withArgs(data_1.mockData.contentTypesDiff, data_1.mockData.flags.module).returns(); + const contentTypeVerbose = (0, sinon_1.stub)(branch_1.BranchDiffHandler.prototype, 'displayBranchDiffTextAndVerbose'); + contentTypeVerbose.withArgs(data_1.mockData.contentTypesDiff, data_1.mockData.branchDiffPayload); + new branch_1.BranchDiffHandler(data_1.mockData.flags).initBranchDiffUtility(); + contentTypeVerbose.restore(); + }); + (0, mocha_1.it)('BranchDiffHandler initBranchDiffUtility, global_fields module', async function () { + data_1.mockData.flags.module = 'global_fields'; + fetchBranchDiffStub.withArgs(data_1.mockData.branchDiffPayload).resolves(data_1.mockData.globalFieldDiff); + filterBranchDiffDataByModuleStub.withArgs(data_1.mockData.globalFieldDiff).resolves(data_1.mockData.globalFieldsDiffData); + displaySummaryStub.withArgs(data_1.mockData.globalFieldDiff, data_1.mockData.flags.module).returns(); + const globalFieldVerbose = (0, sinon_1.stub)(branch_1.BranchDiffHandler.prototype, 'displayBranchDiffTextAndVerbose'); + globalFieldVerbose.withArgs(data_1.mockData.globalFieldDiff, data_1.mockData.branchDiffPayload); + data_1.mockData.flags.module = 'global_fields'; + new branch_1.BranchDiffHandler(data_1.mockData.flags).initBranchDiffUtility(); + globalFieldVerbose.restore(); + }); + (0, mocha_1.it)('execute BranchDiffHandler run method', async function () { + const stub1 = (0, sinon_1.stub)(branch_1.BranchDiffHandler.prototype, 'initBranchDiffUtility'); + const stub2 = (0, sinon_1.stub)(branch_1.BranchDiffHandler.prototype, 'validateMandatoryFlags'); + new branch_1.BranchDiffHandler(data_1.mockData.flags).run(); + stub1.restore(); + stub2.restore(); + }); +}); diff --git a/packages/contentstack-branches/test/unit/utils/interactive.test.js b/packages/contentstack-branches/test/unit/utils/interactive.test.js new file mode 100644 index 0000000000..6b9472f872 --- /dev/null +++ b/packages/contentstack-branches/test/unit/utils/interactive.test.js @@ -0,0 +1,122 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const chai_1 = require("chai"); +const mocha_1 = require("mocha"); +const sinon_1 = require("sinon"); +const cli_utilities_1 = require("@contentstack/cli-utilities"); +const utils_1 = require("../../../src/utils"); +(0, mocha_1.describe)('Interactive', () => { + let inquireStub; + (0, mocha_1.beforeEach)(function () { + inquireStub = (0, sinon_1.stub)(cli_utilities_1.cliux, 'inquire'); + }); + (0, mocha_1.afterEach)(function () { + inquireStub.restore(); + }); + (0, mocha_1.it)('select module', async function () { + const module = 'content_types'; + inquireStub.callsFake(function () { + return Promise.resolve(module); + }); + const result = await utils_1.interactive.selectModule(); + const isValid = utils_1.interactive.inquireRequireFieldValidation(result); + (0, chai_1.expect)(result).to.be.equal(module); + (0, chai_1.expect)(isValid).to.be.equal(true); + }); + (0, mocha_1.it)('ask compare branch', async function () { + const compareBranch = 'dev'; + inquireStub.callsFake(function () { + return Promise.resolve(compareBranch); + }); + const result = await utils_1.interactive.askCompareBranch(); + (0, chai_1.expect)(result).to.be.equal(compareBranch); + }); + (0, mocha_1.it)('ask stack api key', async function () { + const stackAPIKey = 'abcd'; + inquireStub.callsFake(function () { + return Promise.resolve(stackAPIKey); + }); + const result = await utils_1.interactive.askStackAPIKey(); + (0, chai_1.expect)(result).to.be.equal(stackAPIKey); + }); + (0, mocha_1.it)('ask base branch', async function () { + const baseBranch = 'main'; + inquireStub.callsFake(function () { + return Promise.resolve(baseBranch); + }); + const result = await utils_1.interactive.askBaseBranch(); + (0, chai_1.expect)(result).to.be.equal(baseBranch); + }); + (0, mocha_1.it)('ask source branch', async function () { + const sourceBranch = 'dev'; + inquireStub.callsFake(function () { + return Promise.resolve(sourceBranch); + }); + const result = await utils_1.interactive.askSourceBranch(); + (0, chai_1.expect)(result).to.be.equal(sourceBranch); + }); + (0, mocha_1.it)('ask branch uid', async function () { + const branchUid = 'new_branch'; + inquireStub.callsFake(function () { + return Promise.resolve(branchUid); + }); + const result = await utils_1.interactive.askBranchUid(); + (0, chai_1.expect)(result).to.be.equal(branchUid); + }); + (0, mocha_1.it)('confirm delete branch', async function () { + inquireStub.callsFake(function () { + return Promise.resolve(true); + }); + const result = await utils_1.interactive.askConfirmation(); + (0, chai_1.expect)(result).to.be.equal(true); + }); + (0, mocha_1.it)('Without input value, should be failed', async function () { + const msg = 'CLI_BRANCH_REQUIRED_FIELD'; + const result = utils_1.interactive.inquireRequireFieldValidation(''); + (0, chai_1.expect)(result).to.be.equal(msg); + }); + (0, mocha_1.it)('With input value, should be success', async function () { + const result = utils_1.interactive.inquireRequireFieldValidation('main'); + (0, chai_1.expect)(result).to.be.equal(true); + }); + (0, mocha_1.it)('select merge strategy, should be successful', async function () { + const strategy = 'merge_prefer_base'; + inquireStub.callsFake(function () { + return Promise.resolve(strategy); + }); + const result = await utils_1.interactive.selectMergeStrategy(); + (0, chai_1.expect)(result).to.be.equal(strategy); + }); + (0, mocha_1.it)('select merge strategy sub options, should be successful', async function () { + const strategy = 'new'; + inquireStub.callsFake(function () { + return Promise.resolve(strategy); + }); + const result = await utils_1.interactive.selectMergeStrategySubOptions(); + (0, chai_1.expect)(result).to.be.equal(strategy); + }); + (0, mocha_1.it)('select merge executions, should be successful', async function () { + const strategy = 'export'; + inquireStub.callsFake(function () { + return Promise.resolve(strategy); + }); + const result = await utils_1.interactive.selectMergeExecution(); + (0, chai_1.expect)(result).to.be.equal(strategy); + }); + (0, mocha_1.it)('ask export merge summary path', async function () { + const filePath = '***REMOVED***'; + inquireStub.callsFake(function () { + return Promise.resolve(filePath); + }); + const result = await utils_1.interactive.askExportMergeSummaryPath(); + (0, chai_1.expect)(result).to.be.equal(filePath); + }); + (0, mocha_1.it)('ask merge comment', async function () { + const comment = 'changes'; + inquireStub.callsFake(function () { + return Promise.resolve(comment); + }); + const result = await utils_1.interactive.askMergeComment(); + (0, chai_1.expect)(result).to.be.equal(comment); + }); +}); diff --git a/packages/contentstack-branches/test/unit/utils/merge-branch-handler.test.ts b/packages/contentstack-branches/test/unit/utils/merge-branch-handler.test.ts index e86bcc6c9b..b46a546360 100644 --- a/packages/contentstack-branches/test/unit/utils/merge-branch-handler.test.ts +++ b/packages/contentstack-branches/test/unit/utils/merge-branch-handler.test.ts @@ -212,7 +212,7 @@ describe('Merge Handler', () => { executeMergeStub; beforeEach(function () { collectMergeSettingsStub = stub(MergeHandler.prototype, 'collectMergeSettings').resolves(); - displayMergeSummaryStub = stub(MergeHandler.prototype, 'displayMergeSummary').resolves(); + displayMergeSummaryStub = stub(MergeHandler.prototype, 'displayMergeSummaryInternal').resolves(); selectMergeExecutionStub = stub(interactive, 'selectMergeExecution'); mergeRequestStub = stub(mergeHelper, 'prepareMergeRequestPayload').resolves(mockData.mergePayload); exportSummaryStub = stub(MergeHandler.prototype, 'exportSummary').resolves(); @@ -294,7 +294,7 @@ describe('Merge Handler', () => { beforeEach(function(){ selectMergeStrategyStub = stub(interactive, 'selectMergeStrategy'); strategySubOptionStub = stub(interactive, 'selectMergeStrategySubOptions'); - displayMergeSummaryStub = stub(MergeHandler.prototype, 'displayMergeSummary').resolves(); + displayMergeSummaryStub = stub(MergeHandler.prototype, 'displayMergeSummaryInternal').resolves(); selectMergeExecutionStub = stub(interactive, 'selectMergeExecution'); restartMergeProcessStub = stub(MergeHandler.prototype, 'restartMergeProcess').resolves(); }) @@ -405,5 +405,58 @@ describe('Merge Handler', () => { expect(selectMergeStrategyStub.calledOnce).to.be.true; expect(strategySubOptionStub.calledOnce).to.be.true; }); - }) + }); + + describe('hydrateMergeContentFromCacheForEntryScripts', () => { + let loadStub; + + beforeEach(function () { + loadStub = stub(diffUtility, 'loadCompactModuleFromCache'); + }); + + afterEach(function () { + loadStub.restore(); + }); + + it('loads compact modules from cache and applies merge_new_only filtering', async function () { + const cacheRef = { + kind: 'cache', + sessionId: 's1', + paths: { content_types: '/x/ct.jsonl', global_fields: '/x/gf.jsonl' }, + }; + loadStub.callsFake(async (_cache, mod: string) => { + if (mod === 'content_types') { + return { + added: [ + { + uid: 'ct1', + title: 'T', + type: 'content_type', + status: 'compare_only', + }, + ], + modified: [], + deleted: [], + }; + } + return { added: [], modified: [], deleted: [] }; + }); + + const handler = new MergeHandler({ + ...mockData.mergeInputOptions, + branchCompareData: cacheRef, + strategy: 'merge_new_only', + enableEntryExp: true, + }); + (handler as any).mergeSettings.strategy = 'merge_new_only'; + + await (handler as any).hydrateMergeContentFromCacheForEntryScripts(); + + expect(loadStub.callCount).to.equal(2); + const mc = (handler as any).mergeSettings.mergeContent; + expect(mc.content_types.added).to.have.length(1); + expect(mc.content_types.added[0].uid).to.equal('ct1'); + expect(mc.global_fields.added).to.deep.equal([]); + }); + }); }); diff --git a/packages/contentstack-branches/test/unit/utils/validate-compare-data.test.ts b/packages/contentstack-branches/test/unit/utils/validate-compare-data.test.ts new file mode 100644 index 0000000000..9fa194a27e --- /dev/null +++ b/packages/contentstack-branches/test/unit/utils/validate-compare-data.test.ts @@ -0,0 +1,69 @@ +import { expect } from 'chai'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; +import { validateCompareData } from '../../../src/utils'; + +describe('validateCompareData', () => { + let tmpDir: string; + + beforeEach(async () => { + tmpDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'branch-validate-')); + }); + + afterEach(async () => { + await fs.promises.rm(tmpDir, { recursive: true, force: true }).catch(() => undefined); + }); + + it('returns false for null/undefined', async () => { + expect(await validateCompareData(null)).to.equal(false); + expect(await validateCompareData(undefined)).to.equal(false); + }); + + it('returns false for cache ref with missing paths', async () => { + expect( + await validateCompareData({ + kind: 'cache', + sessionId: 'x', + paths: { content_types: '', global_fields: '/a' }, + }), + ).to.equal(false); + }); + + it('returns false when cache JSONL files are empty', async () => { + const ct = path.join(tmpDir, 'ct.jsonl'); + const gf = path.join(tmpDir, 'gf.jsonl'); + await fs.promises.writeFile(ct, '', 'utf8'); + await fs.promises.writeFile(gf, '', 'utf8'); + expect( + await validateCompareData({ + kind: 'cache', + sessionId: 'x', + paths: { content_types: ct, global_fields: gf }, + }), + ).to.equal(false); + }); + + it('returns true when cache has at least one JSONL line', async () => { + const ct = path.join(tmpDir, 'ct.jsonl'); + const gf = path.join(tmpDir, 'gf.jsonl'); + await fs.promises.writeFile(ct, '{"uid":"a","status":"modified"}\n', 'utf8'); + await fs.promises.writeFile(gf, '', 'utf8'); + expect( + await validateCompareData({ + kind: 'cache', + sessionId: 'x', + paths: { content_types: ct, global_fields: gf }, + }), + ).to.equal(true); + }); + + it('returns true for inline compare data with non-empty module arrays', async () => { + expect( + await validateCompareData({ + content_types: { added: [{ uid: 'x' }], modified: [], deleted: [] }, + global_fields: { added: [], modified: [], deleted: [] }, + }), + ).to.equal(true); + }); +}); diff --git a/packages/contentstack-bulk-publish/README.md b/packages/contentstack-bulk-publish/README.md index bd8a811391..dcba1f7d67 100644 --- a/packages/contentstack-bulk-publish/README.md +++ b/packages/contentstack-bulk-publish/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-cm-bulk-publish $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-bulk-publish/1.10.6 darwin-arm64 node-v24.13.0 +@contentstack/cli-cm-bulk-publish/1.10.7 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-clone/README.md b/packages/contentstack-clone/README.md index ec5f1bc21c..c5e049ab11 100644 --- a/packages/contentstack-clone/README.md +++ b/packages/contentstack-clone/README.md @@ -16,7 +16,7 @@ $ npm install -g @contentstack/cli-cm-clone $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-clone/1.20.0 darwin-arm64 node-v24.13.0 +@contentstack/cli-cm-clone/1.20.1 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-config/README.md b/packages/contentstack-config/README.md index 4b851d3978..108da8756a 100644 --- a/packages/contentstack-config/README.md +++ b/packages/contentstack-config/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-config $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-config/1.18.0 darwin-arm64 node-v24.13.0 +@contentstack/cli-config/1.19.0 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-export/README.md b/packages/contentstack-export/README.md index cac9da9931..e9add8a74a 100755 --- a/packages/contentstack-export/README.md +++ b/packages/contentstack-export/README.md @@ -48,7 +48,7 @@ $ npm install -g @contentstack/cli-cm-export $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-export/1.23.1 darwin-arm64 node-v24.13.0 +@contentstack/cli-cm-export/1.23.2 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-import-setup/README.md b/packages/contentstack-import-setup/README.md index 9cd591edbe..aa04423732 100644 --- a/packages/contentstack-import-setup/README.md +++ b/packages/contentstack-import-setup/README.md @@ -47,7 +47,7 @@ $ npm install -g @contentstack/cli-cm-import-setup $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-import-setup/1.7.3 darwin-arm64 node-v24.13.0 +@contentstack/cli-cm-import-setup/1.7.3 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-import/README.md b/packages/contentstack-import/README.md index 8a97a7731f..53a1a4a8c8 100644 --- a/packages/contentstack-import/README.md +++ b/packages/contentstack-import/README.md @@ -47,7 +47,7 @@ $ npm install -g @contentstack/cli-cm-import $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-import/1.31.2 darwin-arm64 node-v24.13.0 +@contentstack/cli-cm-import/1.31.3 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-migrate-rte/README.md b/packages/contentstack-migrate-rte/README.md index 0333bba660..7f7ca5c515 100644 --- a/packages/contentstack-migrate-rte/README.md +++ b/packages/contentstack-migrate-rte/README.md @@ -16,7 +16,7 @@ $ npm install -g @contentstack/cli-cm-migrate-rte $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-migrate-rte/1.6.4 darwin-arm64 node-v24.13.0 +@contentstack/cli-cm-migrate-rte/1.6.4 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-migrate-rte/package.json b/packages/contentstack-migrate-rte/package.json index f495914ca6..938833e071 100644 --- a/packages/contentstack-migrate-rte/package.json +++ b/packages/contentstack-migrate-rte/package.json @@ -12,7 +12,7 @@ "@oclif/plugin-help": "^6.2.28", "collapse-whitespace": "^1.1.7", "chalk": "^4.1.2", - "jsdom": "^20.0.3", + "jsdom": "^23.0.0", "jsonschema": "^1.5.0", "lodash": "^4.17.23", "nock": "^13.5.6", @@ -66,4 +66,4 @@ "cm:migrate-rte": "O-MGRTRTE" } } -} \ No newline at end of file +} diff --git a/packages/contentstack-migration/README.md b/packages/contentstack-migration/README.md index bc918ec3c4..ebce198a7c 100644 --- a/packages/contentstack-migration/README.md +++ b/packages/contentstack-migration/README.md @@ -21,7 +21,7 @@ $ npm install -g @contentstack/cli-migration $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-migration/1.10.3 darwin-arm64 node-v24.13.0 +@contentstack/cli-migration/1.11.0 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND @@ -121,7 +121,7 @@ EXAMPLES $ csdx cm:migration --alias --file-path -k ``` -_See code: [src/commands/cm/stacks/migration.js](https://github.com/contentstack/cli/blob/main/packages/contentstack-migration/src/commands/cm/stacks/migration.js)_ +_See code: [src/commands/cm/stacks/migration.ts](https://github.com/contentstack/cli/blob/main/packages/contentstack-migration/src/commands/cm/stacks/migration.ts)_ ### Points to remember diff --git a/packages/contentstack-variants/package.json b/packages/contentstack-variants/package.json index 79fff345d0..cd3e1ecfd3 100644 --- a/packages/contentstack-variants/package.json +++ b/packages/contentstack-variants/package.json @@ -14,7 +14,7 @@ "keywords": [ "variant" ], - "author": "antony.raj@contentstack.com", + "author": "Contentstack", "license": "MIT", "devDependencies": { "@contentstack/cli-dev-dependencies": "^1.3.0", @@ -34,4 +34,4 @@ "mkdirp": "^1.0.4", "winston": "^3.17.0" } -} \ No newline at end of file +} diff --git a/packages/contentstack/README.md b/packages/contentstack/README.md index 3121de5259..bed8cc6b93 100644 --- a/packages/contentstack/README.md +++ b/packages/contentstack/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli $ csdx COMMAND running command... $ csdx (--version|-v) -@contentstack/cli/1.56.0 darwin-arm64 node-v24.13.0 +@contentstack/cli/1.59.1 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND @@ -3060,7 +3060,7 @@ EXAMPLES $ csdx cm:migration --alias --file-path -k ``` -_See code: [@contentstack/cli-migration](https://github.com/contentstack/cli/blob/main/packages/contentstack-migration/src/commands/cm/stacks/migration.js)_ +_See code: [@contentstack/cli-migration](https://github.com/contentstack/cli/blob/main/packages/contentstack-migration/src/commands/cm/stacks/migration.ts)_ ## `csdx cm:stacks:publish` @@ -3972,8 +3972,7 @@ USAGE $ csdx launch:functions [-p ] [-d ] FLAGS - -d, --data-dir= [default: /Users/netraj.patel/projects/contentstack/cli/packages/contentstack] Current working - directory + -d, --data-dir= Current working directory -p, --port= [default: 3000] Port number DESCRIPTION @@ -4149,7 +4148,7 @@ EXAMPLES $ csdx plugins ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/index.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/index.ts)_ ## `csdx plugins:add PLUGIN` @@ -4223,7 +4222,7 @@ EXAMPLES $ csdx plugins:inspect myplugin ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/inspect.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/inspect.ts)_ ## `csdx plugins:install PLUGIN` @@ -4272,7 +4271,7 @@ EXAMPLES $ csdx plugins:install someuser/someplugin ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/install.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/install.ts)_ ## `csdx plugins:link PATH` @@ -4303,7 +4302,7 @@ EXAMPLES $ csdx plugins:link myplugin ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/link.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/link.ts)_ ## `csdx plugins:remove [PLUGIN]` @@ -4344,7 +4343,7 @@ FLAGS --reinstall Reinstall all plugins after uninstalling. ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/reset.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/reset.ts)_ ## `csdx plugins:uninstall [PLUGIN]` @@ -4372,7 +4371,7 @@ EXAMPLES $ csdx plugins:uninstall myplugin ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/uninstall.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/uninstall.ts)_ ## `csdx plugins:unlink [PLUGIN]` @@ -4416,7 +4415,7 @@ DESCRIPTION Update installed plugins. ``` -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.55/src/commands/plugins/update.ts)_ +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/update.ts)_ ## `csdx tokens` diff --git a/packages/contentstack/package.json b/packages/contentstack/package.json index 572f3b3c08..5c392790d9 100755 --- a/packages/contentstack/package.json +++ b/packages/contentstack/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli", "description": "Command-line tool (CLI) to interact with Contentstack", - "version": "1.59.0", + "version": "1.59.1", "author": "Contentstack", "bin": { "csdx": "./bin/run.js" @@ -27,7 +27,7 @@ "@contentstack/cli-cm-import": "~1.31.3", "@contentstack/cli-auth": "~1.7.3", "@contentstack/cli-cm-bootstrap": "~1.18.4", - "@contentstack/cli-cm-branches": "~1.6.3", + "@contentstack/cli-cm-branches": "~1.7.0", "@contentstack/cli-cm-bulk-publish": "~1.10.7", "@contentstack/cli-cm-clone": "~1.20.1", "@contentstack/cli-cm-export-to-csv": "~1.11.0", @@ -167,4 +167,4 @@ } }, "repository": "https://github.com/contentstack/cli" -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f8b4fc6816..ccc4544478 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,7 +15,7 @@ importers: '@contentstack/cli-audit': ~1.18.0 '@contentstack/cli-auth': ~1.7.3 '@contentstack/cli-cm-bootstrap': ~1.18.4 - '@contentstack/cli-cm-branches': ~1.6.3 + '@contentstack/cli-cm-branches': ~1.7.0 '@contentstack/cli-cm-bulk-publish': ~1.10.7 '@contentstack/cli-cm-clone': ~1.20.1 '@contentstack/cli-cm-export': ~1.23.2 @@ -839,7 +839,7 @@ importers: collapse-whitespace: ^1.1.7 eslint: ^8.57.1 eslint-config-oclif: ^6.0.62 - jsdom: ^20.0.3 + jsdom: ^23.0.0 jsonschema: ^1.5.0 lodash: ^4.17.23 mocha: ^10.8.2 @@ -856,7 +856,7 @@ importers: '@oclif/plugin-help': 6.2.37 chalk: 4.1.2 collapse-whitespace: 1.1.7 - jsdom: 20.0.3 + jsdom: 23.2.0 jsonschema: 1.5.0 lodash: 4.17.23 nock: 13.5.6 @@ -1143,6 +1143,24 @@ packages: - '@types/react' dev: false + /@asamuzakjp/css-color/3.2.0: + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + dependencies: + '@csstools/css-calc': 2.1.4_3zfxnl4m3q3iwlnruu4kxqgjiu + '@csstools/css-color-parser': 3.1.0_3zfxnl4m3q3iwlnruu4kxqgjiu + '@csstools/css-parser-algorithms': 3.0.5_y7ebxhmywfqzdqo3zx54rlvajm + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + dev: false + + /@asamuzakjp/dom-selector/2.0.2: + resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==} + dependencies: + bidi-js: 1.0.3 + css-tree: 2.3.1 + is-potential-custom-element-name: 1.0.1 + dev: false + /@aws-crypto/crc32/5.2.0: resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -2272,6 +2290,49 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true + /@csstools/color-helpers/5.1.0: + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} + engines: {node: '>=18'} + dev: false + + /@csstools/css-calc/2.1.4_3zfxnl4m3q3iwlnruu4kxqgjiu: + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + dependencies: + '@csstools/css-parser-algorithms': 3.0.5_y7ebxhmywfqzdqo3zx54rlvajm + '@csstools/css-tokenizer': 3.0.4 + dev: false + + /@csstools/css-color-parser/3.1.0_3zfxnl4m3q3iwlnruu4kxqgjiu: + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + dependencies: + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4_3zfxnl4m3q3iwlnruu4kxqgjiu + '@csstools/css-parser-algorithms': 3.0.5_y7ebxhmywfqzdqo3zx54rlvajm + '@csstools/css-tokenizer': 3.0.4 + dev: false + + /@csstools/css-parser-algorithms/3.0.5_y7ebxhmywfqzdqo3zx54rlvajm: + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + dependencies: + '@csstools/css-tokenizer': 3.0.4 + dev: false + + /@csstools/css-tokenizer/3.0.4: + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + dev: false + /@dabh/diagnostics/2.0.8: resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} dependencies: @@ -4975,11 +5036,6 @@ packages: defer-to-connect: 2.0.1 dev: true - /@tootallnate/once/2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: false - /@tsconfig/node10/1.0.12: resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} dev: true @@ -6356,11 +6412,6 @@ packages: through: 2.3.8 dev: false - /abab/2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - dev: false - /accepts/1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -6369,13 +6420,6 @@ packages: negotiator: 0.6.3 dev: false - /acorn-globals/7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - dependencies: - acorn: 8.16.0 - acorn-walk: 8.3.5 - dev: false - /acorn-jsx/5.3.2_acorn@7.4.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -6397,6 +6441,7 @@ packages: engines: {node: '>=0.4.0'} dependencies: acorn: 8.16.0 + dev: true /acorn/7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} @@ -6408,19 +6453,16 @@ packages: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true + dev: true /adm-zip/0.5.16: resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} engines: {node: '>=12.0'} dev: false - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.4.3 - transitivePeerDependencies: - - supports-color + /agent-base/7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} dev: false /aggregate-error/3.1.0: @@ -6875,6 +6917,12 @@ packages: hasBin: true dev: true + /bidi-js/1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + dependencies: + require-from-string: 2.0.2 + dev: false + /big-json/3.2.0: resolution: {integrity: sha512-2Etdurszm1CAFxqpH08lItXyf5CI1OBKRn7imCeI8Lh+a2UvdN2WpuSduxB/3ccao6v93SxiS5fIlE/v1QLoPg==} dependencies: @@ -7624,19 +7672,20 @@ packages: engines: {node: '>=8'} dev: false - /cssom/0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: false - - /cssom/0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + /css-tree/2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 dev: false - /cssstyle/2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} + /cssstyle/4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} + engines: {node: '>=18'} dependencies: - cssom: 0.3.8 + '@asamuzakjp/css-color': 3.2.0 + rrweb-cssom: 0.8.0 dev: false /csv-generate/3.4.3: @@ -7666,13 +7715,12 @@ packages: engines: {node: '>=0.4.0'} dev: false - /data-urls/3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} + /data-urls/5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 dev: false /data-view-buffer/1.0.2: @@ -7940,14 +7988,6 @@ packages: esutils: 2.0.3 dev: true - /domexception/4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - dependencies: - webidl-conversions: 7.0.0 - dev: false - /dot-case/3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: @@ -8226,18 +8266,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /escodegen/2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - dev: false - /eslint-compat-utils/0.5.1_eslint@8.57.1: resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} @@ -9148,6 +9176,7 @@ packages: /estraverse/5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + dev: true /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -9156,6 +9185,7 @@ packages: /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + dev: true /etag/1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} @@ -10009,11 +10039,11 @@ packages: dependencies: lru-cache: 10.4.3 - /html-encoding-sniffer/3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} + /html-encoding-sniffer/4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} dependencies: - whatwg-encoding: 2.0.0 + whatwg-encoding: 3.1.1 dev: false /html-escaper/2.0.2: @@ -10049,12 +10079,11 @@ packages: toidentifier: 1.0.1 dev: false - /http-proxy-agent/5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + /http-proxy-agent/7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 + agent-base: 7.1.4 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -10068,11 +10097,11 @@ packages: resolve-alpn: 1.2.1 dev: true - /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + /https-proxy-agent/7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} dependencies: - agent-base: 6.0.2 + agent-base: 7.1.4 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -11327,41 +11356,36 @@ packages: underscore: 1.13.8 dev: true - /jsdom/20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} + /jsdom/23.2.0: + resolution: {integrity: sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==} + engines: {node: '>=18'} peerDependencies: - canvas: ^2.5.0 + canvas: ^2.11.2 peerDependenciesMeta: canvas: optional: true dependencies: - abab: 2.0.6 - acorn: 8.16.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 + '@asamuzakjp/dom-selector': 2.0.2 + cssstyle: 4.6.0 + data-urls: 5.0.0 decimal.js: 10.6.0 - domexception: 4.0.0 - escodegen: 2.1.0 form-data: 4.0.5 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.23 parse5: 7.3.0 + rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 + w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 ws: 8.19.0 - xml-name-validator: 4.0.0 + xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color @@ -11809,6 +11833,10 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + /mdn-data/2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: false + /mdn-data/2.23.0: resolution: {integrity: sha512-786vq1+4079JSeu2XdcDjrhi/Ry7BWtjDl9WtGPWLiIHb2T66GvIVflZTBoSNZ5JqTtJGYEVMuFA/lbQlMOyDQ==} dev: true @@ -12262,10 +12290,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /nwsapi/2.2.23: - resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} - dev: false - /nyc/15.1.0: resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} engines: {node: '>=8.9'} @@ -13404,6 +13428,14 @@ packages: fsevents: 2.3.3 dev: false + /rrweb-cssom/0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: false + + /rrweb-cssom/0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + dev: false + /run-async/2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -13801,7 +13833,6 @@ packages: /source-map-js/1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - dev: true /source-map-support/0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -13820,6 +13851,7 @@ packages: /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + dev: true /spawn-wrap/2.0.0: resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} @@ -14273,9 +14305,9 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: false - /tr46/3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} + /tr46/5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} dependencies: punycode: 2.3.1 dev: false @@ -14944,11 +14976,11 @@ packages: engines: {node: '>=0.10.0'} dev: false - /w3c-xmlserializer/4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} + /w3c-xmlserializer/5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} dependencies: - xml-name-validator: 4.0.0 + xml-name-validator: 5.0.0 dev: false /walk-back/2.0.1: @@ -14982,24 +15014,24 @@ packages: engines: {node: '>=12'} dev: false - /whatwg-encoding/2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} + /whatwg-encoding/3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation dependencies: iconv-lite: 0.6.3 dev: false - /whatwg-mimetype/3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} + /whatwg-mimetype/4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} dev: false - /whatwg-url/11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} + /whatwg-url/14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} dependencies: - tr46: 3.0.0 + tr46: 5.1.1 webidl-conversions: 7.0.0 dev: false @@ -15220,9 +15252,9 @@ packages: engines: {node: '>=8'} dev: false - /xml-name-validator/4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} + /xml-name-validator/5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} dev: false /xmlchars/2.2.0: