diff --git a/.gitignore b/.gitignore index 5e42c8d63c..db312beaf2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ node_modules .env .dccache logs -contents +/contents lerna-debug.log .DS_Store contentTest diff --git a/.talismanrc b/.talismanrc index ead4ce78f6..be354d0885 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,8 +1,8 @@ fileignoreconfig: - filename: package-lock.json - checksum: ad5cedb62e915203b1a3561b231889f945452d48da12dbdca13c346f93258a7a + checksum: 0e6e1f81c42fef1a4f71431be93a63b92a64fa64537efcf281a496ae08fbc1a3 - filename: pnpm-lock.yaml - checksum: afa28e14d5080f836632e31930ed3a950bfefb4c874acd163eb6849139b2034e + checksum: 65f459db6538d79f0e6cf74d4becc9934c183fa383988dc8c0d8862b9a0147eb - filename: packages/contentstack-import-setup/test/unit/backup-handler.test.ts checksum: 0582d62b88834554cf12951c8690a73ef3ddbb78b82d2804d994cf4148e1ef93 - filename: packages/contentstack-import-setup/test/config.json @@ -66,7 +66,7 @@ fileignoreconfig: - filename: packages/contentstack-bulk-publish/src/producer/publish-unpublished-env.js checksum: 44dbc966df086f835fdca11cb305d0a5f448ca0be811c14b894e0024f9491385 - filename: packages/contentstack-import/src/import/modules/entries.ts - checksum: 0fa92065747da2ea3b02c666da5a0c6d3e74552c804a15578d9da0bfeb082615 + checksum: 290730774c61220645ec211b85b9e218cdbd8addc2d8fd8f061dfa5ede5b5c75 - filename: packages/contentstack-utilities/src/logger/logger.ts checksum: 76429bc87e279624b386f00e7eb3f4ec25621ace7056289f812b9a076d6e184e - filename: packages/contentstack-bootstrap/src/bootstrap/utils.ts @@ -95,8 +95,6 @@ fileignoreconfig: checksum: bbe1130f5f5ebf2fa452daef743fe4d40ae9f8fc05c7f8c59c82a3d3d1ed69e8 - filename: packages/contentstack-audit/src/modules/extensions.ts checksum: 32af019f0df8288448d11559fe9f7ef61d3e43c3791d45eeec25fd0937c6baad - - filename: packages/contentstack-audit/src/modules/modulesData.ts - checksum: bac8f1971ac2e39bc04d9297b81951fe34ed265dfc985137135f9bbe775cd63c - filename: packages/contentstack-audit/src/modules/assets.ts checksum: 5a007804c75976dd192ed2284b7b7edbc5b5fc269fc0e883908b52e4d4f206a8 - filename: packages/contentstack-audit/src/modules/workflows.ts @@ -109,8 +107,6 @@ fileignoreconfig: checksum: b0fa8088fcbb17510fa275bd0dde3f6f4246f2525741c30426f07dd62fe497b0 - filename: packages/contentstack-audit/src/modules/content-types.ts checksum: ddf7b08e6a80af09c6a7019a637c26089fb76572c7c3d079a8af244b02985f16 - - filename: packages/contentstack-import/test/unit/commands/cm/stacks/import.test.ts - checksum: b11e57f1b824d405f86438e9e7c59183f8c59b66b42d8d16dbeaf76195a30548 - filename: packages/contentstack-import/test/unit/utils/asset-helper.test.ts checksum: 8e83200ac8028f9289ff1bd3a50d191b35c8e28f1854141c90fa1b0134d6bf8a - filename: packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts @@ -120,7 +116,7 @@ fileignoreconfig: - filename: packages/contentstack-import/test/unit/import/modules/mock-data/entries/environments.json checksum: 17f94f500dcb265575b60f8d2cb7464372a234e452527b3bdec6052c606cee28 - filename: packages/contentstack-import/test/unit/import/modules/entries.test.ts - checksum: 7b984d292a534f9d075d801de2aeff802b2832bc5e2efadf8613a7059f4317fc + checksum: d8e4f6ad185b36b6f84b38dce169144e7d5a195668aac11f914eed5e1e4b5478 - filename: packages/contentstack-import/test/unit/import/modules/labels.test.ts checksum: 46fe0d1602ab386f7eaee9839bc376b98ab8d4262f823784eda9cfa2bf893758 - filename: packages/contentstack-export/test/unit/export/modules/assets.test.ts @@ -199,8 +195,6 @@ fileignoreconfig: checksum: 49dd8e754a0d3635585a74e943ab097593f061089a7cddc22683ec6caddbb3c5 - filename: packages/contentstack-export/test/unit/export/modules/personalize.test.ts checksum: 83cf034fabee00b42b4243a8c0b8ba280ab7c1e68ffd741c49c31aaee8ca0315 - - filename: packages/contentstack-utilities/test/unit/logger.test.ts - checksum: 11778d0252202c18a1ca6a38883d6e12fc324ff86ad0fe058bc2505f9cd66ba3 - filename: packages/contentstack-audit/test/unit/audit-base-command.test.ts checksum: 17a16b4457c820494442f335d94d0949961e68e8ca72ca0f1fa9d4d0eeb0c17a - filename: packages/contentstack-import/src/import/modules/taxonomies.ts @@ -273,4 +267,14 @@ fileignoreconfig: checksum: e8714ef41940f3a9be782dfaa43a15df57bd1eb4c3f0e4d5f305e68681c1bd93 - filename: packages/contentstack-import/src/import/modules-js/environments.js checksum: d484342c25462a7052c8aae6cad0baed9a01e1eaa67d6a09f175981c53092301 + - filename: packages/contentstack-audit/test/unit/mock/contents/composable_studio/environments/environments.json + checksum: 0402604e5919a7e38ecb5ff0916d6ae5ab7d98fe78ff6ac9eba8a9b8130af34d + - filename: packages/contentstack-audit/test/unit/mock/contents/composable_studio/composable_studio.json + checksum: 6912e5ea32b4456ad04d1645750c72bbb29ab1895368c3a242ab39e9350ec531 + - filename: packages/contentstack-audit/test/unit/mock/contents/composable_studio/invalid_composable_studio.json + checksum: e6465aa0011d1565a2de848d9cca74395d11419e6ac840e7dfb52e1d255b1c4f + - filename: packages/contentstack-audit/src/modules/modulesData.ts + checksum: 1e6c1fba1172512401038d5454c8d218201ec62262449c5c878609592e0124c4 + - filename: packages/contentstack-audit/src/modules/composable-studio.ts + checksum: 4fc97ff582d6dff9a54b3a50dfa3cbb5febd38a55aeb8737034b97188ad543ba version: '1.0' diff --git a/package-lock.json b/package-lock.json index c8f990623e..7b1eec9c52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -280,753 +280,753 @@ } }, "node_modules/@aws-sdk/client-cloudfront": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.965.0.tgz", - "integrity": "sha512-DKkh7TaOhETwoJrZ6Z2Es57oPD2IAIr1JkAwUtYFt+HMN0s4FL/EuZrN78N3DUJCFFeDCR3PaBHEvJ4mGEmJIw==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.970.0.tgz", + "integrity": "sha512-8+EX29bGGjBvIx8z7qFh8B+y8RUAqAohbfnUTNC/zZxmk+hYIMyCWoT4YPJyfrWgMcN186PwjVRLuyNuDZ2B9g==", "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.965.0", - "@aws-sdk/credential-provider-node": "3.965.0", - "@aws-sdk/middleware-host-header": "3.965.0", - "@aws-sdk/middleware-logger": "3.965.0", - "@aws-sdk/middleware-recursion-detection": "3.965.0", - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/region-config-resolver": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@aws-sdk/util-user-agent-browser": "3.965.0", - "@aws-sdk/util-user-agent-node": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/middleware-retry": "^4.4.17", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/credential-provider-node": "3.970.0", + "@aws-sdk/middleware-host-header": "3.969.0", + "@aws-sdk/middleware-logger": "3.969.0", + "@aws-sdk/middleware-recursion-detection": "3.969.0", + "@aws-sdk/middleware-user-agent": "3.970.0", + "@aws-sdk/region-config-resolver": "3.969.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-endpoints": "3.970.0", + "@aws-sdk/util-user-agent-browser": "3.969.0", + "@aws-sdk/util-user-agent-node": "3.970.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.16", - "@smithy/util-defaults-mode-node": "^4.2.19", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", - "@smithy/util-stream": "^4.5.8", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-stream": "^4.5.10", "@smithy/util-utf8": "^4.2.0", - "@smithy/util-waiter": "^4.2.7", + "@smithy/util-waiter": "^4.2.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.965.0.tgz", - "integrity": "sha512-BTeaaU1iK0BfatTCrtYjNkIHCoZH256qOI18l9bK4z6mVOgpHkYN4RvOu+NnKgyX58n+HWfOuhtKUD4OE33Vdw==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.970.0.tgz", + "integrity": "sha512-mDC792KkFzLZG9PS1Fv9b18lEzmSNBjAdweLJ83D2CZu6ved9+Pr/Dr+FRs0kSxqY+sUUUuIBmvDYHXY8E8EzA==", "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.965.0", - "@aws-sdk/credential-provider-node": "3.965.0", - "@aws-sdk/middleware-bucket-endpoint": "3.965.0", - "@aws-sdk/middleware-expect-continue": "3.965.0", - "@aws-sdk/middleware-flexible-checksums": "3.965.0", - "@aws-sdk/middleware-host-header": "3.965.0", - "@aws-sdk/middleware-location-constraint": "3.965.0", - "@aws-sdk/middleware-logger": "3.965.0", - "@aws-sdk/middleware-recursion-detection": "3.965.0", - "@aws-sdk/middleware-sdk-s3": "3.965.0", - "@aws-sdk/middleware-ssec": "3.965.0", - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/region-config-resolver": "3.965.0", - "@aws-sdk/signature-v4-multi-region": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@aws-sdk/util-user-agent-browser": "3.965.0", - "@aws-sdk/util-user-agent-node": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.0", - "@smithy/eventstream-serde-browser": "^4.2.7", - "@smithy/eventstream-serde-config-resolver": "^4.3.7", - "@smithy/eventstream-serde-node": "^4.2.7", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-blob-browser": "^4.2.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/hash-stream-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/md5-js": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/middleware-retry": "^4.4.17", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/credential-provider-node": "3.970.0", + "@aws-sdk/middleware-bucket-endpoint": "3.969.0", + "@aws-sdk/middleware-expect-continue": "3.969.0", + "@aws-sdk/middleware-flexible-checksums": "3.970.0", + "@aws-sdk/middleware-host-header": "3.969.0", + "@aws-sdk/middleware-location-constraint": "3.969.0", + "@aws-sdk/middleware-logger": "3.969.0", + "@aws-sdk/middleware-recursion-detection": "3.969.0", + "@aws-sdk/middleware-sdk-s3": "3.970.0", + "@aws-sdk/middleware-ssec": "3.969.0", + "@aws-sdk/middleware-user-agent": "3.970.0", + "@aws-sdk/region-config-resolver": "3.969.0", + "@aws-sdk/signature-v4-multi-region": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-endpoints": "3.970.0", + "@aws-sdk/util-user-agent-browser": "3.969.0", + "@aws-sdk/util-user-agent-node": "3.970.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/eventstream-serde-browser": "^4.2.8", + "@smithy/eventstream-serde-config-resolver": "^4.3.8", + "@smithy/eventstream-serde-node": "^4.2.8", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-blob-browser": "^4.2.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/hash-stream-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/md5-js": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.16", - "@smithy/util-defaults-mode-node": "^4.2.19", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", - "@smithy/util-stream": "^4.5.8", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-stream": "^4.5.10", "@smithy/util-utf8": "^4.2.0", - "@smithy/util-waiter": "^4.2.7", + "@smithy/util-waiter": "^4.2.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.965.0.tgz", - "integrity": "sha512-iv2tr+n4aZ+nPUFFvG00hISPuEd4DU+1/Q8rPAYKXsM+vEPJ2nAnP5duUOa2fbOLIUCRxX3dcQaQaghVHDHzQw==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.970.0.tgz", + "integrity": "sha512-ArmgnOsSCXN5VyIvZb4kSP5hpqlRRHolrMtKQ/0N8Hw4MTb7/IeYHSZzVPNzzkuX6gn5Aj8txoUnDPM8O7pc9g==", "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.965.0", - "@aws-sdk/middleware-host-header": "3.965.0", - "@aws-sdk/middleware-logger": "3.965.0", - "@aws-sdk/middleware-recursion-detection": "3.965.0", - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/region-config-resolver": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@aws-sdk/util-user-agent-browser": "3.965.0", - "@aws-sdk/util-user-agent-node": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/middleware-retry": "^4.4.17", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/middleware-host-header": "3.969.0", + "@aws-sdk/middleware-logger": "3.969.0", + "@aws-sdk/middleware-recursion-detection": "3.969.0", + "@aws-sdk/middleware-user-agent": "3.970.0", + "@aws-sdk/region-config-resolver": "3.969.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-endpoints": "3.970.0", + "@aws-sdk/util-user-agent-browser": "3.969.0", + "@aws-sdk/util-user-agent-node": "3.970.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.16", - "@smithy/util-defaults-mode-node": "^4.2.19", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/core": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.965.0.tgz", - "integrity": "sha512-aq9BhQxdHit8UUJ9C0im9TtuKeK0pT6NXmNJxMTCFeStI7GG7ImIsSislg3BZTIifVg1P6VLdzMyz9de85iutQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.970.0.tgz", + "integrity": "sha512-klpzObldOq8HXzDjDlY6K8rMhYZU6mXRz6P9F9N+tWnjoYFfeBMra8wYApydElTUYQKP1O7RLHwH1OKFfKcqIA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@aws-sdk/xml-builder": "3.965.0", - "@smithy/core": "^3.20.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/signature-v4": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/xml-builder": "3.969.0", + "@smithy/core": "^3.20.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", - "@smithy/util-middleware": "^4.2.7", + "@smithy/util-middleware": "^4.2.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.965.0.tgz", - "integrity": "sha512-9FbIyJ/Zz1AdEIrb0+Pn7wRi+F/0Y566ooepg0hDyHUzRV3ZXKjOlu3wJH3YwTz2UkdwQmldfUos2yDJps7RyA==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.969.0.tgz", + "integrity": "sha512-IGNkP54HD3uuLnrPCYsv3ZD478UYq+9WwKrIVJ9Pdi3hxPg8562CH3ZHf8hEgfePN31P9Kj+Zu9kq2Qcjjt61A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.965.0.tgz", - "integrity": "sha512-mdGnaIjMxTIjsb70dEj3VsWPWpoq1V5MWzBSfJq2H8zgMBXjn6d5/qHP8HMf53l9PrsgqzMpXGv3Av549A2x1g==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.970.0.tgz", + "integrity": "sha512-rtVzXzEtAfZBfh+lq3DAvRar4c3jyptweOAJR2DweyXx71QSMY+O879hjpMwES7jl07a3O1zlnFIDo4KP/96kQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.965.0.tgz", - "integrity": "sha512-YuGQel9EgA/z25oeLM+GYYQS750+8AESvr7ZEmVnRPL0sg+K3DmGqdv+9gFjFd0UkLjTlC/jtbP2cuY6UcPiHQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.970.0.tgz", + "integrity": "sha512-CjDbWL7JxjLc9ZxQilMusWSw05yRvUJKRpz59IxDpWUnSMHC9JMMUUkOy5Izk8UAtzi6gupRWArp4NG4labt9Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/util-stream": "^4.5.8", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.10", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.965.0.tgz", - "integrity": "sha512-xRo72Prer5s0xYVSCxCymVIRSqrVlevK5cmU0GWq9yJtaBNpnx02jwdJg80t/Ni7pgbkQyFWRMcq38c1tc6M/w==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.970.0.tgz", + "integrity": "sha512-L5R1hN1FY/xCmH65DOYMXl8zqCFiAq0bAq8tJZU32mGjIl1GzGeOkeDa9c461d81o7gsQeYzXyqFD3vXEbJ+kQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/credential-provider-env": "3.965.0", - "@aws-sdk/credential-provider-http": "3.965.0", - "@aws-sdk/credential-provider-login": "3.965.0", - "@aws-sdk/credential-provider-process": "3.965.0", - "@aws-sdk/credential-provider-sso": "3.965.0", - "@aws-sdk/credential-provider-web-identity": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/credential-provider-imds": "^4.2.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/credential-provider-env": "3.970.0", + "@aws-sdk/credential-provider-http": "3.970.0", + "@aws-sdk/credential-provider-login": "3.970.0", + "@aws-sdk/credential-provider-process": "3.970.0", + "@aws-sdk/credential-provider-sso": "3.970.0", + "@aws-sdk/credential-provider-web-identity": "3.970.0", + "@aws-sdk/nested-clients": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.965.0.tgz", - "integrity": "sha512-43/H8Qku8LHyugbhLo8kjD+eauhybCeVkmrnvWl8bXNHJP7xi1jCdtBQJKKJqiIHZws4MOEwkji8kFdAVRCe6g==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.970.0.tgz", + "integrity": "sha512-C+1dcLr+p2E+9hbHyvrQTZ46Kj4vC2RoP6N935GEukHQa637ZjXs8VlyHJ2xTvbvwwLZQNiu56Cx7o/OFOqw1A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/nested-clients": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.965.0.tgz", - "integrity": "sha512-cRxmMHF+Zh2lkkkEVduKl+8OQdtg/DhYA69+/7SPSQURlgyjFQGlRQ58B7q8abuNlrGT3sV+UzeOylZpJbV61Q==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.970.0.tgz", + "integrity": "sha512-nMM0eeVuiLtw1taLRQ+H/H5Qp11rva8ILrzAQXSvlbDeVmbc7d8EeW5Q2xnCJu+3U+2JNZ1uxqIL22pB2sLEMA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.965.0", - "@aws-sdk/credential-provider-http": "3.965.0", - "@aws-sdk/credential-provider-ini": "3.965.0", - "@aws-sdk/credential-provider-process": "3.965.0", - "@aws-sdk/credential-provider-sso": "3.965.0", - "@aws-sdk/credential-provider-web-identity": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/credential-provider-imds": "^4.2.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/credential-provider-env": "3.970.0", + "@aws-sdk/credential-provider-http": "3.970.0", + "@aws-sdk/credential-provider-ini": "3.970.0", + "@aws-sdk/credential-provider-process": "3.970.0", + "@aws-sdk/credential-provider-sso": "3.970.0", + "@aws-sdk/credential-provider-web-identity": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.965.0.tgz", - "integrity": "sha512-gmkPmdiR0yxnTzLPDb7rwrDhGuCUjtgnj8qWP+m0gSz/W43rR4jRPVEf6DUX2iC+ImQhxo3NFhuB3V42Kzo3TQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.970.0.tgz", + "integrity": "sha512-0XeT8OaT9iMA62DFV9+m6mZfJhrD0WNKf4IvsIpj2Z7XbaYfz3CoDDvNoALf3rPY9NzyMHgDxOspmqdvXP00mw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.965.0.tgz", - "integrity": "sha512-N01AYvtCqG3Wo/s/LvYt19ity18/FqggiXT+elAs3X9Om/Wfx+hw9G+i7jaDmy+/xewmv8AdQ2SK5Q30dXw/Fw==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.970.0.tgz", + "integrity": "sha512-ROb+Aijw8nzkB14Nh2XRH861++SeTZykUzk427y8YtgTLxjAOjgDTchDUFW2Fx6GFWkSjqJ3sY7SZyb33IqyFw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.965.0", - "@aws-sdk/core": "3.965.0", - "@aws-sdk/token-providers": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/client-sso": "3.970.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/token-providers": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.965.0.tgz", - "integrity": "sha512-T4gMZ2JzXnfxe1oTD+EDGLSxFfk1+WkLZdiHXEMZp8bFI1swP/3YyDFXI+Ib9Uq1JhnAmrCXtOnkicKEhDkdhQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.970.0.tgz", + "integrity": "sha512-r7tnYJJg+B6QvnsRHSW5vDol+ks6n+5jBZdCFdGyK63hjcMRMqHx59zEH8O47UR1PFv5hS2Q3uGz6HXvVtP40Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/nested-clients": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.965.0.tgz", - "integrity": "sha512-gbdv3Dl8l8xmg4oH60fXvfDyTxfx28w5/Hxdymx3vurM07tAyd4qld8zEXejnSpraTo45QcHRtk5auELIMfeag==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.969.0.tgz", + "integrity": "sha512-MlbrlixtkTVhYhoasblKOkr7n2yydvUZjjxTnBhIuHmkyBS1619oGnTfq/uLeGYb4NYXdeQ5OYcqsRGvmWSuTw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-arn-parser": "3.965.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-arn-parser": "3.968.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "@smithy/util-config-provider": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.965.0.tgz", - "integrity": "sha512-UBxVytsmhEmFwkBnt+aV0eAJ7uc+ouNokCqMBrQ7Oc5A77qhlcHfOgXIKz2SxqsiYTsDq+a0lWFM/XpyRWraqA==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.969.0.tgz", + "integrity": "sha512-qXygzSi8osok7tH9oeuS3HoKw6jRfbvg5Me/X5RlHOvSSqQz8c5O9f3MjUApaCUSwbAU92KrbZWasw2PKiaVHg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.965.0.tgz", - "integrity": "sha512-5rzEW08trcpHMe6jkQyYc4PL1KG/H7BbnySFSzhih+r/gktQEiE36sb1BNf7av9I0Vk2Ccmt7wocB5PIT7GDkQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.970.0.tgz", + "integrity": "sha512-mlKLwX0jWa5EwIvMjJAvVFL/zLAxB/fNLOg4hQCNCUf1qi+XxD+brDopXNPWeA8bSCnpvWfZrQd5yNksG6Fzqg==", "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.965.0", - "@aws-sdk/crc64-nvme": "3.965.0", - "@aws-sdk/types": "3.965.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/crc64-nvme": "3.969.0", + "@aws-sdk/types": "3.969.0", "@smithy/is-array-buffer": "^4.2.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-stream": "^4.5.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.10", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.965.0.tgz", - "integrity": "sha512-SfpSYqoPOAmdb3DBsnNsZ0vix+1VAtkUkzXM79JL3R5IfacpyKE2zytOgVAQx/FjhhlpSTwuXd+LRhUEVb3MaA==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.969.0.tgz", + "integrity": "sha512-AWa4rVsAfBR4xqm7pybQ8sUNJYnjyP/bJjfAw34qPuh3M9XrfGbAHG0aiAfQGrBnmS28jlO6Kz69o+c6PRw1dw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.965.0.tgz", - "integrity": "sha512-07T1rwAarQs33mVg5U28AsSdLB5JUXu9yBTBmspFGajKVsEahIyntf53j9mAXF1N2KR0bNdP0J4A0kst4t43UQ==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.969.0.tgz", + "integrity": "sha512-zH7pDfMLG/C4GWMOpvJEoYcSpj7XsNP9+irlgqwi667sUQ6doHQJ3yyDut3yiTk0maq1VgmriPFELyI9lrvH/g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.965.0.tgz", - "integrity": "sha512-gjUvJRZT1bUABKewnvkj51LAynFrfz2h5DYAg5/2F4Utx6UOGByTSr9Rq8JCLbURvvzAbCtcMkkIJRxw+8Zuzw==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.969.0.tgz", + "integrity": "sha512-xwrxfip7Y2iTtCMJ+iifN1E1XMOuhxIHY9DreMCvgdl4r7+48x2S1bCYPWH3eNY85/7CapBWdJ8cerpEl12sQQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.965.0.tgz", - "integrity": "sha512-6dvD+18Ni14KCRu+tfEoNxq1sIGVp9tvoZDZ7aMvpnA7mDXuRLrOjRQ/TAZqXwr9ENKVGyxcPl0cRK8jk1YWjA==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.969.0.tgz", + "integrity": "sha512-2r3PuNquU3CcS1Am4vn/KHFwLi8QFjMdA/R+CRDXT4AFO/0qxevF/YStW3gAKntQIgWgQV8ZdEtKAoJvLI4UWg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", + "@aws-sdk/types": "3.969.0", "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.965.0.tgz", - "integrity": "sha512-dXEgnojaaVRl+OlOx35mg3rYEbfffIN4X6tLmIfDnaKz0hMaDMvsE9jJXb/vBvokbdO1sVB27/2FEM4ttLSLnw==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.970.0.tgz", + "integrity": "sha512-v/Y5F1lbFFY7vMeG5yYxuhnn0CAshz6KMxkz1pDyPxejNE9HtA0w8R6OTBh/bVdIm44QpjhbI7qeLdOE/PLzXQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-arn-parser": "3.965.0", - "@smithy/core": "^3.20.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/signature-v4": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-arn-parser": "3.968.0", + "@smithy/core": "^3.20.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-stream": "^4.5.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.10", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.965.0.tgz", - "integrity": "sha512-dke++CTw26y+a2D1DdVuZ4+2TkgItdx6TeuE0zOl4lsqXGvTBUG4eaIZalt7ZOAW5ys2pbDOk1bPuh4opoD3pQ==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.969.0.tgz", + "integrity": "sha512-9wUYtd5ye4exygKHyl02lPVHUoAFlxxXoqvlw7u2sycfkK6uHLlwdsPru3MkMwj47ZSZs+lkyP/sVKXVMhuaAg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.965.0.tgz", - "integrity": "sha512-RBEYVGgu/WeAt+H/qLrGc+t8LqAUkbyvh3wBfTiuAD+uBcWsKnvnB1iSBX75FearC0fmoxzXRUc0PMxMdqpjJQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.970.0.tgz", + "integrity": "sha512-dnSJGGUGSFGEX2NzvjwSefH+hmZQ347AwbLhAsi0cdnISSge+pcGfOFrJt2XfBIypwFe27chQhlfuf/gWdzpZg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@smithy/core": "^3.20.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-endpoints": "3.970.0", + "@smithy/core": "^3.20.6", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.965.0.tgz", - "integrity": "sha512-muNVUjUEU+/KLFrLzQ8PMXyw4+a/MP6t4GIvwLtyx/kH0rpSy5s0YmqacMXheuIe6F/5QT8uksXGNAQenitkGQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.970.0.tgz", + "integrity": "sha512-RIl8s4DCa31MXtRFw23iU90OqEoWuwQxiZOZshzsPtjyrunhHFjyZJEqb+vuQcYd1o22SMaYa3lPJRp64OH35Q==", "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.965.0", - "@aws-sdk/middleware-host-header": "3.965.0", - "@aws-sdk/middleware-logger": "3.965.0", - "@aws-sdk/middleware-recursion-detection": "3.965.0", - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/region-config-resolver": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@aws-sdk/util-user-agent-browser": "3.965.0", - "@aws-sdk/util-user-agent-node": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/middleware-retry": "^4.4.17", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/middleware-host-header": "3.969.0", + "@aws-sdk/middleware-logger": "3.969.0", + "@aws-sdk/middleware-recursion-detection": "3.969.0", + "@aws-sdk/middleware-user-agent": "3.970.0", + "@aws-sdk/region-config-resolver": "3.969.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-endpoints": "3.970.0", + "@aws-sdk/util-user-agent-browser": "3.969.0", + "@aws-sdk/util-user-agent-node": "3.970.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.16", - "@smithy/util-defaults-mode-node": "^4.2.19", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.965.0.tgz", - "integrity": "sha512-RoMhu9ly2B0coxn8ctXosPP2WmDD0MkQlZGLjoYHQUOCBmty5qmCxOqBmBDa6wbWbB8xKtMQ/4VXloQOgzjHXg==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.969.0.tgz", + "integrity": "sha512-scj9OXqKpcjJ4jsFLtqYWz3IaNvNOQTFFvEY8XMJXTv+3qF5I7/x9SJtKzTRJEBF3spjzBUYPtGFbs9sj4fisQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.965.0.tgz", - "integrity": "sha512-hgbAThbsUrWtNpFBQxzXevIfd5Qgr4TLbXY1AIbmpSX9fPVC114pdieRMpopJ0fYaJ7v5/blTiS6wzVdXleZ/w==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.970.0.tgz", + "integrity": "sha512-z3syXfuK/x/IsKf/AeYmgc2NT7fcJ+3fHaGO+fkghkV9WEba3fPyOwtTBX4KpFMNb2t50zDGZwbzW1/5ighcUQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/signature-v4": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/middleware-sdk-s3": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.965.0.tgz", - "integrity": "sha512-aR0qxg0b8flkXJVE+CM1gzo7uJ57md50z2eyCwofC0QIz5Y0P7/7vvb9/dmUQt6eT9XRN5iRcUqq2IVxVDvJOw==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.970.0.tgz", + "integrity": "sha512-YO8KgJecxHIFMhfoP880q51VXFL9V1ELywK5yzVEqzyrwqoG93IUmnTygBUylQrfkbH+QqS0FxEdgwpP3fcwoQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/nested-clients": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.965.0.tgz", - "integrity": "sha512-jvodoJdMavvg8faN7co58vVJRO5MVep4JFPRzUNCzpJ98BDqWDk/ad045aMJcmxkLzYLS2UAnUmqjJ/tUPNlzQ==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.969.0.tgz", + "integrity": "sha512-7IIzM5TdiXn+VtgPdVLjmE6uUBUtnga0f4RiSEI1WW10RPuNvZ9U+pL3SwDiRDAdoGrOF9tSLJOFZmfuwYuVYQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.965.0.tgz", - "integrity": "sha512-bNGKr5Tct28jGLkL8xIkGu7swpDgBpkTVbGaofhzr/X80iclbOv656RGxhMpDvmc4S9UuQnqLRXyceNFNF2V7Q==", + "version": "3.968.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.968.0.tgz", + "integrity": "sha512-gqqvYcitIIM2K4lrDX9de9YvOfXBcVdxfT/iLnvHJd4YHvSXlt+gs+AsL4FfPCxG4IG9A+FyulP9Sb1MEA75vw==", "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.965.0.tgz", - "integrity": "sha512-WqSCB0XIsGUwZWvrYkuoofi2vzoVHqyeJ2kN+WyoOsxPLTiQSBIoqm/01R/qJvoxwK/gOOF7su9i84Vw2NQQpQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.970.0.tgz", + "integrity": "sha512-TZNZqFcMUtjvhZoZRtpEGQAdULYiy6rcGiXAbLU7e9LSpIYlRqpLa207oMNfgbzlL2PnHko+eVg8rajDiSOYCg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", - "@smithy/util-endpoints": "^3.2.7", + "@aws-sdk/types": "3.969.0", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.0.tgz", - "integrity": "sha512-9LJFand4bIoOjOF4x3wx0UZYiFZRo4oUauxQSiEX2dVg+5qeBOJSjp2SeWykIE6+6frCZ5wvWm2fGLK8D32aJw==", + "version": "3.965.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.2.tgz", + "integrity": "sha512-qKgO7wAYsXzhwCHhdbaKFyxd83Fgs8/1Ka+jjSPrv2Ll7mB55Wbwlo0kkfMLh993/yEc8aoDIAc1Fz9h4Spi4Q==", "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.965.0.tgz", - "integrity": "sha512-Xiza/zMntQGpkd2dETQeAK8So1pg5+STTzpcdGWxj5q0jGO5ayjqT/q1Q7BrsX5KIr6PvRkl9/V7lLCv04wGjQ==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.969.0.tgz", + "integrity": "sha512-bpJGjuKmFr0rA6UKUCmN8D19HQFMLXMx5hKBXqBlPFdalMhxJSjcxzX9DbQh0Fn6bJtxCguFmRGOBdQqNOt49g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/types": "^4.12.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.965.0.tgz", - "integrity": "sha512-kokIHUfNT3/P55E4fUJJrFHuuA9BbjFKUIxoLrd3UaRfdafT0ScRfg2eaZie6arf60EuhlUIZH0yALxttMEjxQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.970.0.tgz", + "integrity": "sha512-TNQpwIVD6SxMwkD+QKnaujKVyXy5ljN3O3jrI7nCHJ3GlJu5xJrd8yuBnanYCcrn3e2zwdfOh4d4zJAZvvIvVw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/middleware-user-agent": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" @@ -1038,18 +1038,18 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.965.0.tgz", - "integrity": "sha512-Tcod25/BTupraQwtb+Q+GX8bmEZfxIFjjJ/AvkhUZsZlkPeVluzq1uu3Oeqf145DCdMjzLIN6vab5MrykbDP+g==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.969.0.tgz", + "integrity": "sha512-BSe4Lx/qdRQQdX8cSSI7Et20vqBspzAjBy8ZmXVoyLkol3y4sXBXzn+BiLtR+oh60ExQn6o2DU4QjdOZbXaKIQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws/lambda-invoke-store": { @@ -1063,13 +1063,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -1078,9 +1078,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", - "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", "dev": true, "license": "MIT", "engines": { @@ -1088,21 +1088,21 @@ } }, "node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -1129,14 +1129,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -1146,13 +1146,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -1183,29 +1183,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1215,9 +1215,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", "engines": { @@ -1255,14 +1255,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1363,13 +1363,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.5" + "@babel/types": "^7.28.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -1434,13 +1434,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1476,13 +1476,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1602,13 +1602,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1618,33 +1618,33 @@ } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", - "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", "debug": "^4.3.1" }, "engines": { @@ -1652,9 +1652,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "dev": true, "license": "MIT", "dependencies": { @@ -1945,9 +1945,9 @@ } }, "node_modules/@es-joy/jsdoccomment/node_modules/@typescript-eslint/types": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.52.0.tgz", - "integrity": "sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", + "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", "dev": true, "license": "MIT", "engines": { @@ -2952,9 +2952,9 @@ } }, "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "22.19.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.3.tgz", - "integrity": "sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==", + "version": "22.19.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz", + "integrity": "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==", "dev": true, "license": "MIT", "dependencies": { @@ -4152,9 +4152,9 @@ } }, "node_modules/@oclif/plugin-not-found/node_modules/@types/node": { - "version": "25.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", - "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", + "version": "25.0.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", + "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", "license": "MIT", "optional": true, "peer": true, @@ -4296,6 +4296,7 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/@otplib/plugin-crypto/-/plugin-crypto-12.0.1.tgz", "integrity": "sha512-qPuhN3QrT7ZZLcLCyKOSNhuijUi9G5guMRVrxq63r9YNOxxQjPm59gVxLM+7xGnHnM6cimY57tuKsjK7y9LM1g==", + "deprecated": "Please upgrade to v13 of otplib. Refer to otplib docs for migration paths", "license": "MIT", "dependencies": { "@otplib/core": "^12.0.1" @@ -4305,6 +4306,7 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/@otplib/plugin-thirty-two/-/plugin-thirty-two-12.0.1.tgz", "integrity": "sha512-MtT+uqRso909UkbrrYpJ6XFjj9D+x2Py7KjTO9JDPhL0bJUYVu5kFP4TFZW4NFAywrAtFRxOVY261u0qwb93gA==", + "deprecated": "Please upgrade to v13 of otplib. Refer to otplib docs for migration paths", "license": "MIT", "dependencies": { "@otplib/core": "^12.0.1", @@ -4315,6 +4317,7 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/@otplib/preset-default/-/preset-default-12.0.1.tgz", "integrity": "sha512-xf1v9oOJRyXfluBhMdpOkr+bsE+Irt+0D5uHtvg6x1eosfmHCsCC6ej/m7FXiWqdo0+ZUI6xSKDhJwc8yfiOPQ==", + "deprecated": "Please upgrade to v13 of otplib. Refer to otplib docs for migration paths", "license": "MIT", "dependencies": { "@otplib/core": "^12.0.1", @@ -4375,9 +4378,9 @@ "license": "ISC" }, "node_modules/@pnpm/npm-conf": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", - "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", + "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", "dev": true, "license": "MIT", "dependencies": { @@ -4924,13 +4927,13 @@ "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@smithy/abort-controller": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.7.tgz", - "integrity": "sha512-rzMY6CaKx2qxrbYbqjXWS0plqEy7LOdKHS0bg4ixJ6aoGDPNUcLWk/FRNuCILh7GKLG9TFUXYYeQQldMBBwuyw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -4965,17 +4968,17 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.5.tgz", - "integrity": "sha512-HAGoUAFYsUkoSckuKbCPayECeMim8pOu+yLy1zOxt1sifzEbrsRpYa+mKcMdiHKMeiqOibyPG0sFJnmaV/OGEg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", "tslib": "^2.6.2" }, "engines": { @@ -4983,19 +4986,19 @@ } }, "node_modules/@smithy/core": { - "version": "3.20.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.20.1.tgz", - "integrity": "sha512-wOboSEdQ85dbKAJ0zL+wQ6b0HTSBRhtGa0PYKysQXkRg+vK0tdCRRVruiFM2QMprkOQwSYOnwF4og96PAaEGag==", + "version": "3.20.6", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.20.6.tgz", + "integrity": "sha512-BpAffW1mIyRZongoKBbh3RgHG+JDHJek/8hjA/9LnPunM+ejorO6axkxCgwxCe4K//g/JdPeR9vROHDYr/hfnQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.2.8", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-stream": "^4.5.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.10", "@smithy/util-utf8": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" @@ -5005,16 +5008,16 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.7.tgz", - "integrity": "sha512-CmduWdCiILCRNbQWFR0OcZlUPVtyE49Sr8yYL0rZQ4D/wKxiNzBNS/YHemvnbkIWj623fplgkexUd/c9CAKdoA==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "tslib": "^2.6.2" }, "engines": { @@ -5022,14 +5025,14 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.7.tgz", - "integrity": "sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.8.tgz", + "integrity": "sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" }, @@ -5038,14 +5041,14 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.7.tgz", - "integrity": "sha512-ujzPk8seYoDBmABDE5YqlhQZAXLOrtxtJLrbhHMKjBoG5b4dK4i6/mEU+6/7yXIAkqOO8sJ6YxZl+h0QQ1IJ7g==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.8.tgz", + "integrity": "sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5053,13 +5056,13 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.7.tgz", - "integrity": "sha512-x7BtAiIPSaNaWuzm24Q/mtSkv+BrISO/fmheiJ39PKRNH3RmH2Hph/bUKSOBOBC9unqfIYDhKTHwpyZycLGPVQ==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.8.tgz", + "integrity": "sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5067,14 +5070,14 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.7.tgz", - "integrity": "sha512-roySCtHC5+pQq5lK4be1fZ/WR6s/AxnPaLfCODIPArtN2du8s5Ot4mKVK3pPtijL/L654ws592JHJ1PbZFF6+A==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.8.tgz", + "integrity": "sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5082,14 +5085,14 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.7.tgz", - "integrity": "sha512-QVD+g3+icFkThoy4r8wVFZMsIP08taHVKjE6Jpmz8h5CgX/kk6pTODq5cht0OMtcapUx+xrPzUTQdA+TmO0m1g==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.8.tgz", + "integrity": "sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/eventstream-codec": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5097,15 +5100,15 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.8", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.8.tgz", - "integrity": "sha512-h/Fi+o7mti4n8wx1SR6UHWLaakwHRx29sizvp8OOm7iqwKGFneT06GCSFhml6Bha5BT6ot5pj3CYZnCHhGC2Rg==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.7", - "@smithy/querystring-builder": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" }, @@ -5114,15 +5117,15 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.8.tgz", - "integrity": "sha512-07InZontqsM1ggTCPSRgI7d8DirqRrnpL7nIACT4PW0AWrgDiHhjGZzbAE5UtRSiU0NISGUYe7/rri9ZeWyDpw==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.9.tgz", + "integrity": "sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/chunked-blob-reader": "^5.2.0", "@smithy/chunked-blob-reader-native": "^4.2.1", - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5130,13 +5133,13 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.7.tgz", - "integrity": "sha512-PU/JWLTBCV1c8FtB8tEFnY4eV1tSfBc7bDBADHfn1K+uRbPgSJ9jnJp0hyjiFN2PMdPzxsf1Fdu0eo9fJ760Xw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -5146,13 +5149,13 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.7.tgz", - "integrity": "sha512-ZQVoAwNYnFMIbd4DUc517HuwNelJUY6YOzwqrbcAgCnVn+79/OK7UjwA93SPpdTOpKDVkLIzavWm/Ck7SmnDPQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.8.tgz", + "integrity": "sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -5161,13 +5164,13 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.7.tgz", - "integrity": "sha512-ncvgCr9a15nPlkhIUx3CU4d7E7WEuVJOV7fS7nnK2hLtPK9tYRBkMHQbhXU1VvvKeBm/O0x26OEoBq+ngFpOEQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5188,13 +5191,13 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.7.tgz", - "integrity": "sha512-Wv6JcUxtOLTnxvNjDnAiATUsk8gvA6EeS8zzHig07dotpByYsLot+m0AaQEniUBjx97AC41MQR4hW0baraD1Xw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.8.tgz", + "integrity": "sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -5203,14 +5206,14 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.7.tgz", - "integrity": "sha512-GszfBfCcvt7kIbJ41LuNa5f0wvQCHhnGx/aDaZJCCT05Ld6x6U2s0xsc/0mBFONBZjQJp2U/0uSJ178OXOwbhg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5218,19 +5221,19 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.2.tgz", - "integrity": "sha512-mqpAdux0BNmZu/SqkFhQEnod4fX23xxTvU2LUpmKp0JpSI+kPYCiHJMmzREr8yxbNxKL2/DU1UZm9i++ayU+2g==", + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.7.tgz", + "integrity": "sha512-SCmhUG1UwtnEhF5Sxd8qk7bJwkj1BpFzFlHkXqKCEmDPLrRjJyTGM0EhqT7XBtDaDJjCfjRJQodgZcKDR843qg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.20.1", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", - "@smithy/util-middleware": "^4.2.7", + "@smithy/core": "^3.20.6", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", "tslib": "^2.6.2" }, "engines": { @@ -5238,19 +5241,19 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.18", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.18.tgz", - "integrity": "sha512-E5hulijA59nBk/zvcwVMaS7FG7Y4l6hWA9vrW018r+8kiZef4/ETQaPI4oY+3zsy9f6KqDv3c4VKtO4DwwgpCg==", + "version": "4.4.23", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.23.tgz", + "integrity": "sha512-lLEmkQj7I7oKfvZ1wsnToGJouLOtfkMXDKRA1Hi6F+mMp5O1N8GcVWmVeNgTtgZtd0OTXDTI2vpVQmeutydGew==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/service-error-classification": "^4.2.7", - "@smithy/smithy-client": "^4.10.3", - "@smithy/types": "^4.11.0", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" }, @@ -5259,14 +5262,14 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.8.tgz", - "integrity": "sha512-8rDGYen5m5+NV9eHv9ry0sqm2gI6W7mc1VSFMtn6Igo25S507/HaOX9LTHAS2/J32VXD0xSzrY0H5FJtOMS4/w==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5274,13 +5277,13 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.7.tgz", - "integrity": "sha512-bsOT0rJ+HHlZd9crHoS37mt8qRRN/h9jRve1SXUhVbkRzu0QaNYZp1i1jha4n098tsvROjcwfLlfvcFuJSXEsw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5288,15 +5291,15 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.7.tgz", - "integrity": "sha512-7r58wq8sdOcrwWe+klL9y3bc4GW1gnlfnFOuL7CXa7UzfhzhxKuzNdtqgzmTV+53lEp9NXh5hY/S4UgjLOzPfw==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5304,16 +5307,16 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.7.tgz", - "integrity": "sha512-NELpdmBOO6EpZtWgQiHjoShs1kmweaiNuETUpuup+cmm/xJYjT4eUjfhrXRP4jCOaAsS3c3yPsP3B+K+/fyPCQ==", + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.8.tgz", + "integrity": "sha512-q9u+MSbJVIJ1QmJ4+1u+cERXkrhuILCBDsJUBAW1MPE6sFonbCNaegFuwW9ll8kh5UdyY3jOkoOGlc7BesoLpg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/querystring-builder": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5321,13 +5324,13 @@ } }, "node_modules/@smithy/property-provider": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.7.tgz", - "integrity": "sha512-jmNYKe9MGGPoSl/D7JDDs1C8b3dC8f/w78LbaVfoTtWy4xAd5dfjaFG9c9PWPihY4ggMQNQSMtzU77CNgAJwmA==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5335,13 +5338,13 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.7.tgz", - "integrity": "sha512-1r07pb994I20dD/c2seaZhoCuNYm0rWrvBxhCQ70brNh11M5Ml2ew6qJVo0lclB3jMIXirD4s2XRXRe7QEi0xA==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5349,13 +5352,13 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.7.tgz", - "integrity": "sha512-eKONSywHZxK4tBxe2lXEysh8wbBdvDWiA+RIuaxZSgCMmA0zMgoDpGLJhnyj+c0leOQprVnXOmcB4m+W9Rw7sg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" }, @@ -5364,13 +5367,13 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.7.tgz", - "integrity": "sha512-3X5ZvzUHmlSTHAXFlswrS6EGt8fMSIxX/c3Rm1Pni3+wYWB6cjGocmRIoqcQF9nU5OgGmL0u7l9m44tSUpfj9w==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5378,26 +5381,26 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.7.tgz", - "integrity": "sha512-YB7oCbukqEb2Dlh3340/8g8vNGbs/QsNNRms+gv3N2AtZz9/1vSBx6/6tpwQpZMEJFs7Uq8h4mmOn48ZZ72MkA==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0" + "@smithy/types": "^4.12.0" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.2.tgz", - "integrity": "sha512-M7iUUff/KwfNunmrgtqBfvZSzh3bmFgv/j/t1Y1dQ+8dNo34br1cqVEqy6v0mYEgi0DkGO7Xig0AnuOaEGVlcg==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5405,17 +5408,17 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.7.tgz", - "integrity": "sha512-9oNUlqBlFZFOSdxgImA6X5GFuzE7V2H7VG/7E70cdLhidFbdtvxxt81EHgykGK5vq5D3FafH//X+Oy31j3CKOg==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-middleware": "^4.2.7", + "@smithy/util-middleware": "^4.2.8", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -5425,18 +5428,18 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.10.3.tgz", - "integrity": "sha512-EfECiO/0fAfb590LBnUe7rI5ux7XfquQ8LBzTe7gxw0j9QW/q8UT/EHWHlxV/+jhQ3+Ssga9uUYXCQgImGMbNg==", + "version": "4.10.8", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.10.8.tgz", + "integrity": "sha512-wcr3UEL26k7lLoyf9eVDZoD1nNY3Fa1gbNuOXvfxvVWLGkOVW+RYZgUUp/bXHryJfycIOQnBq9o1JAE00ax8HQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.20.1", - "@smithy/middleware-endpoint": "^4.4.2", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", - "@smithy/util-stream": "^4.5.8", + "@smithy/core": "^3.20.6", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.10", "tslib": "^2.6.2" }, "engines": { @@ -5444,9 +5447,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.11.0.tgz", - "integrity": "sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5457,14 +5460,14 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.7.tgz", - "integrity": "sha512-/RLtVsRV4uY3qPWhBDsjwahAtt3x2IsMGnP5W1b2VZIe+qgCqkLxI1UOHDZp1Q1QSOrdOR32MF3Ph2JfWT1VHg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5540,15 +5543,15 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.17", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.17.tgz", - "integrity": "sha512-dwN4GmivYF1QphnP3xJESXKtHvkkvKHSZI8GrSKMVoENVSKW2cFPRYC4ZgstYjUHdR3zwaDkIaTDIp26JuY7Cw==", + "version": "4.3.22", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.22.tgz", + "integrity": "sha512-O2WXr6ZRqPnbyoepb7pKcLt1QL6uRfFzGYJ9sGb5hMJQi7v/4RjRmCQa9mNjA0YiXqsc5lBmLXqJPhjM1Vjv5A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.7", - "@smithy/smithy-client": "^4.10.3", - "@smithy/types": "^4.11.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5556,18 +5559,18 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.20.tgz", - "integrity": "sha512-VD/I4AEhF1lpB3B//pmOIMBNLMrtdMXwy9yCOfa2QkJGDr63vH3RqPbSAKzoGMov3iryCxTXCxSsyGmEB8PDpg==", + "version": "4.2.25", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.25.tgz", + "integrity": "sha512-7uMhppVNRbgNIpyUBVRfjGHxygP85wpXalRvn9DvUlCx4qgy1AB/uxOPSiDx/jFyrwD3/BypQhx1JK7f3yxrAw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.5", - "@smithy/credential-provider-imds": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/smithy-client": "^4.10.3", - "@smithy/types": "^4.11.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5575,14 +5578,14 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.7.tgz", - "integrity": "sha512-s4ILhyAvVqhMDYREeTS68R43B1V5aenV5q/V1QpRQJkCXib5BPRo4s7uNdzGtIKxaPHCfU/8YkvPAEvTpxgspg==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5603,13 +5606,13 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.7.tgz", - "integrity": "sha512-i1IkpbOae6NvIKsEeLLM9/2q4X+M90KV3oCFgWQI4q0Qz+yUZvsr+gZPdAEAtFhWQhAHpTsJO8DRJPuwVyln+w==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5617,14 +5620,14 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.7.tgz", - "integrity": "sha512-SvDdsQyF5CIASa4EYVT02LukPHVzAgUA4kMAuZ97QJc2BpAqZfA4PINB8/KOoCXEw9tsuv/jQjMeaHFvxdLNGg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5632,15 +5635,15 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.8.tgz", - "integrity": "sha512-ZnnBhTapjM0YPGUSmOs0Mcg/Gg87k503qG4zU2v/+Js2Gu+daKOJMeqcQns8ajepY8tgzzfYxl6kQyZKml6O2w==", + "version": "4.5.10", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.10.tgz", + "integrity": "sha512-jbqemy51UFSZSp2y0ZmRfckmrzuKww95zT9BYMmuJ8v3altGcqjwoV1tzpOwuHaKrwQrCjIzOib499ymr2f98g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/types": "^4.11.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", @@ -5679,14 +5682,14 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.7.tgz", - "integrity": "sha512-vHJFXi9b7kUEpHWUCY3Twl+9NPOZvQ0SAi+Ewtn48mbiJk4JY9MZmKQjGB4SCvVb9WPiSphZJYY6RIbs+grrzw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.8.tgz", + "integrity": "sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/abort-controller": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -5737,14 +5740,14 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.52.0.tgz", - "integrity": "sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.0.tgz", + "integrity": "sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0" + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5755,9 +5758,9 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.52.0.tgz", - "integrity": "sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", + "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", "dev": true, "license": "MIT", "engines": { @@ -5769,16 +5772,16 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.52.0.tgz", - "integrity": "sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz", + "integrity": "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.52.0", - "@typescript-eslint/tsconfig-utils": "8.52.0", - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0", + "@typescript-eslint/project-service": "8.53.0", + "@typescript-eslint/tsconfig-utils": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -5797,16 +5800,16 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.52.0.tgz", - "integrity": "sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.0.tgz", + "integrity": "sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.52.0", - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/typescript-estree": "8.52.0" + "@typescript-eslint/scope-manager": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5821,13 +5824,13 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.52.0.tgz", - "integrity": "sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz", + "integrity": "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.52.0", + "@typescript-eslint/types": "8.53.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -6036,9 +6039,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", - "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "license": "MIT", "dependencies": { "@types/node": "*", @@ -6190,9 +6193,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==", "license": "MIT" }, "node_modules/@types/markdown-it": { @@ -6497,14 +6500,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.52.0.tgz", - "integrity": "sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.0.tgz", + "integrity": "sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.52.0", - "@typescript-eslint/types": "^8.52.0", + "@typescript-eslint/tsconfig-utils": "^8.53.0", + "@typescript-eslint/types": "^8.53.0", "debug": "^4.4.3" }, "engines": { @@ -6519,9 +6522,9 @@ } }, "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.52.0.tgz", - "integrity": "sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", + "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", "dev": true, "license": "MIT", "engines": { @@ -6551,9 +6554,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.52.0.tgz", - "integrity": "sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.0.tgz", + "integrity": "sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==", "dev": true, "license": "MIT", "engines": { @@ -7756,9 +7759,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.13.tgz", - "integrity": "sha512-WhtvB2NG2wjr04+h77sg3klAIwrgOqnjS49GGudnUPGFFgg7G17y7Qecqp+2Dr5kUDxNRBca0SK7cG8JwzkWDQ==", + "version": "2.9.14", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", + "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -8228,9 +8231,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001763", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001763.tgz", - "integrity": "sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==", + "version": "1.0.30001764", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz", + "integrity": "sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==", "dev": true, "funding": [ { @@ -10172,9 +10175,9 @@ } }, "node_modules/eslint-config-oclif": { - "version": "6.0.129", - "resolved": "https://registry.npmjs.org/eslint-config-oclif/-/eslint-config-oclif-6.0.129.tgz", - "integrity": "sha512-gUL41BzraulUoPPy8pohJo2brIPG2YsLEF14ZJ/zuGw9m2t1/hs9173ThfcSDL85++B8d0xYwy3gYB3LCo1f6g==", + "version": "6.0.130", + "resolved": "https://registry.npmjs.org/eslint-config-oclif/-/eslint-config-oclif-6.0.130.tgz", + "integrity": "sha512-8+0iqrin1Z1CWj166lmBMqJtdss3mjT1hqWT7A1HFE2Pn3+2b7pT3QWwsyF8pUJX2BznGsLfH2z2uvhjSuBt9Q==", "dev": true, "license": "MIT", "dependencies": { @@ -10194,7 +10197,7 @@ "eslint-plugin-n": "^17.22.0", "eslint-plugin-perfectionist": "^4", "eslint-plugin-unicorn": "^56.0.1", - "typescript-eslint": "^8.51.0" + "typescript-eslint": "^8.52.0" }, "engines": { "node": ">=18.18.0" @@ -10625,17 +10628,17 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.52.0.tgz", - "integrity": "sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.0.tgz", + "integrity": "sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.52.0", - "@typescript-eslint/type-utils": "8.52.0", - "@typescript-eslint/utils": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0", + "@typescript-eslint/scope-manager": "8.53.0", + "@typescript-eslint/type-utils": "8.53.0", + "@typescript-eslint/utils": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -10648,7 +10651,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.52.0", + "@typescript-eslint/parser": "^8.53.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -10664,16 +10667,16 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/parser": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.52.0.tgz", - "integrity": "sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.0.tgz", + "integrity": "sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.52.0", - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/typescript-estree": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0", + "@typescript-eslint/scope-manager": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0", "debug": "^4.4.3" }, "engines": { @@ -10689,14 +10692,14 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/scope-manager": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.52.0.tgz", - "integrity": "sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.0.tgz", + "integrity": "sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0" + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10707,15 +10710,15 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/type-utils": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.52.0.tgz", - "integrity": "sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.0.tgz", + "integrity": "sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/typescript-estree": "8.52.0", - "@typescript-eslint/utils": "8.52.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0", + "@typescript-eslint/utils": "8.53.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -10732,9 +10735,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/types": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.52.0.tgz", - "integrity": "sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", + "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", "dev": true, "license": "MIT", "engines": { @@ -10746,16 +10749,16 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.52.0.tgz", - "integrity": "sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz", + "integrity": "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.52.0", - "@typescript-eslint/tsconfig-utils": "8.52.0", - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0", + "@typescript-eslint/project-service": "8.53.0", + "@typescript-eslint/tsconfig-utils": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -10790,16 +10793,16 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/utils": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.52.0.tgz", - "integrity": "sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.0.tgz", + "integrity": "sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.52.0", - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/typescript-estree": "8.52.0" + "@typescript-eslint/scope-manager": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10814,13 +10817,13 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.52.0.tgz", - "integrity": "sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz", + "integrity": "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.52.0", + "@typescript-eslint/types": "8.53.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -11567,9 +11570,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.23.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz", - "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", + "version": "17.23.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.2.tgz", + "integrity": "sha512-RhWBeb7YVPmNa2eggvJooiuehdL76/bbfj/OJewyoGT80qn5PXdz8zMOTO6YHOsI7byPt7+Ighh/i/4a5/v7hw==", "dev": true, "license": "MIT", "dependencies": { @@ -11625,14 +11628,14 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/scope-manager": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.52.0.tgz", - "integrity": "sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.0.tgz", + "integrity": "sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0" + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11643,9 +11646,9 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/types": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.52.0.tgz", - "integrity": "sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", + "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", "dev": true, "license": "MIT", "engines": { @@ -11657,16 +11660,16 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.52.0.tgz", - "integrity": "sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz", + "integrity": "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.52.0", - "@typescript-eslint/tsconfig-utils": "8.52.0", - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0", + "@typescript-eslint/project-service": "8.53.0", + "@typescript-eslint/tsconfig-utils": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -11685,16 +11688,16 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/utils": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.52.0.tgz", - "integrity": "sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.0.tgz", + "integrity": "sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.52.0", - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/typescript-estree": "8.52.0" + "@typescript-eslint/scope-manager": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11709,13 +11712,13 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.52.0.tgz", - "integrity": "sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz", + "integrity": "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.52.0", + "@typescript-eslint/types": "8.53.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -14291,9 +14294,9 @@ } }, "node_modules/inquirer/node_modules/@types/node": { - "version": "25.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", - "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", + "version": "25.0.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", + "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", "license": "MIT", "optional": true, "peer": true, @@ -21011,14 +21014,14 @@ } }, "node_modules/oclif": { - "version": "4.22.63", - "resolved": "https://registry.npmjs.org/oclif/-/oclif-4.22.63.tgz", - "integrity": "sha512-xhlXnMLlvnV376ofTKVW9KZk0lsvMSnLqUk6rJ3V18lzMj8grt3s4opWuEib9xgyig0rELCK46iYeZUgw04ibg==", + "version": "4.22.65", + "resolved": "https://registry.npmjs.org/oclif/-/oclif-4.22.65.tgz", + "integrity": "sha512-pJW0P+gUzIAS6gSQH11jmbu9xQgjfxgBV+FjWvvwu68NUtljtpZm1w3uftXUVk51Ra40r9XB1Jh/Mcbb+I6yJw==", "dev": true, "license": "MIT", "dependencies": { - "@aws-sdk/client-cloudfront": "^3.962.0", - "@aws-sdk/client-s3": "^3.962.0", + "@aws-sdk/client-cloudfront": "^3.966.0", + "@aws-sdk/client-s3": "^3.966.0", "@inquirer/confirm": "^3.1.22", "@inquirer/input": "^2.2.4", "@inquirer/select": "^2.5.0", @@ -22641,13 +22644,13 @@ } }, "node_modules/registry-auth-token": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", - "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz", + "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==", "dev": true, "license": "MIT", "dependencies": { - "@pnpm/npm-conf": "^2.1.0" + "@pnpm/npm-conf": "^3.0.2" }, "engines": { "node": ">=14" @@ -25577,16 +25580,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.52.0.tgz", - "integrity": "sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.53.0.tgz", + "integrity": "sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.52.0", - "@typescript-eslint/parser": "8.52.0", - "@typescript-eslint/typescript-estree": "8.52.0", - "@typescript-eslint/utils": "8.52.0" + "@typescript-eslint/eslint-plugin": "8.53.0", + "@typescript-eslint/parser": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0", + "@typescript-eslint/utils": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -25601,17 +25604,17 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.52.0.tgz", - "integrity": "sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.0.tgz", + "integrity": "sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.52.0", - "@typescript-eslint/type-utils": "8.52.0", - "@typescript-eslint/utils": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0", + "@typescript-eslint/scope-manager": "8.53.0", + "@typescript-eslint/type-utils": "8.53.0", + "@typescript-eslint/utils": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -25624,22 +25627,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.52.0", + "@typescript-eslint/parser": "^8.53.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.52.0.tgz", - "integrity": "sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.0.tgz", + "integrity": "sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.52.0", - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/typescript-estree": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0", + "@typescript-eslint/scope-manager": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0", "debug": "^4.4.3" }, "engines": { @@ -25655,14 +25658,14 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.52.0.tgz", - "integrity": "sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.0.tgz", + "integrity": "sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0" + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -25673,15 +25676,15 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.52.0.tgz", - "integrity": "sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.0.tgz", + "integrity": "sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/typescript-estree": "8.52.0", - "@typescript-eslint/utils": "8.52.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0", + "@typescript-eslint/utils": "8.53.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -25698,9 +25701,9 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.52.0.tgz", - "integrity": "sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", + "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", "dev": true, "license": "MIT", "engines": { @@ -25712,16 +25715,16 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.52.0.tgz", - "integrity": "sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz", + "integrity": "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.52.0", - "@typescript-eslint/tsconfig-utils": "8.52.0", - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/visitor-keys": "8.52.0", + "@typescript-eslint/project-service": "8.53.0", + "@typescript-eslint/tsconfig-utils": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -25740,16 +25743,16 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.52.0.tgz", - "integrity": "sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.0.tgz", + "integrity": "sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.52.0", - "@typescript-eslint/types": "8.52.0", - "@typescript-eslint/typescript-estree": "8.52.0" + "@typescript-eslint/scope-manager": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -25764,13 +25767,13 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.52.0.tgz", - "integrity": "sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz", + "integrity": "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.52.0", + "@typescript-eslint/types": "8.53.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -26302,9 +26305,9 @@ "license": "ISC" }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -26705,23 +26708,23 @@ }, "packages/contentstack": { "name": "@contentstack/cli", - "version": "1.54.0", + "version": "1.55.0", "license": "MIT", "dependencies": { - "@contentstack/cli-audit": "~1.16.2", + "@contentstack/cli-audit": "~1.17.0", "@contentstack/cli-auth": "~1.6.3", - "@contentstack/cli-cm-bootstrap": "~1.17.2", + "@contentstack/cli-cm-bootstrap": "~1.18.0", "@contentstack/cli-cm-branches": "~1.6.2", - "@contentstack/cli-cm-bulk-publish": "~1.10.4", - "@contentstack/cli-cm-clone": "~1.18.1", - "@contentstack/cli-cm-export": "~1.22.2", + "@contentstack/cli-cm-bulk-publish": "~1.10.5", + "@contentstack/cli-cm-clone": "~1.19.0", + "@contentstack/cli-cm-export": "~1.23.0", "@contentstack/cli-cm-export-to-csv": "~1.10.2", - "@contentstack/cli-cm-import": "~1.30.2", + "@contentstack/cli-cm-import": "~1.31.0", "@contentstack/cli-cm-import-setup": "~1.7.2", "@contentstack/cli-cm-migrate-rte": "~1.6.3", - "@contentstack/cli-cm-seed": "~1.13.2", + "@contentstack/cli-cm-seed": "~1.14.0", "@contentstack/cli-command": "~1.7.1", - "@contentstack/cli-config": "~1.16.2", + "@contentstack/cli-config": "~1.17.0", "@contentstack/cli-launch": "^1.9.2", "@contentstack/cli-migration": "~1.10.2", "@contentstack/cli-utilities": "~1.16.0", @@ -26777,7 +26780,7 @@ }, "packages/contentstack-audit": { "name": "@contentstack/cli-audit", - "version": "1.16.2", + "version": "1.17.0", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.7.1", @@ -26826,9 +26829,9 @@ "license": "MIT" }, "packages/contentstack-audit/node_modules/@types/node": { - "version": "20.19.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz", - "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==", + "version": "20.19.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.30.tgz", + "integrity": "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==", "dev": true, "license": "MIT", "dependencies": { @@ -27002,10 +27005,10 @@ }, "packages/contentstack-bootstrap": { "name": "@contentstack/cli-cm-bootstrap", - "version": "1.17.2", + "version": "1.18.0", "license": "MIT", "dependencies": { - "@contentstack/cli-cm-seed": "~1.13.2", + "@contentstack/cli-cm-seed": "~1.14.0", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@oclif/core": "^4.3.0", @@ -27106,11 +27109,11 @@ }, "packages/contentstack-bulk-publish": { "name": "@contentstack/cli-cm-bulk-publish", - "version": "1.10.4", + "version": "1.10.5", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.7.1", - "@contentstack/cli-config": "~1.16.2", + "@contentstack/cli-config": "~1.17.0", "@contentstack/cli-utilities": "~1.16.0", "@oclif/core": "^4.3.0", "@oclif/plugin-help": "^6.2.28", @@ -27135,12 +27138,12 @@ }, "packages/contentstack-clone": { "name": "@contentstack/cli-cm-clone", - "version": "1.18.1", + "version": "1.19.0", "license": "MIT", "dependencies": { "@colors/colors": "^1.6.0", - "@contentstack/cli-cm-export": "~1.22.2", - "@contentstack/cli-cm-import": "~1.30.2", + "@contentstack/cli-cm-export": "~1.23.0", + "@contentstack/cli-cm-import": "~1.31.0", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@oclif/core": "^4.3.0", @@ -27292,7 +27295,7 @@ }, "packages/contentstack-config": { "name": "@contentstack/cli-config", - "version": "1.16.2", + "version": "1.17.0", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.7.1", @@ -27626,7 +27629,7 @@ }, "packages/contentstack-export": { "name": "@contentstack/cli-cm-export", - "version": "1.22.2", + "version": "1.23.0", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.7.1", @@ -27646,7 +27649,7 @@ }, "devDependencies": { "@contentstack/cli-auth": "~1.6.3", - "@contentstack/cli-config": "~1.16.2", + "@contentstack/cli-config": "~1.17.0", "@contentstack/cli-dev-dependencies": "~1.3.1", "@oclif/plugin-help": "^6.2.28", "@oclif/test": "^4.1.13", @@ -28090,10 +28093,10 @@ }, "packages/contentstack-import": { "name": "@contentstack/cli-cm-import", - "version": "1.30.2", + "version": "1.31.0", "license": "MIT", "dependencies": { - "@contentstack/cli-audit": "~1.16.2", + "@contentstack/cli-audit": "~1.17.0", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@contentstack/cli-variants": "~1.3.6", @@ -28245,10 +28248,10 @@ }, "packages/contentstack-seed": { "name": "@contentstack/cli-cm-seed", - "version": "1.13.2", + "version": "1.14.0", "license": "MIT", "dependencies": { - "@contentstack/cli-cm-import": "1.30.2", + "@contentstack/cli-cm-import": "~1.31.0", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@contentstack/management": "~1.22.0", @@ -28420,9 +28423,9 @@ } }, "packages/contentstack-variants/node_modules/@types/node": { - "version": "20.19.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz", - "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==", + "version": "20.19.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.30.tgz", + "integrity": "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==", "dev": true, "license": "MIT", "dependencies": { diff --git a/packages/contentstack-audit/package.json b/packages/contentstack-audit/package.json index 20ae88b776..3527536bc6 100644 --- a/packages/contentstack-audit/package.json +++ b/packages/contentstack-audit/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-audit", - "version": "1.16.2", + "version": "1.17.0", "description": "Contentstack audit plugin", "author": "Contentstack CLI", "homepage": "https://github.com/contentstack/cli", diff --git a/packages/contentstack-audit/src/audit-base-command.ts b/packages/contentstack-audit/src/audit-base-command.ts index d16236c213..402d3906ed 100644 --- a/packages/contentstack-audit/src/audit-base-command.ts +++ b/packages/contentstack-audit/src/audit-base-command.ts @@ -5,7 +5,15 @@ import { v4 as uuid } from 'uuid'; import isEmpty from 'lodash/isEmpty'; import { join, resolve } from 'path'; import cloneDeep from 'lodash/cloneDeep'; -import { cliux, sanitizePath, TableFlags, TableHeader, log, configHandler, createLogContext } from '@contentstack/cli-utilities'; +import { + cliux, + sanitizePath, + TableFlags, + TableHeader, + log, + configHandler, + createLogContext, +} from '@contentstack/cli-utilities'; import { createWriteStream, existsSync, mkdirSync, readFileSync, writeFileSync, rmSync } from 'fs'; import config from './config'; import { print } from './util/log'; @@ -21,6 +29,7 @@ import { FieldRule, ModuleDataReader, CustomRoles, + ComposableStudio, } from './modules'; import { @@ -50,7 +59,6 @@ export abstract class AuditBaseCommand extends BaseCommand; + public environmentUidSet: Set; + public localeCodeSet: Set; + public projectsWithIssues: any[]; + public composableStudioPath: string; + private projectsWithIssuesMap: Map; + + constructor({ fix, config, moduleName, ctSchema }: ModuleConstructorParam & Pick) { + this.config = config; + this.fix = fix ?? false; + this.ctSchema = ctSchema; + this.composableStudioProjects = []; + + log.debug(`Initializing ComposableStudio module`, this.config.auditContext); + log.debug(`Fix mode: ${this.fix}`, this.config.auditContext); + log.debug(`Content types count: ${ctSchema.length}`, this.config.auditContext); + log.debug(`Module name: ${moduleName}`, this.config.auditContext); + + this.moduleName = this.validateModules(moduleName!, this.config.moduleConfig); + this.fileName = config.moduleConfig[this.moduleName].fileName; + log.debug(`File name: ${this.fileName}`, this.config.auditContext); + + this.folderPath = resolve( + sanitizePath(config.basePath), + sanitizePath(config.moduleConfig[this.moduleName].dirName), + ); + log.debug(`Folder path: ${this.folderPath}`, this.config.auditContext); + + this.ctUidSet = new Set(); + this.environmentUidSet = new Set(); + this.localeCodeSet = new Set(); + this.projectsWithIssues = []; + this.projectsWithIssuesMap = new Map(); + this.composableStudioPath = ''; + + log.debug(`ComposableStudio module initialization completed`, this.config.auditContext); + } + + validateModules( + moduleName: keyof typeof auditConfig.moduleConfig, + moduleConfig: Record, + ): keyof typeof auditConfig.moduleConfig { + log.debug(`Validating module: ${moduleName}`, this.config.auditContext); + log.debug(`Available modules: ${Object.keys(moduleConfig).join(', ')}`, this.config.auditContext); + + if (Object.keys(moduleConfig).includes(moduleName)) { + log.debug(`Module ${moduleName} is valid`, this.config.auditContext); + return moduleName; + } + + log.debug(`Module ${moduleName} not found, defaulting to 'composable-studio'`, this.config.auditContext); + return 'composable-studio'; + } + + /** + * Load environments from the environments.json file + */ + async loadEnvironments() { + log.debug(`Loading environments`, this.config.auditContext); + const environmentsPath = resolve(this.config.basePath, 'environments', 'environments.json'); + + if (existsSync(environmentsPath)) { + log.debug(`Environments file path: ${environmentsPath}`, this.config.auditContext); + try { + const environments = JSON.parse(readFileSync(environmentsPath, 'utf-8')); + const envArray = Array.isArray(environments) ? environments : Object.values(environments); + envArray.forEach((env: any) => { + if (env.uid) { + this.environmentUidSet.add(env.uid); + } + }); + log.debug( + `Loaded ${this.environmentUidSet.size} environments: ${Array.from(this.environmentUidSet).join(', ')}`, + this.config.auditContext, + ); + } catch (error) { + handleAndLogError(error, this.config.auditContext, 'Failed to load environments'); + } + } else { + log.debug(`Environments file not found at: ${environmentsPath}`, this.config.auditContext); + } + } + + /** + * Load locales from the locales.json and master-locale.json files + */ + async loadLocales() { + log.debug(`Loading locales`, this.config.auditContext); + const localesPath = resolve(this.config.basePath, 'locales', 'locales.json'); + const masterLocalePath = resolve(this.config.basePath, 'locales', 'master-locale.json'); + + // Load master locale + if (existsSync(masterLocalePath)) { + log.debug(`Master locale file path: ${masterLocalePath}`, this.config.auditContext); + try { + const masterLocales = JSON.parse(readFileSync(masterLocalePath, 'utf-8')); + const localeArray = Array.isArray(masterLocales) ? masterLocales : Object.values(masterLocales); + localeArray.forEach((locale: any) => { + if (locale.code) { + this.localeCodeSet.add(locale.code); + } + }); + log.debug(`Loaded ${this.localeCodeSet.size} master locales`, this.config.auditContext); + } catch (error) { + handleAndLogError(error, this.config.auditContext, 'Failed to load master locales'); + } + } else { + log.debug(`Master locale file not found at: ${masterLocalePath}`, this.config.auditContext); + } + + // Load additional locales + if (existsSync(localesPath)) { + log.debug(`Locales file path: ${localesPath}`, this.config.auditContext); + try { + const locales = JSON.parse(readFileSync(localesPath, 'utf-8')); + const localeArray = Array.isArray(locales) ? locales : Object.values(locales); + localeArray.forEach((locale: any) => { + if (locale.code) { + this.localeCodeSet.add(locale.code); + } + }); + log.debug( + `Total locales after loading additional locales: ${this.localeCodeSet.size}`, + this.config.auditContext, + ); + } catch (error) { + handleAndLogError(error, this.config.auditContext, 'Failed to load additional locales'); + } + } else { + log.debug(`Locales file not found at: ${localesPath}`, this.config.auditContext); + } + + log.debug(`Locale codes loaded: ${Array.from(this.localeCodeSet).join(', ')}`, this.config.auditContext); + } + + /** + * Main run method to audit composable studio projects + */ + async run() { + log.debug(`Starting ${this.moduleName} audit process`, this.config.auditContext); + log.debug(`Composable Studio folder path: ${this.folderPath}`, this.config.auditContext); + log.debug(`Fix mode: ${this.fix}`, this.config.auditContext); + + if (!existsSync(this.folderPath)) { + log.debug(`Skipping ${this.moduleName} audit - path does not exist`, this.config.auditContext); + log.warn(`Skipping ${this.moduleName} audit`, this.config.auditContext); + cliux.print($t(auditMsg.NOT_VALID_PATH, { path: this.folderPath }), { color: 'yellow' }); + return {}; + } + + this.composableStudioPath = join(this.folderPath, this.fileName); + log.debug(`Composable Studio file path: ${this.composableStudioPath}`, this.config.auditContext); + + // Load composable studio projects + log.debug(`Loading composable studio projects from file`, this.config.auditContext); + if (existsSync(this.composableStudioPath)) { + try { + const projectsData = JSON.parse(readFileSync(this.composableStudioPath, 'utf-8')); + this.composableStudioProjects = Array.isArray(projectsData) ? projectsData : [projectsData]; + log.debug( + `Loaded ${this.composableStudioProjects.length} composable studio projects`, + this.config.auditContext, + ); + } catch (error) { + handleAndLogError(error, this.config.auditContext, 'Failed to load composable studio projects'); + return {}; + } + } else { + log.debug(`Composable studio file not found`, this.config.auditContext); + return {}; + } + + // Build content type UID set + log.debug(`Building content type UID set from ${this.ctSchema.length} content types`, this.config.auditContext); + this.ctSchema.forEach((ct) => this.ctUidSet.add(ct.uid)); + log.debug(`Content type UID set contains: ${Array.from(this.ctUidSet).join(', ')}`, this.config.auditContext); + + // Load environments and locales + await this.loadEnvironments(); + await this.loadLocales(); + + // Process each project + log.debug( + `Processing ${this.composableStudioProjects.length} composable studio projects`, + this.config.auditContext, + ); + for (const project of this.composableStudioProjects) { + const { name, uid, contentTypeUid, settings } = project; + log.debug(`Processing composable studio project: ${name} (${uid})`, this.config.auditContext); + log.debug(`Content type UID: ${contentTypeUid}`, this.config.auditContext); + log.debug(`Environment: ${settings?.configuration?.environment}`, this.config.auditContext); + log.debug(`Locale: ${settings?.configuration?.locale}`, this.config.auditContext); + + let hasIssues = false; + const issuesList: string[] = []; + const invalidContentTypes: string[] = []; + const invalidEnvironments: string[] = []; + const invalidLocales: string[] = []; + + // Check content type + if (contentTypeUid && !this.ctUidSet.has(contentTypeUid)) { + log.debug(`Content type ${contentTypeUid} not found in project ${name}`, this.config.auditContext); + invalidContentTypes.push(contentTypeUid); + issuesList.push(`Invalid contentTypeUid: ${contentTypeUid}`); + hasIssues = true; + } + + // Check environment + if (settings?.configuration?.environment && !this.environmentUidSet.has(settings.configuration.environment)) { + log.debug( + `Environment ${settings.configuration.environment} not found in project ${name}`, + this.config.auditContext, + ); + invalidEnvironments.push(settings.configuration.environment); + issuesList.push(`Invalid environment: ${settings.configuration.environment}`); + hasIssues = true; + } + + // Check locale + if (settings?.configuration?.locale && !this.localeCodeSet.has(settings.configuration.locale)) { + log.debug(`Locale ${settings.configuration.locale} not found in project ${name}`, this.config.auditContext); + invalidLocales.push(settings.configuration.locale); + issuesList.push(`Invalid locale: ${settings.configuration.locale}`); + hasIssues = true; + } + + if (hasIssues) { + log.debug(`Project ${name} has validation issues`, this.config.auditContext); + // Store the original project for fixing + this.projectsWithIssuesMap.set(uid, project); + + // Create a report-friendly object + const reportEntry: any = { + title: name, + name: name, + uid: uid, + content_types: invalidContentTypes.length > 0 ? invalidContentTypes : undefined, + environment: invalidEnvironments.length > 0 ? invalidEnvironments : undefined, + locale: invalidLocales.length > 0 ? invalidLocales : undefined, + issues: issuesList.join(', '), + }; + this.projectsWithIssues.push(reportEntry); + } else { + log.debug(`Project ${name} has no validation issues`, this.config.auditContext); + } + + log.info( + $t(auditMsg.SCAN_CS_SUCCESS_MSG, { + name, + uid, + }), + this.config.auditContext, + ); + } + + log.debug( + `Composable Studio audit completed. Found ${this.projectsWithIssues.length} projects with issues`, + this.config.auditContext, + ); + + if (this.fix && this.projectsWithIssues.length) { + log.debug(`Fix mode enabled, fixing ${this.projectsWithIssues.length} projects`, this.config.auditContext); + await this.fixComposableStudioProjects(); + this.projectsWithIssues.forEach((project) => { + log.debug(`Marking project ${project.name} as fixed`, this.config.auditContext); + project.fixStatus = 'Fixed'; + }); + log.debug(`Composable Studio fix completed`, this.config.auditContext); + return this.projectsWithIssues; + } + + log.debug(`Composable Studio audit completed without fixes`, this.config.auditContext); + return this.projectsWithIssues; + } + + /** + * Fix composable studio projects by removing invalid references + */ + async fixComposableStudioProjects() { + log.debug(`Starting composable studio projects fix`, this.config.auditContext); + + log.debug( + `Loading current composable studio projects from: ${this.composableStudioPath}`, + this.config.auditContext, + ); + let projectsData: any; + try { + projectsData = JSON.parse(readFileSync(this.composableStudioPath, 'utf-8')); + } catch (error) { + log.debug(`Failed to load composable studio projects for fixing: ${error}`, this.config.auditContext); + return; + } + + const isArray = Array.isArray(projectsData); + const projects: ComposableStudioProject[] = isArray ? projectsData : [projectsData]; + + log.debug(`Loaded ${projects.length} projects for fixing`, this.config.auditContext); + + for (let i = 0; i < projects.length; i++) { + const project = projects[i]; + const { uid, name } = project; + log.debug(`Fixing project: ${name} (${uid})`, this.config.auditContext); + + let needsFix = false; + + // Check and fix content type + if (project.contentTypeUid && !this.ctUidSet.has(project.contentTypeUid)) { + log.debug( + `Removing invalid content type ${project.contentTypeUid} from project ${name}`, + this.config.auditContext, + ); + cliux.print( + `Warning: Project "${name}" has invalid content type "${project.contentTypeUid}". It will be removed.`, + { color: 'yellow' }, + ); + (project as any).contentTypeUid = undefined; + needsFix = true; + } + + // Check and fix environment + if ( + project.settings?.configuration?.environment && + !this.environmentUidSet.has(project.settings.configuration.environment) + ) { + log.debug( + `Removing invalid environment ${project.settings.configuration.environment} from project ${name}`, + this.config.auditContext, + ); + cliux.print( + `Warning: Project "${name}" has invalid environment "${project.settings.configuration.environment}". It will be removed.`, + { color: 'yellow' }, + ); + (project.settings.configuration as any).environment = undefined; + needsFix = true; + } + + // Check and fix locale + if (project.settings?.configuration?.locale && !this.localeCodeSet.has(project.settings.configuration.locale)) { + log.debug( + `Removing invalid locale ${project.settings.configuration.locale} from project ${name}`, + this.config.auditContext, + ); + cliux.print( + `Warning: Project "${name}" has invalid locale "${project.settings.configuration.locale}". It will be removed.`, + { color: 'yellow' }, + ); + (project.settings.configuration as any).locale = undefined; + needsFix = true; + } + + if (needsFix) { + log.debug(`Project ${name} was fixed`, this.config.auditContext); + } else { + log.debug(`Project ${name} did not need fixing`, this.config.auditContext); + } + } + + log.debug(`Composable studio projects fix completed, writing updated file`, this.config.auditContext); + await this.writeFixContent(isArray ? projects : projects[0]); + } + + /** + * Write fixed composable studio projects back to file + */ + async writeFixContent(fixedProjects: any) { + log.debug(`Writing fix content`, this.config.auditContext); + log.debug(`Fix mode: ${this.fix}`, this.config.auditContext); + log.debug(`Copy directory flag: ${this.config.flags['copy-dir']}`, this.config.auditContext); + log.debug( + `External config skip confirm: ${this.config.flags['external-config']?.skipConfirm}`, + this.config.auditContext, + ); + log.debug(`Yes flag: ${this.config.flags.yes}`, this.config.auditContext); + + if ( + this.fix && + (this.config.flags['copy-dir'] || + this.config.flags['external-config']?.skipConfirm || + this.config.flags.yes || + (await cliux.confirm(commonMsg.FIX_CONFIRMATION))) + ) { + const outputPath = join(this.folderPath, this.config.moduleConfig[this.moduleName].fileName); + log.debug(`Writing fixed composable studio projects to: ${outputPath}`, this.config.auditContext); + + writeFileSync(outputPath, JSON.stringify(fixedProjects, null, 2)); + log.debug(`Successfully wrote fixed composable studio projects to file`, this.config.auditContext); + } else { + log.debug(`Skipping file write - fix mode disabled or user declined confirmation`, this.config.auditContext); + } + } +} diff --git a/packages/contentstack-audit/src/modules/index.ts b/packages/contentstack-audit/src/modules/index.ts index c76eca4a72..2a09f77621 100644 --- a/packages/contentstack-audit/src/modules/index.ts +++ b/packages/contentstack-audit/src/modules/index.ts @@ -7,5 +7,6 @@ import CustomRoles from './custom-roles'; import Assets from './assets'; import FieldRule from './field_rules'; import ModuleDataReader from './modulesData'; +import ComposableStudio from './composable-studio'; -export { Entries, GlobalField, ContentType, Workflows, Extensions, Assets, CustomRoles, FieldRule, ModuleDataReader }; +export { Entries, GlobalField, ContentType, Workflows, Extensions, Assets, CustomRoles, FieldRule, ModuleDataReader, ComposableStudio }; diff --git a/packages/contentstack-audit/src/modules/modulesData.ts b/packages/contentstack-audit/src/modules/modulesData.ts index 84f0d0e5cf..dc638c66c1 100644 --- a/packages/contentstack-audit/src/modules/modulesData.ts +++ b/packages/contentstack-audit/src/modules/modulesData.ts @@ -1,15 +1,9 @@ import { join, resolve } from 'path'; import { existsSync, readFileSync } from 'fs'; import { FsUtility, sanitizePath, log } from '@contentstack/cli-utilities'; -import { - ConfigType, - ContentTypeStruct, - CtConstructorParam, - ModuleConstructorParam, -} from '../types'; +import { ConfigType, ContentTypeStruct, CtConstructorParam, ModuleConstructorParam } from '../types'; import { keys, values } from 'lodash'; - export default class ModuleDataReader { public config: ConfigType; public folderPath: string; @@ -25,14 +19,14 @@ export default class ModuleDataReader { this.config = config; this.ctSchema = ctSchema; this.gfSchema = gfSchema; - + log.debug(`Initializing ModuleDataReader`, this.config.auditContext); log.debug(`Content types count: ${ctSchema.length}`, this.config.auditContext); log.debug(`Global fields count: ${gfSchema.length}`, this.config.auditContext); - + this.folderPath = resolve(sanitizePath(config.basePath)); log.debug(`Folder path: ${this.folderPath}`, this.config.auditContext); - + log.debug(`ModuleDataReader initialization completed`, this.config.auditContext); } @@ -40,7 +34,7 @@ export default class ModuleDataReader { log.debug(`Getting item count for module: ${moduleName}`, this.config.auditContext); let count = 0; switch (moduleName) { - case "content-types": + case 'content-types': log.debug(`Counting content types`, this.config.auditContext); count = this.ctSchema.length; log.debug(`Content types count: ${count}`, this.config.auditContext); @@ -54,7 +48,7 @@ export default class ModuleDataReader { log.debug(`Counting assets`, this.config.auditContext); const assetsPath = join(this.folderPath, 'assets'); log.debug(`Assets path: ${assetsPath}`, this.config.auditContext); - count = await this.readEntryAssetsModule(assetsPath,'assets') || 0; + count = (await this.readEntryAssetsModule(assetsPath, 'assets')) || 0; log.debug(`Assets count: ${count}`, this.config.auditContext); break; } @@ -64,31 +58,42 @@ export default class ModuleDataReader { const localesFolderPath = resolve(this.config.basePath, this.config.moduleConfig.locales.dirName); const localesPath = join(localesFolderPath, this.config.moduleConfig.locales.fileName); const masterLocalesPath = join(localesFolderPath, 'master-locale.json'); - + log.debug(`Locales folder path: ${localesFolderPath}`, this.config.auditContext); log.debug(`Locales path: ${localesPath}`, this.config.auditContext); log.debug(`Master locales path: ${masterLocalesPath}`, this.config.auditContext); - + log.debug(`Loading master locales`, this.config.auditContext); this.locales = values(await this.readUsingFsModule(masterLocalesPath)); - log.debug(`Loaded ${this.locales.length} master locales: ${this.locales.map(locale => locale.code).join(', ')}`, this.config.auditContext); + log.debug( + `Loaded ${this.locales.length} master locales: ${this.locales.map((locale) => locale.code).join(', ')}`, + this.config.auditContext, + ); if (existsSync(localesPath)) { log.debug(`Loading additional locales from file`, this.config.auditContext); this.locales.push(...values(JSON.parse(readFileSync(localesPath, 'utf8')))); - log.debug(`Total locales after loading: ${this.locales.length} - ${this.locales.map(locale => locale.code).join(', ')}`, this.config.auditContext); + log.debug( + `Total locales after loading: ${this.locales.length} - ${this.locales + .map((locale) => locale.code) + .join(', ')}`, + this.config.auditContext, + ); } else { log.debug(`Additional locales file not found`, this.config.auditContext); } - - log.debug(`Processing ${this.locales.length} locales and ${this.ctSchema.length} content types`, this.config.auditContext); - for (const {code} of this.locales) { + + log.debug( + `Processing ${this.locales.length} locales and ${this.ctSchema.length} content types`, + this.config.auditContext, + ); + for (const { code } of this.locales) { log.debug(`Processing locale: ${code}`, this.config.auditContext); for (const ctSchema of this.ctSchema) { log.debug(`Processing content type: ${ctSchema.uid}`, this.config.auditContext); - const basePath = join(this.folderPath,'entries', ctSchema.uid, code); + const basePath = join(this.folderPath, 'entries', ctSchema.uid, code); log.debug(`Base path: ${basePath}`, this.config.auditContext); - const entryCount = await this.readEntryAssetsModule(basePath, 'index') || 0; + const entryCount = (await this.readEntryAssetsModule(basePath, 'index')) || 0; log.debug(`Found ${entryCount} entries for ${ctSchema.uid} in ${code}`, this.config.auditContext); count = count + entryCount; } @@ -98,7 +103,8 @@ export default class ModuleDataReader { break; case 'custom-roles': case 'extensions': - case 'workflows': { + case 'workflows': + case 'composable-studio': { log.debug(`Counting ${moduleName}`, this.config.auditContext); const modulePath = resolve( this.folderPath, @@ -106,43 +112,50 @@ export default class ModuleDataReader { sanitizePath(this.config.moduleConfig[moduleName].fileName), ); log.debug(`Reading module: ${moduleName} from file: ${modulePath}`, this.config.auditContext); - + const moduleData = await this.readUsingFsModule(modulePath); - count = keys(moduleData).length; + // For composable-studio, it could be a single object or an array + if (moduleName === 'composable-studio') { + count = Array.isArray(moduleData) ? moduleData.length : Object.keys(moduleData).length > 0 ? 1 : 0; + } else { + count = keys(moduleData).length; + } log.debug(`module:${moduleName} count: ${count}`, this.config.auditContext); break; } } - + log.debug(`Module ${moduleName} item count: ${count}`, this.config.auditContext); return count; - } - async readUsingFsModule(path: string): Promise>{ + async readUsingFsModule(path: string): Promise> { log.debug(`Reading file: ${path}`, this.config.auditContext); - - const data = existsSync(path) ? (JSON.parse(readFileSync(path, 'utf-8'))) : []; - log.debug(`File ${existsSync(path) ? 'exists' : 'not found'}, data type: ${Array.isArray(data) ? 'array' : 'object'}`, this.config.auditContext); - + + const data = existsSync(path) ? JSON.parse(readFileSync(path, 'utf-8')) : []; + log.debug( + `File ${existsSync(path) ? 'exists' : 'not found'}, data type: ${Array.isArray(data) ? 'array' : 'object'}`, + this.config.auditContext, + ); + if (existsSync(path)) { const dataSize = Array.isArray(data) ? data.length : Object.keys(data).length; log.debug(`Loaded ${dataSize} items from file`, this.config.auditContext); } else { log.debug(`Returning empty array for non-existent file`, this.config.auditContext); } - + return data; } async readEntryAssetsModule(basePath: string, module: string): Promise { log.debug(`Reading entry/assets module: ${module}`, this.config.auditContext); log.debug(`Base path: ${basePath}`, this.config.auditContext); - + let fsUtility = new FsUtility({ basePath, indexFileName: `${module}.json` }); let indexer = fsUtility.indexFileContent; log.debug(`Found ${Object.keys(indexer).length} index files`, this.config.auditContext); - + let count = 0; for (const _ in indexer) { log.debug(`Reading chunk file`, this.config.auditContext); @@ -151,7 +164,7 @@ export default class ModuleDataReader { log.debug(`Loaded ${chunkCount} items from chunk`, this.config.auditContext); count = count + chunkCount; } - + log.debug(`Total ${module} count: ${count}`, this.config.auditContext); return count; } @@ -159,16 +172,16 @@ export default class ModuleDataReader { async run(): Promise { log.debug(`Starting ModuleDataReader run process`, this.config.auditContext); log.debug(`Available modules: ${Object.keys(this.config.moduleConfig).join(', ')}`, this.config.auditContext); - + await Promise.allSettled( Object.keys(this.config.moduleConfig).map(async (module) => { log.debug(`Processing module: ${module}`, this.config.auditContext); const count = await this.getModuleItemCount(module); this.auditData[module] = { Total: count }; log.debug(`Module ${module} processed with count: ${count}`, this.config.auditContext); - }) + }), ); - + log.debug(`ModuleDataReader run completed`, this.config.auditContext); log.debug(`Audit data: ${JSON.stringify(this.auditData)}`, this.config.auditContext); return this.auditData; diff --git a/packages/contentstack-audit/src/types/composable-studio.ts b/packages/contentstack-audit/src/types/composable-studio.ts new file mode 100644 index 0000000000..5bc4433a78 --- /dev/null +++ b/packages/contentstack-audit/src/types/composable-studio.ts @@ -0,0 +1,27 @@ +interface ComposableStudioProject { + name: string; + description?: string; + canvasUrl?: string; + connectedStackApiKey?: string; + contentTypeUid: string; + organizationUid?: string; + settings: { + configuration: { + environment: string; + locale: string; + }; + }; + createdBy?: string; + updatedBy?: string; + deletedAt?: boolean; + createdAt?: string; + updatedAt?: string; + uid: string; + // For audit reporting + missingContentType?: boolean; + missingEnvironment?: boolean; + missingLocale?: boolean; + fixStatus?: string; +} + +export { ComposableStudioProject }; diff --git a/packages/contentstack-audit/src/types/content-types.ts b/packages/contentstack-audit/src/types/content-types.ts index fcc9b1d866..2a27e92af7 100644 --- a/packages/contentstack-audit/src/types/content-types.ts +++ b/packages/contentstack-audit/src/types/content-types.ts @@ -175,6 +175,7 @@ enum OutputColumn { "Non-Fixable"="Non-Fixable", "Fixed" = "Fixed", "Not-Fixed" = "Not-Fixed", + "Issues" = "issues", } export { diff --git a/packages/contentstack-audit/test/unit/mock/contents/Entries_Mandatory_field.json b/packages/contentstack-audit/test/unit/mock/contents/Entries_Mandatory_field.json new file mode 100644 index 0000000000..78fdc7d1a6 --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/Entries_Mandatory_field.json @@ -0,0 +1 @@ +{"entry1":{"name":"Test Entry","display_name":"Mandatory Field","missingRefs":["ref1"]}} \ No newline at end of file diff --git a/packages/contentstack-audit/test/unit/mock/contents/Entries_Select_field.json b/packages/contentstack-audit/test/unit/mock/contents/Entries_Select_field.json new file mode 100644 index 0000000000..c3f59c9394 --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/Entries_Select_field.json @@ -0,0 +1 @@ +{"entry1":{"name":"Test Entry","display_name":"Select Field","missingRefs":["ref1"]}} \ No newline at end of file diff --git a/packages/contentstack-audit/test/unit/mock/contents/Entries_Title_field.json b/packages/contentstack-audit/test/unit/mock/contents/Entries_Title_field.json new file mode 100644 index 0000000000..cb6bc0765b --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/Entries_Title_field.json @@ -0,0 +1 @@ +{"entry1":{"name":"Test Entry","display_name":"Title Field","missingRefs":["ref1"]}} \ No newline at end of file diff --git a/packages/contentstack-audit/test/unit/mock/contents/composable_studio/composable_studio.json b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/composable_studio.json new file mode 100644 index 0000000000..518568ee34 --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/composable_studio.json @@ -0,0 +1,21 @@ +{ + "name": "Test Project 1", + "description": "Test project with valid references", + "canvasUrl": "/", + "connectedStackApiKey": "blt_test_key_1", + "contentTypeUid": "page_1", + "organizationUid": "blt_org_1", + "settings": { + "configuration": { + "environment": "blt_env_dev", + "locale": "en-us" + } + }, + "createdBy": "blt_user_1", + "updatedBy": "blt_user_1", + "deletedAt": false, + "createdAt": "2025-01-01T10:00:00.000Z", + "updatedAt": "2025-01-01T10:00:00.000Z", + "uid": "test_project_uid_1" +} + diff --git a/packages/contentstack-audit/test/unit/mock/contents/composable_studio/ctSchema.json b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/ctSchema.json new file mode 100644 index 0000000000..40f6d0c6a7 --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/ctSchema.json @@ -0,0 +1,18 @@ +[ + { + "uid": "page_1", + "title": "Page Type 1", + "schema": [] + }, + { + "uid": "page_2", + "title": "Page Type 2", + "schema": [] + }, + { + "uid": "page_3", + "title": "Page Type 3", + "schema": [] + } +] + diff --git a/packages/contentstack-audit/test/unit/mock/contents/composable_studio/environments/environments.json b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/environments/environments.json new file mode 100644 index 0000000000..5bf08d2740 --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/environments/environments.json @@ -0,0 +1,12 @@ +[ + { + "name": "Development", + "uid": "blt_env_dev", + "deploy_content": true + }, + { + "name": "Poduction", + "uid": "blt_env_prod", + "deploy_content": true + } +] diff --git a/packages/contentstack-audit/test/unit/mock/contents/composable_studio/invalid_composable_studio.json b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/invalid_composable_studio.json new file mode 100644 index 0000000000..897aff5492 --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/invalid_composable_studio.json @@ -0,0 +1,63 @@ +[ + { + "name": "Invalid CT Project", + "description": "Project with invalid content type", + "canvasUrl": "/", + "connectedStackApiKey": "blt_test_key_2", + "contentTypeUid": "invalid_ct_999", + "organizationUid": "blt_org_1", + "settings": { + "configuration": { + "environment": "blt_env_dev", + "locale": "en-us" + } + }, + "uid": "test_project_uid_2" + }, + { + "name": "Invalid Env Project", + "description": "Project with invalid environment", + "canvasUrl": "/", + "connectedStackApiKey": "blt_test_key_3", + "contentTypeUid": "page_1", + "organizationUid": "blt_org_1", + "settings": { + "configuration": { + "environment": "invalid_env_999", + "locale": "en-us" + } + }, + "uid": "test_project_uid_3" + }, + { + "name": "Invalid Locale Project", + "description": "Project with invalid locale", + "canvasUrl": "/", + "connectedStackApiKey": "blt_test_key_4", + "contentTypeUid": "page_1", + "organizationUid": "blt_org_1", + "settings": { + "configuration": { + "environment": "blt_env_dev", + "locale": "invalid_locale_999" + } + }, + "uid": "test_project_uid_4" + }, + { + "name": "Multiple Issues Project", + "description": "Project with multiple invalid references", + "canvasUrl": "/", + "connectedStackApiKey": "blt_test_key_5", + "contentTypeUid": "invalid_ct_888", + "organizationUid": "blt_org_1", + "settings": { + "configuration": { + "environment": "invalid_env_888", + "locale": "invalid_locale_888" + } + }, + "uid": "test_project_uid_5" + } +] + diff --git a/packages/contentstack-audit/test/unit/mock/contents/composable_studio/locales/locales.json b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/locales/locales.json new file mode 100644 index 0000000000..69563247de --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/locales/locales.json @@ -0,0 +1,13 @@ +[ + { + "code": "fr-fr", + "name": "French - France", + "fallback_locale": "en-us" + }, + { + "code": "de-de", + "name": "German - Germany", + "fallback_locale": "en-us" + } +] + diff --git a/packages/contentstack-audit/test/unit/mock/contents/composable_studio/locales/master-locale.json b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/locales/master-locale.json new file mode 100644 index 0000000000..2e5ef9fe64 --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/composable_studio/locales/master-locale.json @@ -0,0 +1,8 @@ +[ + { + "code": "en-us", + "name": "English - United States", + "uid": "blt_locale_en_us" + } +] + diff --git a/packages/contentstack-audit/test/unit/modules/composable-studio.test.ts b/packages/contentstack-audit/test/unit/modules/composable-studio.test.ts new file mode 100644 index 0000000000..a5830a3dd4 --- /dev/null +++ b/packages/contentstack-audit/test/unit/modules/composable-studio.test.ts @@ -0,0 +1,330 @@ +import { resolve } from 'path'; +import { fancy } from 'fancy-test'; +import { expect } from 'chai'; +import cloneDeep from 'lodash/cloneDeep'; +import { ux } from '@contentstack/cli-utilities'; +import sinon from 'sinon'; + +import config from '../../../src/config'; +import { ComposableStudio } from '../../../src/modules'; +import { mockLogger } from '../mock-logger'; + +describe('ComposableStudio', () => { + beforeEach(() => { + // Mock the logger for all tests + sinon.stub(require('@contentstack/cli-utilities'), 'log').value(mockLogger); + }); + + afterEach(() => { + sinon.restore(); + }); + + describe('run method with invalid path for composable-studio', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .stub(ux, 'confirm', async () => true) + .it('Should validate the base path for composable-studio', async () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { basePath: resolve(__dirname, '..', 'mock', 'invalid_path'), flags: {} }), + }); + const result = await cs.run(); + expect(result).to.eql({}); + }); + }); + + describe('run method with valid path and valid composable-studio project', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .stub(ux, 'confirm', async () => true) + .it('should load projects and report issues if references are invalid', async () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents/`), + flags: {}, + }), + }); + + const missingRefs: any = await cs.run(); + expect(cs.composableStudioProjects).to.have.lengthOf(1); + expect(cs.composableStudioProjects[0].uid).to.equal('test_project_uid_1'); + expect(Array.isArray(missingRefs)).to.be.true; + }); + }); + + describe('run method with invalid composable-studio projects', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .stub(ux, 'confirm', async () => true) + .it('should detect invalid references', async () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents/`), + flags: {}, + }), + }); + + // Mock readFileSync to return invalid data + const originalReadFileSync = require('fs').readFileSync; + const invalidProjects = require('./../mock/contents/composable_studio/invalid_composable_studio.json'); + + sinon.stub(require('fs'), 'readFileSync').callsFake((...args: any[]) => { + const path = args[0]; + if (path.includes('composable_studio.json')) { + return JSON.stringify(invalidProjects); + } + return originalReadFileSync(...args); + }); + + const missingRefs: any = await cs.run(); + + expect(cs.composableStudioProjects).to.have.lengthOf(4); + expect(cs.projectsWithIssues).to.have.lengthOf(4); + expect(Array.isArray(missingRefs)).to.be.true; + expect(missingRefs).to.have.lengthOf(4); + + // Check first project - invalid content type + const project1 = missingRefs.find((p: any) => p.uid === 'test_project_uid_2'); + expect(project1).to.exist; + expect(project1.content_types).to.deep.equal(['invalid_ct_999']); + expect(project1.issues).to.include('Invalid contentTypeUid: invalid_ct_999'); + + // Check second project - invalid environment + const project2 = missingRefs.find((p: any) => p.uid === 'test_project_uid_3'); + expect(project2).to.exist; + expect(project2.environment).to.deep.equal(['invalid_env_999']); + expect(project2.issues).to.include('Invalid environment: invalid_env_999'); + + // Check third project - invalid locale + const project3 = missingRefs.find((p: any) => p.uid === 'test_project_uid_4'); + expect(project3).to.exist; + expect(project3.locale).to.deep.equal(['invalid_locale_999']); + expect(project3.issues).to.include('Invalid locale: invalid_locale_999'); + + // Check fourth project - multiple issues + const project4 = missingRefs.find((p: any) => p.uid === 'test_project_uid_5'); + expect(project4).to.exist; + expect(project4.content_types).to.deep.equal(['invalid_ct_888']); + expect(project4.environment).to.deep.equal(['invalid_env_888']); + expect(project4.locale).to.deep.equal(['invalid_locale_888']); + expect(project4.issues).to.include('Invalid contentTypeUid: invalid_ct_888'); + expect(project4.issues).to.include('Invalid environment: invalid_env_888'); + expect(project4.issues).to.include('Invalid locale: invalid_locale_888'); + }); + }); + + describe('loadEnvironments method', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('should load environments correctly', async () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents/composable_studio`), + flags: {}, + }), + }); + await cs.loadEnvironments(); + expect(cs.environmentUidSet.size).to.equal(2); + expect(cs.environmentUidSet.has('blt_env_dev')).to.be.true; + expect(cs.environmentUidSet.has('blt_env_prod')).to.be.true; + }); + }); + + describe('loadLocales method', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('should load locales correctly', async () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents/composable_studio`), + flags: {}, + }), + }); + await cs.loadLocales(); + expect(cs.localeCodeSet.size).to.equal(3); // en-us (master) + fr-fr + de-de + expect(cs.localeCodeSet.has('en-us')).to.be.true; + expect(cs.localeCodeSet.has('fr-fr')).to.be.true; + expect(cs.localeCodeSet.has('de-de')).to.be.true; + }); + }); + + describe('run method with audit fix for composable-studio', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .stub(ux, 'confirm', async () => true) + .it('should fix invalid projects and return fixed references', async () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents/`), + flags: { 'copy-dir': true }, + }), + fix: true, + }); + + // Mock readFileSync to return invalid data + const originalReadFileSync = require('fs').readFileSync; + const invalidProjects = require('./../mock/contents/composable_studio/invalid_composable_studio.json'); + + sinon.stub(require('fs'), 'readFileSync').callsFake((...args: any[]) => { + const path = args[0]; + if (path.includes('composable_studio.json')) { + return JSON.stringify(invalidProjects); + } + return originalReadFileSync(...args); + }); + + sinon.stub(cs, 'writeFixContent').resolves(); + + const fixedReferences: any = await cs.run(); + + expect(Array.isArray(fixedReferences)).to.be.true; + expect(fixedReferences.length).to.be.greaterThan(0); + + // All projects should have fixStatus set + fixedReferences.forEach((ref: any) => { + expect(ref.fixStatus).to.equal('Fixed'); + }); + + // Check that projects with issues were identified + expect(cs.projectsWithIssues.length).to.be.greaterThan(0); + }); + }); + + describe('validateModules method', () => { + it('should validate correct module name', () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents/composable_studio`), + flags: {}, + }), + }); + const result = cs.validateModules('composable-studio', config.moduleConfig); + expect(result).to.equal('composable-studio'); + }); + + it('should return default module name for invalid module', () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents/composable_studio`), + flags: {}, + }), + }); + const result = cs.validateModules('invalid-module' as any, config.moduleConfig); + expect(result).to.equal('composable-studio'); + }); + }); + + describe('Content type validation', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('should build content type UID set correctly', async () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents/`), + flags: {}, + }), + }); + await cs.run(); + expect(cs.ctUidSet.size).to.equal(3); + expect(cs.ctUidSet.has('page_1')).to.be.true; + expect(cs.ctUidSet.has('page_2')).to.be.true; + expect(cs.ctUidSet.has('page_3')).to.be.true; + }); + }); + + describe('Report data structure', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .stub(ux, 'confirm', async () => true) + .it('should return properly formatted report data', async () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents/`), + flags: {}, + }), + }); + + // Mock readFileSync to return invalid data + const originalReadFileSync = require('fs').readFileSync; + const invalidProjects = require('./../mock/contents/composable_studio/invalid_composable_studio.json'); + + sinon.stub(require('fs'), 'readFileSync').callsFake((...args: any[]) => { + const path = args[0]; + if (path.includes('composable_studio.json')) { + return JSON.stringify(invalidProjects); + } + return originalReadFileSync(...args); + }); + + const missingRefs: any = await cs.run(); + + expect(Array.isArray(missingRefs)).to.be.true; + expect(missingRefs.length).to.be.greaterThan(0); + + // Check that all report entries have required fields + missingRefs.forEach((ref: any) => { + expect(ref).to.have.property('title'); + expect(ref).to.have.property('name'); + expect(ref).to.have.property('uid'); + expect(ref).to.have.property('issues'); + }); + + // Check that issues field contains descriptive text + const projectWithCTIssue = missingRefs.find((ref: any) => ref.content_types); + if (projectWithCTIssue) { + expect(projectWithCTIssue.issues).to.be.a('string'); + expect(projectWithCTIssue.issues).to.include('contentTypeUid'); + } + }); + }); + + describe('Empty and edge cases', () => { + it('should handle empty content type schema gracefully', async () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: [], + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents/composable_studio`), + flags: {}, + }), + }); + + await cs.run(); + expect(cs.ctUidSet.size).to.equal(0); + }); + + it('should handle missing composable_studio.json file', async () => { + const cs = new ComposableStudio({ + moduleName: 'composable-studio', + ctSchema: cloneDeep(require('./../mock/contents/composable_studio/ctSchema.json')), + config: Object.assign(config, { + basePath: resolve(`./test/unit/mock/contents`), + flags: {}, + }), + }); + + const result = await cs.run(); + // When the file exists and has projects with validation issues, it returns an array + expect(result).to.exist; + }); + }); +}); diff --git a/packages/contentstack-auth/src/base-command.ts b/packages/contentstack-auth/src/base-command.ts index 445bce3bb2..8a586b94ef 100644 --- a/packages/contentstack-auth/src/base-command.ts +++ b/packages/contentstack-auth/src/base-command.ts @@ -1,5 +1,12 @@ import { Command } from '@contentstack/cli-command'; -import { configHandler, createLogContext, Flags, getAuthenticationMethod, Interfaces, log } from '@contentstack/cli-utilities'; +import { + configHandler, + createLogContext, + Flags, + getAuthenticationMethod, + Interfaces, + log, +} from '@contentstack/cli-utilities'; import { Context } from './interfaces'; export type Args = Interfaces.InferredArgs; @@ -17,8 +24,9 @@ export abstract class BaseCommand extends Command { public async init(): Promise { await super.init(); // this.contextDetails = { ...this.createExportContext() }; - this.contextDetails = { ...createLogContext(this.context?.info?.command || 'auth', '',) }; - + this.contextDetails = { + ...createLogContext(this.context?.info?.command || 'auth', '', configHandler.get('authenticationMethod')), + }; } /** diff --git a/packages/contentstack-auth/test/run.test.ts b/packages/contentstack-auth/test/run.test.ts index 1e61078fc0..106af41866 100644 --- a/packages/contentstack-auth/test/run.test.ts +++ b/packages/contentstack-auth/test/run.test.ts @@ -1,11 +1,11 @@ -import { join, resolve } from "path"; -import { existsSync, readdirSync } from "fs"; -import config from "./config.json" with { type: "json" }; -import filter from "lodash/filter.js"; -import forEach from "lodash/forEach.js"; -import isEmpty from "lodash/isEmpty.js"; -import isArray from "lodash/isArray.js"; -import includes from "lodash/includes.js"; +import { join, resolve } from 'path'; +import { existsSync, readdirSync } from 'fs'; +import config from './config.json'; +import filter from 'lodash/filter.js'; +import forEach from 'lodash/forEach.js'; +import isEmpty from 'lodash/isEmpty.js'; +import isArray from 'lodash/isArray.js'; +import includes from 'lodash/includes.js'; import dotenv from 'dotenv'; // NOTE init env variables @@ -13,8 +13,8 @@ dotenv.config(); const { IS_TS, UNIT_EXECUTION_ORDER, INTEGRATION_EXECUTION_ORDER } = config; -const testFileExtension = IS_TS ? ".ts" : ".js"; -process.env.TS_NODE_PROJECT = resolve("test/tsconfig.json"); +const testFileExtension = IS_TS ? '.ts' : '.js'; +process.env.TS_NODE_PROJECT = resolve('test/tsconfig.json'); /** * @method getFileName @@ -22,9 +22,9 @@ process.env.TS_NODE_PROJECT = resolve("test/tsconfig.json"); * @returns {string} */ const getFileName = (file: string): string => { - if (includes(file, ".test") && includes(file, testFileExtension)) return file; - else if (includes(file, ".test")) return `${file}${testFileExtension}`; - else if (!includes(file, ".test")) return `${file}.test${testFileExtension}`; + if (includes(file, '.test') && includes(file, testFileExtension)) return file; + else if (includes(file, '.test')) return `${file}${testFileExtension}`; + else if (!includes(file, '.test')) return `${file}.test${testFileExtension}`; else return `${file}.test${testFileExtension}`; }; @@ -33,7 +33,7 @@ const getFileName = (file: string): string => { * @param {Array} files * @param {string} basePath */ -const includeTestFiles = (files: Array, basePath = "integration") => { +const includeTestFiles = (files: Array, basePath = 'integration') => { forEach(files, (file) => { const filename = getFileName(file); const filePath = join(__dirname, basePath, filename); @@ -52,18 +52,15 @@ const includeTestFiles = (files: Array, basePath = "integration") => { * @param {Array | undefined | null} executionOrder * @param {boolean} isIntegrationTest */ -const run = ( - executionOrder: Array | undefined | null, - isIntegrationTest = true -) => { - const testFolder = isIntegrationTest ? "integration" : "unit"; +const run = (executionOrder: Array | undefined | null, isIntegrationTest = true) => { + const testFolder = isIntegrationTest ? 'integration' : 'unit'; if (executionOrder && isArray(executionOrder) && !isEmpty(executionOrder)) { includeTestFiles(executionOrder, testFolder); } else { const basePath = join(__dirname, testFolder); const allIntegrationTestFiles = filter(readdirSync(basePath), (file) => - includes(file, `.test${testFileExtension}`) + includes(file, `.test${testFileExtension}`), ); includeTestFiles(allIntegrationTestFiles); } @@ -71,8 +68,8 @@ const run = ( const args = process.argv.slice(2); -if (includes(args, "--integration-test")) { +if (includes(args, '--integration-test')) { run(INTEGRATION_EXECUTION_ORDER); -} else if (includes(args, "--unit-test")) { +} else if (includes(args, '--unit-test')) { // run(UNIT_EXECUTION_ORDER, false); } diff --git a/packages/contentstack-bootstrap/package.json b/packages/contentstack-bootstrap/package.json index f1e7d0ddff..0d0ee4f8a2 100644 --- a/packages/contentstack-bootstrap/package.json +++ b/packages/contentstack-bootstrap/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-bootstrap", "description": "Bootstrap contentstack apps", - "version": "1.17.2", + "version": "1.18.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "scripts": { @@ -16,7 +16,7 @@ "test:report": "nyc --reporter=lcov mocha \"test/**/*.test.js\"" }, "dependencies": { - "@contentstack/cli-cm-seed": "~1.13.2", + "@contentstack/cli-cm-seed": "~1.14.0", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@oclif/core": "^4.3.0", diff --git a/packages/contentstack-bulk-publish/README.md b/packages/contentstack-bulk-publish/README.md index 491ac0cd23..0453948366 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.4 darwin-arm64 node-v22.14.0 +@contentstack/cli-cm-bulk-publish/1.10.5 darwin-arm64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-bulk-publish/package.json b/packages/contentstack-bulk-publish/package.json index 19788b0b04..38b88a44d9 100644 --- a/packages/contentstack-bulk-publish/package.json +++ b/packages/contentstack-bulk-publish/package.json @@ -1,12 +1,12 @@ { "name": "@contentstack/cli-cm-bulk-publish", "description": "Contentstack CLI plugin for bulk publish actions", - "version": "1.10.4", + "version": "1.10.5", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-command": "~1.7.1", - "@contentstack/cli-config": "~1.16.2", + "@contentstack/cli-config": "~1.17.0", "@contentstack/cli-utilities": "~1.16.0", "@oclif/core": "^4.3.0", "@oclif/plugin-help": "^6.2.28", diff --git a/packages/contentstack-clone/package.json b/packages/contentstack-clone/package.json index a89f54e59b..69d6183923 100644 --- a/packages/contentstack-clone/package.json +++ b/packages/contentstack-clone/package.json @@ -1,13 +1,13 @@ { "name": "@contentstack/cli-cm-clone", "description": "Contentstack stack clone plugin", - "version": "1.18.1", + "version": "1.19.0", "author": "Contentstack", "bugs": "https://github.com/rohitmishra209/cli-cm-clone/issues", "dependencies": { "@colors/colors": "^1.6.0", - "@contentstack/cli-cm-export": "~1.22.2", - "@contentstack/cli-cm-import": "~1.30.2", + "@contentstack/cli-cm-export": "~1.23.0", + "@contentstack/cli-cm-import": "~1.31.0", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@oclif/core": "^4.3.0", diff --git a/packages/contentstack-config/README.md b/packages/contentstack-config/README.md index e149682c6b..11458cb5ce 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.16.2 darwin-arm64 node-v22.14.0 +@contentstack/cli-config/1.17.0 darwin-arm64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-config/package.json b/packages/contentstack-config/package.json index 9b1fb20917..b81d253b01 100644 --- a/packages/contentstack-config/package.json +++ b/packages/contentstack-config/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-config", "description": "Contentstack CLI plugin for configuration", - "version": "1.16.2", + "version": "1.17.0", "author": "Contentstack", "scripts": { "build": "npm run clean && npm run compile", diff --git a/packages/contentstack-config/src/base-command.ts b/packages/contentstack-config/src/base-command.ts index a1100c2669..329cd26b01 100644 --- a/packages/contentstack-config/src/base-command.ts +++ b/packages/contentstack-config/src/base-command.ts @@ -1,15 +1,24 @@ import { Command } from '@contentstack/cli-command'; -import { ArgInput, FlagInput, Flags, Interfaces, LoggerService } from '@contentstack/cli-utilities'; +import { ArgInput, FlagInput, Flags, Interfaces, configHandler, createLogContext } from '@contentstack/cli-utilities'; export type Args = Interfaces.InferredArgs; export type Flags = Interfaces.InferredFlags<(typeof BaseCommand)['baseFlags'] & T['flags']>; export abstract class BaseCommand extends Command { - public logger!: LoggerService; + public contextDetails!: { + command: string; + module: string; + userId: string; + email: string; + sessionId: string; + apiKey: string; + orgId: string; + authenticationMethod: string; + }; protected args!: Args; protected flags!: Flags; - static args: ArgInput<{ [arg: string]: any; }>; + static args: ArgInput<{ [arg: string]: any }>; /** * The `init` function initializes the command by parsing arguments and flags, registering search * plugins, registering the configuration, and initializing the logger. @@ -17,8 +26,10 @@ export abstract class BaseCommand extends Command { public async init(): Promise { await super.init(); - // Init logger - this.logger = new LoggerService(process.cwd(), 'cli-log'); + // Init logger context + this.contextDetails = { + ...createLogContext(this.context?.info?.command || 'config', '', configHandler.get('authenticationMethod')), + }; } /** @@ -46,4 +57,4 @@ export abstract class BaseCommand extends Command { // called after run and catch regardless of whether or not the command errored return super.finally(_); } -} \ No newline at end of file +} diff --git a/packages/contentstack-config/src/commands/config/get/base-branch.ts b/packages/contentstack-config/src/commands/config/get/base-branch.ts index 71c4b05f4b..dd0b654b1b 100644 --- a/packages/contentstack-config/src/commands/config/get/base-branch.ts +++ b/packages/contentstack-config/src/commands/config/get/base-branch.ts @@ -1,5 +1,5 @@ import { Command } from '@contentstack/cli-command'; -import { cliux, configHandler, messageHandler, TableHeader } from '@contentstack/cli-utilities'; +import { cliux, configHandler, messageHandler, TableHeader, handleAndLogError } from '@contentstack/cli-utilities'; export default class BranchGetCommand extends Command { static description = 'Get current branch set for CLI'; @@ -25,7 +25,7 @@ export default class BranchGetCommand extends Command { cliux.print(`error: ${messageHandler.parse('CLI_CONFIG_BRANCH_LIST_NO_BRANCHES')}`, { color: 'red' }); } } catch (error) { - cliux.error('Error', error); + handleAndLogError(error, { module: 'config-get-base-branch' }); } } } diff --git a/packages/contentstack-config/src/commands/config/get/early-access-header.ts b/packages/contentstack-config/src/commands/config/get/early-access-header.ts index 93c2bff299..52a0e7eeed 100644 --- a/packages/contentstack-config/src/commands/config/get/early-access-header.ts +++ b/packages/contentstack-config/src/commands/config/get/early-access-header.ts @@ -1,4 +1,4 @@ -import { cliux, configHandler } from '@contentstack/cli-utilities'; +import { cliux, configHandler, handleAndLogError } from '@contentstack/cli-utilities'; import { Command } from '@contentstack/cli-command'; export default class GetEarlyAccessHeaderCommand extends Command { @@ -27,7 +27,7 @@ export default class GetEarlyAccessHeaderCommand extends Command { cliux.print(`Early Access header not found.`, { color: 'red' }); } } catch (error) { - this.log('Unable to retrieve the Early Access header config', error instanceof Error ? error.message : error); + handleAndLogError(error, { module: 'config-get-early-access-header' }); } } } diff --git a/packages/contentstack-config/src/commands/config/get/log.ts b/packages/contentstack-config/src/commands/config/get/log.ts index 6195bc3850..3c5e2599a2 100644 --- a/packages/contentstack-config/src/commands/config/get/log.ts +++ b/packages/contentstack-config/src/commands/config/get/log.ts @@ -1,5 +1,5 @@ import { Command } from '@contentstack/cli-command'; -import { cliux, configHandler, TableHeader } from '@contentstack/cli-utilities'; +import { cliux, configHandler, TableHeader, handleAndLogError } from '@contentstack/cli-utilities'; import { getEffectiveLogConfig } from '../../../utils/log-config-defaults'; export default class LogGetCommand extends Command { @@ -34,7 +34,7 @@ export default class LogGetCommand extends Command { color: 'dim', }); } catch (error) { - cliux.error('Error', error); + handleAndLogError(error, { module: 'config-get-log' }); } } } diff --git a/packages/contentstack-config/src/commands/config/get/rate-limit.ts b/packages/contentstack-config/src/commands/config/get/rate-limit.ts index d1f6784c7a..0c565ad3d9 100644 --- a/packages/contentstack-config/src/commands/config/get/rate-limit.ts +++ b/packages/contentstack-config/src/commands/config/get/rate-limit.ts @@ -1,4 +1,4 @@ -import { cliux, configHandler, TableHeader } from '@contentstack/cli-utilities'; +import { cliux, configHandler, TableHeader, handleAndLogError } from '@contentstack/cli-utilities'; import { Command } from '@contentstack/cli-command'; import { RateLimitConfig } from '../../../interfaces'; @@ -34,7 +34,7 @@ export default class RateLimitGetCommand extends Command { cliux.table(headers, tableData); } catch (error) { - this.log('Unable to retrieve the rate limits configuration', error instanceof Error ? error.message : error); + handleAndLogError(error, { module: 'config-get-rate-limit' }); } } } diff --git a/packages/contentstack-config/src/commands/config/get/region.ts b/packages/contentstack-config/src/commands/config/get/region.ts index d49295d5bc..d9f89f839c 100644 --- a/packages/contentstack-config/src/commands/config/get/region.ts +++ b/packages/contentstack-config/src/commands/config/get/region.ts @@ -1,5 +1,5 @@ import { Command } from '@contentstack/cli-command'; -import { cliux } from '@contentstack/cli-utilities'; +import { cliux, log } from '@contentstack/cli-utilities'; import { Region } from '../../../interfaces'; import { BaseCommand } from '../../../base-command'; @@ -10,7 +10,7 @@ export default class RegionGetCommand extends BaseCommand <%= command.id %>', @@ -35,7 +38,7 @@ export default class RemoveEarlyAccessHeader extends Command { configHandler.delete(`earlyAccessHeaders.${earlyAccessHeaderAlias}`); cliux.success(`Early Access header has been successfully removed`); } catch (error) { - this.log('Unable to remove the Early Access header config', error instanceof Error ? error.message : error); + handleAndLogError(error, { module: 'config-remove-early-access-header' }); } } } diff --git a/packages/contentstack-config/src/commands/config/remove/rate-limit.ts b/packages/contentstack-config/src/commands/config/remove/rate-limit.ts index 7d47304446..14c83e273c 100644 --- a/packages/contentstack-config/src/commands/config/remove/rate-limit.ts +++ b/packages/contentstack-config/src/commands/config/remove/rate-limit.ts @@ -1,4 +1,4 @@ -import { cliux, configHandler, FlagInput, flags } from '@contentstack/cli-utilities'; +import { cliux, configHandler, FlagInput, flags, handleAndLogError } from '@contentstack/cli-utilities'; import { Command } from '@contentstack/cli-command'; import { askOrgID } from '../../../utils/interactive'; @@ -27,7 +27,7 @@ export default class RateLimitRemoveCommand extends Command { configHandler.delete(`rateLimit.${org}`); cliux.print(`Rate limit entry for organization UID ${org} has been removed.`, { color: 'green' }); } catch (error) { - this.log('Unable to remove the rate limit entry', error instanceof Error ? error.message : error); + handleAndLogError(error, { module: 'config-remove-rate-limit' }); } } } diff --git a/packages/contentstack-config/src/commands/config/set/base-branch.ts b/packages/contentstack-config/src/commands/config/set/base-branch.ts index ed770aa546..1b16684c6c 100644 --- a/packages/contentstack-config/src/commands/config/set/base-branch.ts +++ b/packages/contentstack-config/src/commands/config/set/base-branch.ts @@ -1,5 +1,5 @@ import { Command } from '@contentstack/cli-command'; -import { cliux, flags, configHandler, FlagInput } from '@contentstack/cli-utilities'; +import { cliux, flags, configHandler, FlagInput, handleAndLogError, log } from '@contentstack/cli-utilities'; import { interactive } from '../../../utils'; export default class BranchSetCommand extends Command { @@ -35,7 +35,7 @@ export default class BranchSetCommand extends Command { `Base branch configuration for stack-api-key: ${apiKey} and branch: ${baseBranch} set successfully`, ); } catch (error) { - cliux.error('error', error); + handleAndLogError(error, { module: 'config-set-base-branch' }); } } } diff --git a/packages/contentstack-config/src/commands/config/set/early-access-header.ts b/packages/contentstack-config/src/commands/config/set/early-access-header.ts index f6e4ac1c27..6205e0c99f 100644 --- a/packages/contentstack-config/src/commands/config/set/early-access-header.ts +++ b/packages/contentstack-config/src/commands/config/set/early-access-header.ts @@ -1,4 +1,4 @@ -import { cliux, flags, configHandler, FlagInput } from '@contentstack/cli-utilities'; +import { cliux, flags, configHandler, FlagInput, handleAndLogError } from '@contentstack/cli-utilities'; import { interactive } from '../../../utils'; import { Command } from '@contentstack/cli-command'; @@ -26,11 +26,9 @@ export default class SetEarlyAccessHeaderCommand extends Command { earlyAccessHeader = (await interactive.askEarlyAccessHeaderValue())?.trim(); } configHandler.set(`earlyAccessHeaders.${earlyAccessHeaderAlias}`, earlyAccessHeader); - cliux.success( - `Early Access header has been successfully set`, - ); + cliux.success(`Early Access header has been successfully set`); } catch (error) { - this.log('Unable to set the Early Access header config', error instanceof Error ? error.message : error); + handleAndLogError(error, { module: 'config-set-early-access-header' }); } } } diff --git a/packages/contentstack-config/src/commands/config/set/log.ts b/packages/contentstack-config/src/commands/config/set/log.ts index 82449f3461..0900d7cad6 100644 --- a/packages/contentstack-config/src/commands/config/set/log.ts +++ b/packages/contentstack-config/src/commands/config/set/log.ts @@ -1,5 +1,5 @@ import { Command } from '@contentstack/cli-command'; -import { cliux, flags, configHandler, FlagInput, messageHandler } from '@contentstack/cli-utilities'; +import { cliux, flags, configHandler, FlagInput, messageHandler, handleAndLogError } from '@contentstack/cli-utilities'; import { resolveLogPath } from '../../../utils/log-config-defaults'; import * as path from 'path'; @@ -48,7 +48,7 @@ export default class LogSetCommand extends Command { if (pathExt && pathExt.length > 0) { resolvedPath = path.dirname(resolvedPath); } - + currentLoggingConfig.path = resolvedPath; } @@ -71,7 +71,7 @@ export default class LogSetCommand extends Command { ); } } catch (error) { - cliux.error('error', error); + handleAndLogError(error, { module: 'config-set-log' }); } } } diff --git a/packages/contentstack-config/src/commands/config/set/rate-limit.ts b/packages/contentstack-config/src/commands/config/set/rate-limit.ts index c7a5490c48..6bbb420955 100644 --- a/packages/contentstack-config/src/commands/config/set/rate-limit.ts +++ b/packages/contentstack-config/src/commands/config/set/rate-limit.ts @@ -1,4 +1,11 @@ -import { flags, isAuthenticated, FlagInput, managementSDKClient, cliux } from '@contentstack/cli-utilities'; +import { + flags, + isAuthenticated, + FlagInput, + managementSDKClient, + cliux, + handleAndLogError, +} from '@contentstack/cli-utilities'; import { RateLimitHandler } from '../../../utils/rate-limit-handler'; import { BaseCommand } from '../../../base-command'; import { askOrgID } from '../../../utils/interactive'; @@ -82,6 +89,7 @@ export default class SetRateLimitCommand extends BaseCommand { - if (includes(file, ".test") && includes(file, testFileExtension)) return file; - else if (includes(file, ".test")) return `${file}${testFileExtension}`; - else if (!includes(file, ".test")) return `${file}.test${testFileExtension}`; + if (includes(file, '.test') && includes(file, testFileExtension)) return file; + else if (includes(file, '.test')) return `${file}${testFileExtension}`; + else if (!includes(file, '.test')) return `${file}.test${testFileExtension}`; else return `${file}.test${testFileExtension}`; }; @@ -30,7 +30,7 @@ const getFileName = (file: string): string => { * @param {Array} files * @param {string} basePath */ -const includeTestFiles = (files: Array, basePath = "integration") => { +const includeTestFiles = (files: Array, basePath = 'integration') => { forEach(files, (file) => { const filename = getFileName(file); const filePath = join(__dirname, basePath, filename); @@ -49,18 +49,15 @@ const includeTestFiles = (files: Array, basePath = "integration") => { * @param {Array | undefined | null} executionOrder * @param {boolean} isIntegrationTest */ -const run = ( - executionOrder: Array | undefined | null, - isIntegrationTest = true -) => { - const testFolder = isIntegrationTest ? "integration" : "unit"; +const run = (executionOrder: Array | undefined | null, isIntegrationTest = true) => { + const testFolder = isIntegrationTest ? 'integration' : 'unit'; if (executionOrder && isArray(executionOrder) && !isEmpty(executionOrder)) { includeTestFiles(executionOrder, testFolder); } else { const basePath = join(__dirname, testFolder); const allIntegrationTestFiles = filter(readdirSync(basePath), (file) => - includes(file, `.test${testFileExtension}`) + includes(file, `.test${testFileExtension}`), ); includeTestFiles(allIntegrationTestFiles); } @@ -68,8 +65,8 @@ const run = ( const args = process.argv.slice(2); -if (includes(args, "--integration-test")) { +if (includes(args, '--integration-test')) { run(INTEGRATION_EXECUTION_ORDER); -} else if (includes(args, "--unit-test")) { +} else if (includes(args, '--unit-test')) { run(UNIT_EXECUTION_ORDER, false); } diff --git a/packages/contentstack-config/test/unit/commands/log.test.ts b/packages/contentstack-config/test/unit/commands/log.test.ts index fa3d825721..48503ae988 100644 --- a/packages/contentstack-config/test/unit/commands/log.test.ts +++ b/packages/contentstack-config/test/unit/commands/log.test.ts @@ -10,17 +10,15 @@ import { LOG_CONFIG_DEFAULTS } from '../../../src/utils/log-config-defaults'; describe('Log Commands', () => { describe('Log Set Command', () => { let successMessage: string[] = []; - let errorMessage: any; + let handleAndLogErrorStub: sinon.SinonStub; beforeEach(() => { successMessage = []; - errorMessage = null; sinon.stub(cliux, 'success').callsFake((msg: string) => successMessage.push(msg)); sinon.stub(cliux, 'print').callsFake((msg: string) => successMessage.push(msg)); // Add this to capture print messages - sinon.stub(cliux, 'error').callsFake((_, err) => { - errorMessage = err; - }); + handleAndLogErrorStub = sinon.stub(); + sinon.replaceGetter(require('@contentstack/cli-utilities'), 'handleAndLogError', () => handleAndLogErrorStub); }); afterEach(() => { @@ -31,7 +29,7 @@ describe('Log Commands', () => { const cmd = new LogSetCommand([], {} as any); const relativePath = './logs/app.log'; const expectedAbsolutePath = path.resolve(process.cwd(), './logs'); // Directory, not file - + sinon.stub(cmd as any, 'parse').resolves({ flags: { level: 'debug', @@ -99,16 +97,16 @@ describe('Log Commands', () => { it('should preserve existing config values when only setting level', async () => { const cmd = new LogSetCommand([], {} as any); const existingPath = './existing/logs/app.log'; - + sinon.stub(cmd as any, 'parse').resolves({ flags: { level: 'warn', }, }); - sinon.stub(configHandler, 'get').returns({ + sinon.stub(configHandler, 'get').returns({ path: existingPath, - 'show-console-logs': true + 'show-console-logs': true, }); const setStub = sinon.stub(configHandler, 'set'); @@ -117,30 +115,30 @@ describe('Log Commands', () => { expect( setStub.calledWith('log', { level: 'warn', - path: existingPath, // Should preserve existing path unchanged - 'show-console-logs': true, // Should preserve existing console logs setting + path: existingPath, // Should preserve existing path unchanged + 'show-console-logs': true, // Should preserve existing console logs setting }), ).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.false; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.false; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.false; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.false; }); it('should preserve existing config values when only setting path', async () => { const cmd = new LogSetCommand([], {} as any); const newPath = './new/logs/app.log'; const expectedAbsolutePath = path.resolve(process.cwd(), './new/logs'); - + sinon.stub(cmd as any, 'parse').resolves({ flags: { path: newPath, }, }); - sinon.stub(configHandler, 'get').returns({ + sinon.stub(configHandler, 'get').returns({ level: 'error', - 'show-console-logs': false + 'show-console-logs': false, }); const setStub = sinon.stub(configHandler, 'set'); @@ -154,9 +152,9 @@ describe('Log Commands', () => { }), ).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.false; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.false; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.false; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.false; }); it('should set show-console-logs flag only when explicitly provided', async () => { @@ -172,15 +170,15 @@ describe('Log Commands', () => { expect( setStub.calledWith('log', { - level: 'debug', + level: 'debug', path: './existing.log', 'show-console-logs': true, }), ).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.false; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.false; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.false; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.false; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.true; }); it('should set show-console-logs flag to false (--no-show-console-logs)', async () => { @@ -201,16 +199,16 @@ describe('Log Commands', () => { }), ).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.false; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.false; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.false; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.false; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.true; }); it('should set all flags together (level, path, show-console-logs) with absolute path', async () => { const cmd = new LogSetCommand([], {} as any); const relativePath = './logs/warnings.log'; - const expectedAbsolutePath = path.resolve(process.cwd(), './logs'); - + const expectedAbsolutePath = path.resolve(process.cwd(), './logs'); + sinon.stub(cmd as any, 'parse').resolves({ flags: { level: 'warn', @@ -227,7 +225,7 @@ describe('Log Commands', () => { expect( setStub.calledWith('log', { level: 'warn', - path: expectedAbsolutePath, + path: expectedAbsolutePath, 'show-console-logs': true, }), ).to.be.true; @@ -241,8 +239,8 @@ describe('Log Commands', () => { it('should handle absolute paths correctly', async () => { const cmd = new LogSetCommand([], {} as any); const absolutePath = '/tmp/cli.log'; - const expectedDirectoryPath = '/tmp'; - + const expectedDirectoryPath = '/tmp'; + sinon.stub(cmd as any, 'parse').resolves({ flags: { path: absolutePath, @@ -271,24 +269,23 @@ describe('Log Commands', () => { await cmd.run(); - expect(errorMessage).to.equal(testError); + expect(handleAndLogErrorStub.called).to.be.true; + expect(handleAndLogErrorStub.calledWith(testError, { module: 'config-set-log' })).to.be.true; }); }); describe('Log Get Command', () => { let tableMessage: any[] = []; - let errorMessage: any; + let handleAndLogErrorStub: sinon.SinonStub; beforeEach(() => { tableMessage = []; - errorMessage = null; sinon.stub(cliux, 'table').callsFake((headers: any, data: any) => { tableMessage.push({ headers, data }); }); - sinon.stub(cliux, 'error').callsFake((_, err) => { - errorMessage = err; - }); + handleAndLogErrorStub = sinon.stub(); + sinon.replaceGetter(require('@contentstack/cli-utilities'), 'handleAndLogError', () => handleAndLogErrorStub); }); afterEach(() => { @@ -299,28 +296,25 @@ describe('Log Commands', () => { const cmd = new LogGetCommand([], {} as any); const relativePath = './logs/app.log'; const expectedAbsolutePath = path.resolve(process.cwd(), relativePath); - + sinon.stub(configHandler, 'get').returns({ level: 'debug', path: relativePath }); await cmd.run(); expect(tableMessage).to.have.length(1); - expect(tableMessage[0].headers).to.deep.equal([ - { value: 'Setting' }, - { value: 'Value' } - ]); + expect(tableMessage[0].headers).to.deep.equal([{ value: 'Setting' }, { value: 'Value' }]); expect(tableMessage[0].data).to.deep.equal([ { - 'Setting': 'Log Level', - 'Value': 'debug' + Setting: 'Log Level', + Value: 'debug', }, { - 'Setting': 'Log Path', - 'Value': expectedAbsolutePath + Setting: 'Log Path', + Value: expectedAbsolutePath, }, { - 'Setting': 'Show Console Logs', - 'Value': 'false' + Setting: 'Show Console Logs', + Value: 'false', }, ]); }); @@ -332,22 +326,19 @@ describe('Log Commands', () => { await cmd.run(); expect(tableMessage).to.have.length(1); - expect(tableMessage[0].headers).to.deep.equal([ - { value: 'Setting' }, - { value: 'Value' } - ]); + expect(tableMessage[0].headers).to.deep.equal([{ value: 'Setting' }, { value: 'Value' }]); expect(tableMessage[0].data).to.deep.equal([ { - 'Setting': 'Log Level', - 'Value': 'info' + Setting: 'Log Level', + Value: 'info', }, { - 'Setting': 'Log Path', - 'Value': LOG_CONFIG_DEFAULTS.PATH + Setting: 'Log Path', + Value: LOG_CONFIG_DEFAULTS.PATH, }, { - 'Setting': 'Show Console Logs', - 'Value': 'false' + Setting: 'Show Console Logs', + Value: 'false', }, ]); }); @@ -356,28 +347,25 @@ describe('Log Commands', () => { const cmd = new LogGetCommand([], {} as any); const customPath = './custom/logs/app.log'; const expectedAbsolutePath = path.resolve(process.cwd(), customPath); - + sinon.stub(configHandler, 'get').returns({ path: customPath }); await cmd.run(); expect(tableMessage).to.have.length(1); - expect(tableMessage[0].headers).to.deep.equal([ - { value: 'Setting' }, - { value: 'Value' } - ]); + expect(tableMessage[0].headers).to.deep.equal([{ value: 'Setting' }, { value: 'Value' }]); expect(tableMessage[0].data).to.deep.equal([ { - 'Setting': 'Log Level', - 'Value': LOG_CONFIG_DEFAULTS.LEVEL + Setting: 'Log Level', + Value: LOG_CONFIG_DEFAULTS.LEVEL, }, { - 'Setting': 'Log Path', - 'Value': expectedAbsolutePath + Setting: 'Log Path', + Value: expectedAbsolutePath, }, { - 'Setting': 'Show Console Logs', - 'Value': 'false' + Setting: 'Show Console Logs', + Value: 'false', }, ]); }); @@ -391,26 +379,26 @@ describe('Log Commands', () => { expect(tableMessage).to.have.length(1); expect(tableMessage[0].data).to.deep.equal([ { - 'Setting': 'Log Level', - 'Value': LOG_CONFIG_DEFAULTS.LEVEL + Setting: 'Log Level', + Value: LOG_CONFIG_DEFAULTS.LEVEL, }, { - 'Setting': 'Log Path', - 'Value': LOG_CONFIG_DEFAULTS.PATH + Setting: 'Log Path', + Value: LOG_CONFIG_DEFAULTS.PATH, }, { - 'Setting': 'Show Console Logs', - 'Value': 'false' + Setting: 'Show Console Logs', + Value: 'false', }, ]); }); it('should display configured console logs setting', async () => { const cmd = new LogGetCommand([], {} as any); - sinon.stub(configHandler, 'get').returns({ - level: 'debug', + sinon.stub(configHandler, 'get').returns({ + level: 'debug', path: '/tmp/cli.log', - 'show-console-logs': true + 'show-console-logs': true, }); await cmd.run(); @@ -418,16 +406,16 @@ describe('Log Commands', () => { expect(tableMessage).to.have.length(1); expect(tableMessage[0].data).to.deep.equal([ { - 'Setting': 'Log Level', - 'Value': 'debug' + Setting: 'Log Level', + Value: 'debug', }, { - 'Setting': 'Log Path', - 'Value': '/tmp/cli.log' + Setting: 'Log Path', + Value: '/tmp/cli.log', }, { - 'Setting': 'Show Console Logs', - 'Value': 'true' + Setting: 'Show Console Logs', + Value: 'true', }, ]); }); @@ -439,23 +427,22 @@ describe('Log Commands', () => { await cmd.run(); - expect(errorMessage).to.equal(testError); + expect(handleAndLogErrorStub.called).to.be.true; + expect(handleAndLogErrorStub.calledWith(testError, { module: 'config-get-log' })).to.be.true; }); }); describe('Log Set Command - New Functionality', () => { let successMessage: string[] = []; - let errorMessage: any; + let handleAndLogErrorStub: sinon.SinonStub; beforeEach(() => { successMessage = []; - errorMessage = null; sinon.stub(cliux, 'success').callsFake((msg: string) => successMessage.push(msg)); sinon.stub(cliux, 'print').callsFake((msg: string) => successMessage.push(msg)); - sinon.stub(cliux, 'error').callsFake((_, err) => { - errorMessage = err; - }); + handleAndLogErrorStub = sinon.stub(); + sinon.replaceGetter(require('@contentstack/cli-utilities'), 'handleAndLogError', () => handleAndLogErrorStub); }); afterEach(() => { @@ -465,14 +452,14 @@ describe('Log Commands', () => { it('should use existing config values when available and no flags provided', async () => { const cmd = new LogSetCommand([], {} as any); const existingPath = '/existing/path/cli.log'; - + sinon.stub(cmd as any, 'parse').resolves({ flags: { 'show-console-logs': false }, }); - sinon.stub(configHandler, 'get').returns({ - level: 'warn', - path: existingPath + sinon.stub(configHandler, 'get').returns({ + level: 'warn', + path: existingPath, }); const setStub = sinon.stub(configHandler, 'set'); @@ -480,8 +467,8 @@ describe('Log Commands', () => { expect( setStub.calledWith('log', { - level: 'warn', - path: existingPath, + level: 'warn', + path: existingPath, 'show-console-logs': false, }), ).to.be.true; @@ -490,17 +477,17 @@ describe('Log Commands', () => { it('should mix existing config with new flag values', async () => { const cmd = new LogSetCommand([], {} as any); const newPath = './new-logs/cli.log'; - const expectedAbsolutePath = path.resolve(process.cwd(), './new-logs'); - + const expectedAbsolutePath = path.resolve(process.cwd(), './new-logs'); + sinon.stub(cmd as any, 'parse').resolves({ - flags: { + flags: { path: newPath, - 'show-console-logs': true + 'show-console-logs': true, }, }); - sinon.stub(configHandler, 'get').returns({ - level: 'error' + sinon.stub(configHandler, 'get').returns({ + level: 'error', }); const setStub = sinon.stub(configHandler, 'set'); @@ -508,9 +495,9 @@ describe('Log Commands', () => { expect( setStub.calledWith('log', { - level: 'error', - path: expectedAbsolutePath, - 'show-console-logs': true, + level: 'error', + path: expectedAbsolutePath, + 'show-console-logs': true, }), ).to.be.true; }); @@ -519,12 +506,12 @@ describe('Log Commands', () => { const cmd = new LogSetCommand([], {} as any); const windowsPath = 'C:\\logs\\cli.log'; const resolvedPath = path.resolve(process.cwd(), windowsPath); - const expectedPath = path.dirname(resolvedPath); - + const expectedPath = path.dirname(resolvedPath); + sinon.stub(cmd as any, 'parse').resolves({ - flags: { + flags: { path: windowsPath, - 'show-console-logs': false + 'show-console-logs': false, }, }); @@ -535,33 +522,33 @@ describe('Log Commands', () => { expect( setStub.calledWith('log', { - level: 'debug', - path: expectedPath, + level: 'debug', + path: expectedPath, 'show-console-logs': false, }), ).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.false; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.false; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.true; }); it('should override existing values when flags are provided with file-to-directory conversion', async () => { const cmd = new LogSetCommand([], {} as any); const newPath = './override/logs/cli.log'; const expectedAbsolutePath = path.resolve(process.cwd(), './override/logs'); // Directory, not file - + sinon.stub(cmd as any, 'parse').resolves({ - flags: { + flags: { level: 'error', path: newPath, - 'show-console-logs': true + 'show-console-logs': true, }, }); - sinon.stub(configHandler, 'get').returns({ - level: 'debug', + sinon.stub(configHandler, 'get').returns({ + level: 'debug', path: './old/path.log', - 'show-console-logs': false + 'show-console-logs': false, }); const setStub = sinon.stub(configHandler, 'set'); @@ -569,25 +556,25 @@ describe('Log Commands', () => { expect( setStub.calledWith('log', { - level: 'error', + level: 'error', path: expectedAbsolutePath, - 'show-console-logs': true, + 'show-console-logs': true, }), ).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_LEVEL_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_CONSOLE_SET'))).to.be.true; }); it('should convert file paths to directory paths automatically', async () => { const cmd = new LogSetCommand([], {} as any); const filePath = './custom/logs/debug.log'; const expectedDirectoryPath = path.resolve(process.cwd(), './custom/logs'); - + sinon.stub(cmd as any, 'parse').resolves({ - flags: { - path: filePath + flags: { + path: filePath, }, }); @@ -602,17 +589,17 @@ describe('Log Commands', () => { }), ).to.be.true; - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.true; }); it('should keep directory paths unchanged', async () => { const cmd = new LogSetCommand([], {} as any); const directoryPath = './custom/logs'; const expectedDirectoryPath = path.resolve(process.cwd(), directoryPath); - + sinon.stub(cmd as any, 'parse').resolves({ - flags: { - path: directoryPath + flags: { + path: directoryPath, }, }); @@ -623,12 +610,12 @@ describe('Log Commands', () => { expect( setStub.calledWith('log', { - path: expectedDirectoryPath, + path: expectedDirectoryPath, }), ).to.be.true; // Should show success message for path only - expect(successMessage.some(msg => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.true; + expect(successMessage.some((msg) => msg.includes('CLI_CONFIG_LOG_PATH_SET'))).to.be.true; }); }); }); diff --git a/packages/contentstack-export/package.json b/packages/contentstack-export/package.json index 4cc2956b2e..2865b03069 100644 --- a/packages/contentstack-export/package.json +++ b/packages/contentstack-export/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-export", "description": "Contentstack CLI plugin to export content from stack", - "version": "1.22.2", + "version": "1.23.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { @@ -22,7 +22,7 @@ }, "devDependencies": { "@contentstack/cli-auth": "~1.6.3", - "@contentstack/cli-config": "~1.16.2", + "@contentstack/cli-config": "~1.17.0", "@contentstack/cli-dev-dependencies": "~1.3.1", "@oclif/plugin-help": "^6.2.28", "@oclif/test": "^4.1.13", diff --git a/packages/contentstack-import/package.json b/packages/contentstack-import/package.json index 1294bd1d70..89dafc7a5f 100644 --- a/packages/contentstack-import/package.json +++ b/packages/contentstack-import/package.json @@ -1,11 +1,11 @@ { "name": "@contentstack/cli-cm-import", "description": "Contentstack CLI plugin to import content into stack", - "version": "1.30.2", + "version": "1.31.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-audit": "~1.16.2", + "@contentstack/cli-audit": "~1.17.0", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@contentstack/management": "~1.22.0", diff --git a/packages/contentstack-import/src/config/index.ts b/packages/contentstack-import/src/config/index.ts index 75f8d6bc8b..76b70e1121 100644 --- a/packages/contentstack-import/src/config/index.ts +++ b/packages/contentstack-import/src/config/index.ts @@ -33,6 +33,7 @@ const config: DefaultConfig = { 'stack', 'assets', 'taxonomies', + 'composable-studio', 'extensions', 'marketplace-apps', 'global-fields', @@ -44,7 +45,6 @@ const config: DefaultConfig = { 'variant-entries', 'labels', 'webhooks', - 'composable-studio', ], locales: { dirName: 'locales', diff --git a/packages/contentstack-import/src/import/modules/composable-studio.ts b/packages/contentstack-import/src/import/modules/composable-studio.ts index 521384692d..04cd04ef8d 100644 --- a/packages/contentstack-import/src/import/modules/composable-studio.ts +++ b/packages/contentstack-import/src/import/modules/composable-studio.ts @@ -20,6 +20,7 @@ export default class ImportComposableStudio { private apiClient: HttpClient; private envUidMapperPath: string; private envUidMapper: Record; + private projectMapperPath: string; constructor({ importConfig }: ModuleClassParams) { this.importConfig = importConfig; @@ -28,6 +29,7 @@ export default class ImportComposableStudio { // Setup paths this.composableStudioPath = join(this.importConfig.backupDir, this.composableStudioConfig.dirName); + this.projectMapperPath = join(this.importConfig.backupDir, 'mapper', this.composableStudioConfig.dirName); this.composableStudioFilePath = join(this.composableStudioPath, this.composableStudioConfig.fileName); this.envUidMapperPath = join(this.importConfig.backupDir, 'mapper', 'environments', 'uid-mapping.json'); this.envUidMapper = {}; @@ -244,6 +246,14 @@ export default class ImportComposableStudio { if (response.status >= 200 && response.status < 300) { projectCreated = true; log.debug(`Project created successfully with UID: ${response.data?.uid}`, this.importConfig.context); + + // Create mapper directory if it doesn't exist + await fsUtil.makeDirectory(this.projectMapperPath); + + // write the project to file + const projectFileSuccessPath = join(this.projectMapperPath, this.composableStudioConfig.fileName); + fsUtil.writeFile(projectFileSuccessPath, response.data as unknown as Record); + log.debug(`Project written to: ${projectFileSuccessPath}`, this.importConfig.context); } else { throw new Error(`API call failed with status ${response.status}: ${JSON.stringify(response.data)}`); } diff --git a/packages/contentstack-import/src/import/modules/content-types.ts b/packages/contentstack-import/src/import/modules/content-types.ts index c153921a58..c905ddbafb 100644 --- a/packages/contentstack-import/src/import/modules/content-types.ts +++ b/packages/contentstack-import/src/import/modules/content-types.ts @@ -8,7 +8,7 @@ import * as path from 'path'; import { isEmpty, find, cloneDeep, map } from 'lodash'; import { sanitizePath, log, handleAndLogError } from '@contentstack/cli-utilities'; -import { fsUtil, schemaTemplate, lookupExtension, lookUpTaxonomy } from '../../utils'; +import { fsUtil, schemaTemplate, lookupExtension, lookUpTaxonomy, fileHelper } from '../../utils'; import { ImportConfig, ModuleClassParams } from '../../types'; import BaseClass, { ApiOptions } from './base-class'; import { updateFieldRules } from '../../utils/content-type-helper'; @@ -54,6 +54,8 @@ export default class ContentTypesImport extends BaseClass { public taxonomies: Record; private extPendingPath: string; private isExtensionsUpdate = false; + private composableStudioSuccessPath: string; + private composableStudioExportPath: string; constructor({ importConfig, stackAPIClient }: ModuleClassParams) { super({ importConfig, stackAPIClient }); @@ -84,6 +86,26 @@ export default class ContentTypesImport extends BaseClass { ['schema.json', 'true'], ['.DS_Store', 'true'], ]); + + // Initialize composable studio paths if config exists + if (this.importConfig.modules['composable-studio']) { + this.composableStudioSuccessPath = path.join( + sanitizePath(this.importConfig.data), + 'mapper', + this.importConfig.modules['composable-studio'].dirName, + this.importConfig.modules['composable-studio'].fileName, + ); + + this.composableStudioExportPath = path.join( + sanitizePath(this.importConfig.data), + this.importConfig.modules['composable-studio'].dirName, + this.importConfig.modules['composable-studio'].fileName, + ); + } else { + this.composableStudioSuccessPath = ''; + this.composableStudioExportPath = ''; + } + this.cTs = []; this.createdCTs = []; this.titleToUIdMap = new Map(); @@ -110,6 +132,38 @@ export default class ContentTypesImport extends BaseClass { } log.debug(`Found ${this.cTs.length} content types to import`, this.importConfig.context); + // If success file doesn't exist but export file does, skip the composition content type + // Only check if composable studio paths are configured + if ( + this.composableStudioSuccessPath && + this.composableStudioExportPath && + !fileHelper.fileExistsSync(this.composableStudioSuccessPath) && + fileHelper.fileExistsSync(this.composableStudioExportPath) + ) { + const exportedProject = fileHelper.readFileSync(this.composableStudioExportPath) as { + contentTypeUid: string; + }; + + if (exportedProject?.contentTypeUid) { + const originalCount = this.cTs.length; + this.cTs = this.cTs.filter((ct: Record) => { + const shouldSkip = ct.uid === exportedProject.contentTypeUid; + if (shouldSkip) { + log.info( + `Skipping content type '${ct.uid}' as Composable Studio project was not created successfully`, + this.importConfig.context, + ); + } + return !shouldSkip; + }); + + const skippedCount = originalCount - this.cTs.length; + if (skippedCount > 0) { + log.debug(`Filtered out ${skippedCount} composition content type(s) from import`, this.importConfig.context); + } + } + } + await fsUtil.makeDirectory(this.cTsMapperPath); log.debug('Created content types mapper directory.', this.importConfig.context); diff --git a/packages/contentstack-import/src/import/modules/entries.ts b/packages/contentstack-import/src/import/modules/entries.ts index b95d32276b..9e319be8a6 100644 --- a/packages/contentstack-import/src/import/modules/entries.ts +++ b/packages/contentstack-import/src/import/modules/entries.ts @@ -57,6 +57,8 @@ export default class EntriesImport extends BaseClass { public rteCTs: any; public rteCTsWithRef: any; public entriesForVariant: Array<{ content_type: string; locale: string; entry_uid: string }> = []; + private composableStudioSuccessPath: string; + private composableStudioExportPath: string; constructor({ importConfig, stackAPIClient }: ModuleClassParams) { super({ importConfig, stackAPIClient }); @@ -92,6 +94,26 @@ export default class EntriesImport extends BaseClass { sanitizePath(importConfig.modules.locales.dirName), sanitizePath(importConfig.modules.locales.fileName), ); + + // Initialize composable studio paths if config exists + if (this.importConfig.modules['composable-studio']) { + this.composableStudioSuccessPath = path.join( + sanitizePath(this.importConfig.data), + 'mapper', + this.importConfig.modules['composable-studio'].dirName, + this.importConfig.modules['composable-studio'].fileName, + ); + + this.composableStudioExportPath = path.join( + sanitizePath(this.importConfig.data), + this.importConfig.modules['composable-studio'].dirName, + this.importConfig.modules['composable-studio'].fileName, + ); + } else { + this.composableStudioSuccessPath = ''; + this.composableStudioExportPath = ''; + } + this.importConcurrency = this.entriesConfig.importConcurrency || importConfig.importConcurrency; this.entriesUidMapper = {}; this.modifiedCTs = []; @@ -116,6 +138,40 @@ export default class EntriesImport extends BaseClass { return; } log.debug(`Found ${this.cTs.length} content types for entry import`, this.importConfig.context); + // If success file doesn't exist but export file does, skip the composition entries + // Only check if composable studio paths are configured + if ( + this.composableStudioSuccessPath && + this.composableStudioExportPath && + !fileHelper.fileExistsSync(this.composableStudioSuccessPath) && + fileHelper.fileExistsSync(this.composableStudioExportPath) + ) { + const exportedProject = fileHelper.readFileSync(this.composableStudioExportPath) as { + contentTypeUid: string; + }; + + if (exportedProject?.contentTypeUid) { + const originalCount = this.cTs.length; + this.cTs = this.cTs.filter((ct: Record) => { + const shouldSkip = ct.uid === exportedProject.contentTypeUid; + if (shouldSkip) { + log.info( + `Skipping entries for content type '${ct.uid}' as Composable Studio project was not created successfully`, + this.importConfig.context, + ); + } + return !shouldSkip; + }); + + const skippedCount = originalCount - this.cTs.length; + if (skippedCount > 0) { + log.debug( + `Filtered out ${skippedCount} composition content type(s) from entry import`, + this.importConfig.context, + ); + } + } + } this.installedExtensions = ( (fsUtil.readFile(this.marketplaceAppMapperPath) as any) || { extension_uid: {} } @@ -124,10 +180,7 @@ export default class EntriesImport extends BaseClass { this.assetUidMapper = (fsUtil.readFile(this.assetUidMapperPath) as Record) || {}; this.assetUrlMapper = (fsUtil.readFile(this.assetUrlMapperPath) as Record) || {}; - log.debug( - `Loaded asset mappings – UIDs: ${Object.keys(this.assetUidMapper).length}`, - this.importConfig.context, - ); + log.debug(`Loaded asset mappings – UIDs: ${Object.keys(this.assetUidMapper).length}`, this.importConfig.context); this.taxonomies = (fsUtil.readFile(this.taxonomiesPath) || {}) as Record; log.debug('Loaded taxonomy data for entry processing.', this.importConfig.context); diff --git a/packages/contentstack-import/test/unit/import/modules/content-types.test.ts b/packages/contentstack-import/test/unit/import/modules/content-types.test.ts index 09036ba4e3..5f9989289f 100644 --- a/packages/contentstack-import/test/unit/import/modules/content-types.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/content-types.test.ts @@ -82,6 +82,10 @@ describe('ImportContentTypes', () => { writeConcurrency: 1, fileName: 'globalfields.json', limit: 100 + }, + 'composable-studio': { + dirName: 'composable_studio', + fileName: 'composable_studio.json' } }, backupDir: '/test/backup', diff --git a/packages/contentstack-import/test/unit/import/modules/entries.test.ts b/packages/contentstack-import/test/unit/import/modules/entries.test.ts index 3815ff8e53..eaaa2ba6f1 100644 --- a/packages/contentstack-import/test/unit/import/modules/entries.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/entries.test.ts @@ -6,7 +6,6 @@ import { FsUtility } from '@contentstack/cli-utilities'; import { fsUtil, fileHelper } from '../../../../src/utils'; import * as path from 'path'; - const mockData = require('./mock-data/entries/content-types.json'); const mockEntries = require('./mock-data/entries/entries.json'); const mockLocales = require('./mock-data/entries/locales.json'); @@ -49,12 +48,12 @@ describe('EntriesImport', () => { delete: sinon.stub().resolves({ uid: 'deleted-entry-uid' }), publish: sinon.stub().resolves({ uid: 'published-entry-uid' }), query: sinon.stub().returns({ - findOne: sinon.stub().resolves({ items: [{ uid: 'existing-entry-uid', title: 'Existing Entry' }] }) - }) + findOne: sinon.stub().resolves({ items: [{ uid: 'existing-entry-uid', title: 'Existing Entry' }] }), + }), }), fetch: sinon.stub().resolves({ uid: 'ct-uid', schema: [] }), - update: sinon.stub().resolves({ uid: 'updated-ct-uid' }) - }) + update: sinon.stub().resolves({ uid: 'updated-ct-uid' }), + }), }; mockImportConfig = { @@ -73,23 +72,27 @@ describe('EntriesImport', () => { sessionId: 'session-123', apiKey: 'test', orgId: 'org-123', - authenticationMethod: 'Basic Auth' + authenticationMethod: 'Basic Auth', }, modules: { types: ['entries'], - entries: { + entries: { dirName: 'entries', chunkFileSize: 100, invalidKeys: ['_version', 'created_at', 'updated_at'], - importConcurrency: 5 + importConcurrency: 5, }, 'content-types': { - dirName: 'content_types' + dirName: 'content_types', }, locales: { dirName: 'locales', - fileName: 'locales.json' - } + fileName: 'locales.json', + }, + 'composable-studio': { + dirName: 'composable_studio', + fileName: 'composable_studio.json', + }, }, backupDir: '/test/backup', cliLogsPath: '/test/logs', @@ -103,13 +106,13 @@ describe('EntriesImport', () => { skipEntriesPublish: false, 'exclude-global-modules': false, replaceExisting: false, - importConcurrency: 5 + importConcurrency: 5, } as any; entriesImport = new EntriesImport({ importConfig: mockImportConfig as any, stackAPIClient: mockStackClient, - moduleName: 'entries' + moduleName: 'entries', }); makeConcurrentCallStub = sinon.stub(entriesImport as any, 'makeConcurrentCall').resolves(); @@ -171,16 +174,16 @@ describe('EntriesImport', () => { entries: { dirName: 'entries', chunkFileSize: 100, - invalidKeys: ['_version', 'created_at', 'updated_at'] + invalidKeys: ['_version', 'created_at', 'updated_at'], // No importConcurrency - } - } + }, + }, }; const entriesImportFallback = new EntriesImport({ importConfig: configWithoutEntriesConcurrency as any, stackAPIClient: mockStackClient, - moduleName: 'entries' + moduleName: 'entries', }); expect(entriesImportFallback['importConcurrency']).to.equal(5); @@ -193,7 +196,7 @@ describe('EntriesImport', () => { mockData.simpleContentType, mockData.contentTypeWithReferences, mockData.contentTypeWithJsonRte, - mockData.contentTypeWithAssets + mockData.contentTypeWithAssets, ]; entriesImport['installedExtensions'] = mockMappers.installedExtensions; }); @@ -204,7 +207,7 @@ describe('EntriesImport', () => { const onSuccess = options.apiParams.resolve; onSuccess({ response: { uid: 'ct-uid' }, - apiData: { uid: 'ct-uid' } + apiData: { uid: 'ct-uid' }, }); }); @@ -219,7 +222,7 @@ describe('EntriesImport', () => { const onReject = options.apiParams.reject; onReject({ error: new Error('Content type processing failed'), - apiData: { uid: 'ct-uid' } + apiData: { uid: 'ct-uid' }, }); }); @@ -239,16 +242,16 @@ describe('EntriesImport', () => { uid: 'mandatory_field', data_type: 'text', display_name: 'Mandatory Field', - mandatory: true - } - ] + mandatory: true, + }, + ], }; const apiOptions = { apiData: contentTypeWithReferences, entity: 'update-cts' as const, resolve: sinon.stub(), - reject: sinon.stub() + reject: sinon.stub(), }; const result = entriesImport['serializeUpdateCTs'](apiOptions); @@ -267,16 +270,16 @@ describe('EntriesImport', () => { uid: 'mandatory_field', data_type: 'text', display_name: 'Mandatory Field', - mandatory: true - } - ] + mandatory: true, + }, + ], }; const apiOptions = { apiData: contentTypeWithJsonRte, entity: 'update-cts' as const, resolve: sinon.stub(), - reject: sinon.stub() + reject: sinon.stub(), }; const result = entriesImport['serializeUpdateCTs'](apiOptions); @@ -297,7 +300,7 @@ describe('EntriesImport', () => { data_type: 'text', display_name: 'Title', mandatory: true, - unique: true + unique: true, }, { uid: 'rte_field', @@ -305,24 +308,24 @@ describe('EntriesImport', () => { display_name: 'RTE Field', field_metadata: { rich_text_type: true, - embed_entry: true + embed_entry: true, }, - reference_to: ['simple_ct'] + reference_to: ['simple_ct'], }, { uid: 'mandatory_field', data_type: 'text', display_name: 'Mandatory Field', - mandatory: true - } - ] + mandatory: true, + }, + ], }; const apiOptions = { apiData: contentTypeWithRte, entity: 'update-cts' as const, resolve: sinon.stub(), - reject: sinon.stub() + reject: sinon.stub(), }; const result = entriesImport['serializeUpdateCTs'](apiOptions); @@ -338,7 +341,7 @@ describe('EntriesImport', () => { apiData: mockData.simpleContentType, entity: 'update-cts' as const, resolve: sinon.stub(), - reject: sinon.stub() + reject: sinon.stub(), }; const result = entriesImport['serializeUpdateCTs'](apiOptions); @@ -356,22 +359,22 @@ describe('EntriesImport', () => { uid: 'mandatory_field', data_type: 'text', display_name: 'Mandatory Field', - mandatory: true - } + mandatory: true, + }, ], field_rules: [ { conditions: [{ operand_field: 'title', operator: 'equals', value: 'test' }], - actions: [{ operand_field: 'description', action: 'show' }] - } - ] + actions: [{ operand_field: 'description', action: 'show' }], + }, + ], }; const apiOptions = { apiData: contentTypeWithFieldRules, entity: 'update-cts' as const, resolve: sinon.stub(), - reject: sinon.stub() + reject: sinon.stub(), }; const result = entriesImport['serializeUpdateCTs'](apiOptions); @@ -389,22 +392,22 @@ describe('EntriesImport', () => { data_type: 'text', display_name: 'Title', mandatory: true, - unique: true + unique: true, }, { uid: 'mandatory_field', data_type: 'text', display_name: 'Mandatory Field', - mandatory: true - } - ] + mandatory: true, + }, + ], }; const apiOptions = { apiData: contentTypeWithMandatory, entity: 'update-cts' as const, resolve: sinon.stub(), - reject: sinon.stub() + reject: sinon.stub(), }; entriesImport['serializeUpdateCTs'](apiOptions); @@ -424,7 +427,7 @@ describe('EntriesImport', () => { const onSuccess = options.apiParams.resolve; onSuccess({ response: { uid: 'ct-uid' }, - apiData: { uid: 'ct-uid' } + apiData: { uid: 'ct-uid' }, }); }); @@ -438,7 +441,7 @@ describe('EntriesImport', () => { const onReject = options.apiParams.reject; onReject({ error: new Error('Content type update failed'), - apiData: { uid: 'ct-uid' } + apiData: { uid: 'ct-uid' }, }); }); @@ -458,7 +461,7 @@ describe('EntriesImport', () => { apiData: mockData.contentTypeWithReferences, entity: 'update-cts' as const, resolve: sinon.stub(), - reject: sinon.stub() + reject: sinon.stub(), }; const result = entriesImport['serializeUpdateCTsWithRef'](apiOptions); @@ -473,16 +476,16 @@ describe('EntriesImport', () => { field_rules: [ { conditions: [{ operand_field: 'title', operator: 'equals', value: 'test' }], - actions: [{ operand_field: 'description', action: 'show' }] - } - ] + actions: [{ operand_field: 'description', action: 'show' }], + }, + ], }; const apiOptions = { apiData: contentTypeWithFieldRules, entity: 'update-cts' as const, resolve: sinon.stub(), - reject: sinon.stub() + reject: sinon.stub(), }; const result = entriesImport['serializeUpdateCTsWithRef'](apiOptions); @@ -495,8 +498,8 @@ describe('EntriesImport', () => { beforeEach(() => { entriesImport['cTs'] = [mockData.contentTypeWithFieldRules]; entriesImport['entriesUidMapper'] = { - 'entry_uid_1': 'new_entry_uid_1', - 'entry_uid_2': 'new_entry_uid_2' + entry_uid_1: 'new_entry_uid_1', + entry_uid_2: 'new_entry_uid_2', }; fsUtilityReadFileStub.callsFake((path) => { if (path.includes('field_rules_uid.json')) { @@ -513,11 +516,11 @@ describe('EntriesImport', () => { const mockContentTypeResponse = { uid: 'field_rules_ct', field_rules: mockData.contentTypeWithFieldRules.field_rules, - update: sinon.stub().resolves({ uid: 'updated-ct' }) + update: sinon.stub().resolves({ uid: 'updated-ct' }), }; mockStackClient.contentType.returns({ - fetch: sinon.stub().resolves(mockContentTypeResponse) + fetch: sinon.stub().resolves(mockContentTypeResponse), }); await entriesImport['updateFieldRules'](); @@ -542,7 +545,7 @@ describe('EntriesImport', () => { it('should handle content type not found', async () => { mockStackClient.contentType.returns({ - fetch: sinon.stub().resolves(null) + fetch: sinon.stub().resolves(null), }); await entriesImport['updateFieldRules'](); @@ -553,7 +556,7 @@ describe('EntriesImport', () => { it('should handle content type without field rules', async () => { const contentTypeWithoutFieldRules = { ...mockData.contentTypeWithFieldRules, - field_rules: undefined + field_rules: undefined, }; fsUtilityReadFileStub.callsFake((path) => { @@ -583,11 +586,11 @@ describe('EntriesImport', () => { mockData.contentTypeWithRte, mockData.contentTypeWithAssets, mockData.contentTypeWithTaxonomy, - mockData.contentTypeWithGroups + mockData.contentTypeWithGroups, ]; entriesImport['locales'] = [ { code: 'en-us', name: 'English (United States)' }, - { code: 'fr-fr', name: 'French (France)' } + { code: 'fr-fr', name: 'French (France)' }, ]; entriesImport['installedExtensions'] = mockMappers.installedExtensions; entriesImport['assetUidMapper'] = mockMappers.assetUidMapper; @@ -603,7 +606,7 @@ describe('EntriesImport', () => { expect(result).to.have.lengthOf(14); // 7 content types × 2 locales // Check that all content types are included - const contentTypes = result.map(option => option.cTUid); + const contentTypes = result.map((option) => option.cTUid); expect(contentTypes).to.include('simple_ct'); expect(contentTypes).to.include('ref_ct'); expect(contentTypes).to.include('json_rte_ct'); @@ -613,12 +616,12 @@ describe('EntriesImport', () => { expect(contentTypes).to.include('group_ct'); // Check that all locales are included - const locales = result.map(option => option.locale); + const locales = result.map((option) => option.locale); expect(locales).to.include('en-us'); expect(locales).to.include('fr-fr'); // Check structure of each option - result.forEach(option => { + result.forEach((option) => { expect(option).to.have.property('cTUid'); expect(option).to.have.property('locale'); expect(option.cTUid).to.be.a('string'); @@ -647,7 +650,7 @@ describe('EntriesImport', () => { it('should handle empty chunks', async () => { // Mock FsUtility to return empty indexer const mockFsUtility = { - indexFileContent: {} + indexFileContent: {}, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); @@ -660,17 +663,17 @@ describe('EntriesImport', () => { // Mock FsUtility for entry creation const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1', 'entry2'] - } + 'chunk1.json': ['entry1', 'entry2'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + // Mock readChunkFiles.next() to return entry data const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.simpleEntry, - 'entry2': mockEntries.entryWithReferences - }) + entry1: mockEntries.simpleEntry, + entry2: mockEntries.entryWithReferences, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -691,8 +694,8 @@ describe('EntriesImport', () => { locale: 'en-us', cTUid: 'simple_ct', entryFileName: 'chunk1.json', - isMasterLocale: true - } + isMasterLocale: true, + }, }); }); @@ -705,30 +708,30 @@ describe('EntriesImport', () => { expect(mockReadChunkFiles.next.called).to.be.true; expect(mockWriteIntoFile.called).to.be.true; expect(mockCompleteFile.called).to.be.true; - + // Check that UID mapping was created expect(entriesImport['entriesUidMapper']['simple_entry_1']).to.equal('new_simple_entry_1'); - + // Check that entry was added to variant list expect(entriesImport['entriesForVariant']).to.deep.include({ content_type: 'simple_ct', entry_uid: 'simple_entry_1', - locale: 'en-us' + locale: 'en-us', }); }); it('should process entries successfully in non-master locale', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.simpleEntry - }) + entry1: mockEntries.simpleEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -747,8 +750,8 @@ describe('EntriesImport', () => { locale: 'fr-fr', cTUid: 'simple_ct', entryFileName: 'chunk1.json', - isMasterLocale: false - } + isMasterLocale: false, + }, }); }); @@ -758,27 +761,27 @@ describe('EntriesImport', () => { await entriesImport['createEntries']({ cTUid: 'simple_ct', locale: 'fr-fr' }); expect(makeConcurrentCallStub.called).to.be.true; - + // Check that entry was added to auto-created entries for cleanup expect(entriesImport['autoCreatedEntries']).to.deep.include({ cTUid: 'simple_ct', locale: 'fr-fr', - entryUid: 'new_simple_entry_1' + entryUid: 'new_simple_entry_1', }); }); it('should handle localized entries correctly', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.localizedEntry - }) + entry1: mockEntries.localizedEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -800,34 +803,34 @@ describe('EntriesImport', () => { isMasterLocale: false, [mockEntries.localizedEntry.uid]: { isLocalized: true, - entryOldUid: 'old_localized_entry_1' - } - } + entryOldUid: 'old_localized_entry_1', + }, + }, }); }); await entriesImport['createEntries']({ cTUid: 'simple_ct', locale: 'fr-fr' }); expect(makeConcurrentCallStub.called).to.be.true; - + // Check that localized entry was added to variant list with old UID expect(entriesImport['entriesForVariant']).to.deep.include({ content_type: 'simple_ct', entry_uid: 'old_localized_entry_1', - locale: 'fr-fr' + locale: 'fr-fr', }); }); it('should handle chunk read errors', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { - next: sinon.stub().rejects(new Error('Chunk read failed')) + next: sinon.stub().rejects(new Error('Chunk read failed')), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -840,15 +843,15 @@ describe('EntriesImport', () => { it('should handle error code 119 with replaceExisting true', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.existingEntry - }) + entry1: mockEntries.existingEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -860,9 +863,9 @@ describe('EntriesImport', () => { makeConcurrentCallStub.callsFake(async (options) => { const onReject = options.apiParams.reject; onReject({ - error: { - errorCode: 119, - errors: { title: 'already exists' } + error: { + errorCode: 119, + errors: { title: 'already exists' }, }, apiData: mockEntries.existingEntry, additionalInfo: { @@ -870,8 +873,8 @@ describe('EntriesImport', () => { locale: 'en-us', cTUid: 'simple_ct', entryFileName: 'chunk1.json', - isMasterLocale: true - } + isMasterLocale: true, + }, }); }); @@ -888,15 +891,15 @@ describe('EntriesImport', () => { it('should handle error code 119 with skipExisting true', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.existingEntry - }) + entry1: mockEntries.existingEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -908,9 +911,9 @@ describe('EntriesImport', () => { makeConcurrentCallStub.callsFake(async (options) => { const onReject = options.apiParams.reject; onReject({ - error: { - errorCode: 119, - errors: { title: 'already exists' } + error: { + errorCode: 119, + errors: { title: 'already exists' }, }, apiData: mockEntries.existingEntry, additionalInfo: { @@ -918,8 +921,8 @@ describe('EntriesImport', () => { locale: 'en-us', cTUid: 'simple_ct', entryFileName: 'chunk1.json', - isMasterLocale: true - } + isMasterLocale: true, + }, }); }); @@ -934,15 +937,15 @@ describe('EntriesImport', () => { it('should handle error code 119 without title/uid errors', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.existingEntry - }) + entry1: mockEntries.existingEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -954,9 +957,9 @@ describe('EntriesImport', () => { makeConcurrentCallStub.callsFake(async (options) => { const onReject = options.apiParams.reject; onReject({ - error: { - errorCode: 119, - errors: { other: 'some error' } + error: { + errorCode: 119, + errors: { other: 'some error' }, }, apiData: mockEntries.existingEntry, additionalInfo: { @@ -964,8 +967,8 @@ describe('EntriesImport', () => { locale: 'en-us', cTUid: 'simple_ct', entryFileName: 'chunk1.json', - isMasterLocale: true - } + isMasterLocale: true, + }, }); }); @@ -976,22 +979,22 @@ describe('EntriesImport', () => { expect(entriesImport['failedEntries']).to.deep.include({ content_type: 'simple_ct', locale: 'en-us', - entry: { uid: 'existing_entry_1', title: 'Existing Entry' } + entry: { uid: 'existing_entry_1', title: 'Existing Entry' }, }); }); it('should handle other error codes', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.simpleEntry - }) + entry1: mockEntries.simpleEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -1003,9 +1006,9 @@ describe('EntriesImport', () => { makeConcurrentCallStub.callsFake(async (options) => { const onReject = options.apiParams.reject; onReject({ - error: { - errorCode: 500, - message: 'Server error' + error: { + errorCode: 500, + message: 'Server error', }, apiData: mockEntries.simpleEntry, additionalInfo: { @@ -1013,8 +1016,8 @@ describe('EntriesImport', () => { locale: 'en-us', cTUid: 'simple_ct', entryFileName: 'chunk1.json', - isMasterLocale: true - } + isMasterLocale: true, + }, }); }); @@ -1025,22 +1028,22 @@ describe('EntriesImport', () => { expect(entriesImport['failedEntries']).to.deep.include({ content_type: 'simple_ct', locale: 'en-us', - entry: { uid: 'simple_entry_1', title: 'Simple Entry 1' } + entry: { uid: 'simple_entry_1', title: 'Simple Entry 1' }, }); }); it('should remove failed entries from variant list', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.simpleEntry - }) + entry1: mockEntries.simpleEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -1051,15 +1054,15 @@ describe('EntriesImport', () => { // Pre-populate variant list entriesImport['entriesForVariant'] = [ - { content_type: 'simple_ct', entry_uid: 'simple_entry_1', locale: 'en-us' } + { content_type: 'simple_ct', entry_uid: 'simple_entry_1', locale: 'en-us' }, ]; makeConcurrentCallStub.callsFake(async (options) => { const onReject = options.apiParams.reject; onReject({ - error: { - errorCode: 500, - message: 'Server error' + error: { + errorCode: 500, + message: 'Server error', }, apiData: mockEntries.simpleEntry, additionalInfo: { @@ -1067,8 +1070,8 @@ describe('EntriesImport', () => { locale: 'en-us', cTUid: 'simple_ct', entryFileName: 'chunk1.json', - isMasterLocale: true - } + isMasterLocale: true, + }, }); }); @@ -1078,7 +1081,7 @@ describe('EntriesImport', () => { expect(entriesImport['entriesForVariant']).to.not.deep.include({ content_type: 'simple_ct', entry_uid: 'simple_entry_1', - locale: 'en-us' + locale: 'en-us', }); }); @@ -1086,21 +1089,21 @@ describe('EntriesImport', () => { const mockFsUtility = { indexFileContent: { 'chunk1.json': ['entry1'], - 'chunk2.json': ['entry2'] - } + 'chunk2.json': ['entry2'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + let chunkCallCount = 0; const mockReadChunkFiles = { next: sinon.stub().callsFake(() => { chunkCallCount++; if (chunkCallCount === 1) { - return Promise.resolve({ 'entry1': mockEntries.simpleEntry }); + return Promise.resolve({ entry1: mockEntries.simpleEntry }); } else { - return Promise.resolve({ 'entry2': mockEntries.entryWithReferences }); + return Promise.resolve({ entry2: mockEntries.entryWithReferences }); } - }) + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -1119,8 +1122,8 @@ describe('EntriesImport', () => { locale: 'en-us', cTUid: 'simple_ct', entryFileName: 'chunk1.json', - isMasterLocale: true - } + isMasterLocale: true, + }, }); }); @@ -1142,8 +1145,8 @@ describe('EntriesImport', () => { cTUid: 'simple_ct', locale: 'en-us', contentType: mockData.simpleContentType, - isMasterLocale: true - } + isMasterLocale: true, + }, }; const result = entriesImport['serializeEntries'](apiOptions); @@ -1163,8 +1166,8 @@ describe('EntriesImport', () => { cTUid: 'json_rte_ct', locale: 'en-us', contentType: mockData.contentTypeWithJsonRte, - isMasterLocale: true - } + isMasterLocale: true, + }, }; entriesImport['jsonRteCTs'] = ['json_rte_ct']; @@ -1186,8 +1189,8 @@ describe('EntriesImport', () => { cTUid: 'rte_ct', locale: 'en-us', contentType: mockData.contentTypeWithRte, - isMasterLocale: true - } + isMasterLocale: true, + }, }; entriesImport['rteCTsWithRef'] = ['rte_ct']; @@ -1208,8 +1211,8 @@ describe('EntriesImport', () => { cTUid: 'taxonomy_ct', locale: 'en-us', contentType: mockData.contentTypeWithTaxonomy, - isMasterLocale: true - } + isMasterLocale: true, + }, }; const result = entriesImport['serializeEntries'](apiOptions); @@ -1228,11 +1231,11 @@ describe('EntriesImport', () => { cTUid: 'simple_ct', locale: 'fr-fr', contentType: mockData.simpleContentType, - isMasterLocale: false - } + isMasterLocale: false, + }, }; - entriesImport['entriesUidMapper'] = { 'old_localized_entry_1': 'new_localized_entry_1' }; + entriesImport['entriesUidMapper'] = { old_localized_entry_1: 'new_localized_entry_1' }; // Mock lookupAssets to modify the entry in place and return it const originalLookupAssets = require('../../../../src/utils').lookupAssets; @@ -1244,18 +1247,18 @@ describe('EntriesImport', () => { // Return the modified entry return entryData.entry; }, - configurable: true + configurable: true, }); // Mock the stack client for localized entry processing const mockEntryResponse = { uid: 'new_localized_entry_1' }; const mockEntry = { - uid: sinon.stub().returns(mockEntryResponse) + uid: sinon.stub().returns(mockEntryResponse), }; mockStackClient.contentType = sinon.stub().returns({ - entry: sinon.stub().returns(mockEntry) + entry: sinon.stub().returns(mockEntry), }); - + // Mock the stack client on the entriesImport instance sinon.stub(entriesImport, 'stack').value(mockStackClient); @@ -1265,13 +1268,13 @@ describe('EntriesImport', () => { expect(result.apiData.uid).to.equal('new_localized_entry_1'); // UID is mapped for localized entries expect(result.additionalInfo['new_localized_entry_1']).to.deep.include({ isLocalized: true, - entryOldUid: 'old_localized_entry_1' + entryOldUid: 'old_localized_entry_1', }); // Restore original function Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { value: originalLookupAssets, - configurable: true + configurable: true, }); }); @@ -1285,8 +1288,8 @@ describe('EntriesImport', () => { cTUid: 'simple_ct', locale: 'en-us', contentType: mockData.simpleContentType, - isMasterLocale: true - } + isMasterLocale: true, + }, }; // Create an entry that will cause an error during serialization @@ -1294,23 +1297,23 @@ describe('EntriesImport', () => { uid: 'invalid_entry', title: 'Invalid Entry', // This will cause an error in lookupAssets due to missing required properties - invalid_field: 'test' + invalid_field: 'test', }; const invalidApiOptions = { ...apiOptions, - apiData: invalidEntry + apiData: invalidEntry, }; // Mock the lookupAssets function to throw an error const lookupAssetsStub = sinon.stub().throws(new Error('Asset lookup failed')); const utils = require('../../../../src/utils'); - + // Use Object.defineProperty to override the getter Object.defineProperty(utils, 'lookupAssets', { value: lookupAssetsStub, writable: true, - configurable: true + configurable: true, }); const result = entriesImport['serializeEntries'](invalidApiOptions); @@ -1321,7 +1324,7 @@ describe('EntriesImport', () => { expect(entriesImport['failedEntries'][0]).to.deep.include({ content_type: 'simple_ct', locale: 'en-us', - entry: { uid: 'invalid_entry', title: 'Invalid Entry' } + entry: { uid: 'invalid_entry', title: 'Invalid Entry' }, }); }); }); @@ -1330,7 +1333,7 @@ describe('EntriesImport', () => { it('should create variant entry data file', () => { entriesImport['entriesForVariant'] = [ { content_type: 'simple_ct', entry_uid: 'entry_1', locale: 'fr-fr' }, - { content_type: 'ref_ct', entry_uid: 'entry_2', locale: 'en-us' } + { content_type: 'ref_ct', entry_uid: 'entry_2', locale: 'en-us' }, ]; // Mock the writeFileSync function to avoid file system errors @@ -1375,11 +1378,11 @@ describe('EntriesImport', () => { mockData.simpleContentType, mockData.contentTypeWithReferences, mockData.contentTypeWithJsonRte, - mockData.contentTypeWithRte + mockData.contentTypeWithRte, ]; entriesImport['locales'] = [ { code: 'en-us', name: 'English (United States)' }, - { code: 'fr-fr', name: 'French (France)' } + { code: 'fr-fr', name: 'French (France)' }, ]; entriesImport['refCTs'] = ['ref_ct', 'json_rte_ct', 'rte_ct']; entriesImport['jsonRteCTs'] = ['json_rte_ct']; @@ -1389,10 +1392,10 @@ describe('EntriesImport', () => { entriesImport['assetUrlMapper'] = mockMappers.assetUrlMapper; entriesImport['taxonomies'] = mockMappers.taxonomies; entriesImport['entriesUidMapper'] = { - 'simple_entry_1': 'new_simple_entry_1', - 'ref_entry_1': 'new_ref_entry_1', - 'json_rte_entry_1': 'new_json_rte_entry_1', - 'rte_entry_1': 'new_rte_entry_1' + simple_entry_1: 'new_simple_entry_1', + ref_entry_1: 'new_ref_entry_1', + json_rte_entry_1: 'new_json_rte_entry_1', + rte_entry_1: 'new_rte_entry_1', }; }); @@ -1404,13 +1407,13 @@ describe('EntriesImport', () => { expect(result).to.have.lengthOf(6); // 3 ref content types × 2 locales // Check that all reference content types are included - const contentTypes = result.map(option => option.cTUid); + const contentTypes = result.map((option) => option.cTUid); expect(contentTypes).to.include('ref_ct'); expect(contentTypes).to.include('json_rte_ct'); expect(contentTypes).to.include('rte_ct'); // Check that all locales are included - const locales = result.map(option => option.locale); + const locales = result.map((option) => option.locale); expect(locales).to.include('en-us'); expect(locales).to.include('fr-fr'); }); @@ -1436,7 +1439,7 @@ describe('EntriesImport', () => { it('should handle empty chunks', async () => { // Mock FsUtility to return empty indexer const mockFsUtility = { - indexFileContent: {} + indexFileContent: {}, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); @@ -1449,17 +1452,17 @@ describe('EntriesImport', () => { // Mock FsUtility for entry updates const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1', 'entry2'] - } + 'chunk1.json': ['entry1', 'entry2'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + // Mock readChunkFiles.next() to return entry data const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.entryWithReferences, - 'entry2': mockEntries.simpleEntry - }) + entry1: mockEntries.entryWithReferences, + entry2: mockEntries.simpleEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -1467,7 +1470,7 @@ describe('EntriesImport', () => { const onSuccess = options.apiParams.resolve; onSuccess({ response: { uid: 'updated-entry-uid' }, - apiData: { uid: 'ref_entry_1', url: '/ref-entry-1', title: 'Entry with References' } + apiData: { uid: 'ref_entry_1', url: '/ref-entry-1', title: 'Entry with References' }, }); }); @@ -1480,13 +1483,13 @@ describe('EntriesImport', () => { it('should handle chunk read errors', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { - next: sinon.stub().rejects(new Error('Chunk read failed')) + next: sinon.stub().rejects(new Error('Chunk read failed')), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -1499,15 +1502,15 @@ describe('EntriesImport', () => { it('should handle API errors in onReject', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.entryWithReferences - }) + entry1: mockEntries.entryWithReferences, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -1515,7 +1518,7 @@ describe('EntriesImport', () => { const onReject = options.apiParams.reject; onReject({ error: { status: 500, message: 'Update failed' }, - apiData: { uid: 'ref_entry_1', title: 'Entry with References' } + apiData: { uid: 'ref_entry_1', title: 'Entry with References' }, }); }); @@ -1526,7 +1529,7 @@ describe('EntriesImport', () => { content_type: 'ref_ct', locale: 'en-us', entry: { uid: 'new_ref_entry_1', title: 'Entry with References' }, - entryId: 'ref_entry_1' + entryId: 'ref_entry_1', }); }); }); @@ -1538,7 +1541,7 @@ describe('EntriesImport', () => { uid: 'ref_entry_1', title: 'Entry with References', sourceEntryFilePath: '/path/to/source.json', - entryOldUid: 'ref_entry_1' + entryOldUid: 'ref_entry_1', }, entity: 'update-entries' as const, resolve: sinon.stub(), @@ -1546,22 +1549,22 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'ref_ct', locale: 'en-us', - contentType: mockData.contentTypeWithReferences - } + contentType: mockData.contentTypeWithReferences, + }, }; // Mock fsUtil.readFile to return source entry fsUtilityReadFileStub.callsFake((path) => { if (path.includes('source.json')) { return { - 'ref_entry_1': { + ref_entry_1: { uid: 'ref_entry_1', title: 'Source Entry', single_reference: { uid: 'simple_entry_1', - _content_type_uid: 'simple_ct' - } - } + _content_type_uid: 'simple_ct', + }, + }, }; } return {}; @@ -1571,7 +1574,7 @@ describe('EntriesImport', () => { const originalLookupAssets = require('../../../../src/utils').lookupAssets; Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { get: () => (entryData: any) => entryData.entry, - configurable: true + configurable: true, }); const result = entriesImport['serializeUpdateEntries'](apiOptions); @@ -1583,7 +1586,7 @@ describe('EntriesImport', () => { // Restore original function Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { get: () => originalLookupAssets, - configurable: true + configurable: true, }); }); @@ -1593,7 +1596,7 @@ describe('EntriesImport', () => { uid: 'json_rte_entry_1', title: 'Entry with JSON RTE', sourceEntryFilePath: '/path/to/source.json', - entryOldUid: 'json_rte_entry_1' + entryOldUid: 'json_rte_entry_1', }, entity: 'update-entries' as const, resolve: sinon.stub(), @@ -1601,15 +1604,15 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'json_rte_ct', locale: 'en-us', - contentType: mockData.contentTypeWithJsonRte - } + contentType: mockData.contentTypeWithJsonRte, + }, }; // Mock fsUtil.readFile to return source entry with JSON RTE fsUtilityReadFileStub.callsFake((path) => { if (path.includes('source.json')) { return { - 'json_rte_entry_1': { + json_rte_entry_1: { uid: 'json_rte_entry_1', title: 'Source Entry', json_rte_field: { @@ -1622,14 +1625,14 @@ describe('EntriesImport', () => { type: 'reference', attrs: { type: 'entry', - 'entry-uid': 'simple_entry_1' - } - } - ] - } - ] - } - } + 'entry-uid': 'simple_entry_1', + }, + }, + ], + }, + ], + }, + }, }; } return {}; @@ -1639,7 +1642,7 @@ describe('EntriesImport', () => { const originalLookupAssets = require('../../../../src/utils').lookupAssets; Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { get: () => (entryData: any) => entryData.entry, - configurable: true + configurable: true, }); const result = entriesImport['serializeUpdateEntries'](apiOptions); @@ -1650,7 +1653,7 @@ describe('EntriesImport', () => { // Restore original function Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { get: () => originalLookupAssets, - configurable: true + configurable: true, }); }); @@ -1660,7 +1663,7 @@ describe('EntriesImport', () => { uid: 'rte_entry_1', title: 'Entry with RTE', sourceEntryFilePath: '/path/to/source.json', - entryOldUid: 'rte_entry_1' + entryOldUid: 'rte_entry_1', }, entity: 'update-entries' as const, resolve: sinon.stub(), @@ -1668,19 +1671,19 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'rte_ct', locale: 'en-us', - contentType: mockData.contentTypeWithRte - } + contentType: mockData.contentTypeWithRte, + }, }; // Mock fsUtil.readFile to return source entry with RTE fsUtilityReadFileStub.callsFake((path) => { if (path.includes('source.json')) { return { - 'rte_entry_1': { + rte_entry_1: { uid: 'rte_entry_1', title: 'Source Entry', - rte_field: '

RTE content with entry link

' - } + rte_field: '

RTE content with entry link

', + }, }; } return {}; @@ -1690,7 +1693,7 @@ describe('EntriesImport', () => { const originalLookupAssets = require('../../../../src/utils').lookupAssets; Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { get: () => (entryData: any) => entryData.entry, - configurable: true + configurable: true, }); const result = entriesImport['serializeUpdateEntries'](apiOptions); @@ -1701,7 +1704,7 @@ describe('EntriesImport', () => { // Restore original function Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { get: () => originalLookupAssets, - configurable: true + configurable: true, }); }); @@ -1711,7 +1714,7 @@ describe('EntriesImport', () => { uid: 'invalid_entry', title: 'Invalid Entry', sourceEntryFilePath: '/path/to/source.json', - entryOldUid: 'invalid_entry' + entryOldUid: 'invalid_entry', }, entity: 'update-entries' as const, resolve: sinon.stub(), @@ -1719,8 +1722,8 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'ref_ct', locale: 'en-us', - contentType: mockData.contentTypeWithReferences - } + contentType: mockData.contentTypeWithReferences, + }, }; // Mock fsUtil.readFile to throw an error @@ -1738,7 +1741,7 @@ describe('EntriesImport', () => { it('should handle empty chunks', async () => { // Mock FsUtility to return empty indexer const mockFsUtility = { - indexFileContent: {} + indexFileContent: {}, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); @@ -1751,16 +1754,16 @@ describe('EntriesImport', () => { // Mock FsUtility for entry replacement const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + // Mock readChunkFiles.next() to return entry data const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.existingEntry - }) + entry1: mockEntries.existingEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -1768,7 +1771,7 @@ describe('EntriesImport', () => { sinon.stub(FsUtility.prototype, 'writeIntoFile').callsFake(() => { return Promise.resolve(); }); - + // Mock writeFileSync to prevent file system writes const originalWriteFileSync = require('fs').writeFileSync; const writeFileSyncStub = sinon.stub(require('fs'), 'writeFileSync').callsFake(() => {}); @@ -1778,7 +1781,7 @@ describe('EntriesImport', () => { onSuccess({ response: { uid: 'replaced-entry-uid' }, apiData: mockEntries.existingEntry, - additionalInfo: {} + additionalInfo: {}, }); }); @@ -1791,13 +1794,13 @@ describe('EntriesImport', () => { it('should handle chunk read errors', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { - next: sinon.stub().rejects(new Error('Chunk read failed')) + next: sinon.stub().rejects(new Error('Chunk read failed')), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -1810,15 +1813,15 @@ describe('EntriesImport', () => { it('should handle API errors in onReject', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.existingEntry - }) + entry1: mockEntries.existingEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -1829,7 +1832,7 @@ describe('EntriesImport', () => { const onReject = options.apiParams.reject; onReject({ error: { status: 500, message: 'Replacement failed' }, - apiData: { uid: 'existing_entry_1', title: 'Existing Entry' } + apiData: { uid: 'existing_entry_1', title: 'Existing Entry' }, }); }); @@ -1840,7 +1843,7 @@ describe('EntriesImport', () => { content_type: 'ref_ct', locale: 'en-us', entry: { uid: undefined, title: 'Existing Entry' }, - entryId: 'existing_entry_1' + entryId: 'existing_entry_1', }); }); }); @@ -1849,7 +1852,7 @@ describe('EntriesImport', () => { it('should find and update existing entry', async () => { const mockEntry = { title: 'Existing Entry', - uid: 'existing_entry_1' + uid: 'existing_entry_1', }; const apiParams = { @@ -1858,60 +1861,64 @@ describe('EntriesImport', () => { reject: sinon.stub(), additionalInfo: { cTUid: 'ref_ct', - locale: 'en-us' - } + locale: 'en-us', + }, }; // Mock stack API calls const mockQuery = { findOne: sinon.stub().resolves({ - items: [{ - uid: 'stack_entry_uid', - title: 'Existing Entry', - urlPath: '/existing-entry', - stackHeaders: {}, - _version: 1 - }] - }) + items: [ + { + uid: 'stack_entry_uid', + title: 'Existing Entry', + urlPath: '/existing-entry', + stackHeaders: {}, + _version: 1, + }, + ], + }), }; const mockEntryPayload = { - update: sinon.stub().resolves({ uid: 'updated_entry_uid' }) + update: sinon.stub().resolves({ uid: 'updated_entry_uid' }), }; // Mock the stack API chain: contentType().entry().query().findOne() const mockQueryChain = { query: sinon.stub().returns({ findOne: sinon.stub().resolves({ - items: [{ - uid: 'stack_entry_uid', - title: 'Existing Entry', - urlPath: '/existing-entry', - stackHeaders: {}, - _version: 1 - }] - }) - }) + items: [ + { + uid: 'stack_entry_uid', + title: 'Existing Entry', + urlPath: '/existing-entry', + stackHeaders: {}, + _version: 1, + }, + ], + }), + }), }; const mockEntryChain = { - update: sinon.stub().resolves({ uid: 'updated_entry_uid' }) + update: sinon.stub().resolves({ uid: 'updated_entry_uid' }), }; const contentTypeStub = sinon.stub(); contentTypeStub.onFirstCall().returns({ - entry: sinon.stub().returns(mockQueryChain) + entry: sinon.stub().returns(mockQueryChain), }); contentTypeStub.onSecondCall().returns({ - entry: sinon.stub().returns(mockEntryChain) + entry: sinon.stub().returns(mockEntryChain), }); - + mockStackClient.contentType = contentTypeStub; const result = await entriesImport['replaceEntriesHandler']({ apiParams, element: mockEntry, - isLastRequest: false + isLastRequest: false, }); expect(result).to.be.true; @@ -1923,7 +1930,7 @@ describe('EntriesImport', () => { it('should handle entry not found in stack', async () => { const mockEntry = { title: 'Non-existent Entry', - uid: 'non_existent_entry_1' + uid: 'non_existent_entry_1', }; const apiParams = { @@ -1932,31 +1939,31 @@ describe('EntriesImport', () => { reject: sinon.stub(), additionalInfo: { cTUid: 'ref_ct', - locale: 'en-us' - } + locale: 'en-us', + }, }; // Mock stack API to return empty result const mockQueryChain = { query: sinon.stub().returns({ findOne: sinon.stub().resolves({ - items: [] - }) - }) + items: [], + }), + }), }; const contentTypeStub = sinon.stub(); contentTypeStub.returns({ - entry: sinon.stub().returns(mockQueryChain) + entry: sinon.stub().returns(mockQueryChain), }); - + mockStackClient.contentType = contentTypeStub; try { const result = await entriesImport['replaceEntriesHandler']({ apiParams, element: mockEntry, - isLastRequest: false + isLastRequest: false, }); expect.fail('Expected method to reject'); } catch (error) { @@ -1969,7 +1976,7 @@ describe('EntriesImport', () => { it('should handle query errors', async () => { const mockEntry = { title: 'Error Entry', - uid: 'error_entry_1' + uid: 'error_entry_1', }; const apiParams = { @@ -1978,29 +1985,29 @@ describe('EntriesImport', () => { reject: sinon.stub(), additionalInfo: { cTUid: 'ref_ct', - locale: 'en-us' - } + locale: 'en-us', + }, }; // Mock stack API to throw error const mockQueryChain = { query: sinon.stub().returns({ - findOne: sinon.stub().rejects(new Error('Query failed')) - }) + findOne: sinon.stub().rejects(new Error('Query failed')), + }), }; const contentTypeStub = sinon.stub(); contentTypeStub.returns({ - entry: sinon.stub().returns(mockQueryChain) + entry: sinon.stub().returns(mockQueryChain), }); - + mockStackClient.contentType = contentTypeStub; try { const result = await entriesImport['replaceEntriesHandler']({ apiParams, element: mockEntry, - isLastRequest: false + isLastRequest: false, }); expect.fail('Expected method to reject'); } catch (error) { @@ -2012,7 +2019,7 @@ describe('EntriesImport', () => { it('should handle update errors', async () => { const mockEntry = { title: 'Update Error Entry', - uid: 'update_error_entry_1' + uid: 'update_error_entry_1', }; const apiParams = { @@ -2021,44 +2028,46 @@ describe('EntriesImport', () => { reject: sinon.stub(), additionalInfo: { cTUid: 'ref_ct', - locale: 'en-us' - } + locale: 'en-us', + }, }; // Mock stack API calls const mockQueryChain = { query: sinon.stub().returns({ findOne: sinon.stub().resolves({ - items: [{ - uid: 'stack_entry_uid', - title: 'Update Error Entry', - urlPath: '/update-error-entry', - stackHeaders: {}, - _version: 1 - }] - }) - }) + items: [ + { + uid: 'stack_entry_uid', + title: 'Update Error Entry', + urlPath: '/update-error-entry', + stackHeaders: {}, + _version: 1, + }, + ], + }), + }), }; const mockEntryChain = { - update: sinon.stub().rejects(new Error('Update failed')) + update: sinon.stub().rejects(new Error('Update failed')), }; const contentTypeStub = sinon.stub(); contentTypeStub.onFirstCall().returns({ - entry: sinon.stub().returns(mockQueryChain) + entry: sinon.stub().returns(mockQueryChain), }); contentTypeStub.onSecondCall().returns({ - entry: sinon.stub().returns(mockEntryChain) + entry: sinon.stub().returns(mockEntryChain), }); - + mockStackClient.contentType = contentTypeStub; try { const result = await entriesImport['replaceEntriesHandler']({ apiParams, element: mockEntry, - isLastRequest: false + isLastRequest: false, }); expect.fail('Expected method to reject'); } catch (error) { @@ -2075,16 +2084,16 @@ describe('EntriesImport', () => { entriesImport['cTs'] = [ mockData.simpleContentType, mockData.contentTypeWithReferences, - mockData.contentTypeWithJsonRte + mockData.contentTypeWithJsonRte, ]; entriesImport['envs'] = { - 'env_1': { name: 'production', uid: 'env_1' }, - 'env_2': { name: 'staging', uid: 'env_2' } + env_1: { name: 'production', uid: 'env_1' }, + env_2: { name: 'staging', uid: 'env_2' }, }; entriesImport['entriesUidMapper'] = { - 'simple_entry_1': 'new_simple_entry_1', - 'publish_entry_1': 'new_publish_entry_1', - 'json_rte_entry_1': 'new_json_rte_entry_1' + simple_entry_1: 'new_simple_entry_1', + publish_entry_1: 'new_publish_entry_1', + json_rte_entry_1: 'new_json_rte_entry_1', }; }); @@ -2092,7 +2101,7 @@ describe('EntriesImport', () => { it('should handle empty chunks', async () => { // Mock FsUtility to return empty indexer const mockFsUtility = { - indexFileContent: {} + indexFileContent: {}, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); @@ -2105,17 +2114,17 @@ describe('EntriesImport', () => { // Mock FsUtility for entry publishing const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1', 'entry2'] - } + 'chunk1.json': ['entry1', 'entry2'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + // Mock readChunkFiles.next() to return entry data with publish details const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.simpleEntry, - 'entry2': mockEntries.entryWithPublishDetails - }) + entry1: mockEntries.simpleEntry, + entry2: mockEntries.entryWithPublishDetails, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -2123,11 +2132,11 @@ describe('EntriesImport', () => { const onSuccess = options.apiParams.resolve; onSuccess({ response: { uid: 'published-entry-uid' }, - apiData: { - environments: ['production', 'staging'], - entryUid: 'new_simple_entry_1', - locales: ['en-us'] - } + apiData: { + environments: ['production', 'staging'], + entryUid: 'new_simple_entry_1', + locales: ['en-us'], + }, }); }); @@ -2140,15 +2149,15 @@ describe('EntriesImport', () => { it('should handle entries with multiple publish details', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.entryWithPublishDetails - }) + entry1: mockEntries.entryWithPublishDetails, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -2156,11 +2165,11 @@ describe('EntriesImport', () => { const onSuccess = options.apiParams.resolve; onSuccess({ response: { uid: 'published-entry-uid' }, - apiData: { - environments: ['production', 'staging'], - entryUid: 'new_publish_entry_1', - locales: ['en-us', 'fr-fr'] - } + apiData: { + environments: ['production', 'staging'], + entryUid: 'new_publish_entry_1', + locales: ['en-us', 'fr-fr'], + }, }); }); @@ -2174,22 +2183,22 @@ describe('EntriesImport', () => { it('should handle entries without publish details', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const entryWithoutPublishDetails = { uid: 'no_publish_entry_1', title: 'Entry without Publish Details', - description: 'This entry has no publish details' + description: 'This entry has no publish details', // No publish_details property }; - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': entryWithoutPublishDetails - }) + entry1: entryWithoutPublishDetails, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -2202,22 +2211,22 @@ describe('EntriesImport', () => { it('should handle entries with empty publish details', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const entryWithEmptyPublishDetails = { uid: 'empty_publish_entry_1', title: 'Entry with Empty Publish Details', description: 'This entry has empty publish details', - publish_details: [] as any[] + publish_details: [] as any[], }; - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': entryWithEmptyPublishDetails - }) + entry1: entryWithEmptyPublishDetails, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -2230,13 +2239,13 @@ describe('EntriesImport', () => { it('should handle chunk read errors', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { - next: sinon.stub().rejects(new Error('Chunk read failed')) + next: sinon.stub().rejects(new Error('Chunk read failed')), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -2249,15 +2258,15 @@ describe('EntriesImport', () => { it('should handle API errors in onReject', async () => { const mockFsUtility = { indexFileContent: { - 'chunk1.json': ['entry1'] - } + 'chunk1.json': ['entry1'], + }, }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockFsUtility.indexFileContent); - + const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': mockEntries.simpleEntry - }) + entry1: mockEntries.simpleEntry, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -2265,11 +2274,11 @@ describe('EntriesImport', () => { const onReject = options.apiParams.reject; onReject({ error: { status: 500, message: 'Publish failed' }, - apiData: { - environments: ['production'], - entryUid: 'new_simple_entry_1', - locales: ['en-us'] - } + apiData: { + environments: ['production'], + entryUid: 'new_simple_entry_1', + locales: ['en-us'], + }, }); }); @@ -2288,13 +2297,13 @@ describe('EntriesImport', () => { publish_details: [ { environment: 'env_1', - locale: 'en-us' + locale: 'en-us', }, { environment: 'env_2', - locale: 'fr-fr' - } - ] + locale: 'fr-fr', + }, + ], }, entity: 'publish-entries' as const, resolve: sinon.stub(), @@ -2302,8 +2311,8 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'simple_ct', locale: 'en-us', - contentType: mockData.simpleContentType - } + contentType: mockData.simpleContentType, + }, }; const result = entriesImport['serializePublishEntries'](apiOptions); @@ -2312,7 +2321,7 @@ describe('EntriesImport', () => { expect(result.apiData).to.deep.include({ environments: ['production', 'staging'], locales: ['en-us', 'fr-fr'], - entryUid: 'new_simple_entry_1' + entryUid: 'new_simple_entry_1', }); }); @@ -2320,7 +2329,7 @@ describe('EntriesImport', () => { const apiOptions = { apiData: { uid: 'simple_entry_1', - title: 'Simple Entry' + title: 'Simple Entry', // No publish_details }, entity: 'publish-entries' as const, @@ -2329,8 +2338,8 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'simple_ct', locale: 'en-us', - contentType: mockData.simpleContentType - } + contentType: mockData.simpleContentType, + }, }; const result = entriesImport['serializePublishEntries'](apiOptions); @@ -2343,7 +2352,7 @@ describe('EntriesImport', () => { apiData: { uid: 'simple_entry_1', title: 'Simple Entry', - publish_details: [] as any[] + publish_details: [] as any[], }, entity: 'publish-entries' as const, resolve: sinon.stub(), @@ -2351,8 +2360,8 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'simple_ct', locale: 'en-us', - contentType: mockData.simpleContentType - } + contentType: mockData.simpleContentType, + }, }; const result = entriesImport['serializePublishEntries'](apiOptions); @@ -2368,9 +2377,9 @@ describe('EntriesImport', () => { publish_details: [ { environment: 'invalid_env', - locale: 'en-us' - } - ] + locale: 'en-us', + }, + ], }, entity: 'publish-entries' as const, resolve: sinon.stub(), @@ -2378,8 +2387,8 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'simple_ct', locale: 'en-us', - contentType: mockData.simpleContentType - } + contentType: mockData.simpleContentType, + }, }; const result = entriesImport['serializePublishEntries'](apiOptions); @@ -2394,10 +2403,10 @@ describe('EntriesImport', () => { title: 'Simple Entry', publish_details: [ { - environment: 'env_1' + environment: 'env_1', // No locale - } - ] + }, + ], }, entity: 'publish-entries' as const, resolve: sinon.stub(), @@ -2405,8 +2414,8 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'simple_ct', locale: 'en-us', - contentType: mockData.simpleContentType - } + contentType: mockData.simpleContentType, + }, }; const result = entriesImport['serializePublishEntries'](apiOptions); @@ -2422,17 +2431,17 @@ describe('EntriesImport', () => { publish_details: [ { environment: 'env_1', - locale: 'en-us' + locale: 'en-us', }, { environment: 'env_1', // Duplicate environment - locale: 'en-us' // Duplicate locale + locale: 'en-us', // Duplicate locale }, { environment: 'env_2', - locale: 'fr-fr' - } - ] + locale: 'fr-fr', + }, + ], }, entity: 'publish-entries' as const, resolve: sinon.stub(), @@ -2440,8 +2449,8 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'simple_ct', locale: 'en-us', - contentType: mockData.simpleContentType - } + contentType: mockData.simpleContentType, + }, }; const result = entriesImport['serializePublishEntries'](apiOptions); @@ -2461,9 +2470,9 @@ describe('EntriesImport', () => { publish_details: [ { environment: 'env_1', - locale: 'en-us' - } - ] + locale: 'en-us', + }, + ], }, entity: 'publish-entries' as const, resolve: sinon.stub(), @@ -2471,8 +2480,8 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'simple_ct', locale: 'en-us', - contentType: mockData.simpleContentType - } + contentType: mockData.simpleContentType, + }, }; const result = entriesImport['serializePublishEntries'](apiOptions); @@ -2489,17 +2498,17 @@ describe('EntriesImport', () => { publish_details: [ { environment: 'env_1', - locale: 'en-us' + locale: 'en-us', }, { environment: 'invalid_env', - locale: 'fr-fr' + locale: 'fr-fr', }, { environment: 'env_2', - locale: 'de-de' - } - ] + locale: 'de-de', + }, + ], }, entity: 'publish-entries' as const, resolve: sinon.stub(), @@ -2507,8 +2516,8 @@ describe('EntriesImport', () => { additionalInfo: { cTUid: 'simple_ct', locale: 'en-us', - contentType: mockData.simpleContentType - } + contentType: mockData.simpleContentType, + }, }; const result = entriesImport['serializePublishEntries'](apiOptions); @@ -2524,16 +2533,16 @@ describe('EntriesImport', () => { beforeEach(() => { // Reset all stubs before each test sinon.restore(); - + // Setup basic mock data entriesImport['cTs'] = [mockData.simpleContentType, mockData.contentTypeWithReferences]; entriesImport['locales'] = [ { code: 'en-us', name: 'English' }, - { code: 'fr-fr', name: 'French' } + { code: 'fr-fr', name: 'French' }, ]; entriesImport['envs'] = { - 'env_1': { name: 'production', uid: 'env_1' }, - 'env_2': { name: 'staging', uid: 'env_2' } + env_1: { name: 'production', uid: 'env_1' }, + env_2: { name: 'staging', uid: 'env_2' }, }; entriesImport['entriesUidMapper'] = {}; entriesImport['failedEntries'] = []; @@ -2544,15 +2553,22 @@ describe('EntriesImport', () => { it('should complete full start process successfully', async () => { // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType, mockData.contentTypeWithReferences]) // content types - .onCall(1).resolves({ extension_uid: { ext_1: 'new_ext_1' } }) // marketplace apps - .onCall(2).resolves({ asset_1: 'new_asset_1' }) // asset UID mapper - .onCall(3).resolves({ 'https://old.com': 'https://new.com' }) // asset URL mapper - .onCall(4).resolves({ taxonomy_1: { terms: [] } }) // taxonomies - .onCall(5).resolves([{ code: 'en-us' }, { code: 'fr-fr' }]), // locales + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType, mockData.contentTypeWithReferences]) // content types + .onCall(1) + .resolves({ extension_uid: { ext_1: 'new_ext_1' } }) // marketplace apps + .onCall(2) + .resolves({ asset_1: 'new_asset_1' }) // asset UID mapper + .onCall(3) + .resolves({ 'https://old.com': 'https://new.com' }) // asset URL mapper + .onCall(4) + .resolves({ taxonomy_1: { terms: [] } }) // taxonomies + .onCall(5) + .resolves([{ code: 'en-us' }, { code: 'fr-fr' }]), // locales makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -2563,7 +2579,8 @@ describe('EntriesImport', () => { // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns(entriesImport['envs']), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); @@ -2571,12 +2588,12 @@ describe('EntriesImport', () => { const disableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'disableMandatoryCTReferences').resolves(); const populateEntryCreatePayloadStub = sinon.stub(entriesImport, 'populateEntryCreatePayload').returns([ { cTUid: 'simple_ct', locale: 'en-us' }, - { cTUid: 'simple_ct', locale: 'fr-fr' } + { cTUid: 'simple_ct', locale: 'fr-fr' }, ]); const createEntriesStub = sinon.stub(entriesImport, 'createEntries').resolves(); - const populateEntryUpdatePayloadStub = sinon.stub(entriesImport, 'populateEntryUpdatePayload').returns([ - { cTUid: 'simple_ct', locale: 'en-us' } - ]); + const populateEntryUpdatePayloadStub = sinon + .stub(entriesImport, 'populateEntryUpdatePayload') + .returns([{ cTUid: 'simple_ct', locale: 'en-us' }]); const updateEntriesWithReferencesStub = sinon.stub(entriesImport, 'updateEntriesWithReferences').resolves(); const enableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'enableMandatoryCTReferences').resolves(); const updateFieldRulesStub = sinon.stub(entriesImport, 'updateFieldRules').resolves(); @@ -2600,14 +2617,15 @@ describe('EntriesImport', () => { const mockFsUtil = { readFile: sinon.stub().resolves([]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); @@ -2629,14 +2647,15 @@ describe('EntriesImport', () => { const mockFsUtil = { readFile: sinon.stub().resolves(null), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); @@ -2659,15 +2678,22 @@ describe('EntriesImport', () => { // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) - .onCall(1).resolves({ extension_uid: {} }) - .onCall(2).resolves({}) - .onCall(3).resolves({}) - .onCall(4).resolves({}) - .onCall(5).resolves([{ code: 'en-us' }]), + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) + .onCall(1) + .resolves({ extension_uid: {} }) + .onCall(2) + .resolves({}) + .onCall(3) + .resolves({}) + .onCall(4) + .resolves({}) + .onCall(5) + .resolves([{ code: 'en-us' }]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -2678,15 +2704,16 @@ describe('EntriesImport', () => { // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); // Mock all the method calls const disableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'disableMandatoryCTReferences').resolves(); - const populateEntryCreatePayloadStub = sinon.stub(entriesImport, 'populateEntryCreatePayload').returns([ - { cTUid: 'simple_ct', locale: 'en-us' } - ]); + const populateEntryCreatePayloadStub = sinon + .stub(entriesImport, 'populateEntryCreatePayload') + .returns([{ cTUid: 'simple_ct', locale: 'en-us' }]); const createEntriesStub = sinon.stub(entriesImport, 'createEntries').resolves(); const replaceEntriesStub = sinon.stub(entriesImport, 'replaceEntries').resolves(); const populateEntryUpdatePayloadStub = sinon.stub(entriesImport, 'populateEntryUpdatePayload').returns([]); @@ -2703,21 +2730,26 @@ describe('EntriesImport', () => { it('should handle autoCreatedEntries cleanup', async () => { // Set up autoCreatedEntries - entriesImport['autoCreatedEntries'] = [ - { cTUid: 'simple_ct', locale: 'en-us', entryUid: 'entry_1' } - ]; + entriesImport['autoCreatedEntries'] = [{ cTUid: 'simple_ct', locale: 'en-us', entryUid: 'entry_1' }]; // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) - .onCall(1).resolves({ extension_uid: {} }) - .onCall(2).resolves({}) - .onCall(3).resolves({}) - .onCall(4).resolves({}) - .onCall(5).resolves([{ code: 'en-us' }]), + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) + .onCall(1) + .resolves({ extension_uid: {} }) + .onCall(2) + .resolves({}) + .onCall(3) + .resolves({}) + .onCall(4) + .resolves({}) + .onCall(5) + .resolves([{ code: 'en-us' }]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -2728,7 +2760,8 @@ describe('EntriesImport', () => { // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); @@ -2755,15 +2788,22 @@ describe('EntriesImport', () => { // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) - .onCall(1).resolves({ extension_uid: {} }) - .onCall(2).resolves({}) - .onCall(3).resolves({}) - .onCall(4).resolves({}) - .onCall(5).resolves([{ code: 'en-us' }]), + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) + .onCall(1) + .resolves({ extension_uid: {} }) + .onCall(2) + .resolves({}) + .onCall(3) + .resolves({}) + .onCall(4) + .resolves({}) + .onCall(5) + .resolves([{ code: 'en-us' }]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -2774,7 +2814,8 @@ describe('EntriesImport', () => { // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); @@ -2798,15 +2839,22 @@ describe('EntriesImport', () => { it('should handle no environments found for publishing', async () => { // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) - .onCall(1).resolves({ extension_uid: {} }) - .onCall(2).resolves({}) - .onCall(3).resolves({}) - .onCall(4).resolves({}) - .onCall(5).resolves([{ code: 'en-us' }]), + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) + .onCall(1) + .resolves({ extension_uid: {} }) + .onCall(2) + .resolves({}) + .onCall(3) + .resolves({}) + .onCall(4) + .resolves({}) + .onCall(5) + .resolves([{ code: 'en-us' }]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -2817,15 +2865,16 @@ describe('EntriesImport', () => { // Mock fileHelper to return empty environments const mockFileHelper = { readFileSync: sinon.stub().returns({}), // Empty environments - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); // Mock all the method calls const disableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'disableMandatoryCTReferences').resolves(); - const populateEntryCreatePayloadStub = sinon.stub(entriesImport, 'populateEntryCreatePayload').returns([ - { cTUid: 'simple_ct', locale: 'en-us' } - ]); + const populateEntryCreatePayloadStub = sinon + .stub(entriesImport, 'populateEntryCreatePayload') + .returns([{ cTUid: 'simple_ct', locale: 'en-us' }]); const createEntriesStub = sinon.stub(entriesImport, 'createEntries').resolves(); const populateEntryUpdatePayloadStub = sinon.stub(entriesImport, 'populateEntryUpdatePayload').returns([]); const updateEntriesWithReferencesStub = sinon.stub(entriesImport, 'updateEntriesWithReferences').resolves(); @@ -2846,15 +2895,22 @@ describe('EntriesImport', () => { // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) - .onCall(1).resolves({ extension_uid: {} }) - .onCall(2).resolves({}) - .onCall(3).resolves({}) - .onCall(4).resolves({}) - .onCall(5).resolves([{ code: 'en-us' }]), + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) + .onCall(1) + .resolves({ extension_uid: {} }) + .onCall(2) + .resolves({}) + .onCall(3) + .resolves({}) + .onCall(4) + .resolves({}) + .onCall(5) + .resolves([{ code: 'en-us' }]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -2865,15 +2921,16 @@ describe('EntriesImport', () => { // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); // Mock all the method calls const disableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'disableMandatoryCTReferences').resolves(); - const populateEntryCreatePayloadStub = sinon.stub(entriesImport, 'populateEntryCreatePayload').returns([ - { cTUid: 'simple_ct', locale: 'en-us' } - ]); + const populateEntryCreatePayloadStub = sinon + .stub(entriesImport, 'populateEntryCreatePayload') + .returns([{ cTUid: 'simple_ct', locale: 'en-us' }]); const createEntriesStub = sinon.stub(entriesImport, 'createEntries').resolves(); const replaceEntriesStub = sinon.stub(entriesImport, 'replaceEntries').rejects(new Error('Replace failed')); const populateEntryUpdatePayloadStub = sinon.stub(entriesImport, 'populateEntryUpdatePayload').returns([]); @@ -2890,21 +2947,26 @@ describe('EntriesImport', () => { it('should handle errors in removeAutoCreatedEntries', async () => { // Set up autoCreatedEntries - entriesImport['autoCreatedEntries'] = [ - { cTUid: 'simple_ct', locale: 'en-us', entryUid: 'entry_1' } - ]; + entriesImport['autoCreatedEntries'] = [{ cTUid: 'simple_ct', locale: 'en-us', entryUid: 'entry_1' }]; // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) - .onCall(1).resolves({ extension_uid: {} }) - .onCall(2).resolves({}) - .onCall(3).resolves({}) - .onCall(4).resolves({}) - .onCall(5).resolves([{ code: 'en-us' }]), + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) + .onCall(1) + .resolves({ extension_uid: {} }) + .onCall(2) + .resolves({}) + .onCall(3) + .resolves({}) + .onCall(4) + .resolves({}) + .onCall(5) + .resolves([{ code: 'en-us' }]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -2915,7 +2977,8 @@ describe('EntriesImport', () => { // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); @@ -2927,7 +2990,9 @@ describe('EntriesImport', () => { const updateEntriesWithReferencesStub = sinon.stub(entriesImport, 'updateEntriesWithReferences').resolves(); const enableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'enableMandatoryCTReferences').resolves(); const updateFieldRulesStub = sinon.stub(entriesImport, 'updateFieldRules').resolves(); - const removeAutoCreatedEntriesStub = sinon.stub(entriesImport, 'removeAutoCreatedEntries').rejects(new Error('Remove failed')); + const removeAutoCreatedEntriesStub = sinon + .stub(entriesImport, 'removeAutoCreatedEntries') + .rejects(new Error('Remove failed')); const createEntryDataForVariantEntryStub = sinon.stub(entriesImport, 'createEntryDataForVariantEntry').returns(); await entriesImport.start(); @@ -2939,15 +3004,22 @@ describe('EntriesImport', () => { it('should handle errors in updateEntriesWithReferences', async () => { // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) - .onCall(1).resolves({ extension_uid: {} }) - .onCall(2).resolves({}) - .onCall(3).resolves({}) - .onCall(4).resolves({}) - .onCall(5).resolves([{ code: 'en-us' }]), + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) + .onCall(1) + .resolves({ extension_uid: {} }) + .onCall(2) + .resolves({}) + .onCall(3) + .resolves({}) + .onCall(4) + .resolves({}) + .onCall(5) + .resolves([{ code: 'en-us' }]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -2958,7 +3030,8 @@ describe('EntriesImport', () => { // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); @@ -2966,10 +3039,12 @@ describe('EntriesImport', () => { const disableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'disableMandatoryCTReferences').resolves(); const populateEntryCreatePayloadStub = sinon.stub(entriesImport, 'populateEntryCreatePayload').returns([]); const createEntriesStub = sinon.stub(entriesImport, 'createEntries').resolves(); - const populateEntryUpdatePayloadStub = sinon.stub(entriesImport, 'populateEntryUpdatePayload').returns([ - { cTUid: 'simple_ct', locale: 'en-us' } - ]); - const updateEntriesWithReferencesStub = sinon.stub(entriesImport, 'updateEntriesWithReferences').rejects(new Error('Update failed')); + const populateEntryUpdatePayloadStub = sinon + .stub(entriesImport, 'populateEntryUpdatePayload') + .returns([{ cTUid: 'simple_ct', locale: 'en-us' }]); + const updateEntriesWithReferencesStub = sinon + .stub(entriesImport, 'updateEntriesWithReferences') + .rejects(new Error('Update failed')); const enableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'enableMandatoryCTReferences').resolves(); const updateFieldRulesStub = sinon.stub(entriesImport, 'updateFieldRules').resolves(); const createEntryDataForVariantEntryStub = sinon.stub(entriesImport, 'createEntryDataForVariantEntry').returns(); @@ -2983,15 +3058,22 @@ describe('EntriesImport', () => { it('should handle errors in enableMandatoryCTReferences', async () => { // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) - .onCall(1).resolves({ extension_uid: {} }) - .onCall(2).resolves({}) - .onCall(3).resolves({}) - .onCall(4).resolves({}) - .onCall(5).resolves([{ code: 'en-us' }]), + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) + .onCall(1) + .resolves({ extension_uid: {} }) + .onCall(2) + .resolves({}) + .onCall(3) + .resolves({}) + .onCall(4) + .resolves({}) + .onCall(5) + .resolves([{ code: 'en-us' }]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -3002,7 +3084,8 @@ describe('EntriesImport', () => { // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); @@ -3012,7 +3095,9 @@ describe('EntriesImport', () => { const createEntriesStub = sinon.stub(entriesImport, 'createEntries').resolves(); const populateEntryUpdatePayloadStub = sinon.stub(entriesImport, 'populateEntryUpdatePayload').returns([]); const updateEntriesWithReferencesStub = sinon.stub(entriesImport, 'updateEntriesWithReferences').resolves(); - const enableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'enableMandatoryCTReferences').rejects(new Error('Enable failed')); + const enableMandatoryCTReferencesStub = sinon + .stub(entriesImport, 'enableMandatoryCTReferences') + .rejects(new Error('Enable failed')); const updateFieldRulesStub = sinon.stub(entriesImport, 'updateFieldRules').resolves(); const createEntryDataForVariantEntryStub = sinon.stub(entriesImport, 'createEntryDataForVariantEntry').returns(); @@ -3025,15 +3110,22 @@ describe('EntriesImport', () => { it('should handle errors in updateFieldRules', async () => { // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) - .onCall(1).resolves({ extension_uid: {} }) - .onCall(2).resolves({}) - .onCall(3).resolves({}) - .onCall(4).resolves({}) - .onCall(5).resolves([{ code: 'en-us' }]), + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) + .onCall(1) + .resolves({ extension_uid: {} }) + .onCall(2) + .resolves({}) + .onCall(3) + .resolves({}) + .onCall(4) + .resolves({}) + .onCall(5) + .resolves([{ code: 'en-us' }]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -3044,7 +3136,8 @@ describe('EntriesImport', () => { // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); @@ -3055,7 +3148,9 @@ describe('EntriesImport', () => { const populateEntryUpdatePayloadStub = sinon.stub(entriesImport, 'populateEntryUpdatePayload').returns([]); const updateEntriesWithReferencesStub = sinon.stub(entriesImport, 'updateEntriesWithReferences').resolves(); const enableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'enableMandatoryCTReferences').resolves(); - const updateFieldRulesStub = sinon.stub(entriesImport, 'updateFieldRules').rejects(new Error('Field rules failed')); + const updateFieldRulesStub = sinon + .stub(entriesImport, 'updateFieldRules') + .rejects(new Error('Field rules failed')); const createEntryDataForVariantEntryStub = sinon.stub(entriesImport, 'createEntryDataForVariantEntry').returns(); await entriesImport.start(); @@ -3067,15 +3162,22 @@ describe('EntriesImport', () => { it('should handle errors in publishEntries', async () => { // Mock file system operations const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) - .onCall(1).resolves({ extension_uid: {} }) - .onCall(2).resolves({}) - .onCall(3).resolves({}) - .onCall(4).resolves({}) - .onCall(5).resolves([{ code: 'en-us' }]), + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) + .onCall(1) + .resolves({ extension_uid: {} }) + .onCall(2) + .resolves({}) + .onCall(3) + .resolves({}) + .onCall(4) + .resolves({}) + .onCall(5) + .resolves([{ code: 'en-us' }]), makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); @@ -3086,15 +3188,16 @@ describe('EntriesImport', () => { // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns(entriesImport['envs']), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); // Mock all the method calls const disableMandatoryCTReferencesStub = sinon.stub(entriesImport, 'disableMandatoryCTReferences').resolves(); - const populateEntryCreatePayloadStub = sinon.stub(entriesImport, 'populateEntryCreatePayload').returns([ - { cTUid: 'simple_ct', locale: 'en-us' } - ]); + const populateEntryCreatePayloadStub = sinon + .stub(entriesImport, 'populateEntryCreatePayload') + .returns([{ cTUid: 'simple_ct', locale: 'en-us' }]); const createEntriesStub = sinon.stub(entriesImport, 'createEntries').resolves(); const populateEntryUpdatePayloadStub = sinon.stub(entriesImport, 'populateEntryUpdatePayload').returns([]); const updateEntriesWithReferencesStub = sinon.stub(entriesImport, 'updateEntriesWithReferences').resolves(); @@ -3112,22 +3215,30 @@ describe('EntriesImport', () => { it('should handle general errors in try-catch', async () => { // Mock file system operations to return valid data but cause error later const mockFsUtil = { - readFile: sinon.stub() - .onCall(0).resolves([mockData.simpleContentType]) // content types - .onCall(1).resolves({ extension_uid: {} }) // marketplace apps - .onCall(2).resolves({}) // asset UID mapper - .onCall(3).resolves({}) // asset URL mapper - .onCall(4).resolves({}) // taxonomies - .onCall(5).rejects(new Error('File read failed')), // locales - this will cause error + readFile: sinon + .stub() + .onCall(0) + .resolves([mockData.simpleContentType]) // content types + .onCall(1) + .resolves({ extension_uid: {} }) // marketplace apps + .onCall(2) + .resolves({}) // asset UID mapper + .onCall(3) + .resolves({}) // asset URL mapper + .onCall(4) + .resolves({}) // taxonomies + .onCall(5) + .rejects(new Error('File read failed')), // locales - this will cause error makeDirectory: sinon.stub().resolves(), - writeFile: sinon.stub().resolves() + writeFile: sinon.stub().resolves(), }; sinon.stub(require('../../../../src/utils'), 'fsUtil').value(mockFsUtil); // Mock fileHelper const mockFileHelper = { readFileSync: sinon.stub().returns({}), - writeLargeFile: sinon.stub().resolves() + writeLargeFile: sinon.stub().resolves(), + fileExistsSync: sinon.stub().returns(false), }; sinon.stub(require('../../../../src/utils'), 'fileHelper').value(mockFileHelper); @@ -3167,12 +3278,12 @@ describe('EntriesImport', () => { // Setup auto-created entries entriesImport['autoCreatedEntries'] = [ { entryUid: 'auto_entry_1', title: 'Auto Entry 1' }, - { entryUid: 'auto_entry_2', title: 'Auto Entry 2' } + { entryUid: 'auto_entry_2', title: 'Auto Entry 2' }, ]; entriesImport['entriesForVariant'] = [ { entry_uid: 'auto_entry_1', locale: 'en-us', content_type: 'simple_ct' }, { entry_uid: 'auto_entry_2', locale: 'en-us', content_type: 'ref_ct' }, - { entry_uid: 'other_entry', locale: 'fr-fr', content_type: 'simple_ct' } + { entry_uid: 'other_entry', locale: 'fr-fr', content_type: 'simple_ct' }, ]; // Use the existing makeConcurrentCall stub to simulate successful removal @@ -3180,12 +3291,12 @@ describe('EntriesImport', () => { // Simulate onSuccess callback for first entry await options.apiParams.resolve({ response: { uid: 'auto_entry_1' }, - apiData: { entryUid: 'auto_entry_1' } + apiData: { entryUid: 'auto_entry_1' }, }); // Simulate onSuccess callback for second entry await options.apiParams.resolve({ response: { uid: 'auto_entry_2' }, - apiData: { entryUid: 'auto_entry_2' } + apiData: { entryUid: 'auto_entry_2' }, }); }); @@ -3206,12 +3317,10 @@ describe('EntriesImport', () => { it('should handle errors when removing auto-created entries', async () => { // Setup auto-created entries - entriesImport['autoCreatedEntries'] = [ - { entryUid: 'auto_entry_1', title: 'Auto Entry 1' } - ]; + entriesImport['autoCreatedEntries'] = [{ entryUid: 'auto_entry_1', title: 'Auto Entry 1' }]; entriesImport['entriesForVariant'] = [ { entry_uid: 'auto_entry_1', locale: 'en-us', content_type: 'simple_ct' }, - { entry_uid: 'other_entry', locale: 'fr-fr', content_type: 'simple_ct' } + { entry_uid: 'other_entry', locale: 'fr-fr', content_type: 'simple_ct' }, ]; // Use the existing makeConcurrentCall stub to simulate error @@ -3219,7 +3328,7 @@ describe('EntriesImport', () => { // Simulate onReject callback await options.apiParams.reject({ error: new Error('Delete failed'), - apiData: { entryUid: 'auto_entry_1' } + apiData: { entryUid: 'auto_entry_1' }, }); }); @@ -3235,9 +3344,7 @@ describe('EntriesImport', () => { it('should handle empty auto-created entries array', async () => { entriesImport['autoCreatedEntries'] = []; - entriesImport['entriesForVariant'] = [ - { entry_uid: 'other_entry', locale: 'fr-fr', content_type: 'simple_ct' } - ]; + entriesImport['entriesForVariant'] = [{ entry_uid: 'other_entry', locale: 'fr-fr', content_type: 'simple_ct' }]; // Use the existing makeConcurrentCall stub makeConcurrentCallStub.resolves(); @@ -3255,7 +3362,7 @@ describe('EntriesImport', () => { // Setup entriesForVariant with data entriesImport['entriesForVariant'] = [ { entry_uid: 'entry_1', locale: 'en-us', content_type: 'simple_ct' }, - { entry_uid: 'entry_2', locale: 'fr-fr', content_type: 'ref_ct' } + { entry_uid: 'entry_2', locale: 'fr-fr', content_type: 'ref_ct' }, ]; // Mock writeFileSync @@ -3289,7 +3396,7 @@ describe('EntriesImport', () => { it('should handle content type fetch error', async () => { // Setup content types with field rules const mockContentTypes = [mockData.simpleContentType, mockData.contentTypeWithReferences]; - + // Mock fsUtil.readFile to return field rules data fsUtilityReadFileStub.callsFake((filePath) => { console.log('fsUtil.readFile called with path:', filePath); @@ -3307,19 +3414,18 @@ describe('EntriesImport', () => { // Mock stack client methods directly const mockContentType = { - fetch: sinon.stub().rejects(new Error('Fetch failed')) + fetch: sinon.stub().rejects(new Error('Fetch failed')), }; const mockStackClient = { - contentType: sinon.stub().returns(mockContentType) + contentType: sinon.stub().returns(mockContentType), }; sinon.stub(entriesImport, 'stack').value(mockStackClient); - await entriesImport.updateFieldRules(); // Verify fsUtil.readFile was called expect(fsUtilityReadFileStub.callCount).to.be.greaterThan(0); - + // Verify stack client was called expect(mockStackClient.contentType.called).to.be.true; expect(mockContentType.fetch.called).to.be.true; @@ -3328,7 +3434,7 @@ describe('EntriesImport', () => { it('should handle content type update error', async () => { // Setup content types with field rules const mockContentTypes = [mockData.simpleContentType, mockData.contentTypeWithReferences]; - + // Mock fsUtil.readFile to return field rules data fsUtilityReadFileStub.callsFake((path) => { if (path.includes('field_rules_uid.json')) { @@ -3343,23 +3449,22 @@ describe('EntriesImport', () => { // Mock stack client to simulate successful fetch but failed update const mockUpdate = sinon.stub().rejects(new Error('Update failed')); const mockContentType = { - fetch: sinon.stub().resolves({ - uid: 'simple_ct', + fetch: sinon.stub().resolves({ + uid: 'simple_ct', field_rules: [], - update: mockUpdate - }) + update: mockUpdate, + }), }; const mockStackClient = { - contentType: sinon.stub().returns(mockContentType) + contentType: sinon.stub().returns(mockContentType), }; sinon.stub(entriesImport, 'stack').value(mockStackClient); - await entriesImport.updateFieldRules(); // Verify fsUtil.readFile was called expect(fsUtilityReadFileStub.callCount).to.be.greaterThan(0); - + // Verify stack client was called expect(mockStackClient.contentType.called).to.be.true; expect(mockContentType.fetch.called).to.be.true; @@ -3369,7 +3474,7 @@ describe('EntriesImport', () => { it('should skip when content type not found', async () => { // Setup content types with field rules const mockContentTypes = [mockData.simpleContentType, mockData.contentTypeWithReferences]; - + // Mock fsUtil.readFile to return field rules data fsUtilityReadFileStub.callsFake((path) => { if (path.includes('field_rules_uid.json')) { @@ -3383,10 +3488,10 @@ describe('EntriesImport', () => { // Mock stack client to return null (content type not found) const mockContentType = { - fetch: sinon.stub().resolves(null) + fetch: sinon.stub().resolves(null), }; const mockStackClient = { - contentType: sinon.stub().returns(mockContentType) + contentType: sinon.stub().returns(mockContentType), }; sinon.stub(entriesImport, 'stack').value(mockStackClient); @@ -3396,7 +3501,7 @@ describe('EntriesImport', () => { info: sinon.stub(), success: sinon.stub(), warn: sinon.stub(), - error: sinon.stub() + error: sinon.stub(), }; sinon.stub(require('@contentstack/cli-utilities'), 'log').value(mockLog); @@ -3404,9 +3509,9 @@ describe('EntriesImport', () => { // Verify debug log was called for skipping expect(mockLog.debug.called).to.be.true; - const skipCall = mockLog.debug.getCalls().find((call: any) => - call.args[0] && call.args[0].includes('Skipping field rules update') - ); + const skipCall = mockLog.debug + .getCalls() + .find((call: any) => call.args[0] && call.args[0].includes('Skipping field rules update')); expect(skipCall).to.exist; }); @@ -3415,7 +3520,7 @@ describe('EntriesImport', () => { const contentTypeWithoutRules = { ...mockData.simpleContentType }; delete contentTypeWithoutRules.field_rules; const mockContentTypes = [contentTypeWithoutRules]; - + // Mock fsUtil.readFile to return field rules data fsUtilityReadFileStub.callsFake((path) => { if (path.includes('field_rules_uid.json')) { @@ -3433,7 +3538,7 @@ describe('EntriesImport', () => { info: sinon.stub(), success: sinon.stub(), warn: sinon.stub(), - error: sinon.stub() + error: sinon.stub(), }; sinon.stub(require('@contentstack/cli-utilities'), 'log').value(mockLog); @@ -3441,9 +3546,9 @@ describe('EntriesImport', () => { // Verify info log was called for no field rules expect(mockLog.info.called).to.be.true; - const noRulesCall = mockLog.info.getCalls().find((call: any) => - call.args[0] && call.args[0].includes('No field rules found') - ); + const noRulesCall = mockLog.info + .getCalls() + .find((call: any) => call.args[0] && call.args[0].includes('No field rules found')); expect(noRulesCall).to.exist; }); }); @@ -3454,16 +3559,16 @@ describe('EntriesImport', () => { const entry = { uid: 'localized_entry_1', title: 'Localized Entry', - description: 'A localized entry' + description: 'A localized entry', }; const contentType = mockData.simpleContentType; const isMasterLocale = false; // Setup UID mapping entriesImport['entriesUidMapper'] = { - 'localized_entry_1': 'new_localized_entry_1' + localized_entry_1: 'new_localized_entry_1', }; - + // Setup asset mappers entriesImport['assetUidMapper'] = {}; entriesImport['assetUrlMapper'] = {}; @@ -3473,20 +3578,20 @@ describe('EntriesImport', () => { const originalLookupAssets = require('../../../../src/utils').lookupAssets; Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { get: () => (entryData: any) => entryData.entry, - configurable: true + configurable: true, }); // Mock stack client const mockEntryResponse = { uid: 'new_localized_entry_1', title: 'Localized Entry', - description: 'A localized entry' + description: 'A localized entry', }; const mockContentType = { - entry: sinon.stub().returns(mockEntryResponse) + entry: sinon.stub().returns(mockEntryResponse), }; const mockStackClient = { - contentType: sinon.stub().returns(mockContentType) + contentType: sinon.stub().returns(mockContentType), }; sinon.stub(entriesImport, 'stack').value(mockStackClient); @@ -3495,7 +3600,7 @@ describe('EntriesImport', () => { apiData: entry, resolve: sinon.stub(), reject: sinon.stub(), - additionalInfo: { cTUid: 'simple_ct', locale: 'fr-fr', contentType, isMasterLocale } + additionalInfo: { cTUid: 'simple_ct', locale: 'fr-fr', contentType, isMasterLocale }, }; const result = entriesImport.serializeEntries(apiOptions); @@ -3506,13 +3611,13 @@ describe('EntriesImport', () => { expect(result.apiData.title).to.equal('Localized Entry'); expect(result.additionalInfo['new_localized_entry_1']).to.deep.equal({ isLocalized: true, - entryOldUid: 'localized_entry_1' + entryOldUid: 'localized_entry_1', }); // Restore original function Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { value: originalLookupAssets, - configurable: true + configurable: true, }); }); @@ -3521,14 +3626,14 @@ describe('EntriesImport', () => { const entry = { uid: 'localized_entry_1', title: 'Localized Entry', - description: 'A localized entry' + description: 'A localized entry', }; const contentType = mockData.simpleContentType; const isMasterLocale = false; // Setup empty UID mapping entriesImport['entriesUidMapper'] = {}; - + // Setup asset mappers entriesImport['assetUidMapper'] = {}; entriesImport['assetUrlMapper'] = {}; @@ -3538,7 +3643,7 @@ describe('EntriesImport', () => { const originalLookupAssets = require('../../../../src/utils').lookupAssets; Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { get: () => (entryData: any) => entryData.entry, - configurable: true + configurable: true, }); const apiOptions = { @@ -3546,7 +3651,7 @@ describe('EntriesImport', () => { apiData: entry, resolve: sinon.stub(), reject: sinon.stub(), - additionalInfo: { cTUid: 'simple_ct', locale: 'fr-fr', contentType, isMasterLocale } + additionalInfo: { cTUid: 'simple_ct', locale: 'fr-fr', contentType, isMasterLocale }, }; const result = entriesImport.serializeEntries(apiOptions); @@ -3560,7 +3665,7 @@ describe('EntriesImport', () => { // Restore original function Object.defineProperty(require('../../../../src/utils'), 'lookupAssets', { value: originalLookupAssets, - configurable: true + configurable: true, }); }); }); @@ -3571,7 +3676,7 @@ describe('EntriesImport', () => { entriesImport['entriesForVariant'] = [ { entry_uid: 'entry_1', locale: 'en-us', content_type: 'simple_ct' }, { entry_uid: 'entry_2', locale: 'fr-fr', content_type: 'ref_ct' }, - { entry_uid: 'entry_3', locale: 'en-us', content_type: 'simple_ct' } + { entry_uid: 'entry_3', locale: 'en-us', content_type: 'simple_ct' }, ]; // Use the existing makeConcurrentCall stub to trigger onReject @@ -3579,7 +3684,7 @@ describe('EntriesImport', () => { // Simulate onReject callback - uid should match entry_uid in entriesForVariant await options.apiParams.reject({ error: new Error('Update failed'), - apiData: { uid: 'entry_1', title: 'Entry 1' } + apiData: { uid: 'entry_1', title: 'Entry 1' }, }); }); @@ -3587,14 +3692,14 @@ describe('EntriesImport', () => { const handleAndLogErrorStub = sinon.stub(require('@contentstack/cli-utilities'), 'handleAndLogError'); // Mock FsUtility.indexFileContent to return some data - const mockIndexFileContent = { 'chunk1': true }; + const mockIndexFileContent = { chunk1: true }; sinon.stub(FsUtility.prototype, 'indexFileContent').get(() => mockIndexFileContent); // Mock FsUtility.readChunkFiles to return some data const mockReadChunkFiles = { next: sinon.stub().resolves({ - 'entry1': { uid: 'entry_1', title: 'Entry 1' } - }) + entry1: { uid: 'entry_1', title: 'Entry 1' }, + }), }; sinon.stub(FsUtility.prototype, 'readChunkFiles').get(() => mockReadChunkFiles); @@ -3604,11 +3709,10 @@ describe('EntriesImport', () => { // Verify entriesForVariant was filtered correctly expect(entriesImport['entriesForVariant']).to.have.length(2); - expect(entriesImport['entriesForVariant'].find(e => e.entry_uid === 'entry_1')).to.be.undefined; - expect(entriesImport['entriesForVariant'].find(e => e.entry_uid === 'entry_2')).to.exist; - expect(entriesImport['entriesForVariant'].find(e => e.entry_uid === 'entry_3')).to.exist; + expect(entriesImport['entriesForVariant'].find((e) => e.entry_uid === 'entry_1')).to.be.undefined; + expect(entriesImport['entriesForVariant'].find((e) => e.entry_uid === 'entry_2')).to.exist; + expect(entriesImport['entriesForVariant'].find((e) => e.entry_uid === 'entry_3')).to.exist; }); - }); }); }); diff --git a/packages/contentstack-seed/package.json b/packages/contentstack-seed/package.json index 49f221aef4..c5e5b472f3 100644 --- a/packages/contentstack-seed/package.json +++ b/packages/contentstack-seed/package.json @@ -1,11 +1,11 @@ { "name": "@contentstack/cli-cm-seed", "description": "create a Stack from existing content types, entries, assets, etc.", - "version": "1.13.2", + "version": "1.14.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-cm-import": "1.30.2", + "@contentstack/cli-cm-import": "~1.31.0", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@contentstack/management": "~1.22.0", diff --git a/packages/contentstack/README.md b/packages/contentstack/README.md index 83b6ac4eff..fa3653c0bd 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.53.1 darwin-arm64 node-v22.14.0 +@contentstack/cli/1.54.0 darwin-arm64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND @@ -3942,7 +3942,7 @@ USAGE $ csdx launch:functions [-p ] [-d ] FLAGS - -d, --data-dir= [default: /cli/packages/contentstack] Current working directory + -d, --data-dir= [default: /Users/naman.dembla/Documents/cli/packages/contentstack] Current working directory -p, --port= [default: 3000] Port number DESCRIPTION diff --git a/packages/contentstack/package.json b/packages/contentstack/package.json index a3da5c8e17..58cdcaacb6 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.54.0", + "version": "1.55.0", "author": "Contentstack", "bin": { "csdx": "./bin/run.js" @@ -22,20 +22,20 @@ "prepack": "pnpm compile && oclif manifest && oclif readme" }, "dependencies": { - "@contentstack/cli-audit": "~1.16.2", - "@contentstack/cli-cm-export": "~1.22.2", - "@contentstack/cli-cm-import": "~1.30.2", + "@contentstack/cli-audit": "~1.17.0", + "@contentstack/cli-cm-export": "~1.23.0", + "@contentstack/cli-cm-import": "~1.31.0", "@contentstack/cli-auth": "~1.6.3", - "@contentstack/cli-cm-bootstrap": "~1.17.2", + "@contentstack/cli-cm-bootstrap": "~1.18.0", "@contentstack/cli-cm-branches": "~1.6.2", - "@contentstack/cli-cm-bulk-publish": "~1.10.4", - "@contentstack/cli-cm-clone": "~1.18.1", + "@contentstack/cli-cm-bulk-publish": "~1.10.5", + "@contentstack/cli-cm-clone": "~1.19.0", "@contentstack/cli-cm-export-to-csv": "~1.10.2", "@contentstack/cli-cm-import-setup": "~1.7.2", "@contentstack/cli-cm-migrate-rte": "~1.6.3", - "@contentstack/cli-cm-seed": "~1.13.2", + "@contentstack/cli-cm-seed": "~1.14.0", "@contentstack/cli-command": "~1.7.1", - "@contentstack/cli-config": "~1.16.2", + "@contentstack/cli-config": "~1.17.0", "@contentstack/cli-launch": "^1.9.2", "@contentstack/cli-migration": "~1.10.2", "@contentstack/cli-utilities": "~1.16.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b96a879f1d..810c76126e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,20 +12,20 @@ importers: packages/contentstack: specifiers: - '@contentstack/cli-audit': ~1.16.2 + '@contentstack/cli-audit': ~1.17.0 '@contentstack/cli-auth': ~1.6.3 - '@contentstack/cli-cm-bootstrap': ~1.17.2 + '@contentstack/cli-cm-bootstrap': ~1.18.0 '@contentstack/cli-cm-branches': ~1.6.2 - '@contentstack/cli-cm-bulk-publish': ~1.10.4 - '@contentstack/cli-cm-clone': ~1.18.1 - '@contentstack/cli-cm-export': ~1.22.2 + '@contentstack/cli-cm-bulk-publish': ~1.10.5 + '@contentstack/cli-cm-clone': ~1.19.0 + '@contentstack/cli-cm-export': ~1.23.0 '@contentstack/cli-cm-export-to-csv': ~1.10.2 - '@contentstack/cli-cm-import': ~1.30.2 + '@contentstack/cli-cm-import': ~1.31.0 '@contentstack/cli-cm-import-setup': ~1.7.2 '@contentstack/cli-cm-migrate-rte': ~1.6.3 - '@contentstack/cli-cm-seed': ~1.13.2 + '@contentstack/cli-cm-seed': ~1.14.0 '@contentstack/cli-command': ~1.7.1 - '@contentstack/cli-config': ~1.16.2 + '@contentstack/cli-config': ~1.17.0 '@contentstack/cli-launch': ^1.9.2 '@contentstack/cli-migration': ~1.10.2 '@contentstack/cli-utilities': ~1.16.0 @@ -84,7 +84,7 @@ importers: '@contentstack/cli-cm-seed': link:../contentstack-seed '@contentstack/cli-command': link:../contentstack-command '@contentstack/cli-config': link:../contentstack-config - '@contentstack/cli-launch': 1.9.4_tanrtkdzllst73ozorstzho2ki + '@contentstack/cli-launch': 1.9.4_ye7kx5d2fkdihvpgkysaadv2ca '@contentstack/cli-migration': link:../contentstack-migration '@contentstack/cli-utilities': link:../contentstack-utilities '@contentstack/cli-variants': link:../contentstack-variants @@ -114,13 +114,13 @@ importers: '@types/sinon': 10.0.20 chai: 4.5.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-config-oclif: 6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji eslint-config-oclif-typescript: 3.1.14_avq3eyf5kaj6ssrwo7fvkrwnji globby: 10.0.2 mocha: 10.8.2 nock: 13.5.6 nyc: 15.1.0 - oclif: 4.22.63_@types+node@14.18.63 + oclif: 4.22.65_@types+node@14.18.63 rimraf: 5.0.10 shelljs: 0.10.0 sinon: 19.0.5 @@ -176,18 +176,18 @@ importers: '@types/chai': 4.3.20 '@types/fs-extra': 11.0.4 '@types/mocha': 10.0.10 - '@types/node': 20.19.27 + '@types/node': 20.19.29 '@types/uuid': 9.0.8 chai: 4.5.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_k2rwabtyo525wwqr6566umnmhy + eslint-config-oclif: 6.0.130_k2rwabtyo525wwqr6566umnmhy eslint-config-oclif-typescript: 3.1.14_k2rwabtyo525wwqr6566umnmhy mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63_@types+node@20.19.27 + oclif: 4.22.65_@types+node@20.19.29 shx: 0.4.0 sinon: 19.0.5 - ts-node: 10.9.2_xwpkxzit2oggtkvhnry5algaly + ts-node: 10.9.2_ydhbtialqmwgnlxabg7nhf524m typescript: 5.9.3 packages/contentstack-auth: @@ -236,14 +236,14 @@ importers: eslint-config-oclif-typescript: 3.1.14_avq3eyf5kaj6ssrwo7fvkrwnji mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63_@types+node@14.18.63 + oclif: 4.22.65_@types+node@14.18.63 sinon: 19.0.5 ts-node: 10.9.2_ogreqof3k35xezedraj6pnd45y typescript: 4.9.5 packages/contentstack-bootstrap: specifiers: - '@contentstack/cli-cm-seed': ~1.13.2 + '@contentstack/cli-cm-seed': ~1.14.0 '@contentstack/cli-command': ~1.7.1 '@contentstack/cli-utilities': ~1.16.0 '@oclif/core': ^4.3.0 @@ -283,11 +283,11 @@ importers: '@types/tar': 6.1.13 chai: 4.5.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-config-oclif: 6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji eslint-config-oclif-typescript: 3.1.14_avq3eyf5kaj6ssrwo7fvkrwnji mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63_@types+node@14.18.63 + oclif: 4.22.65_@types+node@14.18.63 tmp: 0.2.5 ts-node: 8.10.2_typescript@4.9.5 typescript: 4.9.5 @@ -329,10 +329,10 @@ importers: dotenv: 16.6.1 dotenv-expand: 9.0.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-config-oclif: 6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63 + oclif: 4.22.65 sinon: 19.0.5 ts-node: 10.9.2_typescript@4.9.5 typescript: 4.9.5 @@ -340,7 +340,7 @@ importers: packages/contentstack-bulk-publish: specifiers: '@contentstack/cli-command': ~1.7.1 - '@contentstack/cli-config': ~1.16.2 + '@contentstack/cli-config': ~1.17.0 '@contentstack/cli-utilities': ~1.16.0 '@oclif/core': ^4.3.0 '@oclif/plugin-help': ^6.2.28 @@ -371,16 +371,16 @@ importers: '@oclif/test': 4.1.15_@oclif+core@4.8.0 chai: 4.5.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_eslint@8.57.1 + eslint-config-oclif: 6.0.130_eslint@8.57.1 mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63 + oclif: 4.22.65 packages/contentstack-clone: specifiers: '@colors/colors': ^1.6.0 - '@contentstack/cli-cm-export': ~1.22.2 - '@contentstack/cli-cm-import': ~1.30.2 + '@contentstack/cli-cm-export': ~1.23.0 + '@contentstack/cli-cm-import': ~1.31.0 '@contentstack/cli-command': ~1.7.1 '@contentstack/cli-utilities': ~1.16.0 '@oclif/core': ^4.3.0 @@ -419,10 +419,10 @@ importers: '@oclif/test': 4.1.15_@oclif+core@4.8.0 chai: 4.5.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_eslint@8.57.1 + eslint-config-oclif: 6.0.130_eslint@8.57.1 mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63 + oclif: 4.22.65 sinon: 19.0.5 packages/contentstack-command: @@ -453,7 +453,7 @@ importers: '@types/mocha': 8.2.3 '@types/node': 14.18.63 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-config-oclif: 6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji eslint-config-oclif-typescript: 3.1.14_avq3eyf5kaj6ssrwo7fvkrwnji mocha: 10.8.2 nyc: 15.1.0 @@ -496,11 +496,11 @@ importers: '@types/sinon': 10.0.20 chai: 4.5.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-config-oclif: 6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji eslint-config-oclif-typescript: 3.1.14_avq3eyf5kaj6ssrwo7fvkrwnji mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63_@types+node@14.18.63 + oclif: 4.22.65_@types+node@14.18.63 sinon: 19.0.5 ts-node: 10.9.2_ogreqof3k35xezedraj6pnd45y typescript: 4.9.5 @@ -534,7 +534,7 @@ importers: specifiers: '@contentstack/cli-auth': ~1.6.3 '@contentstack/cli-command': ~1.7.1 - '@contentstack/cli-config': ~1.16.2 + '@contentstack/cli-config': ~1.17.0 '@contentstack/cli-dev-dependencies': ~1.3.1 '@contentstack/cli-utilities': ~1.16.0 '@contentstack/cli-variants': ~1.3.6 @@ -600,10 +600,10 @@ importers: dotenv: 16.6.1 dotenv-expand: 9.0.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-config-oclif: 6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63 + oclif: 4.22.65 sinon: 17.0.2 source-map-support: 0.5.21 ts-node: 10.9.2_typescript@4.9.5 @@ -645,14 +645,14 @@ importers: chai: 4.5.0 debug: 4.4.3 eslint: 7.32.0 - eslint-config-oclif: 6.0.129_eslint@7.32.0 + eslint-config-oclif: 6.0.130_eslint@7.32.0 mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63 + oclif: 4.22.65 packages/contentstack-import: specifiers: - '@contentstack/cli-audit': ~1.16.2 + '@contentstack/cli-audit': ~1.17.0 '@contentstack/cli-command': ~1.7.1 '@contentstack/cli-utilities': ~1.16.0 '@contentstack/cli-variants': ~1.3.6 @@ -721,10 +721,10 @@ importers: '@types/uuid': 9.0.8 '@typescript-eslint/eslint-plugin': 5.62.0_avq3eyf5kaj6ssrwo7fvkrwnji eslint: 8.57.1 - eslint-config-oclif: 6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-config-oclif: 6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63_@types+node@14.18.63 + oclif: 4.22.65_@types+node@14.18.63 rewire: 9.0.1 ts-node: 10.9.2_ogreqof3k35xezedraj6pnd45y typescript: 4.9.5 @@ -787,10 +787,10 @@ importers: '@typescript-eslint/eslint-plugin': 5.62.0_avq3eyf5kaj6ssrwo7fvkrwnji chai: 4.5.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-config-oclif: 6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63_@types+node@14.18.63 + oclif: 4.22.65_@types+node@14.18.63 rewire: 9.0.1 ts-node: 10.9.2_ogreqof3k35xezedraj6pnd45y tsx: 4.21.0 @@ -836,10 +836,10 @@ importers: '@oclif/test': 4.1.15_@oclif+core@4.8.0 chai: 4.5.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_eslint@8.57.1 + eslint-config-oclif: 6.0.130_eslint@8.57.1 mocha: 10.8.2 nyc: 15.1.0 - oclif: 4.22.63 + oclif: 4.22.65 packages/contentstack-migration: specifiers: @@ -878,15 +878,15 @@ importers: '@oclif/test': 4.1.15_@oclif+core@4.8.0 chai: 4.5.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_eslint@8.57.1 + eslint-config-oclif: 6.0.130_eslint@8.57.1 jsdoc-to-markdown: 8.0.3 nock: 13.5.6 nyc: 15.1.0 - oclif: 4.22.63 + oclif: 4.22.65 packages/contentstack-seed: specifiers: - '@contentstack/cli-cm-import': 1.30.2 + '@contentstack/cli-cm-import': ~1.31.0 '@contentstack/cli-command': ~1.7.1 '@contentstack/cli-utilities': ~1.16.0 '@contentstack/management': ~1.22.0 @@ -927,10 +927,10 @@ importers: '@types/tmp': 0.2.6 axios: 1.13.2 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-config-oclif: 6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji eslint-config-oclif-typescript: 3.1.14_avq3eyf5kaj6ssrwo7fvkrwnji jest: 29.7.0_gmerzvnqkqd6hvbwzqmybfpwqi - oclif: 4.22.63_@types+node@14.18.63 + oclif: 4.22.65_@types+node@14.18.63 ts-jest: 29.4.6_67xnt3v64q2pgz6kguni4h37hu ts-node: 8.10.2_typescript@4.9.5 typescript: 4.9.5 @@ -1023,7 +1023,7 @@ importers: '@types/traverse': 0.6.37 chai: 4.5.0 eslint: 8.57.1 - eslint-config-oclif: 6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-config-oclif: 6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji eslint-config-oclif-typescript: 3.1.14_avq3eyf5kaj6ssrwo7fvkrwnji fancy-test: 2.0.42 mocha: 10.8.2 @@ -1057,10 +1057,10 @@ importers: devDependencies: '@contentstack/cli-dev-dependencies': link:../contentstack-dev-dependencies '@oclif/test': 4.1.15_@oclif+core@4.8.0 - '@types/node': 20.19.27 + '@types/node': 20.19.29 mocha: 10.8.2 nyc: 15.1.0 - ts-node: 10.9.2_xwpkxzit2oggtkvhnry5algaly + ts-node: 10.9.2_ydhbtialqmwgnlxabg7nhf524m typescript: 5.9.3 packages: @@ -1106,7 +1106,7 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.965.0 + '@aws-sdk/types': 3.968.0 tslib: 2.8.1 dev: true @@ -1114,7 +1114,7 @@ packages: resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.965.0 + '@aws-sdk/types': 3.968.0 tslib: 2.8.1 dev: true @@ -1123,8 +1123,8 @@ packages: dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.965.0 - '@aws-sdk/util-locate-window': 3.965.0 + '@aws-sdk/types': 3.968.0 + '@aws-sdk/util-locate-window': 3.965.2 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 dev: true @@ -1135,8 +1135,8 @@ packages: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.965.0 - '@aws-sdk/util-locate-window': 3.965.0 + '@aws-sdk/types': 3.968.0 + '@aws-sdk/util-locate-window': 3.965.2 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 dev: true @@ -1146,7 +1146,7 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.965.0 + '@aws-sdk/types': 3.968.0 tslib: 2.8.1 dev: true @@ -1159,595 +1159,595 @@ packages: /@aws-crypto/util/5.2.0: resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} dependencies: - '@aws-sdk/types': 3.965.0 + '@aws-sdk/types': 3.968.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 dev: true - /@aws-sdk/client-cloudfront/3.965.0: - resolution: {integrity: sha512-DKkh7TaOhETwoJrZ6Z2Es57oPD2IAIr1JkAwUtYFt+HMN0s4FL/EuZrN78N3DUJCFFeDCR3PaBHEvJ4mGEmJIw==} - engines: {node: '>=18.0.0'} + /@aws-sdk/client-cloudfront/3.968.0: + resolution: {integrity: sha512-fENwnRXcbpQn/w1iLg3B1goX2cDunyHE+Ptcbh6HkS+KynsEGqHPti9f0eHWzbBygU8ntS8IJyPlQuqnU2gvmA==} + engines: {node: '>=20.0.0'} dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.965.0 - '@aws-sdk/credential-provider-node': 3.965.0 - '@aws-sdk/middleware-host-header': 3.965.0 - '@aws-sdk/middleware-logger': 3.965.0 - '@aws-sdk/middleware-recursion-detection': 3.965.0 - '@aws-sdk/middleware-user-agent': 3.965.0 - '@aws-sdk/region-config-resolver': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@aws-sdk/util-endpoints': 3.965.0 - '@aws-sdk/util-user-agent-browser': 3.965.0 - '@aws-sdk/util-user-agent-node': 3.965.0 - '@smithy/config-resolver': 4.4.5 - '@smithy/core': 3.20.1 - '@smithy/fetch-http-handler': 5.3.8 - '@smithy/hash-node': 4.2.7 - '@smithy/invalid-dependency': 4.2.7 - '@smithy/middleware-content-length': 4.2.7 - '@smithy/middleware-endpoint': 4.4.2 - '@smithy/middleware-retry': 4.4.18 - '@smithy/middleware-serde': 4.2.8 - '@smithy/middleware-stack': 4.2.7 - '@smithy/node-config-provider': 4.3.7 - '@smithy/node-http-handler': 4.4.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/smithy-client': 4.10.3 - '@smithy/types': 4.11.0 - '@smithy/url-parser': 4.2.7 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/credential-provider-node': 3.968.0 + '@aws-sdk/middleware-host-header': 3.968.0 + '@aws-sdk/middleware-logger': 3.968.0 + '@aws-sdk/middleware-recursion-detection': 3.968.0 + '@aws-sdk/middleware-user-agent': 3.968.0 + '@aws-sdk/region-config-resolver': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@aws-sdk/util-endpoints': 3.968.0 + '@aws-sdk/util-user-agent-browser': 3.968.0 + '@aws-sdk/util-user-agent-node': 3.968.0 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.20.5 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.6 + '@smithy/middleware-retry': 4.4.22 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.10.7 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.17 - '@smithy/util-defaults-mode-node': 4.2.20 - '@smithy/util-endpoints': 3.2.7 - '@smithy/util-middleware': 4.2.7 - '@smithy/util-retry': 4.2.7 - '@smithy/util-stream': 4.5.8 + '@smithy/util-defaults-mode-browser': 4.3.21 + '@smithy/util-defaults-mode-node': 4.2.24 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/util-stream': 4.5.10 '@smithy/util-utf8': 4.2.0 - '@smithy/util-waiter': 4.2.7 + '@smithy/util-waiter': 4.2.8 tslib: 2.8.1 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/client-s3/3.965.0: - resolution: {integrity: sha512-BTeaaU1iK0BfatTCrtYjNkIHCoZH256qOI18l9bK4z6mVOgpHkYN4RvOu+NnKgyX58n+HWfOuhtKUD4OE33Vdw==} - engines: {node: '>=18.0.0'} + /@aws-sdk/client-s3/3.968.0: + resolution: {integrity: sha512-YQARjiiucSkaSLS0HNyexOQzYM5pPRWSo+FNtq5JSuXwJQb8vs53JeZfk7yKb59G94Oh0BLAv1598XaEdtAFyA==} + engines: {node: '>=20.0.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.965.0 - '@aws-sdk/credential-provider-node': 3.965.0 - '@aws-sdk/middleware-bucket-endpoint': 3.965.0 - '@aws-sdk/middleware-expect-continue': 3.965.0 - '@aws-sdk/middleware-flexible-checksums': 3.965.0 - '@aws-sdk/middleware-host-header': 3.965.0 - '@aws-sdk/middleware-location-constraint': 3.965.0 - '@aws-sdk/middleware-logger': 3.965.0 - '@aws-sdk/middleware-recursion-detection': 3.965.0 - '@aws-sdk/middleware-sdk-s3': 3.965.0 - '@aws-sdk/middleware-ssec': 3.965.0 - '@aws-sdk/middleware-user-agent': 3.965.0 - '@aws-sdk/region-config-resolver': 3.965.0 - '@aws-sdk/signature-v4-multi-region': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@aws-sdk/util-endpoints': 3.965.0 - '@aws-sdk/util-user-agent-browser': 3.965.0 - '@aws-sdk/util-user-agent-node': 3.965.0 - '@smithy/config-resolver': 4.4.5 - '@smithy/core': 3.20.1 - '@smithy/eventstream-serde-browser': 4.2.7 - '@smithy/eventstream-serde-config-resolver': 4.3.7 - '@smithy/eventstream-serde-node': 4.2.7 - '@smithy/fetch-http-handler': 5.3.8 - '@smithy/hash-blob-browser': 4.2.8 - '@smithy/hash-node': 4.2.7 - '@smithy/hash-stream-node': 4.2.7 - '@smithy/invalid-dependency': 4.2.7 - '@smithy/md5-js': 4.2.7 - '@smithy/middleware-content-length': 4.2.7 - '@smithy/middleware-endpoint': 4.4.2 - '@smithy/middleware-retry': 4.4.18 - '@smithy/middleware-serde': 4.2.8 - '@smithy/middleware-stack': 4.2.7 - '@smithy/node-config-provider': 4.3.7 - '@smithy/node-http-handler': 4.4.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/smithy-client': 4.10.3 - '@smithy/types': 4.11.0 - '@smithy/url-parser': 4.2.7 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/credential-provider-node': 3.968.0 + '@aws-sdk/middleware-bucket-endpoint': 3.968.0 + '@aws-sdk/middleware-expect-continue': 3.968.0 + '@aws-sdk/middleware-flexible-checksums': 3.968.0 + '@aws-sdk/middleware-host-header': 3.968.0 + '@aws-sdk/middleware-location-constraint': 3.968.0 + '@aws-sdk/middleware-logger': 3.968.0 + '@aws-sdk/middleware-recursion-detection': 3.968.0 + '@aws-sdk/middleware-sdk-s3': 3.968.0 + '@aws-sdk/middleware-ssec': 3.968.0 + '@aws-sdk/middleware-user-agent': 3.968.0 + '@aws-sdk/region-config-resolver': 3.968.0 + '@aws-sdk/signature-v4-multi-region': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@aws-sdk/util-endpoints': 3.968.0 + '@aws-sdk/util-user-agent-browser': 3.968.0 + '@aws-sdk/util-user-agent-node': 3.968.0 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.20.5 + '@smithy/eventstream-serde-browser': 4.2.8 + '@smithy/eventstream-serde-config-resolver': 4.3.8 + '@smithy/eventstream-serde-node': 4.2.8 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-blob-browser': 4.2.9 + '@smithy/hash-node': 4.2.8 + '@smithy/hash-stream-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/md5-js': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.6 + '@smithy/middleware-retry': 4.4.22 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.10.7 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.17 - '@smithy/util-defaults-mode-node': 4.2.20 - '@smithy/util-endpoints': 3.2.7 - '@smithy/util-middleware': 4.2.7 - '@smithy/util-retry': 4.2.7 - '@smithy/util-stream': 4.5.8 + '@smithy/util-defaults-mode-browser': 4.3.21 + '@smithy/util-defaults-mode-node': 4.2.24 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/util-stream': 4.5.10 '@smithy/util-utf8': 4.2.0 - '@smithy/util-waiter': 4.2.7 + '@smithy/util-waiter': 4.2.8 tslib: 2.8.1 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/client-sso/3.965.0: - resolution: {integrity: sha512-iv2tr+n4aZ+nPUFFvG00hISPuEd4DU+1/Q8rPAYKXsM+vEPJ2nAnP5duUOa2fbOLIUCRxX3dcQaQaghVHDHzQw==} - engines: {node: '>=18.0.0'} + /@aws-sdk/client-sso/3.968.0: + resolution: {integrity: sha512-y+k23MvMzpn1WpeQ9sdEXg1Bbw7dfi0ZH2uwyBv78F/kz0mZOI+RJ1KJg8DgSD8XvdxB8gX5GQ8rzo0LnDothA==} + engines: {node: '>=20.0.0'} dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.965.0 - '@aws-sdk/middleware-host-header': 3.965.0 - '@aws-sdk/middleware-logger': 3.965.0 - '@aws-sdk/middleware-recursion-detection': 3.965.0 - '@aws-sdk/middleware-user-agent': 3.965.0 - '@aws-sdk/region-config-resolver': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@aws-sdk/util-endpoints': 3.965.0 - '@aws-sdk/util-user-agent-browser': 3.965.0 - '@aws-sdk/util-user-agent-node': 3.965.0 - '@smithy/config-resolver': 4.4.5 - '@smithy/core': 3.20.1 - '@smithy/fetch-http-handler': 5.3.8 - '@smithy/hash-node': 4.2.7 - '@smithy/invalid-dependency': 4.2.7 - '@smithy/middleware-content-length': 4.2.7 - '@smithy/middleware-endpoint': 4.4.2 - '@smithy/middleware-retry': 4.4.18 - '@smithy/middleware-serde': 4.2.8 - '@smithy/middleware-stack': 4.2.7 - '@smithy/node-config-provider': 4.3.7 - '@smithy/node-http-handler': 4.4.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/smithy-client': 4.10.3 - '@smithy/types': 4.11.0 - '@smithy/url-parser': 4.2.7 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/middleware-host-header': 3.968.0 + '@aws-sdk/middleware-logger': 3.968.0 + '@aws-sdk/middleware-recursion-detection': 3.968.0 + '@aws-sdk/middleware-user-agent': 3.968.0 + '@aws-sdk/region-config-resolver': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@aws-sdk/util-endpoints': 3.968.0 + '@aws-sdk/util-user-agent-browser': 3.968.0 + '@aws-sdk/util-user-agent-node': 3.968.0 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.20.5 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.6 + '@smithy/middleware-retry': 4.4.22 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.10.7 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.17 - '@smithy/util-defaults-mode-node': 4.2.20 - '@smithy/util-endpoints': 3.2.7 - '@smithy/util-middleware': 4.2.7 - '@smithy/util-retry': 4.2.7 + '@smithy/util-defaults-mode-browser': 4.3.21 + '@smithy/util-defaults-mode-node': 4.2.24 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/core/3.965.0: - resolution: {integrity: sha512-aq9BhQxdHit8UUJ9C0im9TtuKeK0pT6NXmNJxMTCFeStI7GG7ImIsSislg3BZTIifVg1P6VLdzMyz9de85iutQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/core/3.968.0: + resolution: {integrity: sha512-u4lIpvGqMMHZN523/RxW70xNoVXHBXucIWZsxFKc373E6TWYEb16ddFhXTELioS5TU93qkd/6yDQZzI6AAhbkw==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/types': 3.965.0 - '@aws-sdk/xml-builder': 3.965.0 - '@smithy/core': 3.20.1 - '@smithy/node-config-provider': 4.3.7 - '@smithy/property-provider': 4.2.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/signature-v4': 5.3.7 - '@smithy/smithy-client': 4.10.3 - '@smithy/types': 4.11.0 + '@aws-sdk/types': 3.968.0 + '@aws-sdk/xml-builder': 3.968.0 + '@smithy/core': 3.20.5 + '@smithy/node-config-provider': 4.3.8 + '@smithy/property-provider': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/smithy-client': 4.10.7 + '@smithy/types': 4.12.0 '@smithy/util-base64': 4.3.0 - '@smithy/util-middleware': 4.2.7 + '@smithy/util-middleware': 4.2.8 '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 dev: true - /@aws-sdk/crc64-nvme/3.965.0: - resolution: {integrity: sha512-9FbIyJ/Zz1AdEIrb0+Pn7wRi+F/0Y566ooepg0hDyHUzRV3ZXKjOlu3wJH3YwTz2UkdwQmldfUos2yDJps7RyA==} - engines: {node: '>=18.0.0'} + /@aws-sdk/crc64-nvme/3.968.0: + resolution: {integrity: sha512-buylEu7i7I42uzfnQlu0oY35GAWcslU+Vyu9mlNszDKEDwsSyFDy1wg0wQ4vPyKDHlwsIm1srGa/MIaxZk1msg==} + engines: {node: '>=20.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/credential-provider-env/3.965.0: - resolution: {integrity: sha512-mdGnaIjMxTIjsb70dEj3VsWPWpoq1V5MWzBSfJq2H8zgMBXjn6d5/qHP8HMf53l9PrsgqzMpXGv3Av549A2x1g==} - engines: {node: '>=18.0.0'} + /@aws-sdk/credential-provider-env/3.968.0: + resolution: {integrity: sha512-G+zgXEniQxBHFtHo+0yImkYutvJZLvWqvkPUP8/cG+IaYg54OY7L/GPIAZJh0U3m0Uepao98NbL15zjM+uplqQ==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/core': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/property-provider': 4.2.7 - '@smithy/types': 4.11.0 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/property-provider': 4.2.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/credential-provider-http/3.965.0: - resolution: {integrity: sha512-YuGQel9EgA/z25oeLM+GYYQS750+8AESvr7ZEmVnRPL0sg+K3DmGqdv+9gFjFd0UkLjTlC/jtbP2cuY6UcPiHQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/credential-provider-http/3.968.0: + resolution: {integrity: sha512-79teHBx/EtsNRR3Bq8fQdmMHtUcYwvohm9EwXXFt2Jd3BEOBH872IjIlfKdAvdkM+jW1QeeWOZBAxXGPir7GcQ==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/core': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/fetch-http-handler': 5.3.8 - '@smithy/node-http-handler': 4.4.7 - '@smithy/property-provider': 4.2.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/smithy-client': 4.10.3 - '@smithy/types': 4.11.0 - '@smithy/util-stream': 4.5.8 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/node-http-handler': 4.4.8 + '@smithy/property-provider': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.10.7 + '@smithy/types': 4.12.0 + '@smithy/util-stream': 4.5.10 tslib: 2.8.1 dev: true - /@aws-sdk/credential-provider-ini/3.965.0: - resolution: {integrity: sha512-xRo72Prer5s0xYVSCxCymVIRSqrVlevK5cmU0GWq9yJtaBNpnx02jwdJg80t/Ni7pgbkQyFWRMcq38c1tc6M/w==} - engines: {node: '>=18.0.0'} - dependencies: - '@aws-sdk/core': 3.965.0 - '@aws-sdk/credential-provider-env': 3.965.0 - '@aws-sdk/credential-provider-http': 3.965.0 - '@aws-sdk/credential-provider-login': 3.965.0 - '@aws-sdk/credential-provider-process': 3.965.0 - '@aws-sdk/credential-provider-sso': 3.965.0 - '@aws-sdk/credential-provider-web-identity': 3.965.0 - '@aws-sdk/nested-clients': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/credential-provider-imds': 4.2.7 - '@smithy/property-provider': 4.2.7 - '@smithy/shared-ini-file-loader': 4.4.2 - '@smithy/types': 4.11.0 + /@aws-sdk/credential-provider-ini/3.968.0: + resolution: {integrity: sha512-9J9pcweoEN8yG7Qliux1zl9J3DT8X6OLcDN2RVXdTd5xzWBaYlupnUiJzoP6lvXdMnEmlDZaV7IMtoBdG7MY6g==} + engines: {node: '>=20.0.0'} + dependencies: + '@aws-sdk/core': 3.968.0 + '@aws-sdk/credential-provider-env': 3.968.0 + '@aws-sdk/credential-provider-http': 3.968.0 + '@aws-sdk/credential-provider-login': 3.968.0 + '@aws-sdk/credential-provider-process': 3.968.0 + '@aws-sdk/credential-provider-sso': 3.968.0 + '@aws-sdk/credential-provider-web-identity': 3.968.0 + '@aws-sdk/nested-clients': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/credential-provider-imds': 4.2.8 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/credential-provider-login/3.965.0: - resolution: {integrity: sha512-43/H8Qku8LHyugbhLo8kjD+eauhybCeVkmrnvWl8bXNHJP7xi1jCdtBQJKKJqiIHZws4MOEwkji8kFdAVRCe6g==} - engines: {node: '>=18.0.0'} + /@aws-sdk/credential-provider-login/3.968.0: + resolution: {integrity: sha512-YxBaR0IMuHPOVTG+73Ve0QfllweN+EdwBRnHFhUGnahMGAcTmcaRdotqwqWfiws+9ud44IFKjxXR3t8jaGpFnQ==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/core': 3.965.0 - '@aws-sdk/nested-clients': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/property-provider': 4.2.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/shared-ini-file-loader': 4.4.2 - '@smithy/types': 4.11.0 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/nested-clients': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/property-provider': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/credential-provider-node/3.965.0: - resolution: {integrity: sha512-cRxmMHF+Zh2lkkkEVduKl+8OQdtg/DhYA69+/7SPSQURlgyjFQGlRQ58B7q8abuNlrGT3sV+UzeOylZpJbV61Q==} - engines: {node: '>=18.0.0'} - dependencies: - '@aws-sdk/credential-provider-env': 3.965.0 - '@aws-sdk/credential-provider-http': 3.965.0 - '@aws-sdk/credential-provider-ini': 3.965.0 - '@aws-sdk/credential-provider-process': 3.965.0 - '@aws-sdk/credential-provider-sso': 3.965.0 - '@aws-sdk/credential-provider-web-identity': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/credential-provider-imds': 4.2.7 - '@smithy/property-provider': 4.2.7 - '@smithy/shared-ini-file-loader': 4.4.2 - '@smithy/types': 4.11.0 + /@aws-sdk/credential-provider-node/3.968.0: + resolution: {integrity: sha512-wei6v0c9vDEam8pM5eWe9bt+5ixg8nL0q+DFPzI6iwdLUqmJsPoAzWPEyMkgp03iE02SS2fMqPWpmRjz/NVyUw==} + engines: {node: '>=20.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.968.0 + '@aws-sdk/credential-provider-http': 3.968.0 + '@aws-sdk/credential-provider-ini': 3.968.0 + '@aws-sdk/credential-provider-process': 3.968.0 + '@aws-sdk/credential-provider-sso': 3.968.0 + '@aws-sdk/credential-provider-web-identity': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/credential-provider-imds': 4.2.8 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/credential-provider-process/3.965.0: - resolution: {integrity: sha512-gmkPmdiR0yxnTzLPDb7rwrDhGuCUjtgnj8qWP+m0gSz/W43rR4jRPVEf6DUX2iC+ImQhxo3NFhuB3V42Kzo3TQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/credential-provider-process/3.968.0: + resolution: {integrity: sha512-my9M/ijRyEACoyeEWiC2sTVM3+eck5IWPGTPQrlYMKivy4LLlZchohtIopuqTom+JZzLZD508j1s9aDvl7BA0w==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/core': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/property-provider': 4.2.7 - '@smithy/shared-ini-file-loader': 4.4.2 - '@smithy/types': 4.11.0 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/credential-provider-sso/3.965.0: - resolution: {integrity: sha512-N01AYvtCqG3Wo/s/LvYt19ity18/FqggiXT+elAs3X9Om/Wfx+hw9G+i7jaDmy+/xewmv8AdQ2SK5Q30dXw/Fw==} - engines: {node: '>=18.0.0'} + /@aws-sdk/credential-provider-sso/3.968.0: + resolution: {integrity: sha512-XPYPcxfWIt5jBbofoP2xhAHlFYos0dzwbHsoE18Cera/XnaCEbsUpdROo30t0Kjdbv0EWMYLMPDi9G+vPRDnhQ==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/client-sso': 3.965.0 - '@aws-sdk/core': 3.965.0 - '@aws-sdk/token-providers': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/property-provider': 4.2.7 - '@smithy/shared-ini-file-loader': 4.4.2 - '@smithy/types': 4.11.0 + '@aws-sdk/client-sso': 3.968.0 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/token-providers': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/credential-provider-web-identity/3.965.0: - resolution: {integrity: sha512-T4gMZ2JzXnfxe1oTD+EDGLSxFfk1+WkLZdiHXEMZp8bFI1swP/3YyDFXI+Ib9Uq1JhnAmrCXtOnkicKEhDkdhQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/credential-provider-web-identity/3.968.0: + resolution: {integrity: sha512-9HNAP6mx2jsBW4moWnRg5ycyZ0C1EbtMIegIHa93ga13B/8VZF9Y0iDnwW73yQYzCEt9UrDiFeRck/ChZup3rA==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/core': 3.965.0 - '@aws-sdk/nested-clients': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/property-provider': 4.2.7 - '@smithy/shared-ini-file-loader': 4.4.2 - '@smithy/types': 4.11.0 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/nested-clients': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/middleware-bucket-endpoint/3.965.0: - resolution: {integrity: sha512-gbdv3Dl8l8xmg4oH60fXvfDyTxfx28w5/Hxdymx3vurM07tAyd4qld8zEXejnSpraTo45QcHRtk5auELIMfeag==} - engines: {node: '>=18.0.0'} + /@aws-sdk/middleware-bucket-endpoint/3.968.0: + resolution: {integrity: sha512-KlA6D9wgyGF3KkKIRmmXxvKfzzGkibnnR6Kjp0NQAOi4jvKWuT/HKJX87sBJIrk8RWq+9Aq0SOY9LYqkdx9zJQ==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/types': 3.965.0 - '@aws-sdk/util-arn-parser': 3.965.0 - '@smithy/node-config-provider': 4.3.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 + '@aws-sdk/types': 3.968.0 + '@aws-sdk/util-arn-parser': 3.968.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 '@smithy/util-config-provider': 4.2.0 tslib: 2.8.1 dev: true - /@aws-sdk/middleware-expect-continue/3.965.0: - resolution: {integrity: sha512-UBxVytsmhEmFwkBnt+aV0eAJ7uc+ouNokCqMBrQ7Oc5A77qhlcHfOgXIKz2SxqsiYTsDq+a0lWFM/XpyRWraqA==} - engines: {node: '>=18.0.0'} + /@aws-sdk/middleware-expect-continue/3.968.0: + resolution: {integrity: sha512-VCcDw21JCJywZH8+vpZCsVB9HV2BQ6BdF+cXww5nKnPNi+d05sHFczRHUQjfsEJiZ8Wb/a4M3mJuVrQ5gjiNUA==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/types': 3.965.0 - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 + '@aws-sdk/types': 3.968.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/middleware-flexible-checksums/3.965.0: - resolution: {integrity: sha512-5rzEW08trcpHMe6jkQyYc4PL1KG/H7BbnySFSzhih+r/gktQEiE36sb1BNf7av9I0Vk2Ccmt7wocB5PIT7GDkQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/middleware-flexible-checksums/3.968.0: + resolution: {integrity: sha512-5G4hpKS0XbU8s3WuuFP6qpB6kkFB45LQ2VomrS0FoyTXH9XUDYL1OmwraBe3t2N5LnpqOh1+RAJOyO8gRwO7xA==} + engines: {node: '>=20.0.0'} dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.965.0 - '@aws-sdk/crc64-nvme': 3.965.0 - '@aws-sdk/types': 3.965.0 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/crc64-nvme': 3.968.0 + '@aws-sdk/types': 3.968.0 '@smithy/is-array-buffer': 4.2.0 - '@smithy/node-config-provider': 4.3.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 - '@smithy/util-middleware': 4.2.7 - '@smithy/util-stream': 4.5.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 dev: true - /@aws-sdk/middleware-host-header/3.965.0: - resolution: {integrity: sha512-SfpSYqoPOAmdb3DBsnNsZ0vix+1VAtkUkzXM79JL3R5IfacpyKE2zytOgVAQx/FjhhlpSTwuXd+LRhUEVb3MaA==} - engines: {node: '>=18.0.0'} + /@aws-sdk/middleware-host-header/3.968.0: + resolution: {integrity: sha512-ujlNT215VtE/2D2jEhFVcTuPPB36HJyLBM0ytnni/WPIjzq89iJrKR1tEhxpk8uct6A5NSQ6w9Y7g2Rw1rkSoQ==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/types': 3.965.0 - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 + '@aws-sdk/types': 3.968.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/middleware-location-constraint/3.965.0: - resolution: {integrity: sha512-07T1rwAarQs33mVg5U28AsSdLB5JUXu9yBTBmspFGajKVsEahIyntf53j9mAXF1N2KR0bNdP0J4A0kst4t43UQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/middleware-location-constraint/3.968.0: + resolution: {integrity: sha512-+usAEX4rPmOofmLhZHgnRvW3idDnXdYnhaiOjfj2ynU05elTUkF2b4fyq+KhdjZQVbUpCewq4eKqgjGaGhIyyw==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/types': 3.965.0 - '@smithy/types': 4.11.0 + '@aws-sdk/types': 3.968.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/middleware-logger/3.965.0: - resolution: {integrity: sha512-gjUvJRZT1bUABKewnvkj51LAynFrfz2h5DYAg5/2F4Utx6UOGByTSr9Rq8JCLbURvvzAbCtcMkkIJRxw+8Zuzw==} - engines: {node: '>=18.0.0'} + /@aws-sdk/middleware-logger/3.968.0: + resolution: {integrity: sha512-zvhhEPZgvaRDxzf27m2WmgaXoN7upFt/gvG7ofBN5zCBlkh3JtFamMh5KWYVQwMhc4eQBK3NjH0oIUKZSVztag==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/types': 3.965.0 - '@smithy/types': 4.11.0 + '@aws-sdk/types': 3.968.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/middleware-recursion-detection/3.965.0: - resolution: {integrity: sha512-6dvD+18Ni14KCRu+tfEoNxq1sIGVp9tvoZDZ7aMvpnA7mDXuRLrOjRQ/TAZqXwr9ENKVGyxcPl0cRK8jk1YWjA==} - engines: {node: '>=18.0.0'} + /@aws-sdk/middleware-recursion-detection/3.968.0: + resolution: {integrity: sha512-KygPiwpSAPGobgodK/oLb7OLiwK29pNJeNtP+GZ9pxpceDRqhN0Ub8Eo84dBbWq+jbzAqBYHzy+B1VsbQ/hLWA==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/types': 3.965.0 + '@aws-sdk/types': 3.968.0 '@aws/lambda-invoke-store': 0.2.3 - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/middleware-sdk-s3/3.965.0: - resolution: {integrity: sha512-dXEgnojaaVRl+OlOx35mg3rYEbfffIN4X6tLmIfDnaKz0hMaDMvsE9jJXb/vBvokbdO1sVB27/2FEM4ttLSLnw==} - engines: {node: '>=18.0.0'} + /@aws-sdk/middleware-sdk-s3/3.968.0: + resolution: {integrity: sha512-fh2mQ/uwJ1Sth1q2dWAbeyky/SBPaqe1fjxvsNeEY6dtfi8PjW85zHpz1JoAhCKTRkrEdXYAqkqUwsUydLucyQ==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/core': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@aws-sdk/util-arn-parser': 3.965.0 - '@smithy/core': 3.20.1 - '@smithy/node-config-provider': 4.3.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/signature-v4': 5.3.7 - '@smithy/smithy-client': 4.10.3 - '@smithy/types': 4.11.0 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@aws-sdk/util-arn-parser': 3.968.0 + '@smithy/core': 3.20.5 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/smithy-client': 4.10.7 + '@smithy/types': 4.12.0 '@smithy/util-config-provider': 4.2.0 - '@smithy/util-middleware': 4.2.7 - '@smithy/util-stream': 4.5.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 dev: true - /@aws-sdk/middleware-ssec/3.965.0: - resolution: {integrity: sha512-dke++CTw26y+a2D1DdVuZ4+2TkgItdx6TeuE0zOl4lsqXGvTBUG4eaIZalt7ZOAW5ys2pbDOk1bPuh4opoD3pQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/middleware-ssec/3.968.0: + resolution: {integrity: sha512-gbrhJ/JrKJ48SDPtlt5jPOadiPl2Rae0VLuNRyNg0ng7ygRO/0NjgKME4D1XINDjMOiZsOLNAcXmmwGFsVZsyw==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/types': 3.965.0 - '@smithy/types': 4.11.0 + '@aws-sdk/types': 3.968.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/middleware-user-agent/3.965.0: - resolution: {integrity: sha512-RBEYVGgu/WeAt+H/qLrGc+t8LqAUkbyvh3wBfTiuAD+uBcWsKnvnB1iSBX75FearC0fmoxzXRUc0PMxMdqpjJQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/middleware-user-agent/3.968.0: + resolution: {integrity: sha512-4h5/B8FyxMjLxtXd5jbM2R69aO57qQiHoAJQTtkpuxmM7vhvjSxEQtMM9L1kuMXoMVNE7xM4886h0+gbmmxplg==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/core': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@aws-sdk/util-endpoints': 3.965.0 - '@smithy/core': 3.20.1 - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@aws-sdk/util-endpoints': 3.968.0 + '@smithy/core': 3.20.5 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/nested-clients/3.965.0: - resolution: {integrity: sha512-muNVUjUEU+/KLFrLzQ8PMXyw4+a/MP6t4GIvwLtyx/kH0rpSy5s0YmqacMXheuIe6F/5QT8uksXGNAQenitkGQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/nested-clients/3.968.0: + resolution: {integrity: sha512-LLppm+8MzD3afD2IA/tYDp5AoVPOybK7MHQz5DVB4HsZ+fHvwYlvau2ZUK8nKwJSk5c1kWcxCZkyuJQjFu37ng==} + engines: {node: '>=20.0.0'} dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.965.0 - '@aws-sdk/middleware-host-header': 3.965.0 - '@aws-sdk/middleware-logger': 3.965.0 - '@aws-sdk/middleware-recursion-detection': 3.965.0 - '@aws-sdk/middleware-user-agent': 3.965.0 - '@aws-sdk/region-config-resolver': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@aws-sdk/util-endpoints': 3.965.0 - '@aws-sdk/util-user-agent-browser': 3.965.0 - '@aws-sdk/util-user-agent-node': 3.965.0 - '@smithy/config-resolver': 4.4.5 - '@smithy/core': 3.20.1 - '@smithy/fetch-http-handler': 5.3.8 - '@smithy/hash-node': 4.2.7 - '@smithy/invalid-dependency': 4.2.7 - '@smithy/middleware-content-length': 4.2.7 - '@smithy/middleware-endpoint': 4.4.2 - '@smithy/middleware-retry': 4.4.18 - '@smithy/middleware-serde': 4.2.8 - '@smithy/middleware-stack': 4.2.7 - '@smithy/node-config-provider': 4.3.7 - '@smithy/node-http-handler': 4.4.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/smithy-client': 4.10.3 - '@smithy/types': 4.11.0 - '@smithy/url-parser': 4.2.7 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/middleware-host-header': 3.968.0 + '@aws-sdk/middleware-logger': 3.968.0 + '@aws-sdk/middleware-recursion-detection': 3.968.0 + '@aws-sdk/middleware-user-agent': 3.968.0 + '@aws-sdk/region-config-resolver': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@aws-sdk/util-endpoints': 3.968.0 + '@aws-sdk/util-user-agent-browser': 3.968.0 + '@aws-sdk/util-user-agent-node': 3.968.0 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.20.5 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.6 + '@smithy/middleware-retry': 4.4.22 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.10.7 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.17 - '@smithy/util-defaults-mode-node': 4.2.20 - '@smithy/util-endpoints': 3.2.7 - '@smithy/util-middleware': 4.2.7 - '@smithy/util-retry': 4.2.7 + '@smithy/util-defaults-mode-browser': 4.3.21 + '@smithy/util-defaults-mode-node': 4.2.24 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/region-config-resolver/3.965.0: - resolution: {integrity: sha512-RoMhu9ly2B0coxn8ctXosPP2WmDD0MkQlZGLjoYHQUOCBmty5qmCxOqBmBDa6wbWbB8xKtMQ/4VXloQOgzjHXg==} - engines: {node: '>=18.0.0'} + /@aws-sdk/region-config-resolver/3.968.0: + resolution: {integrity: sha512-BzrCpxEsAHbi+yDGtgXJ+/5AvLPjfhcT6DlL+Fc4g13J5Z0VwiO95Wem+Q4KK7WDZH7/sZ/1WFvfitjLTKZbEw==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/types': 3.965.0 - '@smithy/config-resolver': 4.4.5 - '@smithy/node-config-provider': 4.3.7 - '@smithy/types': 4.11.0 + '@aws-sdk/types': 3.968.0 + '@smithy/config-resolver': 4.4.6 + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/signature-v4-multi-region/3.965.0: - resolution: {integrity: sha512-hgbAThbsUrWtNpFBQxzXevIfd5Qgr4TLbXY1AIbmpSX9fPVC114pdieRMpopJ0fYaJ7v5/blTiS6wzVdXleZ/w==} - engines: {node: '>=18.0.0'} + /@aws-sdk/signature-v4-multi-region/3.968.0: + resolution: {integrity: sha512-kRBA1KK3LTHnfYJLPsESNF2WhQN6DyGc9MiM6qG8AdJwMPQkanF5hwtckV1ToO2KB5v1q+1PuvBvy6Npd2IV+w==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/middleware-sdk-s3': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/protocol-http': 5.3.7 - '@smithy/signature-v4': 5.3.7 - '@smithy/types': 4.11.0 + '@aws-sdk/middleware-sdk-s3': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/token-providers/3.965.0: - resolution: {integrity: sha512-aR0qxg0b8flkXJVE+CM1gzo7uJ57md50z2eyCwofC0QIz5Y0P7/7vvb9/dmUQt6eT9XRN5iRcUqq2IVxVDvJOw==} - engines: {node: '>=18.0.0'} + /@aws-sdk/token-providers/3.968.0: + resolution: {integrity: sha512-lXUZqB2qTFmZYNXPnVT0suSHGiuQAPrL2DhmhbjqOdR7+GKDHL5KbeKFvPisy7Y4neliJqT4Q1VPWa0nqYaiZg==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/core': 3.965.0 - '@aws-sdk/nested-clients': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/property-provider': 4.2.7 - '@smithy/shared-ini-file-loader': 4.4.2 - '@smithy/types': 4.11.0 + '@aws-sdk/core': 3.968.0 + '@aws-sdk/nested-clients': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/types/3.965.0: - resolution: {integrity: sha512-jvodoJdMavvg8faN7co58vVJRO5MVep4JFPRzUNCzpJ98BDqWDk/ad045aMJcmxkLzYLS2UAnUmqjJ/tUPNlzQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/types/3.968.0: + resolution: {integrity: sha512-Wuumj/1cuiuXTMdHmvH88zbEl+5Pw++fOFQuMCF4yP0R+9k1lwX8rVst+oy99xaxtdluJZXrsccoZoA67ST1Ow==} + engines: {node: '>=20.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/util-arn-parser/3.965.0: - resolution: {integrity: sha512-bNGKr5Tct28jGLkL8xIkGu7swpDgBpkTVbGaofhzr/X80iclbOv656RGxhMpDvmc4S9UuQnqLRXyceNFNF2V7Q==} - engines: {node: '>=18.0.0'} + /@aws-sdk/util-arn-parser/3.968.0: + resolution: {integrity: sha512-gqqvYcitIIM2K4lrDX9de9YvOfXBcVdxfT/iLnvHJd4YHvSXlt+gs+AsL4FfPCxG4IG9A+FyulP9Sb1MEA75vw==} + engines: {node: '>=20.0.0'} dependencies: tslib: 2.8.1 dev: true - /@aws-sdk/util-endpoints/3.965.0: - resolution: {integrity: sha512-WqSCB0XIsGUwZWvrYkuoofi2vzoVHqyeJ2kN+WyoOsxPLTiQSBIoqm/01R/qJvoxwK/gOOF7su9i84Vw2NQQpQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/util-endpoints/3.968.0: + resolution: {integrity: sha512-9IdilgylS0crFSeI59vtr8qhDYMYYOvnvkl1dLp59+EmLH1IdXz7+4cR5oh5PkoqD7DRzc5Uzm2GnZhK6I0oVQ==} + engines: {node: '>=20.0.0'} dependencies: - '@aws-sdk/types': 3.965.0 - '@smithy/types': 4.11.0 - '@smithy/url-parser': 4.2.7 - '@smithy/util-endpoints': 3.2.7 + '@aws-sdk/types': 3.968.0 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-endpoints': 3.2.8 tslib: 2.8.1 dev: true - /@aws-sdk/util-locate-window/3.965.0: - resolution: {integrity: sha512-9LJFand4bIoOjOF4x3wx0UZYiFZRo4oUauxQSiEX2dVg+5qeBOJSjp2SeWykIE6+6frCZ5wvWm2fGLK8D32aJw==} - engines: {node: '>=18.0.0'} + /@aws-sdk/util-locate-window/3.965.2: + resolution: {integrity: sha512-qKgO7wAYsXzhwCHhdbaKFyxd83Fgs8/1Ka+jjSPrv2Ll7mB55Wbwlo0kkfMLh993/yEc8aoDIAc1Fz9h4Spi4Q==} + engines: {node: '>=20.0.0'} dependencies: tslib: 2.8.1 dev: true - /@aws-sdk/util-user-agent-browser/3.965.0: - resolution: {integrity: sha512-Xiza/zMntQGpkd2dETQeAK8So1pg5+STTzpcdGWxj5q0jGO5ayjqT/q1Q7BrsX5KIr6PvRkl9/V7lLCv04wGjQ==} + /@aws-sdk/util-user-agent-browser/3.968.0: + resolution: {integrity: sha512-nRxjs8Jpq8ZHFsa/0uiww2f4+40D6Dt6bQmepAJHIE/D+atwPINDKsfamCjFnxrjKU3WBWpGYEf/QDO0XZsFMw==} dependencies: - '@aws-sdk/types': 3.965.0 - '@smithy/types': 4.11.0 + '@aws-sdk/types': 3.968.0 + '@smithy/types': 4.12.0 bowser: 2.13.1 tslib: 2.8.1 dev: true - /@aws-sdk/util-user-agent-node/3.965.0: - resolution: {integrity: sha512-kokIHUfNT3/P55E4fUJJrFHuuA9BbjFKUIxoLrd3UaRfdafT0ScRfg2eaZie6arf60EuhlUIZH0yALxttMEjxQ==} - engines: {node: '>=18.0.0'} + /@aws-sdk/util-user-agent-node/3.968.0: + resolution: {integrity: sha512-oaIkPGraGhZgkDmxVhTIlakaUNWKO9aMN+uB6I+eS26MWi/lpMK66HTZeXEnaTrmt5/kl99YC0N37zScz58Tdg==} + engines: {node: '>=20.0.0'} peerDependencies: aws-crt: '>=1.0.0' peerDependenciesMeta: aws-crt: optional: true dependencies: - '@aws-sdk/middleware-user-agent': 3.965.0 - '@aws-sdk/types': 3.965.0 - '@smithy/node-config-provider': 4.3.7 - '@smithy/types': 4.11.0 + '@aws-sdk/middleware-user-agent': 3.968.0 + '@aws-sdk/types': 3.968.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@aws-sdk/xml-builder/3.965.0: - resolution: {integrity: sha512-Tcod25/BTupraQwtb+Q+GX8bmEZfxIFjjJ/AvkhUZsZlkPeVluzq1uu3Oeqf145DCdMjzLIN6vab5MrykbDP+g==} - engines: {node: '>=18.0.0'} + /@aws-sdk/xml-builder/3.968.0: + resolution: {integrity: sha512-bZQKn41ebPh/uW9uWUE5oLuaBr44Gt78dkw2amu5zcwo1J/d8s6FdzZcRDmz0rHE2NHJWYkdQYeVQo7jhMziqA==} + engines: {node: '>=20.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 fast-xml-parser: 5.2.5 tslib: 2.8.1 dev: true @@ -1763,8 +1763,8 @@ packages: '@babel/highlight': 7.25.9 dev: true - /@babel/code-frame/7.27.1: - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + /@babel/code-frame/7.28.6: + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.28.5 @@ -1772,24 +1772,24 @@ packages: picocolors: 1.1.1 dev: true - /@babel/compat-data/7.28.5: - resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + /@babel/compat-data/7.28.6: + resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.28.5: - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + /@babel/core/7.28.6: + resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3_@babel+core@7.28.5 - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6_@babel+core@7.28.6 + '@babel/helpers': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -1800,22 +1800,22 @@ packages: - supports-color dev: true - /@babel/generator/7.28.5: - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + /@babel/generator/7.28.6: + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 dev: true - /@babel/helper-compilation-targets/7.27.2: - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + /@babel/helper-compilation-targets/7.28.6: + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.28.5 + '@babel/compat-data': 7.28.6 '@babel/helper-validator-option': 7.27.1 browserslist: 4.28.1 lru-cache: 5.1.1 @@ -1827,32 +1827,32 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-module-imports/7.27.1: - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + /@babel/helper-module-imports/7.28.6: + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-module-transforms/7.28.3_@babel+core@7.28.5: - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + /@babel/helper-module-transforms/7.28.6_@babel+core@7.28.6: + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-plugin-utils/7.27.1: - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + /@babel/helper-plugin-utils/7.28.6: + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} dev: true @@ -1871,12 +1871,12 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.28.4: - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + /@babel/helpers/7.28.6: + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 dev: true /@babel/highlight/7.25.9: @@ -1889,199 +1889,199 @@ packages: picocolors: 1.1.1 dev: true - /@babel/parser/7.28.5: - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + /@babel/parser/7.28.6: + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.28.5: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.28.6: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.28.5: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.28.6: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.28.5: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.28.6: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.28.5: + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.28.6: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-import-attributes/7.27.1_@babel+core@7.28.5: - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + /@babel/plugin-syntax-import-attributes/7.28.6_@babel+core@7.28.6: + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.28.5: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.28.6: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.28.5: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.28.6: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-jsx/7.27.1_@babel+core@7.28.5: - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + /@babel/plugin-syntax-jsx/7.28.6_@babel+core@7.28.6: + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.28.5: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.28.6: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.28.5: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.28.6: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.28.5: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.28.6: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.28.5: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.28.6: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.28.5: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.28.6: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.28.5: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.28.6: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.28.5: + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.28.6: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.28.5: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.28.6: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/plugin-syntax-typescript/7.27.1_@babel+core@7.28.5: - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + /@babel/plugin-syntax-typescript/7.28.6_@babel+core@7.28.6: + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 dev: true - /@babel/template/7.27.2: - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + /@babel/template/7.28.6: + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 dev: true - /@babel/traverse/7.28.5: - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + /@babel/traverse/7.28.6: + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 debug: 4.4.3 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.28.5: - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + /@babel/types/7.28.6: + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.27.1 @@ -2102,26 +2102,27 @@ packages: engines: {node: '>=0.1.90'} dev: false - /@contentstack/cli-command/1.7.0_debug@4.4.3: - resolution: {integrity: sha512-hhsGGa6wFcvHwkapu0vXB1yvOaOmJ1LaV2imyjUREVxvHYC5O4JS2H5VeXLq137Q/dOk5q6o9MjVS+9W4Ri4sw==} + /@contentstack/cli-command/1.7.1_lxq42tdpoxpye5tb7w3htdbbdq: + resolution: {integrity: sha512-VS+f+hwStXNShyVs9m/xV5l+KVZZ81k9lhJu+XjO5zXV/ZS3BNzW96xS6oAOUvSURVUPmZvELzjXFIvwbdBnGQ==} engines: {node: '>=14.0.0'} dependencies: - '@contentstack/cli-utilities': 1.15.0_debug@4.4.3 + '@contentstack/cli-utilities': 1.16.0_lxq42tdpoxpye5tb7w3htdbbdq '@oclif/core': 4.8.0 '@oclif/plugin-help': 6.2.36 contentstack: 3.26.3 transitivePeerDependencies: + - '@types/node' - debug dev: false - /@contentstack/cli-launch/1.9.4_tanrtkdzllst73ozorstzho2ki: + /@contentstack/cli-launch/1.9.4_ye7kx5d2fkdihvpgkysaadv2ca: resolution: {integrity: sha512-Wev1zDBZ61eJSOGEaj08LZXkK6+sX7TM9TBxNd5ZHc0tkl4y8gDtuoo+wfaCV0/WcXmglUHazFX4ZgDYyB9UDQ==} engines: {node: '>=14.0.0'} hasBin: true dependencies: '@apollo/client': 3.14.0_graphql@16.12.0 - '@contentstack/cli-command': 1.7.0_debug@4.4.3 - '@contentstack/cli-utilities': 1.14.4_debug@4.4.3 + '@contentstack/cli-command': 1.7.1_lxq42tdpoxpye5tb7w3htdbbdq + '@contentstack/cli-utilities': 1.16.0_lxq42tdpoxpye5tb7w3htdbbdq '@oclif/core': 4.8.0 '@oclif/plugin-help': 6.2.36 '@oclif/plugin-plugins': 5.4.54 @@ -2130,7 +2131,7 @@ packages: '@rollup/plugin-node-resolve': 16.0.3_rollup@4.55.1 '@rollup/plugin-typescript': 12.3.0_5ruxaqqe36fu6wuhs7btsktcwq '@types/express': 4.17.25 - '@types/express-serve-static-core': 4.19.7 + '@types/express-serve-static-core': 4.19.8 adm-zip: 0.5.16 chalk: 4.1.2 cross-fetch: 4.1.0 @@ -2144,6 +2145,7 @@ packages: rollup: 4.55.1 winston: 3.19.0 transitivePeerDependencies: + - '@types/node' - '@types/react' - debug - encoding @@ -2156,8 +2158,8 @@ packages: - typescript dev: false - /@contentstack/cli-utilities/1.14.4_debug@4.4.3: - resolution: {integrity: sha512-Pg124tYh/p688aerqVgk8lEsCF8F5Ky35yes3KO23Wzt44Hvzps7X27psOTHs/aD4jhZkw3aB+jTItQlL84b8g==} + /@contentstack/cli-utilities/1.16.0_lxq42tdpoxpye5tb7w3htdbbdq: + resolution: {integrity: sha512-2SlKE9bJH3bd+ESNq1c9FWRCYzIjuWxRtXp+83eX7qDzHA7Lgu2EsRjfq+TcYVtBdCd0BzVATRIU2t/vNUl5Zw==} dependencies: '@contentstack/management': 1.25.1_debug@4.4.3 '@contentstack/marketplace-sdk': 1.4.1_debug@4.4.3 @@ -2170,43 +2172,7 @@ packages: conf: 10.2.0 dotenv: 16.6.1 figures: 3.2.0 - inquirer: 8.2.6 - inquirer-search-checkbox: 1.0.0 - inquirer-search-list: 1.2.6 - js-yaml: 4.1.1 - klona: 2.0.6 - lodash: 4.17.21 - mkdirp: 1.0.4 - open: 8.4.2 - ora: 5.4.1 - papaparse: 5.5.3 - recheck: 4.4.5 - rxjs: 6.6.7 - traverse: 0.6.11 - tty-table: 4.2.3 - unique-string: 2.0.0 - uuid: 9.0.1 - winston: 3.19.0 - xdg-basedir: 4.0.0 - transitivePeerDependencies: - - debug - dev: false - - /@contentstack/cli-utilities/1.15.0_debug@4.4.3: - resolution: {integrity: sha512-Q3csEjZk7rdEvbhRyq41jMT9nFduxR7zVpyGAkYdialh4KjMHxJvzVUdmYuA3PA92xoTlFdcY97yXPQJpmptTw==} - dependencies: - '@contentstack/management': 1.22.0_debug@4.4.3 - '@contentstack/marketplace-sdk': 1.4.1_debug@4.4.3 - '@oclif/core': 4.8.0 - axios: 1.13.2_debug@4.4.3 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-progress: 3.12.0 - cli-table: 0.3.11 - conf: 10.2.0 - dotenv: 16.6.1 - figures: 3.2.0 - inquirer: 8.2.6 + inquirer: 8.2.7_@types+node@14.18.63 inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 js-yaml: 4.1.1 @@ -2225,6 +2191,7 @@ packages: winston: 3.19.0 xdg-basedir: 4.0.0 transitivePeerDependencies: + - '@types/node' - debug dev: false @@ -2376,7 +2343,7 @@ packages: engines: {node: '>=18'} dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.0 comment-parser: 1.4.1 esquery: 1.7.0 jsdoc-type-pratt-parser: 4.1.0 @@ -2959,7 +2926,7 @@ packages: '@types/node': 14.18.63 yoctocolors-cjs: 2.1.3 - /@inquirer/checkbox/4.3.2_@types+node@20.19.27: + /@inquirer/checkbox/4.3.2_@types+node@20.19.29: resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} engines: {node: '>=18'} peerDependencies: @@ -2969,10 +2936,10 @@ packages: optional: true dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2_@types+node@20.19.27 + '@inquirer/core': 10.3.2_@types+node@20.19.29 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 yoctocolors-cjs: 2.1.3 dev: true @@ -3010,7 +2977,7 @@ packages: '@inquirer/type': 3.0.10_@types+node@14.18.63 '@types/node': 14.18.63 - /@inquirer/confirm/5.1.21_@types+node@20.19.27: + /@inquirer/confirm/5.1.21_@types+node@20.19.29: resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} engines: {node: '>=18'} peerDependencies: @@ -3019,9 +2986,9 @@ packages: '@types/node': optional: true dependencies: - '@inquirer/core': 10.3.2_@types+node@20.19.27 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/core': 10.3.2_@types+node@20.19.29 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 dev: true /@inquirer/core/10.3.2: @@ -3062,7 +3029,7 @@ packages: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 - /@inquirer/core/10.3.2_@types+node@20.19.27: + /@inquirer/core/10.3.2_@types+node@20.19.29: resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} engines: {node: '>=18'} peerDependencies: @@ -3073,8 +3040,8 @@ packages: dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 @@ -3089,7 +3056,7 @@ packages: '@inquirer/figures': 1.0.15 '@inquirer/type': 2.0.0 '@types/mute-stream': 0.0.4 - '@types/node': 22.19.3 + '@types/node': 22.19.6 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 cli-width: 4.1.0 @@ -3128,7 +3095,7 @@ packages: '@inquirer/type': 3.0.10_@types+node@14.18.63 '@types/node': 14.18.63 - /@inquirer/editor/4.2.23_@types+node@20.19.27: + /@inquirer/editor/4.2.23_@types+node@20.19.29: resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} engines: {node: '>=18'} peerDependencies: @@ -3137,10 +3104,10 @@ packages: '@types/node': optional: true dependencies: - '@inquirer/core': 10.3.2_@types+node@20.19.27 - '@inquirer/external-editor': 1.0.3_@types+node@20.19.27 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/core': 10.3.2_@types+node@20.19.29 + '@inquirer/external-editor': 1.0.3_@types+node@20.19.29 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 dev: true /@inquirer/expand/4.0.23: @@ -3171,7 +3138,7 @@ packages: '@types/node': 14.18.63 yoctocolors-cjs: 2.1.3 - /@inquirer/expand/4.0.23_@types+node@20.19.27: + /@inquirer/expand/4.0.23_@types+node@20.19.29: resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} engines: {node: '>=18'} peerDependencies: @@ -3180,9 +3147,9 @@ packages: '@types/node': optional: true dependencies: - '@inquirer/core': 10.3.2_@types+node@20.19.27 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/core': 10.3.2_@types+node@20.19.29 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 yoctocolors-cjs: 2.1.3 dev: true @@ -3211,7 +3178,7 @@ packages: chardet: 2.1.1 iconv-lite: 0.7.2 - /@inquirer/external-editor/1.0.3_@types+node@20.19.27: + /@inquirer/external-editor/1.0.3_@types+node@20.19.29: resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} peerDependencies: @@ -3220,7 +3187,7 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 chardet: 2.1.1 iconv-lite: 0.7.2 dev: true @@ -3263,7 +3230,7 @@ packages: '@inquirer/type': 3.0.10_@types+node@14.18.63 '@types/node': 14.18.63 - /@inquirer/input/4.3.1_@types+node@20.19.27: + /@inquirer/input/4.3.1_@types+node@20.19.29: resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} engines: {node: '>=18'} peerDependencies: @@ -3272,9 +3239,9 @@ packages: '@types/node': optional: true dependencies: - '@inquirer/core': 10.3.2_@types+node@20.19.27 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/core': 10.3.2_@types+node@20.19.29 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 dev: true /@inquirer/number/3.0.23: @@ -3303,7 +3270,7 @@ packages: '@inquirer/type': 3.0.10_@types+node@14.18.63 '@types/node': 14.18.63 - /@inquirer/number/3.0.23_@types+node@20.19.27: + /@inquirer/number/3.0.23_@types+node@20.19.29: resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} engines: {node: '>=18'} peerDependencies: @@ -3312,9 +3279,9 @@ packages: '@types/node': optional: true dependencies: - '@inquirer/core': 10.3.2_@types+node@20.19.27 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/core': 10.3.2_@types+node@20.19.29 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 dev: true /@inquirer/password/4.0.23: @@ -3345,7 +3312,7 @@ packages: '@inquirer/type': 3.0.10_@types+node@14.18.63 '@types/node': 14.18.63 - /@inquirer/password/4.0.23_@types+node@20.19.27: + /@inquirer/password/4.0.23_@types+node@20.19.29: resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} engines: {node: '>=18'} peerDependencies: @@ -3355,9 +3322,9 @@ packages: optional: true dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2_@types+node@20.19.27 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/core': 10.3.2_@types+node@20.19.29 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 dev: true /@inquirer/prompts/7.10.1: @@ -3402,7 +3369,7 @@ packages: '@inquirer/select': 4.4.2_@types+node@14.18.63 '@types/node': 14.18.63 - /@inquirer/prompts/7.10.1_@types+node@20.19.27: + /@inquirer/prompts/7.10.1_@types+node@20.19.29: resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} engines: {node: '>=18'} peerDependencies: @@ -3411,17 +3378,17 @@ packages: '@types/node': optional: true dependencies: - '@inquirer/checkbox': 4.3.2_@types+node@20.19.27 - '@inquirer/confirm': 5.1.21_@types+node@20.19.27 - '@inquirer/editor': 4.2.23_@types+node@20.19.27 - '@inquirer/expand': 4.0.23_@types+node@20.19.27 - '@inquirer/input': 4.3.1_@types+node@20.19.27 - '@inquirer/number': 3.0.23_@types+node@20.19.27 - '@inquirer/password': 4.0.23_@types+node@20.19.27 - '@inquirer/rawlist': 4.1.11_@types+node@20.19.27 - '@inquirer/search': 3.2.2_@types+node@20.19.27 - '@inquirer/select': 4.4.2_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/checkbox': 4.3.2_@types+node@20.19.29 + '@inquirer/confirm': 5.1.21_@types+node@20.19.29 + '@inquirer/editor': 4.2.23_@types+node@20.19.29 + '@inquirer/expand': 4.0.23_@types+node@20.19.29 + '@inquirer/input': 4.3.1_@types+node@20.19.29 + '@inquirer/number': 3.0.23_@types+node@20.19.29 + '@inquirer/password': 4.0.23_@types+node@20.19.29 + '@inquirer/rawlist': 4.1.11_@types+node@20.19.29 + '@inquirer/search': 3.2.2_@types+node@20.19.29 + '@inquirer/select': 4.4.2_@types+node@20.19.29 + '@types/node': 20.19.29 dev: true /@inquirer/rawlist/4.1.11: @@ -3452,7 +3419,7 @@ packages: '@types/node': 14.18.63 yoctocolors-cjs: 2.1.3 - /@inquirer/rawlist/4.1.11_@types+node@20.19.27: + /@inquirer/rawlist/4.1.11_@types+node@20.19.29: resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} engines: {node: '>=18'} peerDependencies: @@ -3461,9 +3428,9 @@ packages: '@types/node': optional: true dependencies: - '@inquirer/core': 10.3.2_@types+node@20.19.27 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/core': 10.3.2_@types+node@20.19.29 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 yoctocolors-cjs: 2.1.3 dev: true @@ -3497,7 +3464,7 @@ packages: '@types/node': 14.18.63 yoctocolors-cjs: 2.1.3 - /@inquirer/search/3.2.2_@types+node@20.19.27: + /@inquirer/search/3.2.2_@types+node@20.19.29: resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} engines: {node: '>=18'} peerDependencies: @@ -3506,10 +3473,10 @@ packages: '@types/node': optional: true dependencies: - '@inquirer/core': 10.3.2_@types+node@20.19.27 + '@inquirer/core': 10.3.2_@types+node@20.19.29 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 yoctocolors-cjs: 2.1.3 dev: true @@ -3556,7 +3523,7 @@ packages: '@types/node': 14.18.63 yoctocolors-cjs: 2.1.3 - /@inquirer/select/4.4.2_@types+node@20.19.27: + /@inquirer/select/4.4.2_@types+node@20.19.29: resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} engines: {node: '>=18'} peerDependencies: @@ -3566,10 +3533,10 @@ packages: optional: true dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2_@types+node@20.19.27 + '@inquirer/core': 10.3.2_@types+node@20.19.29 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10_@types+node@20.19.27 - '@types/node': 20.19.27 + '@inquirer/type': 3.0.10_@types+node@20.19.29 + '@types/node': 20.19.29 yoctocolors-cjs: 2.1.3 dev: true @@ -3608,7 +3575,7 @@ packages: dependencies: '@types/node': 14.18.63 - /@inquirer/type/3.0.10_@types+node@20.19.27: + /@inquirer/type/3.0.10_@types+node@20.19.29: resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} engines: {node: '>=18'} peerDependencies: @@ -3617,7 +3584,7 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: true /@isaacs/balanced-match/4.0.1: @@ -3663,7 +3630,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.19.27 + '@types/node': 20.19.29 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -3684,14 +3651,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.27 + '@types/node': 20.19.29 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0_rqz7jh55thjpzxmfwxo7snmxci + jest-config: 29.7.0_bhw5p2lp54f436tjpvah647z6u jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -3719,7 +3686,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.27 + '@types/node': 20.19.29 jest-mock: 29.7.0 dev: true @@ -3746,7 +3713,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.19.27 + '@types/node': 20.19.29 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -3779,7 +3746,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 20.19.27 + '@types/node': 20.19.29 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit: 0.1.2 @@ -3841,7 +3808,7 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 6.1.1 @@ -3866,7 +3833,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.19.27 + '@types/node': 20.19.29 '@types/yargs': 15.0.20 chalk: 4.1.2 dev: true @@ -3878,7 +3845,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.19.27 + '@types/node': 20.19.29 '@types/yargs': 17.0.35 chalk: 4.1.2 dev: true @@ -4014,11 +3981,11 @@ packages: transitivePeerDependencies: - '@types/node' - /@oclif/plugin-not-found/3.2.73_@types+node@20.19.27: + /@oclif/plugin-not-found/3.2.73_@types+node@20.19.29: resolution: {integrity: sha512-2bQieTGI9XNFe9hKmXQjJmHV5rZw+yn7Rud1+C5uLEo8GaT89KZbiLTJgL35tGILahy/cB6+WAs812wjw7TK6w==} engines: {node: '>=18.0.0'} dependencies: - '@inquirer/prompts': 7.10.1_@types+node@20.19.27 + '@inquirer/prompts': 7.10.1_@types+node@20.19.29 '@oclif/core': 4.8.0 ansis: 3.17.0 fast-levenshtein: 3.0.0 @@ -4077,12 +4044,14 @@ packages: /@otplib/plugin-crypto/12.0.1: resolution: {integrity: sha512-qPuhN3QrT7ZZLcLCyKOSNhuijUi9G5guMRVrxq63r9YNOxxQjPm59gVxLM+7xGnHnM6cimY57tuKsjK7y9LM1g==} + deprecated: Please upgrade to v13 of otplib. Refer to otplib docs for migration paths dependencies: '@otplib/core': 12.0.1 dev: false /@otplib/plugin-thirty-two/12.0.1: resolution: {integrity: sha512-MtT+uqRso909UkbrrYpJ6XFjj9D+x2Py7KjTO9JDPhL0bJUYVu5kFP4TFZW4NFAywrAtFRxOVY261u0qwb93gA==} + deprecated: Please upgrade to v13 of otplib. Refer to otplib docs for migration paths dependencies: '@otplib/core': 12.0.1 thirty-two: 1.0.2 @@ -4090,6 +4059,7 @@ packages: /@otplib/preset-default/12.0.1: resolution: {integrity: sha512-xf1v9oOJRyXfluBhMdpOkr+bsE+Irt+0D5uHtvg6x1eosfmHCsCC6ej/m7FXiWqdo0+ZUI6xSKDhJwc8yfiOPQ==} + deprecated: Please upgrade to v13 of otplib. Refer to otplib docs for migration paths dependencies: '@otplib/core': 12.0.1 '@otplib/plugin-crypto': 12.0.1 @@ -4478,11 +4448,11 @@ packages: /@sinonjs/text-encoding/0.7.3: resolution: {integrity: sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==} - /@smithy/abort-controller/4.2.7: - resolution: {integrity: sha512-rzMY6CaKx2qxrbYbqjXWS0plqEy7LOdKHS0bg4ixJ6aoGDPNUcLWk/FRNuCILh7GKLG9TFUXYYeQQldMBBwuyw==} + /@smithy/abort-controller/4.2.8: + resolution: {integrity: sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true @@ -4501,135 +4471,135 @@ packages: tslib: 2.8.1 dev: true - /@smithy/config-resolver/4.4.5: - resolution: {integrity: sha512-HAGoUAFYsUkoSckuKbCPayECeMim8pOu+yLy1zOxt1sifzEbrsRpYa+mKcMdiHKMeiqOibyPG0sFJnmaV/OGEg==} + /@smithy/config-resolver/4.4.6: + resolution: {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/node-config-provider': 4.3.7 - '@smithy/types': 4.11.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 '@smithy/util-config-provider': 4.2.0 - '@smithy/util-endpoints': 3.2.7 - '@smithy/util-middleware': 4.2.7 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 dev: true - /@smithy/core/3.20.1: - resolution: {integrity: sha512-wOboSEdQ85dbKAJ0zL+wQ6b0HTSBRhtGa0PYKysQXkRg+vK0tdCRRVruiFM2QMprkOQwSYOnwF4og96PAaEGag==} + /@smithy/core/3.20.5: + resolution: {integrity: sha512-0Tz77Td8ynHaowXfOdrD0F1IH4tgWGUhwmLwmpFyTbr+U9WHXNNp9u/k2VjBXGnSe7BwjBERRpXsokGTXzNjhA==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/middleware-serde': 4.2.8 - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 + '@smithy/middleware-serde': 4.2.9 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 - '@smithy/util-middleware': 4.2.7 - '@smithy/util-stream': 4.5.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 '@smithy/util-utf8': 4.2.0 '@smithy/uuid': 1.1.0 tslib: 2.8.1 dev: true - /@smithy/credential-provider-imds/4.2.7: - resolution: {integrity: sha512-CmduWdCiILCRNbQWFR0OcZlUPVtyE49Sr8yYL0rZQ4D/wKxiNzBNS/YHemvnbkIWj623fplgkexUd/c9CAKdoA==} + /@smithy/credential-provider-imds/4.2.8: + resolution: {integrity: sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/node-config-provider': 4.3.7 - '@smithy/property-provider': 4.2.7 - '@smithy/types': 4.11.0 - '@smithy/url-parser': 4.2.7 + '@smithy/node-config-provider': 4.3.8 + '@smithy/property-provider': 4.2.8 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 tslib: 2.8.1 dev: true - /@smithy/eventstream-codec/4.2.7: - resolution: {integrity: sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ==} + /@smithy/eventstream-codec/4.2.8: + resolution: {integrity: sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==} engines: {node: '>=18.0.0'} dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 '@smithy/util-hex-encoding': 4.2.0 tslib: 2.8.1 dev: true - /@smithy/eventstream-serde-browser/4.2.7: - resolution: {integrity: sha512-ujzPk8seYoDBmABDE5YqlhQZAXLOrtxtJLrbhHMKjBoG5b4dK4i6/mEU+6/7yXIAkqOO8sJ6YxZl+h0QQ1IJ7g==} + /@smithy/eventstream-serde-browser/4.2.8: + resolution: {integrity: sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/eventstream-serde-universal': 4.2.7 - '@smithy/types': 4.11.0 + '@smithy/eventstream-serde-universal': 4.2.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/eventstream-serde-config-resolver/4.3.7: - resolution: {integrity: sha512-x7BtAiIPSaNaWuzm24Q/mtSkv+BrISO/fmheiJ39PKRNH3RmH2Hph/bUKSOBOBC9unqfIYDhKTHwpyZycLGPVQ==} + /@smithy/eventstream-serde-config-resolver/4.3.8: + resolution: {integrity: sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/eventstream-serde-node/4.2.7: - resolution: {integrity: sha512-roySCtHC5+pQq5lK4be1fZ/WR6s/AxnPaLfCODIPArtN2du8s5Ot4mKVK3pPtijL/L654ws592JHJ1PbZFF6+A==} + /@smithy/eventstream-serde-node/4.2.8: + resolution: {integrity: sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/eventstream-serde-universal': 4.2.7 - '@smithy/types': 4.11.0 + '@smithy/eventstream-serde-universal': 4.2.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/eventstream-serde-universal/4.2.7: - resolution: {integrity: sha512-QVD+g3+icFkThoy4r8wVFZMsIP08taHVKjE6Jpmz8h5CgX/kk6pTODq5cht0OMtcapUx+xrPzUTQdA+TmO0m1g==} + /@smithy/eventstream-serde-universal/4.2.8: + resolution: {integrity: sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/eventstream-codec': 4.2.7 - '@smithy/types': 4.11.0 + '@smithy/eventstream-codec': 4.2.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/fetch-http-handler/5.3.8: - resolution: {integrity: sha512-h/Fi+o7mti4n8wx1SR6UHWLaakwHRx29sizvp8OOm7iqwKGFneT06GCSFhml6Bha5BT6ot5pj3CYZnCHhGC2Rg==} + /@smithy/fetch-http-handler/5.3.9: + resolution: {integrity: sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/protocol-http': 5.3.7 - '@smithy/querystring-builder': 4.2.7 - '@smithy/types': 4.11.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/querystring-builder': 4.2.8 + '@smithy/types': 4.12.0 '@smithy/util-base64': 4.3.0 tslib: 2.8.1 dev: true - /@smithy/hash-blob-browser/4.2.8: - resolution: {integrity: sha512-07InZontqsM1ggTCPSRgI7d8DirqRrnpL7nIACT4PW0AWrgDiHhjGZzbAE5UtRSiU0NISGUYe7/rri9ZeWyDpw==} + /@smithy/hash-blob-browser/4.2.9: + resolution: {integrity: sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==} engines: {node: '>=18.0.0'} dependencies: '@smithy/chunked-blob-reader': 5.2.0 '@smithy/chunked-blob-reader-native': 4.2.1 - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/hash-node/4.2.7: - resolution: {integrity: sha512-PU/JWLTBCV1c8FtB8tEFnY4eV1tSfBc7bDBADHfn1K+uRbPgSJ9jnJp0hyjiFN2PMdPzxsf1Fdu0eo9fJ760Xw==} + /@smithy/hash-node/4.2.8: + resolution: {integrity: sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 '@smithy/util-buffer-from': 4.2.0 '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 dev: true - /@smithy/hash-stream-node/4.2.7: - resolution: {integrity: sha512-ZQVoAwNYnFMIbd4DUc517HuwNelJUY6YOzwqrbcAgCnVn+79/OK7UjwA93SPpdTOpKDVkLIzavWm/Ck7SmnDPQ==} + /@smithy/hash-stream-node/4.2.8: + resolution: {integrity: sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 dev: true - /@smithy/invalid-dependency/4.2.7: - resolution: {integrity: sha512-ncvgCr9a15nPlkhIUx3CU4d7E7WEuVJOV7fS7nnK2hLtPK9tYRBkMHQbhXU1VvvKeBm/O0x26OEoBq+ngFpOEQ==} + /@smithy/invalid-dependency/4.2.8: + resolution: {integrity: sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true @@ -4647,179 +4617,179 @@ packages: tslib: 2.8.1 dev: true - /@smithy/md5-js/4.2.7: - resolution: {integrity: sha512-Wv6JcUxtOLTnxvNjDnAiATUsk8gvA6EeS8zzHig07dotpByYsLot+m0AaQEniUBjx97AC41MQR4hW0baraD1Xw==} + /@smithy/md5-js/4.2.8: + resolution: {integrity: sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 dev: true - /@smithy/middleware-content-length/4.2.7: - resolution: {integrity: sha512-GszfBfCcvt7kIbJ41LuNa5f0wvQCHhnGx/aDaZJCCT05Ld6x6U2s0xsc/0mBFONBZjQJp2U/0uSJ178OXOwbhg==} + /@smithy/middleware-content-length/4.2.8: + resolution: {integrity: sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/middleware-endpoint/4.4.2: - resolution: {integrity: sha512-mqpAdux0BNmZu/SqkFhQEnod4fX23xxTvU2LUpmKp0JpSI+kPYCiHJMmzREr8yxbNxKL2/DU1UZm9i++ayU+2g==} + /@smithy/middleware-endpoint/4.4.6: + resolution: {integrity: sha512-dpq3bHqbEOBqGBjRVHVFP3eUSPpX0BYtg1D5d5Irgk6orGGAuZfY22rC4sErhg+ZfY/Y0kPqm1XpAmDZg7DeuA==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/core': 3.20.1 - '@smithy/middleware-serde': 4.2.8 - '@smithy/node-config-provider': 4.3.7 - '@smithy/shared-ini-file-loader': 4.4.2 - '@smithy/types': 4.11.0 - '@smithy/url-parser': 4.2.7 - '@smithy/util-middleware': 4.2.7 + '@smithy/core': 3.20.5 + '@smithy/middleware-serde': 4.2.9 + '@smithy/node-config-provider': 4.3.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 dev: true - /@smithy/middleware-retry/4.4.18: - resolution: {integrity: sha512-E5hulijA59nBk/zvcwVMaS7FG7Y4l6hWA9vrW018r+8kiZef4/ETQaPI4oY+3zsy9f6KqDv3c4VKtO4DwwgpCg==} + /@smithy/middleware-retry/4.4.22: + resolution: {integrity: sha512-vwWDMaObSMjw6WCC/3Ae9G7uul5Sk95jr07CDk1gkIMpaDic0phPS1MpVAZ6+YkF7PAzRlpsDjxPwRlh/S11FQ==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/node-config-provider': 4.3.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/service-error-classification': 4.2.7 - '@smithy/smithy-client': 4.10.3 - '@smithy/types': 4.11.0 - '@smithy/util-middleware': 4.2.7 - '@smithy/util-retry': 4.2.7 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/service-error-classification': 4.2.8 + '@smithy/smithy-client': 4.10.7 + '@smithy/types': 4.12.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 '@smithy/uuid': 1.1.0 tslib: 2.8.1 dev: true - /@smithy/middleware-serde/4.2.8: - resolution: {integrity: sha512-8rDGYen5m5+NV9eHv9ry0sqm2gI6W7mc1VSFMtn6Igo25S507/HaOX9LTHAS2/J32VXD0xSzrY0H5FJtOMS4/w==} + /@smithy/middleware-serde/4.2.9: + resolution: {integrity: sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/middleware-stack/4.2.7: - resolution: {integrity: sha512-bsOT0rJ+HHlZd9crHoS37mt8qRRN/h9jRve1SXUhVbkRzu0QaNYZp1i1jha4n098tsvROjcwfLlfvcFuJSXEsw==} + /@smithy/middleware-stack/4.2.8: + resolution: {integrity: sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/node-config-provider/4.3.7: - resolution: {integrity: sha512-7r58wq8sdOcrwWe+klL9y3bc4GW1gnlfnFOuL7CXa7UzfhzhxKuzNdtqgzmTV+53lEp9NXh5hY/S4UgjLOzPfw==} + /@smithy/node-config-provider/4.3.8: + resolution: {integrity: sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/property-provider': 4.2.7 - '@smithy/shared-ini-file-loader': 4.4.2 - '@smithy/types': 4.11.0 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/node-http-handler/4.4.7: - resolution: {integrity: sha512-NELpdmBOO6EpZtWgQiHjoShs1kmweaiNuETUpuup+cmm/xJYjT4eUjfhrXRP4jCOaAsS3c3yPsP3B+K+/fyPCQ==} + /@smithy/node-http-handler/4.4.8: + resolution: {integrity: sha512-q9u+MSbJVIJ1QmJ4+1u+cERXkrhuILCBDsJUBAW1MPE6sFonbCNaegFuwW9ll8kh5UdyY3jOkoOGlc7BesoLpg==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/abort-controller': 4.2.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/querystring-builder': 4.2.7 - '@smithy/types': 4.11.0 + '@smithy/abort-controller': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/querystring-builder': 4.2.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/property-provider/4.2.7: - resolution: {integrity: sha512-jmNYKe9MGGPoSl/D7JDDs1C8b3dC8f/w78LbaVfoTtWy4xAd5dfjaFG9c9PWPihY4ggMQNQSMtzU77CNgAJwmA==} + /@smithy/property-provider/4.2.8: + resolution: {integrity: sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/protocol-http/5.3.7: - resolution: {integrity: sha512-1r07pb994I20dD/c2seaZhoCuNYm0rWrvBxhCQ70brNh11M5Ml2ew6qJVo0lclB3jMIXirD4s2XRXRe7QEi0xA==} + /@smithy/protocol-http/5.3.8: + resolution: {integrity: sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/querystring-builder/4.2.7: - resolution: {integrity: sha512-eKONSywHZxK4tBxe2lXEysh8wbBdvDWiA+RIuaxZSgCMmA0zMgoDpGLJhnyj+c0leOQprVnXOmcB4m+W9Rw7sg==} + /@smithy/querystring-builder/4.2.8: + resolution: {integrity: sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 '@smithy/util-uri-escape': 4.2.0 tslib: 2.8.1 dev: true - /@smithy/querystring-parser/4.2.7: - resolution: {integrity: sha512-3X5ZvzUHmlSTHAXFlswrS6EGt8fMSIxX/c3Rm1Pni3+wYWB6cjGocmRIoqcQF9nU5OgGmL0u7l9m44tSUpfj9w==} + /@smithy/querystring-parser/4.2.8: + resolution: {integrity: sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/service-error-classification/4.2.7: - resolution: {integrity: sha512-YB7oCbukqEb2Dlh3340/8g8vNGbs/QsNNRms+gv3N2AtZz9/1vSBx6/6tpwQpZMEJFs7Uq8h4mmOn48ZZ72MkA==} + /@smithy/service-error-classification/4.2.8: + resolution: {integrity: sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 dev: true - /@smithy/shared-ini-file-loader/4.4.2: - resolution: {integrity: sha512-M7iUUff/KwfNunmrgtqBfvZSzh3bmFgv/j/t1Y1dQ+8dNo34br1cqVEqy6v0mYEgi0DkGO7Xig0AnuOaEGVlcg==} + /@smithy/shared-ini-file-loader/4.4.3: + resolution: {integrity: sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/signature-v4/5.3.7: - resolution: {integrity: sha512-9oNUlqBlFZFOSdxgImA6X5GFuzE7V2H7VG/7E70cdLhidFbdtvxxt81EHgykGK5vq5D3FafH//X+Oy31j3CKOg==} + /@smithy/signature-v4/5.3.8: + resolution: {integrity: sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==} engines: {node: '>=18.0.0'} dependencies: '@smithy/is-array-buffer': 4.2.0 - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 '@smithy/util-hex-encoding': 4.2.0 - '@smithy/util-middleware': 4.2.7 + '@smithy/util-middleware': 4.2.8 '@smithy/util-uri-escape': 4.2.0 '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 dev: true - /@smithy/smithy-client/4.10.3: - resolution: {integrity: sha512-EfECiO/0fAfb590LBnUe7rI5ux7XfquQ8LBzTe7gxw0j9QW/q8UT/EHWHlxV/+jhQ3+Ssga9uUYXCQgImGMbNg==} + /@smithy/smithy-client/4.10.7: + resolution: {integrity: sha512-Uznt0I9z3os3Z+8pbXrOSCTXCA6vrjyN7Ub+8l2pRDum44vLv8qw0qGVkJN0/tZBZotaEFHrDPKUoPNueTr5Vg==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/core': 3.20.1 - '@smithy/middleware-endpoint': 4.4.2 - '@smithy/middleware-stack': 4.2.7 - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 - '@smithy/util-stream': 4.5.8 + '@smithy/core': 3.20.5 + '@smithy/middleware-endpoint': 4.4.6 + '@smithy/middleware-stack': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-stream': 4.5.10 tslib: 2.8.1 dev: true - /@smithy/types/4.11.0: - resolution: {integrity: sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA==} + /@smithy/types/4.12.0: + resolution: {integrity: sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==} engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 dev: true - /@smithy/url-parser/4.2.7: - resolution: {integrity: sha512-/RLtVsRV4uY3qPWhBDsjwahAtt3x2IsMGnP5W1b2VZIe+qgCqkLxI1UOHDZp1Q1QSOrdOR32MF3Ph2JfWT1VHg==} + /@smithy/url-parser/4.2.8: + resolution: {integrity: sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/querystring-parser': 4.2.7 - '@smithy/types': 4.11.0 + '@smithy/querystring-parser': 4.2.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true @@ -4869,35 +4839,35 @@ packages: tslib: 2.8.1 dev: true - /@smithy/util-defaults-mode-browser/4.3.17: - resolution: {integrity: sha512-dwN4GmivYF1QphnP3xJESXKtHvkkvKHSZI8GrSKMVoENVSKW2cFPRYC4ZgstYjUHdR3zwaDkIaTDIp26JuY7Cw==} + /@smithy/util-defaults-mode-browser/4.3.21: + resolution: {integrity: sha512-DtmVJarzqtjghtGjCw/PFJolcJkP7GkZgy+hWTAN3YLXNH+IC82uMoMhFoC3ZtIz5mOgCm5+hOGi1wfhVYgrxw==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/property-provider': 4.2.7 - '@smithy/smithy-client': 4.10.3 - '@smithy/types': 4.11.0 + '@smithy/property-provider': 4.2.8 + '@smithy/smithy-client': 4.10.7 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/util-defaults-mode-node/4.2.20: - resolution: {integrity: sha512-VD/I4AEhF1lpB3B//pmOIMBNLMrtdMXwy9yCOfa2QkJGDr63vH3RqPbSAKzoGMov3iryCxTXCxSsyGmEB8PDpg==} + /@smithy/util-defaults-mode-node/4.2.24: + resolution: {integrity: sha512-JelBDKPAVswVY666rezBvY6b0nF/v9TXjUbNwDNAyme7qqKYEX687wJv0uze8lBIZVbg30wlWnlYfVSjjpKYFA==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/config-resolver': 4.4.5 - '@smithy/credential-provider-imds': 4.2.7 - '@smithy/node-config-provider': 4.3.7 - '@smithy/property-provider': 4.2.7 - '@smithy/smithy-client': 4.10.3 - '@smithy/types': 4.11.0 + '@smithy/config-resolver': 4.4.6 + '@smithy/credential-provider-imds': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/property-provider': 4.2.8 + '@smithy/smithy-client': 4.10.7 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/util-endpoints/3.2.7: - resolution: {integrity: sha512-s4ILhyAvVqhMDYREeTS68R43B1V5aenV5q/V1QpRQJkCXib5BPRo4s7uNdzGtIKxaPHCfU/8YkvPAEvTpxgspg==} + /@smithy/util-endpoints/3.2.8: + resolution: {integrity: sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/node-config-provider': 4.3.7 - '@smithy/types': 4.11.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true @@ -4908,30 +4878,30 @@ packages: tslib: 2.8.1 dev: true - /@smithy/util-middleware/4.2.7: - resolution: {integrity: sha512-i1IkpbOae6NvIKsEeLLM9/2q4X+M90KV3oCFgWQI4q0Qz+yUZvsr+gZPdAEAtFhWQhAHpTsJO8DRJPuwVyln+w==} + /@smithy/util-middleware/4.2.8: + resolution: {integrity: sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/util-retry/4.2.7: - resolution: {integrity: sha512-SvDdsQyF5CIASa4EYVT02LukPHVzAgUA4kMAuZ97QJc2BpAqZfA4PINB8/KOoCXEw9tsuv/jQjMeaHFvxdLNGg==} + /@smithy/util-retry/4.2.8: + resolution: {integrity: sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/service-error-classification': 4.2.7 - '@smithy/types': 4.11.0 + '@smithy/service-error-classification': 4.2.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true - /@smithy/util-stream/4.5.8: - resolution: {integrity: sha512-ZnnBhTapjM0YPGUSmOs0Mcg/Gg87k503qG4zU2v/+Js2Gu+daKOJMeqcQns8ajepY8tgzzfYxl6kQyZKml6O2w==} + /@smithy/util-stream/4.5.10: + resolution: {integrity: sha512-jbqemy51UFSZSp2y0ZmRfckmrzuKww95zT9BYMmuJ8v3altGcqjwoV1tzpOwuHaKrwQrCjIzOib499ymr2f98g==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/fetch-http-handler': 5.3.8 - '@smithy/node-http-handler': 4.4.7 - '@smithy/types': 4.11.0 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/node-http-handler': 4.4.8 + '@smithy/types': 4.12.0 '@smithy/util-base64': 4.3.0 '@smithy/util-buffer-from': 4.2.0 '@smithy/util-hex-encoding': 4.2.0 @@ -4962,12 +4932,12 @@ packages: tslib: 2.8.1 dev: true - /@smithy/util-waiter/4.2.7: - resolution: {integrity: sha512-vHJFXi9b7kUEpHWUCY3Twl+9NPOZvQ0SAi+Ewtn48mbiJk4JY9MZmKQjGB4SCvVb9WPiSphZJYY6RIbs+grrzw==} + /@smithy/util-waiter/4.2.8: + resolution: {integrity: sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==} engines: {node: '>=18.0.0'} dependencies: - '@smithy/abort-controller': 4.2.7 - '@smithy/types': 4.11.0 + '@smithy/abort-controller': 4.2.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 dev: true @@ -4991,7 +4961,7 @@ packages: peerDependencies: eslint: '>=8.40.0' dependencies: - '@typescript-eslint/utils': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/utils': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji eslint: 8.57.1 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -5008,7 +4978,7 @@ packages: peerDependencies: eslint: '>=8.40.0' dependencies: - '@typescript-eslint/utils': 8.52.0_eslint@7.32.0 + '@typescript-eslint/utils': 8.53.0_eslint@7.32.0 eslint: 7.32.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -5025,7 +4995,7 @@ packages: peerDependencies: eslint: '>=8.40.0' dependencies: - '@typescript-eslint/utils': 8.52.0_eslint@8.57.1 + '@typescript-eslint/utils': 8.53.0_eslint@8.57.1 eslint: 8.57.1 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -5042,7 +5012,7 @@ packages: peerDependencies: eslint: '>=8.40.0' dependencies: - '@typescript-eslint/utils': 8.52.0_k2rwabtyo525wwqr6566umnmhy + '@typescript-eslint/utils': 8.53.0_k2rwabtyo525wwqr6566umnmhy eslint: 8.57.1 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -5060,7 +5030,7 @@ packages: eslint: '>=9.0.0' dependencies: '@eslint-community/eslint-utils': 4.9.1_eslint@7.32.0 - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.0 eslint: 7.32.0 eslint-visitor-keys: 5.0.0 espree: 11.0.0 @@ -5075,7 +5045,7 @@ packages: eslint: '>=9.0.0' dependencies: '@eslint-community/eslint-utils': 4.9.1_eslint@8.57.1 - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.0 eslint: 8.57.1 eslint-visitor-keys: 5.0.0 espree: 11.0.0 @@ -5122,8 +5092,8 @@ packages: /@types/babel__core/7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 @@ -5132,26 +5102,26 @@ packages: /@types/babel__generator/7.27.0: resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 dev: true /@types/babel__template/7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 dev: true /@types/babel__traverse/7.28.0: resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 dev: true /@types/big-json/3.2.5: resolution: {integrity: sha512-svpMgOodNauW9xaWn6EabpvQUwM1sizbLbzzkVsx1cCrHLJ18tK0OcMe0AL0HAukJkHld06ozIPO1+h+HiLSNQ==} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: true /@types/bluebird/3.5.42: @@ -5162,7 +5132,7 @@ packages: resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: false /@types/chai/4.3.20: @@ -5171,16 +5141,16 @@ packages: /@types/connect/3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: false /@types/estree/1.0.8: resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - /@types/express-serve-static-core/4.19.7: - resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==} + /@types/express-serve-static-core/4.19.8: + resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -5190,7 +5160,7 @@ packages: resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.7 + '@types/express-serve-static-core': 4.19.8 '@types/qs': 6.14.0 '@types/serve-static': 1.15.10 dev: false @@ -5203,20 +5173,20 @@ packages: resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: true /@types/glob/7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 6.0.0 - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: true /@types/graceful-fs/4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: true /@types/http-cache-semantics/4.0.4: @@ -5268,15 +5238,15 @@ packages: /@types/jsonfile/6.1.4: resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: true /@types/linkify-it/5.0.0: resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} dev: true - /@types/lodash/4.17.21: - resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} + /@types/lodash/4.17.23: + resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} /@types/markdown-it/14.1.2: resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} @@ -5317,19 +5287,19 @@ packages: /@types/mute-stream/0.0.4: resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: true /@types/node/14.18.63: resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} - /@types/node/20.19.27: - resolution: {integrity: sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==} + /@types/node/20.19.29: + resolution: {integrity: sha512-YrT9ArrGaHForBaCNwFjoqJWmn8G1Pr7+BH/vwyLHciA9qT/wSiuOhxGCT50JA5xLvFBd6PIiGkE3afxcPE1nw==} dependencies: undici-types: 6.21.0 - /@types/node/22.19.3: - resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} + /@types/node/22.19.6: + resolution: {integrity: sha512-qm+G8HuG6hOHQigsi7VGuLjUVu6TtBo/F05zvX04Mw2uCg9Dv0Qxy3Qw7j41SidlTcl5D/5yg0SEZqOB+EqZnQ==} dependencies: undici-types: 6.21.0 dev: true @@ -5341,7 +5311,7 @@ packages: /@types/progress-stream/2.0.5: resolution: {integrity: sha512-5YNriuEZkHlFHHepLIaxzq3atGeav1qCTGzB74HKWpo66qjfostF+rHc785YYYHeBytve8ZG3ejg42jEIfXNiQ==} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: true /@types/qs/6.14.0: @@ -5368,20 +5338,20 @@ packages: resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: false /@types/send/1.2.1: resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: false /@types/serve-static/1.15.10: resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} dependencies: '@types/http-errors': 2.0.5 - '@types/node': 20.19.27 + '@types/node': 20.19.29 '@types/send': 0.17.6 dev: false @@ -5406,14 +5376,14 @@ packages: /@types/tar/6.1.13: resolution: {integrity: sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 minipass: 4.2.8 dev: true /@types/through/0.0.33: resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 dev: true /@types/tmp/0.2.6: @@ -5537,66 +5507,65 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin/8.52.0_noewlx7djlxm7y77biceqpjc3a: - resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} + /@typescript-eslint/eslint-plugin/8.53.0_dca5iuiroy2vtdg3rzjjbhb4hm: + resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.52.0 + '@typescript-eslint/parser': ^8.53.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.52.0_k2rwabtyo525wwqr6566umnmhy - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0_k2rwabtyo525wwqr6566umnmhy - '@typescript-eslint/utils': 8.52.0_k2rwabtyo525wwqr6566umnmhy - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/parser': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/type-utils': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/utils': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/visitor-keys': 8.53.0 eslint: 8.57.1 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0_typescript@5.9.3 - typescript: 5.9.3 + ts-api-utils: 2.4.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin/8.52.0_r5wsjxtrq6ynip7ju6sdhjjocq: - resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} + /@typescript-eslint/eslint-plugin/8.53.0_t2s57xm67hp4nmvbkcu6rjdgci: + resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.52.0 + '@typescript-eslint/parser': ^8.53.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji - '@typescript-eslint/utils': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji - '@typescript-eslint/visitor-keys': 8.52.0 - eslint: 8.57.1 + '@typescript-eslint/parser': 8.53.0_eslint@7.32.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/type-utils': 8.53.0_eslint@7.32.0 + '@typescript-eslint/utils': 8.53.0_eslint@7.32.0 + '@typescript-eslint/visitor-keys': 8.53.0 + eslint: 7.32.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0_typescript@4.9.5 - typescript: 4.9.5 + ts-api-utils: 2.4.0 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin/8.52.0_vti64vi7ossu2dvcrn2pgowrc4: - resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} + /@typescript-eslint/eslint-plugin/8.53.0_xxyirjqvxmya52bar37s3rf4zi: + resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.52.0 + '@typescript-eslint/parser': ^8.53.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.52.0_eslint@8.57.1 - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0_eslint@8.57.1 - '@typescript-eslint/utils': 8.52.0_eslint@8.57.1 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/parser': 8.53.0_eslint@8.57.1 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/type-utils': 8.53.0_eslint@8.57.1 + '@typescript-eslint/utils': 8.53.0_eslint@8.57.1 + '@typescript-eslint/visitor-keys': 8.53.0 eslint: 8.57.1 ignore: 7.0.5 natural-compare: 1.4.0 @@ -5605,24 +5574,25 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin/8.52.0_x7mddu5po27xrrqfxufxqnjcoa: - resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} + /@typescript-eslint/eslint-plugin/8.53.0_zpj3n5bnn5jlhekjw5lfewwpsi: + resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.52.0 + '@typescript-eslint/parser': ^8.53.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.52.0_eslint@7.32.0 - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0_eslint@7.32.0 - '@typescript-eslint/utils': 8.52.0_eslint@7.32.0 - '@typescript-eslint/visitor-keys': 8.52.0 - eslint: 7.32.0 + '@typescript-eslint/parser': 8.53.0_k2rwabtyo525wwqr6566umnmhy + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/type-utils': 8.53.0_k2rwabtyo525wwqr6566umnmhy + '@typescript-eslint/utils': 8.53.0_k2rwabtyo525wwqr6566umnmhy + '@typescript-eslint/visitor-keys': 8.53.0 + eslint: 8.57.1 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0 + ts-api-utils: 2.4.0_typescript@5.9.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color dev: true @@ -5669,17 +5639,17 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji: - resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} + /@typescript-eslint/parser/8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji: + resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0_typescript@4.9.5 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0_typescript@4.9.5 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 eslint: 8.57.1 typescript: 4.9.5 @@ -5687,51 +5657,51 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/8.52.0_eslint@7.32.0: - resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} + /@typescript-eslint/parser/8.53.0_eslint@7.32.0: + resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 eslint: 7.32.0 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/8.52.0_eslint@8.57.1: - resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} + /@typescript-eslint/parser/8.53.0_eslint@8.57.1: + resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 eslint: 8.57.1 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/8.52.0_k2rwabtyo525wwqr6566umnmhy: - resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} + /@typescript-eslint/parser/8.53.0_k2rwabtyo525wwqr6566umnmhy: + resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0_typescript@5.9.3 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0_typescript@5.9.3 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 eslint: 8.57.1 typescript: 5.9.3 @@ -5739,41 +5709,41 @@ packages: - supports-color dev: true - /@typescript-eslint/project-service/8.52.0: - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + /@typescript-eslint/project-service/8.53.0: + resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0 - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/tsconfig-utils': 8.53.0 + '@typescript-eslint/types': 8.53.0 debug: 4.4.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/project-service/8.52.0_typescript@4.9.5: - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + /@typescript-eslint/project-service/8.53.0_typescript@4.9.5: + resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0_typescript@4.9.5 - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/tsconfig-utils': 8.53.0_typescript@4.9.5 + '@typescript-eslint/types': 8.53.0 debug: 4.4.3 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/project-service/8.52.0_typescript@5.9.3: - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + /@typescript-eslint/project-service/8.53.0_typescript@5.9.3: + resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0_typescript@5.9.3 - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/tsconfig-utils': 8.53.0_typescript@5.9.3 + '@typescript-eslint/types': 8.53.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -5804,23 +5774,23 @@ packages: '@typescript-eslint/visitor-keys': 7.18.0 dev: true - /@typescript-eslint/scope-manager/8.52.0: - resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} + /@typescript-eslint/scope-manager/8.53.0: + resolution: {integrity: sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 dev: true - /@typescript-eslint/tsconfig-utils/8.52.0: - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + /@typescript-eslint/tsconfig-utils/8.53.0: + resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' dev: true - /@typescript-eslint/tsconfig-utils/8.52.0_typescript@4.9.5: - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + /@typescript-eslint/tsconfig-utils/8.53.0_typescript@4.9.5: + resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -5828,8 +5798,8 @@ packages: typescript: 4.9.5 dev: true - /@typescript-eslint/tsconfig-utils/8.52.0_typescript@5.9.3: - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + /@typescript-eslint/tsconfig-utils/8.53.0_typescript@5.9.3: + resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -5897,16 +5867,16 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils/8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji: - resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} + /@typescript-eslint/type-utils/8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji: + resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0_typescript@4.9.5 - '@typescript-eslint/utils': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0_typescript@4.9.5 + '@typescript-eslint/utils': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji debug: 4.4.3 eslint: 8.57.1 ts-api-utils: 2.4.0_typescript@4.9.5 @@ -5915,16 +5885,16 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils/8.52.0_eslint@7.32.0: - resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} + /@typescript-eslint/type-utils/8.53.0_eslint@7.32.0: + resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0 - '@typescript-eslint/utils': 8.52.0_eslint@7.32.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0 + '@typescript-eslint/utils': 8.53.0_eslint@7.32.0 debug: 4.4.3 eslint: 7.32.0 ts-api-utils: 2.4.0 @@ -5932,16 +5902,16 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils/8.52.0_eslint@8.57.1: - resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} + /@typescript-eslint/type-utils/8.53.0_eslint@8.57.1: + resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0 - '@typescript-eslint/utils': 8.52.0_eslint@8.57.1 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0 + '@typescript-eslint/utils': 8.53.0_eslint@8.57.1 debug: 4.4.3 eslint: 8.57.1 ts-api-utils: 2.4.0 @@ -5949,16 +5919,16 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils/8.52.0_k2rwabtyo525wwqr6566umnmhy: - resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} + /@typescript-eslint/type-utils/8.53.0_k2rwabtyo525wwqr6566umnmhy: + resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0_typescript@5.9.3 - '@typescript-eslint/utils': 8.52.0_k2rwabtyo525wwqr6566umnmhy + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0_typescript@5.9.3 + '@typescript-eslint/utils': 8.53.0_k2rwabtyo525wwqr6566umnmhy debug: 4.4.3 eslint: 8.57.1 ts-api-utils: 2.4.0_typescript@5.9.3 @@ -5982,8 +5952,8 @@ packages: engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/types/8.52.0: - resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} + /@typescript-eslint/types/8.53.0: + resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true @@ -6096,16 +6066,16 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/8.52.0: - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} + /@typescript-eslint/typescript-estree/8.53.0: + resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/project-service': 8.52.0 - '@typescript-eslint/tsconfig-utils': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/project-service': 8.53.0 + '@typescript-eslint/tsconfig-utils': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -6115,16 +6085,16 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/8.52.0_typescript@4.9.5: - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} + /@typescript-eslint/typescript-estree/8.53.0_typescript@4.9.5: + resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/project-service': 8.52.0_typescript@4.9.5 - '@typescript-eslint/tsconfig-utils': 8.52.0_typescript@4.9.5 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/project-service': 8.53.0_typescript@4.9.5 + '@typescript-eslint/tsconfig-utils': 8.53.0_typescript@4.9.5 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -6135,16 +6105,16 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/8.52.0_typescript@5.9.3: - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} + /@typescript-eslint/typescript-estree/8.53.0_typescript@5.9.3: + resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/project-service': 8.52.0_typescript@5.9.3 - '@typescript-eslint/tsconfig-utils': 8.52.0_typescript@5.9.3 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/project-service': 8.53.0_typescript@5.9.3 + '@typescript-eslint/tsconfig-utils': 8.53.0_typescript@5.9.3 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -6245,66 +6215,66 @@ packages: - typescript dev: true - /@typescript-eslint/utils/8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji: - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + /@typescript-eslint/utils/8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji: + resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: '@eslint-community/eslint-utils': 4.9.1_eslint@8.57.1 - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0_typescript@4.9.5 eslint: 8.57.1 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/8.52.0_eslint@7.32.0: - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + /@typescript-eslint/utils/8.53.0_eslint@7.32.0: + resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: '@eslint-community/eslint-utils': 4.9.1_eslint@7.32.0 - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0 eslint: 7.32.0 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/8.52.0_eslint@8.57.1: - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + /@typescript-eslint/utils/8.53.0_eslint@8.57.1: + resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: '@eslint-community/eslint-utils': 4.9.1_eslint@8.57.1 - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0 eslint: 8.57.1 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/8.52.0_k2rwabtyo525wwqr6566umnmhy: - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + /@typescript-eslint/utils/8.53.0_k2rwabtyo525wwqr6566umnmhy: + resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: '@eslint-community/eslint-utils': 4.9.1_eslint@8.57.1 - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0_typescript@5.9.3 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0_typescript@5.9.3 eslint: 8.57.1 typescript: 5.9.3 transitivePeerDependencies: @@ -6335,11 +6305,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys/8.52.0: - resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} + /@typescript-eslint/visitor-keys/8.53.0: + resolution: {integrity: sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.0 eslint-visitor-keys: 4.2.1 dev: true @@ -6964,17 +6934,17 @@ packages: - debug dev: false - /babel-jest/29.7.0_@babel+core@7.28.5: + /babel-jest/29.7.0_@babel+core@7.28.6: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3_@babel+core@7.28.5 + babel-preset-jest: 29.6.3_@babel+core@7.28.6 chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -6986,7 +6956,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -6999,44 +6969,44 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 dev: true - /babel-preset-current-node-syntax/1.2.0_@babel+core@7.28.5: + /babel-preset-current-node-syntax/1.2.0_@babel+core@7.28.6: resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: '@babel/core': ^7.0.0 || ^8.0.0-0 dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.28.5 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.28.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.28.5 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.28.5 - '@babel/plugin-syntax-import-attributes': 7.27.1_@babel+core@7.28.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.28.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.28.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.28.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.28.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.28.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.28.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.28.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.28.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.28.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.28.5 - dev: true - - /babel-preset-jest/29.6.3_@babel+core@7.28.5: + '@babel/core': 7.28.6 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.28.6 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.28.6 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.28.6 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.28.6 + '@babel/plugin-syntax-import-attributes': 7.28.6_@babel+core@7.28.6 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.28.6 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.28.6 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.28.6 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.28.6 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.28.6 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.28.6 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.28.6 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.28.6 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.28.6 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.28.6 + dev: true + + /babel-preset-jest/29.6.3_@babel+core@7.28.6: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.2.0_@babel+core@7.28.5 + babel-preset-current-node-syntax: 1.2.0_@babel+core@7.28.6 dev: true /balanced-match/1.0.2: @@ -7046,8 +7016,8 @@ packages: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false - /baseline-browser-mapping/2.9.13: - resolution: {integrity: sha512-WhtvB2NG2wjr04+h77sg3klAIwrgOqnjS49GGudnUPGFFgg7G17y7Qecqp+2Dr5kUDxNRBca0SK7cG8JwzkWDQ==} + /baseline-browser-mapping/2.9.14: + resolution: {integrity: sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==} hasBin: true dev: true @@ -7140,8 +7110,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - baseline-browser-mapping: 2.9.13 - caniuse-lite: 1.0.30001763 + baseline-browser-mapping: 2.9.14 + caniuse-lite: 1.0.30001764 electron-to-chromium: 1.5.267 node-releases: 2.0.27 update-browserslist-db: 1.2.3_browserslist@4.28.1 @@ -7273,8 +7243,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001763: - resolution: {integrity: sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==} + /caniuse-lite/1.0.30001764: + resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==} dev: true /capital-case/1.0.4: @@ -7365,10 +7335,6 @@ packages: resolution: {integrity: sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==} dev: false - /chardet/0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: false - /chardet/2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} @@ -8501,27 +8467,27 @@ packages: - eslint dev: true - /eslint-config-oclif/6.0.129_avq3eyf5kaj6ssrwo7fvkrwnji: - resolution: {integrity: sha512-gUL41BzraulUoPPy8pohJo2brIPG2YsLEF14ZJ/zuGw9m2t1/hs9173ThfcSDL85++B8d0xYwy3gYB3LCo1f6g==} + /eslint-config-oclif/6.0.130_avq3eyf5kaj6ssrwo7fvkrwnji: + resolution: {integrity: sha512-8+0iqrin1Z1CWj166lmBMqJtdss3mjT1hqWT7A1HFE2Pn3+2b7pT3QWwsyF8pUJX2BznGsLfH2z2uvhjSuBt9Q==} engines: {node: '>=18.18.0'} dependencies: '@eslint/compat': 1.4.1_eslint@8.57.1 '@eslint/eslintrc': 3.3.3 '@eslint/js': 9.39.2 '@stylistic/eslint-plugin': 3.1.0_avq3eyf5kaj6ssrwo7fvkrwnji - '@typescript-eslint/eslint-plugin': 8.52.0_r5wsjxtrq6ynip7ju6sdhjjocq - '@typescript-eslint/parser': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/eslint-plugin': 8.53.0_dca5iuiroy2vtdg3rzjjbhb4hm + '@typescript-eslint/parser': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji eslint-config-oclif: 5.2.2_eslint@8.57.1 eslint-config-xo: 0.49.0_eslint@8.57.1 eslint-config-xo-space: 0.35.0_eslint@8.57.1 eslint-import-resolver-typescript: 3.10.1_2exwcduccderqiu2u7qw4rc7d4 - eslint-plugin-import: 2.32.0_jwkm3vga7fvlf2hobmqzek5aoa + eslint-plugin-import: 2.32.0_aksosxtone4o5zz7qyqktlzmn4 eslint-plugin-jsdoc: 50.8.0_eslint@8.57.1 eslint-plugin-mocha: 10.5.0_eslint@8.57.1 - eslint-plugin-n: 17.23.1_avq3eyf5kaj6ssrwo7fvkrwnji + eslint-plugin-n: 17.23.2_avq3eyf5kaj6ssrwo7fvkrwnji eslint-plugin-perfectionist: 4.15.1_avq3eyf5kaj6ssrwo7fvkrwnji eslint-plugin-unicorn: 56.0.1_eslint@8.57.1 - typescript-eslint: 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji + typescript-eslint: 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -8530,27 +8496,27 @@ packages: - typescript dev: true - /eslint-config-oclif/6.0.129_eslint@7.32.0: - resolution: {integrity: sha512-gUL41BzraulUoPPy8pohJo2brIPG2YsLEF14ZJ/zuGw9m2t1/hs9173ThfcSDL85++B8d0xYwy3gYB3LCo1f6g==} + /eslint-config-oclif/6.0.130_eslint@7.32.0: + resolution: {integrity: sha512-8+0iqrin1Z1CWj166lmBMqJtdss3mjT1hqWT7A1HFE2Pn3+2b7pT3QWwsyF8pUJX2BznGsLfH2z2uvhjSuBt9Q==} engines: {node: '>=18.18.0'} dependencies: '@eslint/compat': 1.4.1_eslint@7.32.0 '@eslint/eslintrc': 3.3.3 '@eslint/js': 9.39.2 '@stylistic/eslint-plugin': 3.1.0_eslint@7.32.0 - '@typescript-eslint/eslint-plugin': 8.52.0_x7mddu5po27xrrqfxufxqnjcoa - '@typescript-eslint/parser': 8.52.0_eslint@7.32.0 + '@typescript-eslint/eslint-plugin': 8.53.0_t2s57xm67hp4nmvbkcu6rjdgci + '@typescript-eslint/parser': 8.53.0_eslint@7.32.0 eslint-config-oclif: 5.2.2_eslint@7.32.0 eslint-config-xo: 0.49.0_eslint@7.32.0 eslint-config-xo-space: 0.35.0_eslint@7.32.0 eslint-import-resolver-typescript: 3.10.1_euuv2s2m4azrqak6tzap5kwzai - eslint-plugin-import: 2.32.0_kclgfpzsty4kyqq72a7fxbgtau + eslint-plugin-import: 2.32.0_v6kaevju6un6uz2ubdc56kf7by eslint-plugin-jsdoc: 50.8.0_eslint@7.32.0 eslint-plugin-mocha: 10.5.0_eslint@7.32.0 - eslint-plugin-n: 17.23.1_eslint@7.32.0 + eslint-plugin-n: 17.23.2_eslint@7.32.0 eslint-plugin-perfectionist: 4.15.1_eslint@7.32.0 eslint-plugin-unicorn: 56.0.1_eslint@7.32.0 - typescript-eslint: 8.52.0_eslint@7.32.0 + typescript-eslint: 8.53.0_eslint@7.32.0 transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -8559,27 +8525,27 @@ packages: - typescript dev: true - /eslint-config-oclif/6.0.129_eslint@8.57.1: - resolution: {integrity: sha512-gUL41BzraulUoPPy8pohJo2brIPG2YsLEF14ZJ/zuGw9m2t1/hs9173ThfcSDL85++B8d0xYwy3gYB3LCo1f6g==} + /eslint-config-oclif/6.0.130_eslint@8.57.1: + resolution: {integrity: sha512-8+0iqrin1Z1CWj166lmBMqJtdss3mjT1hqWT7A1HFE2Pn3+2b7pT3QWwsyF8pUJX2BznGsLfH2z2uvhjSuBt9Q==} engines: {node: '>=18.18.0'} dependencies: '@eslint/compat': 1.4.1_eslint@8.57.1 '@eslint/eslintrc': 3.3.3 '@eslint/js': 9.39.2 '@stylistic/eslint-plugin': 3.1.0_eslint@8.57.1 - '@typescript-eslint/eslint-plugin': 8.52.0_vti64vi7ossu2dvcrn2pgowrc4 - '@typescript-eslint/parser': 8.52.0_eslint@8.57.1 + '@typescript-eslint/eslint-plugin': 8.53.0_xxyirjqvxmya52bar37s3rf4zi + '@typescript-eslint/parser': 8.53.0_eslint@8.57.1 eslint-config-oclif: 5.2.2_eslint@8.57.1 eslint-config-xo: 0.49.0_eslint@8.57.1 eslint-config-xo-space: 0.35.0_eslint@8.57.1 eslint-import-resolver-typescript: 3.10.1_2exwcduccderqiu2u7qw4rc7d4 - eslint-plugin-import: 2.32.0_jwkm3vga7fvlf2hobmqzek5aoa + eslint-plugin-import: 2.32.0_aksosxtone4o5zz7qyqktlzmn4 eslint-plugin-jsdoc: 50.8.0_eslint@8.57.1 eslint-plugin-mocha: 10.5.0_eslint@8.57.1 - eslint-plugin-n: 17.23.1_eslint@8.57.1 + eslint-plugin-n: 17.23.2_eslint@8.57.1 eslint-plugin-perfectionist: 4.15.1_eslint@8.57.1 eslint-plugin-unicorn: 56.0.1_eslint@8.57.1 - typescript-eslint: 8.52.0_eslint@8.57.1 + typescript-eslint: 8.53.0_eslint@8.57.1 transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -8588,27 +8554,27 @@ packages: - typescript dev: true - /eslint-config-oclif/6.0.129_k2rwabtyo525wwqr6566umnmhy: - resolution: {integrity: sha512-gUL41BzraulUoPPy8pohJo2brIPG2YsLEF14ZJ/zuGw9m2t1/hs9173ThfcSDL85++B8d0xYwy3gYB3LCo1f6g==} + /eslint-config-oclif/6.0.130_k2rwabtyo525wwqr6566umnmhy: + resolution: {integrity: sha512-8+0iqrin1Z1CWj166lmBMqJtdss3mjT1hqWT7A1HFE2Pn3+2b7pT3QWwsyF8pUJX2BznGsLfH2z2uvhjSuBt9Q==} engines: {node: '>=18.18.0'} dependencies: '@eslint/compat': 1.4.1_eslint@8.57.1 '@eslint/eslintrc': 3.3.3 '@eslint/js': 9.39.2 '@stylistic/eslint-plugin': 3.1.0_k2rwabtyo525wwqr6566umnmhy - '@typescript-eslint/eslint-plugin': 8.52.0_noewlx7djlxm7y77biceqpjc3a - '@typescript-eslint/parser': 8.52.0_k2rwabtyo525wwqr6566umnmhy + '@typescript-eslint/eslint-plugin': 8.53.0_zpj3n5bnn5jlhekjw5lfewwpsi + '@typescript-eslint/parser': 8.53.0_k2rwabtyo525wwqr6566umnmhy eslint-config-oclif: 5.2.2_eslint@8.57.1 eslint-config-xo: 0.49.0_eslint@8.57.1 eslint-config-xo-space: 0.35.0_eslint@8.57.1 eslint-import-resolver-typescript: 3.10.1_2exwcduccderqiu2u7qw4rc7d4 - eslint-plugin-import: 2.32.0_jwkm3vga7fvlf2hobmqzek5aoa + eslint-plugin-import: 2.32.0_aksosxtone4o5zz7qyqktlzmn4 eslint-plugin-jsdoc: 50.8.0_eslint@8.57.1 eslint-plugin-mocha: 10.5.0_eslint@8.57.1 - eslint-plugin-n: 17.23.1_k2rwabtyo525wwqr6566umnmhy + eslint-plugin-n: 17.23.2_k2rwabtyo525wwqr6566umnmhy eslint-plugin-perfectionist: 4.15.1_k2rwabtyo525wwqr6566umnmhy eslint-plugin-unicorn: 56.0.1_eslint@8.57.1 - typescript-eslint: 8.52.0_k2rwabtyo525wwqr6566umnmhy + typescript-eslint: 8.53.0_k2rwabtyo525wwqr6566umnmhy transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -8711,7 +8677,7 @@ packages: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 eslint: 8.57.1 - eslint-plugin-import: 2.32.0_jwkm3vga7fvlf2hobmqzek5aoa + eslint-plugin-import: 2.32.0_aksosxtone4o5zz7qyqktlzmn4 get-tsconfig: 4.13.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 @@ -8737,7 +8703,7 @@ packages: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 eslint: 7.32.0 - eslint-plugin-import: 2.32.0_kclgfpzsty4kyqq72a7fxbgtau + eslint-plugin-import: 2.32.0_v6kaevju6un6uz2ubdc56kf7by get-tsconfig: 4.13.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 @@ -8747,7 +8713,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.12.1_kuw6gypsyjvpnehvjxp5tu4zea: + /eslint-module-utils/2.12.1_jynnuuyasbbimpxpcgtebyfyda: resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: @@ -8768,7 +8734,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/parser': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji debug: 3.2.7 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 @@ -8777,7 +8743,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.12.1_lqubcavg5vxokyhzok7bhy4ysm: + /eslint-module-utils/2.12.1_swrhntwfibhg62qifem35een4m: resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: @@ -8798,7 +8764,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.52.0_eslint@7.32.0 + '@typescript-eslint/parser': 8.53.0_eslint@7.32.0 debug: 3.2.7 eslint: 7.32.0 eslint-import-resolver-node: 0.3.9 @@ -8883,7 +8849,7 @@ packages: regexpp: 3.2.0 dev: true - /eslint-plugin-import/2.32.0_ar3c7zjwtto324sxhascv2p7uq: + /eslint-plugin-import/2.32.0_aksosxtone4o5zz7qyqktlzmn4: resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: @@ -8894,7 +8860,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 6.21.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/parser': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 @@ -8903,7 +8869,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1_yb2aych2lrsetdffcibe7ggstq + eslint-module-utils: 2.12.1_jynnuuyasbbimpxpcgtebyfyda hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -8920,7 +8886,7 @@ packages: - supports-color dev: true - /eslint-plugin-import/2.32.0_jwkm3vga7fvlf2hobmqzek5aoa: + /eslint-plugin-import/2.32.0_ar3c7zjwtto324sxhascv2p7uq: resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: @@ -8931,7 +8897,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/parser': 6.21.0_avq3eyf5kaj6ssrwo7fvkrwnji array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 @@ -8940,7 +8906,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1_kuw6gypsyjvpnehvjxp5tu4zea + eslint-module-utils: 2.12.1_yb2aych2lrsetdffcibe7ggstq hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -8957,7 +8923,7 @@ packages: - supports-color dev: true - /eslint-plugin-import/2.32.0_kclgfpzsty4kyqq72a7fxbgtau: + /eslint-plugin-import/2.32.0_v6kaevju6un6uz2ubdc56kf7by: resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: @@ -8968,7 +8934,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.52.0_eslint@7.32.0 + '@typescript-eslint/parser': 8.53.0_eslint@7.32.0 array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 @@ -8977,7 +8943,7 @@ packages: doctrine: 2.1.0 eslint: 7.32.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1_lqubcavg5vxokyhzok7bhy4ysm + eslint-module-utils: 2.12.1_swrhntwfibhg62qifem35een4m hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -9094,8 +9060,8 @@ packages: semver: 7.7.3 dev: true - /eslint-plugin-n/17.23.1_avq3eyf5kaj6ssrwo7fvkrwnji: - resolution: {integrity: sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==} + /eslint-plugin-n/17.23.2_avq3eyf5kaj6ssrwo7fvkrwnji: + resolution: {integrity: sha512-RhWBeb7YVPmNa2eggvJooiuehdL76/bbfj/OJewyoGT80qn5PXdz8zMOTO6YHOsI7byPt7+Ighh/i/4a5/v7hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' @@ -9114,8 +9080,8 @@ packages: - typescript dev: true - /eslint-plugin-n/17.23.1_eslint@7.32.0: - resolution: {integrity: sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==} + /eslint-plugin-n/17.23.2_eslint@7.32.0: + resolution: {integrity: sha512-RhWBeb7YVPmNa2eggvJooiuehdL76/bbfj/OJewyoGT80qn5PXdz8zMOTO6YHOsI7byPt7+Ighh/i/4a5/v7hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' @@ -9134,8 +9100,8 @@ packages: - typescript dev: true - /eslint-plugin-n/17.23.1_eslint@8.57.1: - resolution: {integrity: sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==} + /eslint-plugin-n/17.23.2_eslint@8.57.1: + resolution: {integrity: sha512-RhWBeb7YVPmNa2eggvJooiuehdL76/bbfj/OJewyoGT80qn5PXdz8zMOTO6YHOsI7byPt7+Ighh/i/4a5/v7hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' @@ -9154,8 +9120,8 @@ packages: - typescript dev: true - /eslint-plugin-n/17.23.1_k2rwabtyo525wwqr6566umnmhy: - resolution: {integrity: sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==} + /eslint-plugin-n/17.23.2_k2rwabtyo525wwqr6566umnmhy: + resolution: {integrity: sha512-RhWBeb7YVPmNa2eggvJooiuehdL76/bbfj/OJewyoGT80qn5PXdz8zMOTO6YHOsI7byPt7+Ighh/i/4a5/v7hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' @@ -9234,8 +9200,8 @@ packages: peerDependencies: eslint: '>=8.45.0' dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/utils': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/utils': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji eslint: 8.57.1 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -9249,8 +9215,8 @@ packages: peerDependencies: eslint: '>=8.45.0' dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/utils': 8.52.0_eslint@7.32.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/utils': 8.53.0_eslint@7.32.0 eslint: 7.32.0 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -9264,8 +9230,8 @@ packages: peerDependencies: eslint: '>=8.45.0' dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/utils': 8.52.0_eslint@8.57.1 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/utils': 8.53.0_eslint@8.57.1 eslint: 8.57.1 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -9279,8 +9245,8 @@ packages: peerDependencies: eslint: '>=8.45.0' dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/utils': 8.52.0_k2rwabtyo525wwqr6566umnmhy + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/utils': 8.53.0_k2rwabtyo525wwqr6566umnmhy eslint: 8.57.1 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -9777,15 +9743,6 @@ packages: tmp: 0.0.33 dev: false - /external-editor/3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: false - /eyes/0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} @@ -9797,8 +9754,8 @@ packages: deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: '@types/chai': 4.3.20 - '@types/lodash': 4.17.21 - '@types/node': 20.19.27 + '@types/lodash': 4.17.23 + '@types/node': 20.19.29 '@types/sinon': 17.0.4 lodash: 4.17.21 mock-stdin: 1.0.0 @@ -10770,27 +10727,6 @@ packages: through: 2.3.8 dev: false - /inquirer/8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - dev: false - /inquirer/8.2.7: resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} engines: {node: '>=12.0.0'} @@ -11213,7 +11149,7 @@ packages: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -11225,8 +11161,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.28.5 - '@babel/parser': 7.28.5 + '@babel/core': 7.28.6 + '@babel/parser': 7.28.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -11238,8 +11174,8 @@ packages: resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.28.5 - '@babel/parser': 7.28.5 + '@babel/core': 7.28.6 + '@babel/parser': 7.28.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.3 @@ -11321,7 +11257,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.27 + '@types/node': 20.19.29 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.1 @@ -11370,7 +11306,7 @@ packages: - ts-node dev: true - /jest-config/29.7.0_gmerzvnqkqd6hvbwzqmybfpwqi: + /jest-config/29.7.0_bhw5p2lp54f436tjpvah647z6u: resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -11382,11 +11318,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 14.18.63 - babel-jest: 29.7.0_@babel+core@7.28.5 + '@types/node': 20.19.29 + babel-jest: 29.7.0_@babel+core@7.28.6 chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -11411,7 +11347,7 @@ packages: - supports-color dev: true - /jest-config/29.7.0_rqz7jh55thjpzxmfwxo7snmxci: + /jest-config/29.7.0_gmerzvnqkqd6hvbwzqmybfpwqi: resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -11423,11 +11359,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.27 - babel-jest: 29.7.0_@babel+core@7.28.5 + '@types/node': 14.18.63 + babel-jest: 29.7.0_@babel+core@7.28.6 chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -11497,7 +11433,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.27 + '@types/node': 20.19.29 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -11518,7 +11454,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.19.27 + '@types/node': 20.19.29 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -11553,7 +11489,7 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.28.6 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -11569,7 +11505,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.19.27 + '@types/node': 20.19.29 jest-util: 29.7.0 dev: true @@ -11624,7 +11560,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.27 + '@types/node': 20.19.29 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -11655,7 +11591,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.27 + '@types/node': 20.19.29 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.3 @@ -11678,15 +11614,15 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.28.5 - '@babel/generator': 7.28.5 - '@babel/plugin-syntax-jsx': 7.27.1_@babel+core@7.28.5 - '@babel/plugin-syntax-typescript': 7.27.1_@babel+core@7.28.5 - '@babel/types': 7.28.5 + '@babel/core': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6_@babel+core@7.28.6 + '@babel/plugin-syntax-typescript': 7.28.6_@babel+core@7.28.6 + '@babel/types': 7.28.6 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.2.0_@babel+core@7.28.5 + babel-preset-current-node-syntax: 1.2.0_@babel+core@7.28.6 chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -11707,7 +11643,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.19.27 + '@types/node': 20.19.29 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -11732,7 +11668,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.19.27 + '@types/node': 20.19.29 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -11744,7 +11680,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.19.27 + '@types/node': 20.19.29 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -11846,7 +11782,7 @@ packages: engines: {node: '>=12.0.0'} hasBin: true dependencies: - '@babel/parser': 7.28.5 + '@babel/parser': 7.28.6 '@jsdoc/salty': 0.2.9 '@types/markdown-it': 14.1.2 bluebird: 3.7.2 @@ -12923,13 +12859,13 @@ packages: es-object-atoms: 1.1.1 dev: true - /oclif/4.22.63: - resolution: {integrity: sha512-xhlXnMLlvnV376ofTKVW9KZk0lsvMSnLqUk6rJ3V18lzMj8grt3s4opWuEib9xgyig0rELCK46iYeZUgw04ibg==} + /oclif/4.22.65: + resolution: {integrity: sha512-pJW0P+gUzIAS6gSQH11jmbu9xQgjfxgBV+FjWvvwu68NUtljtpZm1w3uftXUVk51Ra40r9XB1Jh/Mcbb+I6yJw==} engines: {node: '>=18.0.0'} hasBin: true dependencies: - '@aws-sdk/client-cloudfront': 3.965.0 - '@aws-sdk/client-s3': 3.965.0 + '@aws-sdk/client-cloudfront': 3.968.0 + '@aws-sdk/client-s3': 3.968.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -12958,13 +12894,13 @@ packages: - supports-color dev: true - /oclif/4.22.63_@types+node@14.18.63: - resolution: {integrity: sha512-xhlXnMLlvnV376ofTKVW9KZk0lsvMSnLqUk6rJ3V18lzMj8grt3s4opWuEib9xgyig0rELCK46iYeZUgw04ibg==} + /oclif/4.22.65_@types+node@14.18.63: + resolution: {integrity: sha512-pJW0P+gUzIAS6gSQH11jmbu9xQgjfxgBV+FjWvvwu68NUtljtpZm1w3uftXUVk51Ra40r9XB1Jh/Mcbb+I6yJw==} engines: {node: '>=18.0.0'} hasBin: true dependencies: - '@aws-sdk/client-cloudfront': 3.965.0 - '@aws-sdk/client-s3': 3.965.0 + '@aws-sdk/client-cloudfront': 3.968.0 + '@aws-sdk/client-s3': 3.968.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -12993,19 +12929,19 @@ packages: - supports-color dev: true - /oclif/4.22.63_@types+node@20.19.27: - resolution: {integrity: sha512-xhlXnMLlvnV376ofTKVW9KZk0lsvMSnLqUk6rJ3V18lzMj8grt3s4opWuEib9xgyig0rELCK46iYeZUgw04ibg==} + /oclif/4.22.65_@types+node@20.19.29: + resolution: {integrity: sha512-pJW0P+gUzIAS6gSQH11jmbu9xQgjfxgBV+FjWvvwu68NUtljtpZm1w3uftXUVk51Ra40r9XB1Jh/Mcbb+I6yJw==} engines: {node: '>=18.0.0'} hasBin: true dependencies: - '@aws-sdk/client-cloudfront': 3.965.0 - '@aws-sdk/client-s3': 3.965.0 + '@aws-sdk/client-cloudfront': 3.968.0 + '@aws-sdk/client-s3': 3.968.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 '@oclif/core': 4.8.0 '@oclif/plugin-help': 6.2.36 - '@oclif/plugin-not-found': 3.2.73_@types+node@20.19.27 + '@oclif/plugin-not-found': 3.2.73_@types+node@20.19.29 '@oclif/plugin-warn-if-update-available': 3.1.53 ansis: 3.17.0 async-retry: 1.3.3 @@ -13245,7 +13181,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.28.6 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -15000,7 +14936,7 @@ packages: yn: 3.1.1 dev: true - /ts-node/10.9.2_xwpkxzit2oggtkvhnry5algaly: + /ts-node/10.9.2_ydhbtialqmwgnlxabg7nhf524m: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -15019,7 +14955,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.19.27 + '@types/node': 20.19.29 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -15214,66 +15150,66 @@ packages: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: false - /typescript-eslint/8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji: - resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==} + /typescript-eslint/8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji: + resolution: {integrity: sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/eslint-plugin': 8.52.0_r5wsjxtrq6ynip7ju6sdhjjocq - '@typescript-eslint/parser': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji - '@typescript-eslint/typescript-estree': 8.52.0_typescript@4.9.5 - '@typescript-eslint/utils': 8.52.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/eslint-plugin': 8.53.0_dca5iuiroy2vtdg3rzjjbhb4hm + '@typescript-eslint/parser': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji + '@typescript-eslint/typescript-estree': 8.53.0_typescript@4.9.5 + '@typescript-eslint/utils': 8.53.0_avq3eyf5kaj6ssrwo7fvkrwnji eslint: 8.57.1 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /typescript-eslint/8.52.0_eslint@7.32.0: - resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==} + /typescript-eslint/8.53.0_eslint@7.32.0: + resolution: {integrity: sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/eslint-plugin': 8.52.0_x7mddu5po27xrrqfxufxqnjcoa - '@typescript-eslint/parser': 8.52.0_eslint@7.32.0 - '@typescript-eslint/typescript-estree': 8.52.0 - '@typescript-eslint/utils': 8.52.0_eslint@7.32.0 + '@typescript-eslint/eslint-plugin': 8.53.0_t2s57xm67hp4nmvbkcu6rjdgci + '@typescript-eslint/parser': 8.53.0_eslint@7.32.0 + '@typescript-eslint/typescript-estree': 8.53.0 + '@typescript-eslint/utils': 8.53.0_eslint@7.32.0 eslint: 7.32.0 transitivePeerDependencies: - supports-color dev: true - /typescript-eslint/8.52.0_eslint@8.57.1: - resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==} + /typescript-eslint/8.53.0_eslint@8.57.1: + resolution: {integrity: sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/eslint-plugin': 8.52.0_vti64vi7ossu2dvcrn2pgowrc4 - '@typescript-eslint/parser': 8.52.0_eslint@8.57.1 - '@typescript-eslint/typescript-estree': 8.52.0 - '@typescript-eslint/utils': 8.52.0_eslint@8.57.1 + '@typescript-eslint/eslint-plugin': 8.53.0_xxyirjqvxmya52bar37s3rf4zi + '@typescript-eslint/parser': 8.53.0_eslint@8.57.1 + '@typescript-eslint/typescript-estree': 8.53.0 + '@typescript-eslint/utils': 8.53.0_eslint@8.57.1 eslint: 8.57.1 transitivePeerDependencies: - supports-color dev: true - /typescript-eslint/8.52.0_k2rwabtyo525wwqr6566umnmhy: - resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==} + /typescript-eslint/8.53.0_k2rwabtyo525wwqr6566umnmhy: + resolution: {integrity: sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/eslint-plugin': 8.52.0_noewlx7djlxm7y77biceqpjc3a - '@typescript-eslint/parser': 8.52.0_k2rwabtyo525wwqr6566umnmhy - '@typescript-eslint/typescript-estree': 8.52.0_typescript@5.9.3 - '@typescript-eslint/utils': 8.52.0_k2rwabtyo525wwqr6566umnmhy + '@typescript-eslint/eslint-plugin': 8.53.0_zpj3n5bnn5jlhekjw5lfewwpsi + '@typescript-eslint/parser': 8.53.0_k2rwabtyo525wwqr6566umnmhy + '@typescript-eslint/typescript-estree': 8.53.0_typescript@5.9.3 + '@typescript-eslint/utils': 8.53.0_k2rwabtyo525wwqr6566umnmhy eslint: 8.57.1 typescript: 5.9.3 transitivePeerDependencies: