diff --git a/.github/config/release.json b/.github/config/release.json index 078a8824bf..a63e81c81e 100755 --- a/.github/config/release.json +++ b/.github/config/release.json @@ -9,7 +9,6 @@ "import": false, "clone": false, "export-to-csv": false, - "migrate-rte": false, "migration": false, "seed": false, "bootstrap": false, diff --git a/.github/workflows/release-beta.yml b/.github/workflows/release-beta.yml index b11f78e37f..736dbe1a3b 100644 --- a/.github/workflows/release-beta.yml +++ b/.github/workflows/release-beta.yml @@ -243,20 +243,6 @@ jobs: package: ./packages/contentstack-export-to-csv/package.json tag: beta - # Migrate RTE - - name: Installing dependencies of migrate rte - id: migrate-rte-installation - if: ${{env.release_releaseAll == 'true' || env.release_plugins_migrate-rte == 'true'}} - working-directory: ./packages/contentstack-migrate-rte - run: npm install - - name: Publishing migrate rte (Beta) - uses: JS-DevTools/npm-publish@v3 - if: ${{ steps.migrate-rte-installation.conclusion == 'success' }} - with: - token: ${{ secrets.NPM_TOKEN }} - package: ./packages/contentstack-migrate-rte/package.json - tag: beta - # Migration - name: Installing dependencies of migration id: migration-installation diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index accc815e98..37bdc7187b 100755 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -230,19 +230,6 @@ jobs: token: ${{ secrets.NPM_TOKEN }} package: ./packages/contentstack-export-to-csv/package.json - # Migrate RTE - - name: Installing dependencies of migrate rte - id: migrate-rte-installation - if: ${{env.release_releaseAll == 'true' || env.release_plugins_migrate-rte == 'true'}} - working-directory: ./packages/contentstack-migrate-rte - run: npm install - - name: Publishing migrate rte - uses: JS-DevTools/npm-publish@v3 - if: ${{ steps.migrate-rte-installation.conclusion == 'success' }} - with: - token: ${{ secrets.NPM_TOKEN }} - package: ./packages/contentstack-migrate-rte/package.json - # Migration - name: Installing dependencies of migration id: migration-installation diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index e094553fa4..05b9244a97 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -40,10 +40,6 @@ jobs: working-directory: ./packages/contentstack-config run: npm run test - - name: Run tests for Contentstack Migrate RTE - working-directory: ./packages/contentstack-migrate-rte - run: npm run test - - name: Run tests for Contentstack Migration working-directory: ./packages/contentstack-migration run: npm run test diff --git a/.talismanrc b/.talismanrc index eefb4908d6..758cb4dca1 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,6 +1,6 @@ fileignoreconfig: - filename: package-lock.json - checksum: d3b93fad9630655f037e36b78fea3354f1a038988562254afdad0f6e54ece12d + checksum: 5e64367e6f00c41d8fec66e335f66202d97a0e75006c9ecd331ce8f5856e296a - filename: pnpm-lock.yaml checksum: aa6177859aaa87caf2892e8034657fd485c3abe7c13a833fd28449a1d33fa950 - filename: packages/contentstack-import-setup/test/unit/backup-handler.test.ts @@ -30,7 +30,7 @@ fileignoreconfig: - filename: packages/contentstack-import-setup/test/unit/import-setup.test.ts checksum: 1eee4f461fa5b115894d1806a14af6f45336cbe6c0392f16078bd2877fadff67 - filename: packages/contentstack-import-setup/test/unit/login-handler.test.ts - checksum: e549f9ca3a9aae0d93b7284f7e771d55c0610725ddcb4333612df2f215e92769 + checksum: 258b92de292ab1a99aef277709fb41a95e57ce294eef445f77a9edd3b93b87f4 - filename: packages/contentstack/README.md checksum: 10f580c697d0b70b813428954b946e60609f41c42e78ca95ca3232443e725615 - filename: packages/contentstack-import-setup/test/unit/modules/assets.test.ts @@ -202,5 +202,9 @@ fileignoreconfig: - filename: packages/contentstack-import/test/unit/utils/logger.test.ts checksum: 794e06e657a7337c8f094d6042fb04c779683f97b860efae14e075098d2af024 - filename: packages/contentstack-import-setup/src/import/modules/taxonomies.ts - checksum: 49dd8e754a0d3635585a74e943ab097593f061089a7cddc22683ec6caddbb3c5 + checksum: c1bccc885b3f41f187f150c739b4bbd1608b01f09b0d9be0ad9214127cac071d + - filename: packages/contentstack-import-setup/src/commands/cm/stacks/import-setup.ts + checksum: 06035980b36802260f190af6e63632efe167f5b336693163f59268f3e788fba1 + - filename: packages/contentstack-import-setup/src/utils/constants.ts + checksum: fcfabb4c53ee822e05903db77595413842d656b55e2869bae97bb6c0e0e209c3 version: '1.0' diff --git a/MIGRATION.md b/MIGRATION.md index 34667b7adb..2eebeba746 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -112,6 +112,24 @@ csdx config:set:log --no-show-console-logs [2025-08-22 16:12:25] SUCCESS: Exported stack settings successfully! ``` +### 4. 🏷️ Taxonomy Migration Deprecation + +**What Changed:** +- Taxonomy migration functionality has been deprecated in 2.x.x +- The taxonomy migration script examples have been removed + +**Before (1.x.x):** +```bash +csdx cm:stacks:migration -k b*******9ca0 --file-path "../contentstack-migration/examples/taxonomies/import-taxonomies.js" --config data-dir:'./data/Taxonomy Stack_taxonomies.csv' +``` +- Taxonomy migration supports only in version 1.x.x + +**After (2.x.x-beta):** +- Taxonomy migration is no longer supported through the migration plugin +- Use the standard import/export commands for taxonomy data migration + +**Migration Action:** use the import/export commands instead. + ## Troubleshooting ### Common Issues diff --git a/package-lock.json b/package-lock.json index 2455805114..fd0ab74499 100644 --- a/package-lock.json +++ b/package-lock.json @@ -280,53 +280,52 @@ } }, "node_modules/@aws-sdk/client-cloudfront": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.930.0.tgz", - "integrity": "sha512-g0jkrZRb7JKdty4sJfxc2rsoMPMujJ+o9C0KiTutuAhEmjVFEGCKeLwMoQCvANwkt1x4S7CUqAB7UOLQlUSGhQ==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.956.0.tgz", + "integrity": "sha512-7eozK4+yBs2Ig0pTBkoc9WS1+qWPRKdhzuscLLX9XsKjPVcIqOWhzNy7aROHsYC471CBNKgp4rU/rmL5WU8qEg==", "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.930.0", - "@aws-sdk/credential-provider-node": "3.930.0", - "@aws-sdk/middleware-host-header": "3.930.0", - "@aws-sdk/middleware-logger": "3.930.0", - "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.930.0", - "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.930.0", - "@aws-sdk/xml-builder": "3.930.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.2", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/middleware-retry": "^4.4.9", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/credential-provider-node": "3.956.0", + "@aws-sdk/middleware-host-header": "3.956.0", + "@aws-sdk/middleware-logger": "3.956.0", + "@aws-sdk/middleware-recursion-detection": "3.956.0", + "@aws-sdk/middleware-user-agent": "3.956.0", + "@aws-sdk/region-config-resolver": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@aws-sdk/util-endpoints": "3.956.0", + "@aws-sdk/util-user-agent-browser": "3.956.0", + "@aws-sdk/util-user-agent-node": "3.956.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", "@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.8", - "@smithy/util-defaults-mode-node": "^4.2.11", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/util-stream": "^4.5.6", + "@smithy/util-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-utf8": "^4.2.0", - "@smithy/util-waiter": "^4.2.5", + "@smithy/util-waiter": "^4.2.7", "tslib": "^2.6.2" }, "engines": { @@ -334,68 +333,66 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.930.0.tgz", - "integrity": "sha512-5ddhr3ShseFRIdNXH8bkh1CIC78p0ZXpa7HJZpONDU3JGvd/B+yHHgTr141rtgoFTaW0gjPdbdtqtPLnhlnK+A==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.956.0.tgz", + "integrity": "sha512-O+Z7PSY9TjaqJcZSDMvVmXBuV/jmFRJIu7ga+9XgWv4+qfjhAX2N2s4kgsRnIdjIO4xgkN3O/BugTCyjIRrIDQ==", "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.930.0", - "@aws-sdk/credential-provider-node": "3.930.0", - "@aws-sdk/middleware-bucket-endpoint": "3.930.0", - "@aws-sdk/middleware-expect-continue": "3.930.0", - "@aws-sdk/middleware-flexible-checksums": "3.930.0", - "@aws-sdk/middleware-host-header": "3.930.0", - "@aws-sdk/middleware-location-constraint": "3.930.0", - "@aws-sdk/middleware-logger": "3.930.0", - "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-sdk-s3": "3.930.0", - "@aws-sdk/middleware-ssec": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.930.0", - "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/signature-v4-multi-region": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.930.0", - "@aws-sdk/xml-builder": "3.930.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.2", - "@smithy/eventstream-serde-browser": "^4.2.5", - "@smithy/eventstream-serde-config-resolver": "^4.3.5", - "@smithy/eventstream-serde-node": "^4.2.5", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-blob-browser": "^4.2.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/hash-stream-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/md5-js": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/middleware-retry": "^4.4.9", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/credential-provider-node": "3.956.0", + "@aws-sdk/middleware-bucket-endpoint": "3.956.0", + "@aws-sdk/middleware-expect-continue": "3.956.0", + "@aws-sdk/middleware-flexible-checksums": "3.956.0", + "@aws-sdk/middleware-host-header": "3.956.0", + "@aws-sdk/middleware-location-constraint": "3.956.0", + "@aws-sdk/middleware-logger": "3.956.0", + "@aws-sdk/middleware-recursion-detection": "3.956.0", + "@aws-sdk/middleware-sdk-s3": "3.956.0", + "@aws-sdk/middleware-ssec": "3.956.0", + "@aws-sdk/middleware-user-agent": "3.956.0", + "@aws-sdk/region-config-resolver": "3.956.0", + "@aws-sdk/signature-v4-multi-region": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@aws-sdk/util-endpoints": "3.956.0", + "@aws-sdk/util-user-agent-browser": "3.956.0", + "@aws-sdk/util-user-agent-node": "3.956.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", "@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.8", - "@smithy/util-defaults-mode-node": "^4.2.11", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/util-stream": "^4.5.6", + "@smithy/util-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-utf8": "^4.2.0", - "@smithy/util-waiter": "^4.2.5", - "@smithy/uuid": "^1.1.0", + "@smithy/util-waiter": "^4.2.7", "tslib": "^2.6.2" }, "engines": { @@ -403,48 +400,48 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.930.0.tgz", - "integrity": "sha512-sASqgm1iMLcmi+srSH9WJuqaf3GQAKhuB4xIJwkNEPUQ+yGV8HqErOOHJLXXuTUyskcdtK+4uMaBRLT2ESm+QQ==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.956.0.tgz", + "integrity": "sha512-TCxCa9B1IMILvk/7sig0fRQzff+M2zBQVZGWOJL8SAZq/gfElIMAf/nYjQwMhXjyq8PFDRGm4GN8ZhNKPeNleQ==", "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.930.0", - "@aws-sdk/middleware-host-header": "3.930.0", - "@aws-sdk/middleware-logger": "3.930.0", - "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.930.0", - "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.930.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.2", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/middleware-retry": "^4.4.9", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/middleware-host-header": "3.956.0", + "@aws-sdk/middleware-logger": "3.956.0", + "@aws-sdk/middleware-recursion-detection": "3.956.0", + "@aws-sdk/middleware-user-agent": "3.956.0", + "@aws-sdk/region-config-resolver": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@aws-sdk/util-endpoints": "3.956.0", + "@aws-sdk/util-user-agent-browser": "3.956.0", + "@aws-sdk/util-user-agent-node": "3.956.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", "@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.8", - "@smithy/util-defaults-mode-node": "^4.2.11", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", + "@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-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -453,23 +450,23 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.930.0.tgz", - "integrity": "sha512-E95pWT1ayfRWg0AW2KNOCYM7QQcVeOhMRLX5PXLeDKcdxP7s3x0LHG9t7a3nPbAbvYLRrhC7O2lLWzzMCpqjsw==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.956.0.tgz", + "integrity": "sha512-BMOCXZNz5z4cR3/SaNHUfeoZQUG/y39bLscdLUgg3RL6mDOhuINIqMc0qc6G3kpwDTLVdXikF4nmx2UrRK9y5A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@aws-sdk/xml-builder": "3.930.0", - "@smithy/core": "^3.18.2", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/signature-v4": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/types": "3.956.0", + "@aws-sdk/xml-builder": "3.956.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", "@smithy/util-base64": "^4.3.0", - "@smithy/util-middleware": "^4.2.5", + "@smithy/util-middleware": "^4.2.7", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -478,16 +475,16 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.930.0.tgz", - "integrity": "sha512-5tJyxNQmm9C1XKeiWt/K67mUHtTiU2FxTkVsqVrzAMjNsF3uyA02kyTK70byh5n29oVR9XNValVEl6jk01ipYg==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.956.0.tgz", + "integrity": "sha512-aLJavJMPVTvhmggJ0pcdCKEWJk3sL9QkJkUIEoTzOou7HnxWS66N4sC5e8y27AF2nlnYfIxq3hkEiZlGi/vlfA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@smithy/property-provider": "^4.2.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -495,21 +492,21 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.930.0.tgz", - "integrity": "sha512-vw565GctpOPoRJyRvgqXM8U/4RG8wYEPfhe6GHvt9dchebw0OaFeW1mmSYpwEPkMhZs9Z808dkSPScwm8WZBKA==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.956.0.tgz", + "integrity": "sha512-VsKzBNhwT6XJdW3HQX6o4KOHj1MAzSwA8/zCsT9mOGecozw1yeCcQPtlWDSlfsfygKVCXz7fiJzU03yl11NKMA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/util-stream": "^4.5.6", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/types": "3.956.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", "tslib": "^2.6.2" }, "engines": { @@ -517,24 +514,45 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.930.0.tgz", - "integrity": "sha512-Ua4T5MWjm7QdHi7ZSUvnPBFwBZmLFP/IEGCLacPKbUT1sQO30hlWuB/uQOj0ns4T6p7V4XsM8bz5+xsW2yRYbQ==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.956.0.tgz", + "integrity": "sha512-TlDy+IGr0JIRBwnPdV31J1kWXEcfsR3OzcNVWQrguQdHeTw2lU5eft16kdizo6OruqcZRF/LvHBDwAWx4u51ww==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.956.0", + "@aws-sdk/credential-provider-env": "3.956.0", + "@aws-sdk/credential-provider-http": "3.956.0", + "@aws-sdk/credential-provider-login": "3.956.0", + "@aws-sdk/credential-provider-process": "3.956.0", + "@aws-sdk/credential-provider-sso": "3.956.0", + "@aws-sdk/credential-provider-web-identity": "3.956.0", + "@aws-sdk/nested-clients": "3.956.0", + "@aws-sdk/types": "3.956.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", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.956.0.tgz", + "integrity": "sha512-p2Y62mdIlUpiyi5tvn8cKTja5kq1e3Rm5gm4wpNQ9caTayfkIEXyKrbP07iepTv60Coaylq9Fx6b5En/siAeGA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/credential-provider-env": "3.930.0", - "@aws-sdk/credential-provider-http": "3.930.0", - "@aws-sdk/credential-provider-process": "3.930.0", - "@aws-sdk/credential-provider-sso": "3.930.0", - "@aws-sdk/credential-provider-web-identity": "3.930.0", - "@aws-sdk/nested-clients": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/nested-clients": "3.956.0", + "@aws-sdk/types": "3.956.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", "tslib": "^2.6.2" }, "engines": { @@ -542,23 +560,23 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.930.0.tgz", - "integrity": "sha512-LTx5G0PsL51hNCCzOIdacGPwqnTp3X2Ck8CjLL4Kz9FTR0mfY02qEJB5y5segU1hlge/WdQYxzBBMhtMUR2h8A==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.956.0.tgz", + "integrity": "sha512-ITjp7uAQh17ljUsCWkPRmLjyFfupGlJVUfTLHnZJ+c7G0P0PDRquaM+fBSh0y33tauHsBa5fGnCCLRo5hy9sGQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.930.0", - "@aws-sdk/credential-provider-http": "3.930.0", - "@aws-sdk/credential-provider-ini": "3.930.0", - "@aws-sdk/credential-provider-process": "3.930.0", - "@aws-sdk/credential-provider-sso": "3.930.0", - "@aws-sdk/credential-provider-web-identity": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", + "@aws-sdk/credential-provider-env": "3.956.0", + "@aws-sdk/credential-provider-http": "3.956.0", + "@aws-sdk/credential-provider-ini": "3.956.0", + "@aws-sdk/credential-provider-process": "3.956.0", + "@aws-sdk/credential-provider-sso": "3.956.0", + "@aws-sdk/credential-provider-web-identity": "3.956.0", + "@aws-sdk/types": "3.956.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", "tslib": "^2.6.2" }, "engines": { @@ -566,17 +584,17 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.930.0.tgz", - "integrity": "sha512-lqC4lepxgwR2uZp/JROTRjkHld4/FEpSgofmiIOAfUfDx0OWSg7nkWMMS/DzlMpODqATl9tO0DcvmIJ8tMbh6g==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.956.0.tgz", + "integrity": "sha512-wpAex+/LGVWkHPchsn9FWy1ahFualIeSYq3ADFc262ljJjrltOWGh3+cu3OK3gTMkX6VEsl+lFvy1P7Bk7cgXA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@smithy/property-provider": "^4.2.7", + "@smithy/shared-ini-file-loader": "^4.4.2", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -584,19 +602,19 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.930.0.tgz", - "integrity": "sha512-LIs2aaVoFfioRokR1R9SpLS9u8CmbHhrV/gpHO1ED41qNCujn23vAxRNQmWzJ2XoCxSTwvToiHD2i6CjPA6rHQ==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.956.0.tgz", + "integrity": "sha512-IRFSDF32x8TpOEYSGMcGQVJUiYuJaFkek0aCjW0klNIZHBF1YpflVpUarK9DJe4v4ryfVq3c0bqR/JFui8QFmw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.930.0", - "@aws-sdk/core": "3.930.0", - "@aws-sdk/token-providers": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", + "@aws-sdk/client-sso": "3.956.0", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/token-providers": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@smithy/property-provider": "^4.2.7", + "@smithy/shared-ini-file-loader": "^4.4.2", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -604,18 +622,18 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.930.0.tgz", - "integrity": "sha512-iIYF8GReLOp16yn2bnRWrc4UOW/vVLifqyRWZ3iAGe8NFzUiHBq+Nok7Edh+2D8zt30QOCOsWCZ31uRrPuXH8w==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.956.0.tgz", + "integrity": "sha512-4YkmjwZC+qoUKlVOY9xNx7BTKRdJ1R1/Zjk2QSW5aWtwkk2e07ZUQvUpbW4vGpAxGm1K4EgRcowuSpOsDTh44Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/nested-clients": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/nested-clients": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@smithy/property-provider": "^4.2.7", + "@smithy/shared-ini-file-loader": "^4.4.2", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -623,17 +641,17 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.930.0.tgz", - "integrity": "sha512-cnCLWeKPYgvV4yRYPFH6pWMdUByvu2cy2BAlfsPpvnm4RaVioztyvxmQj5PmVN5fvWs5w/2d6U7le8X9iye2sA==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.956.0.tgz", + "integrity": "sha512-+iHH9cnkNZgKkTBnPP9rbapHliKDrOuj7MDz6+wL0NV4N/XGB5tbrd+uDP608FXVeMHcWIIZtWkANADUmAI49w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-arn-parser": "3.893.0", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/types": "3.956.0", + "@aws-sdk/util-arn-parser": "3.953.0", + "@smithy/node-config-provider": "^4.3.7", + "@smithy/protocol-http": "^5.3.7", + "@smithy/types": "^4.11.0", "@smithy/util-config-provider": "^4.2.0", "tslib": "^2.6.2" }, @@ -642,15 +660,15 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.930.0.tgz", - "integrity": "sha512-5HEQ+JU4DrLNWeY27wKg/jeVa8Suy62ivJHOSUf6e6hZdVIMx0h/kXS1fHEQNNiLu2IzSEP/bFXsKBaW7x7s0g==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.956.0.tgz", + "integrity": "sha512-97rmalK9x09Darcl6AbShZRXYxWiyCeO8ll1C9rx1xyZMs2DeIKAZ/xuAJ/bywB3l25ls6VqXO4/EuDFJHL8eA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/types": "3.956.0", + "@smithy/protocol-http": "^5.3.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -658,23 +676,23 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.930.0.tgz", - "integrity": "sha512-ZbAwwe7sqIO7tmNH3Q8rH91tZCQwBGliyXUbANoVMp1CWLPDAeaECurkmuBe/UJmoszi2U3gyhIQlbfzD2SBLw==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.956.0.tgz", + "integrity": "sha512-Rd/VeVKuw+lQ1oJmJOyXV0flIkp9ouMGAS9QT28ogdQVxXriaheNo754N4z0+8+R6uTcmeojN7dN4jzt51WV2g==", "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.930.0", - "@aws-sdk/types": "3.930.0", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/types": "3.956.0", "@smithy/is-array-buffer": "^4.2.0", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-stream": "^4.5.6", + "@smithy/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/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -683,15 +701,15 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.930.0.tgz", - "integrity": "sha512-x30jmm3TLu7b/b+67nMyoV0NlbnCVT5DI57yDrhXAPCtdgM1KtdLWt45UcHpKOm1JsaIkmYRh2WYu7Anx4MG0g==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.956.0.tgz", + "integrity": "sha512-JujNJDp/dj1DbsI0ntzhrz2uJ4jpumcKtr743eMpEhdboYjuu/UzY8/7n1h5JbgU9TNXgqE9lgQNa5QPG0Tvsg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/types": "3.956.0", + "@smithy/protocol-http": "^5.3.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -699,14 +717,14 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.930.0.tgz", - "integrity": "sha512-QIGNsNUdRICog+LYqmtJ03PLze6h2KCORXUs5td/hAEjVP5DMmubhtrGg1KhWyctACluUH/E/yrD14p4pRXxwA==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.956.0.tgz", + "integrity": "sha512-eANhYRFcVO/lI9tliitSW0DK5H1d9J7BK/9RrRz86bd5zPWteVqqzQRbMUdErVi1nwSbSIAa6YGv/ItYPswe0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", + "@aws-sdk/types": "3.956.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -714,14 +732,14 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.930.0.tgz", - "integrity": "sha512-vh4JBWzMCBW8wREvAwoSqB2geKsZwSHTa0nSt0OMOLp2PdTYIZDi0ZiVMmpfnjcx9XbS6aSluLv9sKx4RrG46A==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.956.0.tgz", + "integrity": "sha512-Qff39yEOPYgRsm4SrkHOvS0nSoxXILYnC8Akp0uMRi2lOcZVyXL3WCWqIOtI830qVI4GPa796sleKguxx50RHg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", + "@aws-sdk/types": "3.956.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -729,16 +747,16 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.930.0.tgz", - "integrity": "sha512-gv0sekNpa2MBsIhm2cjP3nmYSfI4nscx/+K9u9ybrWZBWUIC4kL2sV++bFjjUz4QxUIlvKByow3/a9ARQyCu7Q==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.956.0.tgz", + "integrity": "sha512-/f4JxL2kSCYhy63wovqts6SJkpalSLvuFe78ozt3ClrGoHGyr69o7tPRYx5U7azLgvrIGjsWUyTayeAk3YHIVQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@aws/lambda-invoke-store": "^0.1.1", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/types": "3.956.0", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -746,24 +764,24 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.930.0.tgz", - "integrity": "sha512-bnVK0xVVmrPyKTbV5MgG6KP7MPe87GngBPD5MrYj9kWmGrJIvnt0qer0UIgWAnsyCi7XrTfw7SMgYRpSxOYEMw==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.956.0.tgz", + "integrity": "sha512-U/+jYb4iowqqpLjB6cSYan0goAMOlh2xg2CPIdSy550o8mYnJtuajBUQ20A9AA9PYKLlEAoCNEysNZkn4o/63g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-arn-parser": "3.893.0", - "@smithy/core": "^3.18.2", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/signature-v4": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@aws-sdk/util-arn-parser": "3.953.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", "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-stream": "^4.5.6", + "@smithy/util-middleware": "^4.2.7", + "@smithy/util-stream": "^4.5.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -772,14 +790,14 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.930.0.tgz", - "integrity": "sha512-N2/SvodmaDS6h7CWfuapt3oJyn1T2CBz0CsDIiTDv9cSagXAVFjPdm2g4PFJqrNBeqdDIoYBnnta336HmamWHg==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.956.0.tgz", + "integrity": "sha512-1Et0vPoIzfhkUAdNRzu0pC25ZawFqXo5T8xpvbwkfDgfIkeVj+sm9t01iXO3pCOK52OSuLRAy7fiAo/AoHjOYg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", + "@aws-sdk/types": "3.956.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -787,18 +805,18 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.930.0.tgz", - "integrity": "sha512-UUItqy02biaHoZDd1Z2CskFon3Lej15ZCIZzW4n2lsJmgLWNvz21jtFA8DQny7ZgCLAOOXI8YK3VLZptZWtIcg==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.956.0.tgz", + "integrity": "sha512-azH8OJ0AIe3NafaTNvJorG/ALaLNTYwVKtyaSeQKOvaL8TNuBVuDnM5iHCiWryIaRgZotomqycwyfNKLw2D3JQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@smithy/core": "^3.18.2", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@aws-sdk/util-endpoints": "3.956.0", + "@smithy/core": "^3.20.0", + "@smithy/protocol-http": "^5.3.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -806,48 +824,48 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.930.0.tgz", - "integrity": "sha512-eEDjTVXNiDkoV0ZV+X+WV40GTpF70xZmDW13CQzQF7rzOC2iFjtTRU+F7MUhy/Vs+e9KvDgiuCDecITtaOXUNw==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.956.0.tgz", + "integrity": "sha512-GHDQMkxoWpi3eTrhWGmghw0gsZJ5rM1ERHfBFhlhduCdtV3TyhKVmDgFG84KhU8v18dcVpSp3Pu3KwH7j1tgIg==", "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.930.0", - "@aws-sdk/middleware-host-header": "3.930.0", - "@aws-sdk/middleware-logger": "3.930.0", - "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.930.0", - "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.930.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.2", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/middleware-retry": "^4.4.9", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/middleware-host-header": "3.956.0", + "@aws-sdk/middleware-logger": "3.956.0", + "@aws-sdk/middleware-recursion-detection": "3.956.0", + "@aws-sdk/middleware-user-agent": "3.956.0", + "@aws-sdk/region-config-resolver": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@aws-sdk/util-endpoints": "3.956.0", + "@aws-sdk/util-user-agent-browser": "3.956.0", + "@aws-sdk/util-user-agent-node": "3.956.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", "@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.8", - "@smithy/util-defaults-mode-node": "^4.2.11", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", + "@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-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -856,16 +874,16 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.930.0.tgz", - "integrity": "sha512-KL2JZqH6aYeQssu1g1KuWsReupdfOoxD6f1as2VC+rdwYFUu4LfzMsFfXnBvvQWWqQ7rZHWOw1T+o5gJmg7Dzw==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.956.0.tgz", + "integrity": "sha512-byU5XYekW7+rZ3e067y038wlrpnPkdI4fMxcHCHrv+TAfzl8CCk5xLyzerQtXZR8cVPVOXuaYWe1zKW0uCnXUA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/types": "3.956.0", + "@smithy/config-resolver": "^4.4.5", + "@smithy/node-config-provider": "^4.3.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -873,17 +891,17 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.930.0.tgz", - "integrity": "sha512-UOAq1ftbrZc9HRP/nG970OONNykIDWunjth9GvGDODkW0FR7DHJWBmTwj61ZnrSiuSParp1eQfa+JsZ8eXNPcw==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.956.0.tgz", + "integrity": "sha512-gejlXPmor08VydGC8bx0Bv4/tPT92eK0WLe2pUPR0AaMXL+5ycDpThAi1vLWjWr0aUjCA7lXx0pMENWlJlYK3A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/signature-v4": "^5.3.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/middleware-sdk-s3": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@smithy/protocol-http": "^5.3.7", + "@smithy/signature-v4": "^5.3.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -891,18 +909,18 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.930.0.tgz", - "integrity": "sha512-K+fJFJXA2Tdx10WhhTm+xQmf1WDHu14rUutByyqx6W0iW2rhtl3YeRr188LWSU3/hpz7BPyvigaAb0QyRti6FQ==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.956.0.tgz", + "integrity": "sha512-I01Q9yDeG9oXge14u/bubtSdBpok/rTsPp2AQwy5xj/5PatRTHPbUTP6tef3AH/lFCAqkI0nncIcgx6zikDdUQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/nested-clients": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", + "@aws-sdk/core": "3.956.0", + "@aws-sdk/nested-clients": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@smithy/property-provider": "^4.2.7", + "@smithy/shared-ini-file-loader": "^4.4.2", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -910,13 +928,13 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.930.0.tgz", - "integrity": "sha512-we/vaAgwlEFW7IeftmCLlLMw+6hFs3DzZPJw7lVHbj/5HJ0bz9gndxEsS2lQoeJ1zhiiLqAqvXxmM43s0MBg0A==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.956.0.tgz", + "integrity": "sha512-DMRU/p9wAlAJxEjegnLwduCA8YP2pcT/sIJ+17KSF38c5cC6CbBhykwbZLECTo+zYzoFrOqeLbqE6paH8Gx3ug==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -924,9 +942,9 @@ } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.893.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", - "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", + "version": "3.953.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.953.0.tgz", + "integrity": "sha512-9hqdKkn4OvYzzaLryq2xnwcrPc8ziY34i9szUdgBfSqEC6pBxbY9/lLXmrgzfwMSL2Z7/v2go4Od0p5eukKLMQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -937,16 +955,16 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.930.0.tgz", - "integrity": "sha512-M2oEKBzzNAYr136RRc6uqw3aWlwCxqTP1Lawps9E1d2abRPvl1p1ztQmmXp1Ak4rv8eByIZ+yQyKQ3zPdRG5dw==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.956.0.tgz", + "integrity": "sha512-xZ5CBoubS4rs9JkFniKNShDtfqxaMUnwaebYMoybZm070q9+omFkQkJYXl7kopTViEgZgQl1sAsAkrawBM8qEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-endpoints": "^3.2.5", + "@aws-sdk/types": "3.956.0", + "@smithy/types": "^4.11.0", + "@smithy/url-parser": "^4.2.7", + "@smithy/util-endpoints": "^3.2.7", "tslib": "^2.6.2" }, "engines": { @@ -954,9 +972,9 @@ } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.893.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", - "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", + "version": "3.953.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.953.0.tgz", + "integrity": "sha512-mPxK+I1LcrgC/RSa3G5AMAn8eN2Ay0VOgw8lSRmV1jCtO+iYvNeCqOdxoJUjOW6I5BA4niIRWqVORuRP07776Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -967,29 +985,29 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.930.0.tgz", - "integrity": "sha512-q6lCRm6UAe+e1LguM5E4EqM9brQlDem4XDcQ87NzEvlTW6GzmNCO0w1jS0XgCFXQHjDxjdlNFX+5sRbHijwklg==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.956.0.tgz", + "integrity": "sha512-s8KwYR3HqiGNni7a1DN2P3RUog64QoBQ6VCSzJkHBWb6++8KSOpqeeDkfmEz+22y1LOne+bRrpDGKa0aqOc3rQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", + "@aws-sdk/types": "3.956.0", + "@smithy/types": "^4.11.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.930.0.tgz", - "integrity": "sha512-tYc5uFKogn0vLukeZ6Zz2dR1/WiTjxZH7+Jjoce6aEYgRVfyrDje1POFb7YxhNZ7Pp1WzHCuwW2KgkmMoYVbxQ==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.956.0.tgz", + "integrity": "sha512-H0r6ol3Rr63/3xvrUsLqHps+cA7VkM7uCU5NtuTHnMbv3uYYTKf9M2XFHAdVewmmRgssTzvqemrARc8Ji3SNvg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", + "@aws-sdk/middleware-user-agent": "3.956.0", + "@aws-sdk/types": "3.956.0", + "@smithy/node-config-provider": "^4.3.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -1005,13 +1023,13 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz", - "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==", + "version": "3.956.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.956.0.tgz", + "integrity": "sha512-x/IvXUeQYNUEQojpRIQpFt4X7XGxqzjUlXFRdwaTCtTz3q1droXVJvYOhnX3KiMgzeHGlBJfY4Nmq3oZNEUGFw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, @@ -1020,9 +1038,9 @@ } }, "node_modules/@aws/lambda-invoke-store": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.1.1.tgz", - "integrity": "sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.2.tgz", + "integrity": "sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1692,10 +1710,6 @@ "resolved": "packages/contentstack-import-setup", "link": true }, - "node_modules/@contentstack/cli-cm-migrate-rte": { - "resolved": "packages/contentstack-migrate-rte", - "link": true - }, "node_modules/@contentstack/cli-cm-seed": { "resolved": "packages/contentstack-seed", "link": true @@ -1713,12 +1727,12 @@ "link": true }, "node_modules/@contentstack/cli-launch": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@contentstack/cli-launch/-/cli-launch-1.9.3.tgz", - "integrity": "sha512-sSaZnxHDiFZjbzEFhFDIT9dvW/6rAXSKS8RO4TsoJk/ed2noUN4gVarAmAZt2B7qy7ICoPoXREIVOqi6FbaZqQ==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@contentstack/cli-launch/-/cli-launch-1.9.4.tgz", + "integrity": "sha512-Wev1zDBZ61eJSOGEaj08LZXkK6+sX7TM9TBxNd5ZHc0tkl4y8gDtuoo+wfaCV0/WcXmglUHazFX4ZgDYyB9UDQ==", "license": "MIT", "dependencies": { - "@apollo/client": "^3.11.8", + "@apollo/client": "^3.14.0", "@contentstack/cli-command": "^1.4.0", "@contentstack/cli-utilities": "^1.12.0", "@oclif/core": "^4.2.7", @@ -1735,7 +1749,7 @@ "cross-fetch": "^4.1.0", "dotenv": "^16.4.7", "express": "^4.21.1", - "form-data": "^4.0.0", + "form-data": "4.0.4", "graphql": "^16.9.0", "ini": "^3.0.1", "lodash": "^4.17.21", @@ -1762,35 +1776,6 @@ "resolved": "packages/contentstack-variants", "link": true }, - "node_modules/@contentstack/json-rte-serializer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@contentstack/json-rte-serializer/-/json-rte-serializer-2.1.0.tgz", - "integrity": "sha512-klw+0kH5UtL4mHGDP7A8olZIaA4CoyAVzveYqso8uxeDXKkTvwF8D5HBhCqQLr0NXwhofl+FF431cbzGZ3TNCg==", - "license": "MIT", - "dependencies": { - "array-flat-polyfill": "^1.0.1", - "lodash": "^4.17.21", - "lodash.clonedeep": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isempty": "^4.4.0", - "lodash.isequal": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isundefined": "^3.0.1", - "lodash.kebabcase": "^4.1.1", - "slate": "^0.103.0", - "uuid": "^8.3.2" - } - }, - "node_modules/@contentstack/json-rte-serializer/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@contentstack/management": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/@contentstack/management/-/management-1.22.0.tgz", @@ -1820,10 +1805,9 @@ } }, "node_modules/@contentstack/utils": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.6.2.tgz", - "integrity": "sha512-HWyCXchCIUUwhcaqEwMEQNSmbVih8x4QKo4UxbFSj5RmIfFDPY/szAl5hQT0Xvnhh6C3uZu2gDI/HmUcDzJQkQ==", - "hasInstallScript": true, + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.6.3.tgz", + "integrity": "sha512-FU1hFks9vnJ5e9cwBTPgnf3obx/fuKh+c3Gtc71mq1Mrub3/z4rJZJWLJ2kublVKnXWnhz+Yt66rshxO/TT9IQ==", "license": "MIT" }, "node_modules/@cspotcode/source-map-support": { @@ -1862,9 +1846,9 @@ } }, "node_modules/@emnapi/core": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.0.tgz", - "integrity": "sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", "dev": true, "license": "MIT", "optional": true, @@ -1874,9 +1858,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.0.tgz", - "integrity": "sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", "dev": true, "license": "MIT", "optional": true, @@ -1913,9 +1897,9 @@ } }, "node_modules/@es-joy/jsdoccomment/node_modules/@typescript-eslint/types": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", - "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", + "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", "dev": true, "license": "MIT", "engines": { @@ -1927,9 +1911,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", "cpu": [ "ppc64" ], @@ -1944,9 +1928,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", "cpu": [ "arm" ], @@ -1961,9 +1945,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", "cpu": [ "arm64" ], @@ -1978,9 +1962,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", "cpu": [ "x64" ], @@ -1995,9 +1979,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", "cpu": [ "arm64" ], @@ -2012,9 +1996,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", "cpu": [ "x64" ], @@ -2029,9 +2013,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", "cpu": [ "arm64" ], @@ -2046,9 +2030,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", "cpu": [ "x64" ], @@ -2063,9 +2047,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", "cpu": [ "arm" ], @@ -2080,9 +2064,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", "cpu": [ "arm64" ], @@ -2097,9 +2081,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", "cpu": [ "ia32" ], @@ -2114,9 +2098,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", "cpu": [ "loong64" ], @@ -2131,9 +2115,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", "cpu": [ "mips64el" ], @@ -2148,9 +2132,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", "cpu": [ "ppc64" ], @@ -2165,9 +2149,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", "cpu": [ "riscv64" ], @@ -2182,9 +2166,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", "cpu": [ "s390x" ], @@ -2199,9 +2183,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", "cpu": [ "x64" ], @@ -2216,9 +2200,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", "cpu": [ "arm64" ], @@ -2233,9 +2217,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", "cpu": [ "x64" ], @@ -2250,9 +2234,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", "cpu": [ "arm64" ], @@ -2267,9 +2251,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", "cpu": [ "x64" ], @@ -2284,9 +2268,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", "cpu": [ "arm64" ], @@ -2301,9 +2285,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", "cpu": [ "x64" ], @@ -2318,9 +2302,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", "cpu": [ "arm64" ], @@ -2335,9 +2319,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", "cpu": [ "ia32" ], @@ -2352,9 +2336,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", "cpu": [ "x64" ], @@ -2499,9 +2483,9 @@ } }, "node_modules/@eslint/css-tree": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/@eslint/css-tree/-/css-tree-3.6.6.tgz", - "integrity": "sha512-C3YiJMY9OZyZ/3vEMFWJIesdGaRY6DmIYvmtyxMT934CbrOKqRs+Iw7NWSRlJQEaK4dPYy2lZ2y1zkaj8z0p5A==", + "version": "3.6.8", + "resolved": "https://registry.npmjs.org/@eslint/css-tree/-/css-tree-3.6.8.tgz", + "integrity": "sha512-s0f40zY7dlMp8i0Jf0u6l/aSswS0WRAgkhgETgiCJRcxIWb4S/Sp9uScKHWbkM3BnoFLbJbmOYk5AZUDFVxaLA==", "dev": true, "license": "MIT", "dependencies": { @@ -2920,9 +2904,9 @@ } }, "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "22.19.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz", - "integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==", + "version": "22.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.3.tgz", + "integrity": "sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==", "dev": true, "license": "MIT", "dependencies": { @@ -3178,9 +3162,9 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -3749,9 +3733,9 @@ } }, "node_modules/@oclif/plugin-help": { - "version": "6.2.35", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-6.2.35.tgz", - "integrity": "sha512-ZMcQTsHaiCEOZIRZoynUQ+98fyM1Adoqx4LbOgYWRVKXKbavHPCZKm6F+/y0GpWscXVoeGnvJO6GIBsigrqaSA==", + "version": "6.2.36", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-6.2.36.tgz", + "integrity": "sha512-NBQIg5hEMhvdbi4mSrdqRGl5XJ0bqTAHq6vDCCCDXUcfVtdk3ZJbSxtRVWyVvo9E28vwqu6MZyHOJylevqcHbA==", "license": "MIT", "dependencies": { "@oclif/core": "^4" @@ -3761,12 +3745,12 @@ } }, "node_modules/@oclif/plugin-not-found": { - "version": "3.2.72", - "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-3.2.72.tgz", - "integrity": "sha512-CRcqHGdcEL4l5cls5F9FvwKt04LkdG7WyFozOu2vP1/3w34S29zbw8Tx1gAzfBZDDme5ChSaqFXU5qbTLx5yYQ==", + "version": "3.2.73", + "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-3.2.73.tgz", + "integrity": "sha512-2bQieTGI9XNFe9hKmXQjJmHV5rZw+yn7Rud1+C5uLEo8GaT89KZbiLTJgL35tGILahy/cB6+WAs812wjw7TK6w==", "license": "MIT", "dependencies": { - "@inquirer/prompts": "^7.9.0", + "@inquirer/prompts": "^7.10.1", "@oclif/core": "^4.8.0", "ansis": "^3.17.0", "fast-levenshtein": "^3.0.0" @@ -4092,9 +4076,9 @@ } }, "node_modules/@oclif/plugin-not-found/node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", "license": "MIT", "optional": true, "peer": true, @@ -4118,9 +4102,9 @@ } }, "node_modules/@oclif/plugin-not-found/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz", + "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -4177,9 +4161,9 @@ } }, "node_modules/@oclif/plugin-plugins": { - "version": "5.4.53", - "resolved": "https://registry.npmjs.org/@oclif/plugin-plugins/-/plugin-plugins-5.4.53.tgz", - "integrity": "sha512-jezB3NEz8fQdb/jrZq8YPvEiF+aH0wHiexVCvnj7Rmy+mmTHicEuGJMPiYeJNcRvG687raIhc6TjyMMPKi0W4A==", + "version": "5.4.54", + "resolved": "https://registry.npmjs.org/@oclif/plugin-plugins/-/plugin-plugins-5.4.54.tgz", + "integrity": "sha512-yzdukEfvvyXx31AhN+YhxLhuQdx2SrZDcRtPl5CNkuqh/uNSB2BuA3xpurdv2qotpaw/Z9InRl+Sa9bLp/4aLA==", "license": "MIT", "dependencies": { "@oclif/core": "^4.8.0", @@ -4199,9 +4183,9 @@ } }, "node_modules/@oclif/plugin-warn-if-update-available": { - "version": "3.1.52", - "resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-3.1.52.tgz", - "integrity": "sha512-CAtBcMBjtuYwv2lf1U3tavAAhFtG3lYvrpestPjfIUyGSoc5kJZME1heS8Ao7IxNgp5sHFm1wNoU2vJbHJKLQg==", + "version": "3.1.53", + "resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-3.1.53.tgz", + "integrity": "sha512-ALxKMNFFJQJV1Z2OMVTV+q7EbKHhnTAPcTgkgHeXCNdW5nFExoXuwusZLS4Zv2o83j9UoDx1R/CSX7QZVgEHTA==", "dev": true, "license": "MIT", "dependencies": { @@ -4217,9 +4201,9 @@ } }, "node_modules/@oclif/test": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@oclif/test/-/test-4.1.14.tgz", - "integrity": "sha512-FKPUBOnC1KnYZBcYOMNmt0DfdqTdSo2Vx8OnqgnMslHVPRPqrUF1bxfEHaw5W/+vOQLwF7MiEPq8DObpXfJJbg==", + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@oclif/test/-/test-4.1.15.tgz", + "integrity": "sha512-OVTmz3RxnOWYPoE9sbB9Przfph+QSLMvHUfqEwXZKupuOHCJAJX0QDUfVyh1pK+XYEQ2RUaF+qhxqBfIfaahBw==", "license": "MIT", "dependencies": { "ansis": "^3.17.0", @@ -4453,9 +4437,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", - "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz", + "integrity": "sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==", "cpu": [ "arm" ], @@ -4466,9 +4450,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", - "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.54.0.tgz", + "integrity": "sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==", "cpu": [ "arm64" ], @@ -4479,9 +4463,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", - "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.54.0.tgz", + "integrity": "sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==", "cpu": [ "arm64" ], @@ -4492,9 +4476,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", - "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.54.0.tgz", + "integrity": "sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==", "cpu": [ "x64" ], @@ -4505,9 +4489,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", - "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.54.0.tgz", + "integrity": "sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==", "cpu": [ "arm64" ], @@ -4518,9 +4502,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", - "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.54.0.tgz", + "integrity": "sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==", "cpu": [ "x64" ], @@ -4531,9 +4515,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", - "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.54.0.tgz", + "integrity": "sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==", "cpu": [ "arm" ], @@ -4544,9 +4528,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", - "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.54.0.tgz", + "integrity": "sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==", "cpu": [ "arm" ], @@ -4557,9 +4541,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", - "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.54.0.tgz", + "integrity": "sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==", "cpu": [ "arm64" ], @@ -4570,9 +4554,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", - "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.54.0.tgz", + "integrity": "sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==", "cpu": [ "arm64" ], @@ -4583,9 +4567,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", - "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.54.0.tgz", + "integrity": "sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==", "cpu": [ "loong64" ], @@ -4596,9 +4580,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", - "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.54.0.tgz", + "integrity": "sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==", "cpu": [ "ppc64" ], @@ -4609,9 +4593,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", - "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.54.0.tgz", + "integrity": "sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==", "cpu": [ "riscv64" ], @@ -4622,9 +4606,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", - "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.54.0.tgz", + "integrity": "sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==", "cpu": [ "riscv64" ], @@ -4635,9 +4619,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", - "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.54.0.tgz", + "integrity": "sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==", "cpu": [ "s390x" ], @@ -4648,9 +4632,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", - "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz", + "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==", "cpu": [ "x64" ], @@ -4661,9 +4645,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", - "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.54.0.tgz", + "integrity": "sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==", "cpu": [ "x64" ], @@ -4674,9 +4658,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", - "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.54.0.tgz", + "integrity": "sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==", "cpu": [ "arm64" ], @@ -4687,9 +4671,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", - "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz", + "integrity": "sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==", "cpu": [ "arm64" ], @@ -4700,9 +4684,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", - "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.54.0.tgz", + "integrity": "sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==", "cpu": [ "ia32" ], @@ -4713,9 +4697,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", - "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.54.0.tgz", + "integrity": "sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==", "cpu": [ "x64" ], @@ -4726,9 +4710,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", - "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.54.0.tgz", + "integrity": "sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==", "cpu": [ "x64" ], @@ -4789,6 +4773,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -4798,6 +4783,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -4817,6 +4803,7 @@ "version": "8.0.3", "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", @@ -4827,16 +4814,17 @@ "version": "0.7.3", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", + "dev": true, "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@smithy/abort-controller": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", - "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.7.tgz", + "integrity": "sha512-rzMY6CaKx2qxrbYbqjXWS0plqEy7LOdKHS0bg4ixJ6aoGDPNUcLWk/FRNuCILh7GKLG9TFUXYYeQQldMBBwuyw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -4871,17 +4859,17 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", - "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.5.tgz", + "integrity": "sha512-HAGoUAFYsUkoSckuKbCPayECeMim8pOu+yLy1zOxt1sifzEbrsRpYa+mKcMdiHKMeiqOibyPG0sFJnmaV/OGEg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", + "@smithy/node-config-provider": "^4.3.7", + "@smithy/types": "^4.11.0", "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", + "@smithy/util-endpoints": "^3.2.7", + "@smithy/util-middleware": "^4.2.7", "tslib": "^2.6.2" }, "engines": { @@ -4889,19 +4877,19 @@ } }, "node_modules/@smithy/core": { - "version": "3.18.3", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.3.tgz", - "integrity": "sha512-qqpNskkbHOSfrbFbjhYj5o8VMXO26fvN1K/+HbCzUNlTuxgNcPRouUDNm+7D6CkN244WG7aK533Ne18UtJEgAA==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.20.0.tgz", + "integrity": "sha512-WsSHCPq/neD5G/MkK4csLI5Y5Pkd9c1NMfpYEKeghSGaD4Ja1qLIohRQf2D5c1Uy5aXp76DeKHkzWZ9KAlHroQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", + "@smithy/middleware-serde": "^4.2.8", + "@smithy/protocol-http": "^5.3.7", + "@smithy/types": "^4.11.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-stream": "^4.5.6", + "@smithy/util-middleware": "^4.2.7", + "@smithy/util-stream": "^4.5.8", "@smithy/util-utf8": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" @@ -4911,16 +4899,16 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", - "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", + "@smithy/node-config-provider": "^4.3.7", + "@smithy/property-provider": "^4.2.7", + "@smithy/types": "^4.11.0", + "@smithy/url-parser": "^4.2.7", "tslib": "^2.6.2" }, "engines": { @@ -4928,14 +4916,14 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", - "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.7.tgz", + "integrity": "sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" }, @@ -4944,14 +4932,14 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", - "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.5", - "@smithy/types": "^4.9.0", + "@smithy/eventstream-serde-universal": "^4.2.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -4959,13 +4947,13 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", - "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -4973,14 +4961,14 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", - "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.5", - "@smithy/types": "^4.9.0", + "@smithy/eventstream-serde-universal": "^4.2.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -4988,14 +4976,14 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", - "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.2.5", - "@smithy/types": "^4.9.0", + "@smithy/eventstream-codec": "^4.2.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5003,15 +4991,15 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", - "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/querystring-builder": "^4.2.5", - "@smithy/types": "^4.9.0", + "@smithy/protocol-http": "^5.3.7", + "@smithy/querystring-builder": "^4.2.7", + "@smithy/types": "^4.11.0", "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" }, @@ -5020,15 +5008,15 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", - "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.8.tgz", + "integrity": "sha512-07InZontqsM1ggTCPSRgI7d8DirqRrnpL7nIACT4PW0AWrgDiHhjGZzbAE5UtRSiU0NISGUYe7/rri9ZeWyDpw==", "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.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5036,13 +5024,13 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", - "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.7.tgz", + "integrity": "sha512-PU/JWLTBCV1c8FtB8tEFnY4eV1tSfBc7bDBADHfn1K+uRbPgSJ9jnJp0hyjiFN2PMdPzxsf1Fdu0eo9fJ760Xw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -5052,13 +5040,13 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", - "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -5067,13 +5055,13 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", - "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.7.tgz", + "integrity": "sha512-ncvgCr9a15nPlkhIUx3CU4d7E7WEuVJOV7fS7nnK2hLtPK9tYRBkMHQbhXU1VvvKeBm/O0x26OEoBq+ngFpOEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5094,13 +5082,13 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", - "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.7.tgz", + "integrity": "sha512-Wv6JcUxtOLTnxvNjDnAiATUsk8gvA6EeS8zzHig07dotpByYsLot+m0AaQEniUBjx97AC41MQR4hW0baraD1Xw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -5109,14 +5097,14 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", - "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", + "@smithy/protocol-http": "^5.3.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5124,19 +5112,19 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.10.tgz", - "integrity": "sha512-SoAag3QnWBFoXjwa1jenEThkzJYClidZUyqsLKwWZ8kOlZBwehrLBp4ygVDjNEM2a2AamCQ2FBA/HuzKJ/LiTA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.1.tgz", + "integrity": "sha512-gpLspUAoe6f1M6H0u4cVuFzxZBrsGZmjx2O9SigurTx4PbntYa4AJ+o0G0oGm1L2oSX6oBhcGHwrfJHup2JnJg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.18.3", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-middleware": "^4.2.5", + "@smithy/core": "^3.20.0", + "@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", "tslib": "^2.6.2" }, "engines": { @@ -5144,19 +5132,19 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.10.tgz", - "integrity": "sha512-6fOwX34gXxcqKa3bsG0mR0arc2Cw4ddOS6tp3RgUD2yoTrDTbQ2aVADnDjhUuxaiDZN2iilxndgGDhnpL/XvJA==", + "version": "4.4.17", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.17.tgz", + "integrity": "sha512-MqbXK6Y9uq17h+4r0ogu/sBT6V/rdV+5NvYL7ZV444BKfQygYe8wAhDrVXagVebN6w2RE0Fm245l69mOsPGZzg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/service-error-classification": "^4.2.5", - "@smithy/smithy-client": "^4.9.6", - "@smithy/types": "^4.9.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", + "@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.2", + "@smithy/types": "^4.11.0", + "@smithy/util-middleware": "^4.2.7", + "@smithy/util-retry": "^4.2.7", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" }, @@ -5165,14 +5153,14 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.5.tgz", - "integrity": "sha512-La1ldWTJTZ5NqQyPqnCNeH9B+zjFhrNoQIL1jTh4zuqXRlmXhxYHhMtI1/92OlnoAtp6JoN7kzuwhWoXrBwPqg==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", + "@smithy/protocol-http": "^5.3.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5180,13 +5168,13 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", - "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.7.tgz", + "integrity": "sha512-bsOT0rJ+HHlZd9crHoS37mt8qRRN/h9jRve1SXUhVbkRzu0QaNYZp1i1jha4n098tsvROjcwfLlfvcFuJSXEsw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5194,15 +5182,15 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", - "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", + "@smithy/property-provider": "^4.2.7", + "@smithy/shared-ini-file-loader": "^4.4.2", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5210,16 +5198,16 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", - "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/querystring-builder": "^4.2.5", - "@smithy/types": "^4.9.0", + "@smithy/abort-controller": "^4.2.7", + "@smithy/protocol-http": "^5.3.7", + "@smithy/querystring-builder": "^4.2.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5227,13 +5215,13 @@ } }, "node_modules/@smithy/property-provider": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", - "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.7.tgz", + "integrity": "sha512-jmNYKe9MGGPoSl/D7JDDs1C8b3dC8f/w78LbaVfoTtWy4xAd5dfjaFG9c9PWPihY4ggMQNQSMtzU77CNgAJwmA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5241,13 +5229,13 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", - "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.7.tgz", + "integrity": "sha512-1r07pb994I20dD/c2seaZhoCuNYm0rWrvBxhCQ70brNh11M5Ml2ew6qJVo0lclB3jMIXirD4s2XRXRe7QEi0xA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5255,13 +5243,13 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", - "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.7.tgz", + "integrity": "sha512-eKONSywHZxK4tBxe2lXEysh8wbBdvDWiA+RIuaxZSgCMmA0zMgoDpGLJhnyj+c0leOQprVnXOmcB4m+W9Rw7sg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" }, @@ -5270,13 +5258,13 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", - "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.7.tgz", + "integrity": "sha512-3X5ZvzUHmlSTHAXFlswrS6EGt8fMSIxX/c3Rm1Pni3+wYWB6cjGocmRIoqcQF9nU5OgGmL0u7l9m44tSUpfj9w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5284,26 +5272,26 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", - "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0" + "@smithy/types": "^4.11.0" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", - "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5311,17 +5299,17 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", - "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.7.tgz", + "integrity": "sha512-9oNUlqBlFZFOSdxgImA6X5GFuzE7V2H7VG/7E70cdLhidFbdtvxxt81EHgykGK5vq5D3FafH//X+Oy31j3CKOg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", + "@smithy/protocol-http": "^5.3.7", + "@smithy/types": "^4.11.0", "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", + "@smithy/util-middleware": "^4.2.7", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -5331,18 +5319,18 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.6.tgz", - "integrity": "sha512-hGz42hggqReicRRZUvrKDQiAmoJnx1Q+XfAJnYAGu544gOfxQCAC3hGGD7+Px2gEUUxB/kKtQV7LOtBRNyxteQ==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.10.2.tgz", + "integrity": "sha512-D5z79xQWpgrGpAHb054Fn2CCTQZpog7JELbVQ6XAvXs5MNKWf28U9gzSBlJkOyMl9LA1TZEjRtwvGXfP0Sl90g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.18.3", - "@smithy/middleware-endpoint": "^4.3.10", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-stream": "^4.5.6", + "@smithy/core": "^3.20.0", + "@smithy/middleware-endpoint": "^4.4.1", + "@smithy/middleware-stack": "^4.2.7", + "@smithy/protocol-http": "^5.3.7", + "@smithy/types": "^4.11.0", + "@smithy/util-stream": "^4.5.8", "tslib": "^2.6.2" }, "engines": { @@ -5350,9 +5338,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", - "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.11.0.tgz", + "integrity": "sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5363,14 +5351,14 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", - "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.7.tgz", + "integrity": "sha512-/RLtVsRV4uY3qPWhBDsjwahAtt3x2IsMGnP5W1b2VZIe+qgCqkLxI1UOHDZp1Q1QSOrdOR32MF3Ph2JfWT1VHg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.5", - "@smithy/types": "^4.9.0", + "@smithy/querystring-parser": "^4.2.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5446,15 +5434,15 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.9.tgz", - "integrity": "sha512-Bh5bU40BgdkXE2BcaNazhNtEXi1TC0S+1d84vUwv5srWfvbeRNUKFzwKQgC6p6MXPvEgw+9+HdX3pOwT6ut5aw==", + "version": "4.3.16", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.16.tgz", + "integrity": "sha512-/eiSP3mzY3TsvUOYMeL4EqUX6fgUOj2eUOU4rMMgVbq67TiRLyxT7Xsjxq0bW3OwuzK009qOwF0L2OgJqperAQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.5", - "@smithy/smithy-client": "^4.9.6", - "@smithy/types": "^4.9.0", + "@smithy/property-provider": "^4.2.7", + "@smithy/smithy-client": "^4.10.2", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5462,18 +5450,18 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.12.tgz", - "integrity": "sha512-EHZwe1E9Q7umImIyCKQg/Cm+S+7rjXxCRvfGmKifqwYvn7M8M4ZcowwUOQzvuuxUUmdzCkqL0Eq0z1m74Pq6pw==", + "version": "4.2.19", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.19.tgz", + "integrity": "sha512-3a4+4mhf6VycEJyHIQLypRbiwG6aJvbQAeRAVXydMmfweEPnLLabRbdyo/Pjw8Rew9vjsh5WCdhmDaHkQnhhhA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.3", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/smithy-client": "^4.9.6", - "@smithy/types": "^4.9.0", + "@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.2", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5481,14 +5469,14 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", - "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.7.tgz", + "integrity": "sha512-s4ILhyAvVqhMDYREeTS68R43B1V5aenV5q/V1QpRQJkCXib5BPRo4s7uNdzGtIKxaPHCfU/8YkvPAEvTpxgspg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", + "@smithy/node-config-provider": "^4.3.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5509,13 +5497,13 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", - "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", + "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==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5523,14 +5511,14 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", - "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.7.tgz", + "integrity": "sha512-SvDdsQyF5CIASa4EYVT02LukPHVzAgUA4kMAuZ97QJc2BpAqZfA4PINB8/KOoCXEw9tsuv/jQjMeaHFvxdLNGg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.5", - "@smithy/types": "^4.9.0", + "@smithy/service-error-classification": "^4.2.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5538,15 +5526,15 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", - "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", + "version": "4.5.8", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.8.tgz", + "integrity": "sha512-ZnnBhTapjM0YPGUSmOs0Mcg/Gg87k503qG4zU2v/+Js2Gu+daKOJMeqcQns8ajepY8tgzzfYxl6kQyZKml6O2w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/types": "^4.9.0", + "@smithy/fetch-http-handler": "^5.3.8", + "@smithy/node-http-handler": "^4.4.7", + "@smithy/types": "^4.11.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", @@ -5585,14 +5573,14 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", - "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.7.tgz", + "integrity": "sha512-vHJFXi9b7kUEpHWUCY3Twl+9NPOZvQ0SAi+Ewtn48mbiJk4JY9MZmKQjGB4SCvVb9WPiSphZJYY6RIbs+grrzw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.5", - "@smithy/types": "^4.9.0", + "@smithy/abort-controller": "^4.2.7", + "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "engines": { @@ -5643,14 +5631,14 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz", - "integrity": "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.50.0.tgz", + "integrity": "sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4" + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5661,9 +5649,9 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", - "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", + "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", "dev": true, "license": "MIT", "engines": { @@ -5675,21 +5663,20 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz", - "integrity": "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz", + "integrity": "sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.46.4", - "@typescript-eslint/tsconfig-utils": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", + "@typescript-eslint/project-service": "8.50.0", + "@typescript-eslint/tsconfig-utils": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", + "tinyglobby": "^0.2.15", "ts-api-utils": "^2.1.0" }, "engines": { @@ -5704,16 +5691,16 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.4.tgz", - "integrity": "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.50.0.tgz", + "integrity": "sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4" + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5728,13 +5715,13 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz", - "integrity": "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz", + "integrity": "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/types": "8.50.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -5789,15 +5776,6 @@ "node": ">=14.16" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", @@ -6097,9 +6075,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==", "license": "MIT" }, "node_modules/@types/markdown-it": { @@ -6323,9 +6301,9 @@ "license": "MIT" }, "node_modules/@types/yargs": { - "version": "17.0.34", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.34.tgz", - "integrity": "sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { @@ -6404,14 +6382,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.4.tgz", - "integrity": "sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.50.0.tgz", + "integrity": "sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.4", - "@typescript-eslint/types": "^8.46.4", + "@typescript-eslint/tsconfig-utils": "^8.50.0", + "@typescript-eslint/types": "^8.50.0", "debug": "^4.3.4" }, "engines": { @@ -6426,9 +6404,9 @@ } }, "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", - "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", + "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", "dev": true, "license": "MIT", "engines": { @@ -6458,9 +6436,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.4.tgz", - "integrity": "sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.50.0.tgz", + "integrity": "sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==", "dev": true, "license": "MIT", "engines": { @@ -6934,13 +6912,6 @@ "node": ">=8" } }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "license": "BSD-3-Clause" - }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -6958,6 +6929,7 @@ "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -6966,16 +6938,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -6990,6 +6952,7 @@ "version": "8.3.4", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, "license": "MIT", "dependencies": { "acorn": "^8.11.0" @@ -7007,18 +6970,6 @@ "node": ">=12.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -7274,15 +7225,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-flat-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-flat-polyfill/-/array-flat-polyfill-1.0.1.tgz", - "integrity": "sha512-hfJmKupmQN0lwi0xG6FQ5U8Rd97RnIERplymOv/qpq8AoNKPPAnxJadjFA23FNWm88wykh9HmpLJUUwUtNU/iw==", - "license": "CC0-1.0", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -7663,9 +7605,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.27", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.27.tgz", - "integrity": "sha512-2CXFpkjVnY2FT+B6GrSYxzYf65BJWEqz5tIRHCvNsZZ2F3CmsCB37h8SpYgKG7y9C4YAeTipIPWG7EmFmhAeXA==", + "version": "2.9.11", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", + "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7734,12 +7676,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/block-elements": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/block-elements/-/block-elements-1.2.0.tgz", - "integrity": "sha512-4E+pnt4v8HSEEH3Dwe2Bcu8TIbdReez7b5Qjs11dJIdbGFaNSobDgphWxy9NtjYB9ZsZd7DzByDbeXy4DvYz5Q==", - "license": "MIT" - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -7747,23 +7683,23 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -7785,25 +7721,10 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/bowser": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", - "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.13.1.tgz", + "integrity": "sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==", "dev": true, "license": "MIT" }, @@ -7846,9 +7767,9 @@ "license": "ISC" }, "node_modules/browserslist": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", - "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -7866,11 +7787,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.8.25", - "caniuse-lite": "^1.0.30001754", - "electron-to-chromium": "^1.5.249", + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", - "update-browserslist-db": "^1.1.4" + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -8150,9 +8071,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001754", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", - "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", + "version": "1.0.30001761", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz", + "integrity": "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==", "dev": true, "funding": [ { @@ -8572,16 +8493,6 @@ "node": ">=0.10.0" } }, - "node_modules/collapse-whitespace": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/collapse-whitespace/-/collapse-whitespace-1.1.7.tgz", - "integrity": "sha512-24up1hbQSsnaDSGHPOvGQT84vmxvG0QUrI8tguiQpo9I5irrnypCKwddXindXMyXhoTe+9V6LYj3aFIhTQ4UCg==", - "license": "MIT", - "dependencies": { - "block-elements": "^1.0.0", - "void-elements": "^2.0.1" - } - }, "node_modules/collect-all": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz", @@ -8604,13 +8515,13 @@ "license": "MIT" }, "node_modules/color": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/color/-/color-5.0.2.tgz", - "integrity": "sha512-e2hz5BzbUPcYlIRHo8ieAhYgoajrJr+hWoceg6E345TPsATMUKqDgzt8fSXZJJbxfpiPzkWyphz8yn8At7q3fA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", + "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", "license": "MIT", "dependencies": { - "color-convert": "^3.0.1", - "color-string": "^2.0.0" + "color-convert": "^3.1.3", + "color-string": "^2.1.3" }, "engines": { "node": ">=18" @@ -8635,9 +8546,9 @@ "license": "MIT" }, "node_modules/color-string": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.2.tgz", - "integrity": "sha512-RxmjYxbWemV9gKu4zPgiZagUxbH3RQpEIO77XoSSX0ivgABDZ+h8Zuash/EMFLTI4N9QgFPOJ6JQpPZKFxa+dA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", "license": "MIT", "dependencies": { "color-name": "^2.0.0" @@ -8656,9 +8567,9 @@ } }, "node_modules/color/node_modules/color-convert": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.2.tgz", - "integrity": "sha512-UNqkvCDXstVck3kdowtOTWROIJQwafjOfXSmddoDrXo4cewMKmusCeF22Q24zvjR8nwWib/3S/dfyzPItPEiJg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", + "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", "license": "MIT", "dependencies": { "color-name": "^2.0.0" @@ -8943,9 +8854,9 @@ } }, "node_modules/contentstack": { - "version": "3.26.2", - "resolved": "https://registry.npmjs.org/contentstack/-/contentstack-3.26.2.tgz", - "integrity": "sha512-q6JVBxAcQRuvpwzrT3XbsuCei/AKZXD4nK4fuc1AYg6PE6Rjnq1v5S5PjSFVCk7N4JCct7OQDQs0xmOSXyRyyQ==", + "version": "3.26.3", + "resolved": "https://registry.npmjs.org/contentstack/-/contentstack-3.26.3.tgz", + "integrity": "sha512-mN1/Z8YV1HoIw03oEgnoHlaX/ueOLZH4unbf3zJt6uOJSO51gDFfOQEnKsTfUfWkyks9xUmED3WzPMxpnxdqcQ==", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.4.1", @@ -8965,28 +8876,28 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "license": "MIT" }, "node_modules/core-js-compat": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", - "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.26.3" + "browserslist": "^4.28.0" }, "funding": { "type": "opencollective", @@ -9081,30 +8992,6 @@ "node": ">=8" } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "license": "MIT" - }, "node_modules/csv": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz", @@ -9146,20 +9033,6 @@ "node": ">=0.4.0" } }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -9258,12 +9131,6 @@ "node": ">=0.10.0" } }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "license": "MIT" - }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -9294,9 +9161,9 @@ } }, "node_modules/dedent": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", - "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -9549,19 +9416,6 @@ "node": ">=6.0.0" } }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", @@ -9652,9 +9506,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.250", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz", - "integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==", + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", "dev": true, "license": "ISC" }, @@ -9712,9 +9566,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -9772,9 +9626,9 @@ } }, "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.2", @@ -9927,9 +9781,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -9940,32 +9794,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" } }, "node_modules/escalade": { @@ -9995,27 +9849,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, "node_modules/eslint": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", @@ -10090,14 +9923,14 @@ } }, "node_modules/eslint-config-oclif": { - "version": "6.0.116", - "resolved": "https://registry.npmjs.org/eslint-config-oclif/-/eslint-config-oclif-6.0.116.tgz", - "integrity": "sha512-h1iKXrrOZFuGy7huGJ6u/rQNg8lVPVk7jNMqWR2ykla4/4IpXgjCtfXCoyv5vX9W3ufr0+acIV+e3D8Lau8eFg==", + "version": "6.0.127", + "resolved": "https://registry.npmjs.org/eslint-config-oclif/-/eslint-config-oclif-6.0.127.tgz", + "integrity": "sha512-ObIh5+hteGpRVXQCWl8AqjTVNrdKdFmBP3fSlcn06ScxLdsIZWAXznLvA5U3/F8WlCSSjwMHyfugu1JL2NViPw==", "dev": true, "license": "MIT", "dependencies": { "@eslint/compat": "^1.4.1", - "@eslint/eslintrc": "^3.3.1", + "@eslint/eslintrc": "^3.3.3", "@eslint/js": "^9.38.0", "@stylistic/eslint-plugin": "^3.1.0", "@typescript-eslint/eslint-plugin": "^8", @@ -10112,7 +9945,7 @@ "eslint-plugin-n": "^17.22.0", "eslint-plugin-perfectionist": "^4", "eslint-plugin-unicorn": "^56.0.1", - "typescript-eslint": "^8.46.3" + "typescript-eslint": "^8.50.0" }, "engines": { "node": ">=18.18.0" @@ -10506,9 +10339,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10518,7 +10351,7 @@ "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, @@ -10530,9 +10363,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/@eslint/js": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", - "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "dev": true, "license": "MIT", "engines": { @@ -10543,18 +10376,17 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.4.tgz", - "integrity": "sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.50.0.tgz", + "integrity": "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/type-utils": "8.46.4", - "@typescript-eslint/utils": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", - "graphemer": "^1.4.0", + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/type-utils": "8.50.0", + "@typescript-eslint/utils": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" @@ -10567,7 +10399,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.46.4", + "@typescript-eslint/parser": "^8.50.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -10583,16 +10415,16 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/parser": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.4.tgz", - "integrity": "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.50.0.tgz", + "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", "debug": "^4.3.4" }, "engines": { @@ -10608,14 +10440,14 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz", - "integrity": "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.50.0.tgz", + "integrity": "sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4" + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10626,15 +10458,15 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/type-utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.4.tgz", - "integrity": "sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.50.0.tgz", + "integrity": "sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4", - "@typescript-eslint/utils": "8.46.4", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0", + "@typescript-eslint/utils": "8.50.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -10651,9 +10483,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/types": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", - "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", + "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", "dev": true, "license": "MIT", "engines": { @@ -10665,21 +10497,20 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz", - "integrity": "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz", + "integrity": "sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.46.4", - "@typescript-eslint/tsconfig-utils": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", + "@typescript-eslint/project-service": "8.50.0", + "@typescript-eslint/tsconfig-utils": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", + "tinyglobby": "^0.2.15", "ts-api-utils": "^2.1.0" }, "engines": { @@ -10710,16 +10541,16 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.4.tgz", - "integrity": "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.50.0.tgz", + "integrity": "sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4" + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10734,13 +10565,13 @@ } }, "node_modules/eslint-config-oclif/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz", - "integrity": "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz", + "integrity": "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/types": "8.50.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -10785,9 +10616,9 @@ } }, "node_modules/eslint-config-oclif/node_modules/eslint": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", - "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", "peer": true, @@ -10798,7 +10629,7 @@ "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.1", + "@eslint/js": "9.39.2", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -10944,14 +10775,14 @@ } }, "node_modules/eslint-config-oclif/node_modules/eslint-config-xo/node_modules/@stylistic/eslint-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.5.0.tgz", - "integrity": "sha512-IeZF+8H0ns6prg4VrkhgL+yrvDXWDH2cKchrbh80ejG9dQgZWp10epHMbgRuQvgchLII/lfh6Xn3lu6+6L86Hw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.6.1.tgz", + "integrity": "sha512-JCs+MqoXfXrRPGbGmho/zGS/jMcn3ieKl/A8YImqib76C8kjgZwq5uUFzc30lJkMvcchuRn6/v8IApLxli3Jyw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.0", - "@typescript-eslint/types": "^8.46.1", + "@typescript-eslint/types": "^8.47.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "estraverse": "^5.3.0", @@ -11514,14 +11345,14 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz", - "integrity": "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.50.0.tgz", + "integrity": "sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4" + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11532,9 +11363,9 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/types": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", - "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", + "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", "dev": true, "license": "MIT", "engines": { @@ -11546,21 +11377,20 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz", - "integrity": "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz", + "integrity": "sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.46.4", - "@typescript-eslint/tsconfig-utils": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", + "@typescript-eslint/project-service": "8.50.0", + "@typescript-eslint/tsconfig-utils": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", + "tinyglobby": "^0.2.15", "ts-api-utils": "^2.1.0" }, "engines": { @@ -11575,16 +11405,16 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.4.tgz", - "integrity": "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.50.0.tgz", + "integrity": "sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4" + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11599,13 +11429,13 @@ } }, "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz", - "integrity": "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz", + "integrity": "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/types": "8.50.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -11868,6 +11698,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -11883,6 +11714,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -11961,39 +11793,39 @@ } }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -12021,21 +11853,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/express/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -12350,17 +12167,17 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -12692,9 +12509,9 @@ "license": "MIT" }, "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -13405,18 +13222,6 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -13464,33 +13269,23 @@ } }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" - } - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http2-wrapper": { @@ -13507,19 +13302,6 @@ "node": ">=10.19.0" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -13587,16 +13369,6 @@ "node": ">= 4" } }, - "node_modules/immer": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.2.0.tgz", - "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -14262,9 +14034,9 @@ } }, "node_modules/inquirer/node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", "license": "MIT", "optional": true, "peer": true, @@ -14279,9 +14051,9 @@ "license": "MIT" }, "node_modules/inquirer/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz", + "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -14848,21 +14620,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "license": "MIT" - }, "node_modules/is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -16404,51 +16161,6 @@ "node": ">=8" } }, - "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -16548,15 +16260,6 @@ ], "license": "MIT" }, - "node_modules/jsonschema": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz", - "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -16583,6 +16286,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true, "license": "MIT" }, "node_modules/keyv": { @@ -17011,24 +16715,12 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "license": "MIT" - }, "node_modules/lodash.escaperegexp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", "license": "MIT" }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "license": "MIT" - }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", @@ -17048,12 +16740,6 @@ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "license": "MIT" }, - "node_modules/lodash.isempty": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", - "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==", - "license": "MIT" - }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -17073,30 +16759,12 @@ "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==", "license": "MIT" }, - "node_modules/lodash.isobject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" - }, "node_modules/lodash.isundefined": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==", "license": "MIT" }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "license": "MIT" - }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -17974,6 +17642,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", @@ -17987,6 +17656,7 @@ "version": "13.0.5", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1" @@ -17996,6 +17666,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -18047,28 +17718,6 @@ } } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -20665,12 +20314,6 @@ "node": ">=0.10.0" } }, - "node_modules/nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", - "license": "MIT" - }, "node_modules/nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -21075,21 +20718,21 @@ } }, "node_modules/oclif": { - "version": "4.22.44", - "resolved": "https://registry.npmjs.org/oclif/-/oclif-4.22.44.tgz", - "integrity": "sha512-/0xXjF/dt8qN8SuibVTVU/81gOy4nNprSXSFHVWvKm1Ms8EKsCA6C+4XRcRCCMaaE4t2GKjjRpEwqCQKFUtI/Q==", + "version": "4.22.59", + "resolved": "https://registry.npmjs.org/oclif/-/oclif-4.22.59.tgz", + "integrity": "sha512-Yq9R5mSSdDJAcCewEi+gipPNEvx0+0CyVmPAmamYRydc87I40o5YezVMWTjJ/0VzkdZZdmXl+EBlsXuNDqyhxg==", "dev": true, "license": "MIT", "dependencies": { - "@aws-sdk/client-cloudfront": "^3.927.0", - "@aws-sdk/client-s3": "^3.927.0", + "@aws-sdk/client-cloudfront": "^3.956.0", + "@aws-sdk/client-s3": "^3.956.0", "@inquirer/confirm": "^3.1.22", "@inquirer/input": "^2.2.4", "@inquirer/select": "^2.5.0", "@oclif/core": "^4.8.0", - "@oclif/plugin-help": "^6.2.34", - "@oclif/plugin-not-found": "^3.2.71", - "@oclif/plugin-warn-if-update-available": "^3.1.52", + "@oclif/plugin-help": "^6.2.36", + "@oclif/plugin-not-found": "^3.2.73", + "@oclif/plugin-warn-if-update-available": "^3.1.53", "ansis": "^3.16.0", "async-retry": "^1.3.3", "change-case": "^4", @@ -21148,18 +20791,6 @@ "node": ">= 4.0.0" } }, - "node_modules/omit-deep-lodash": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/omit-deep-lodash/-/omit-deep-lodash-1.1.7.tgz", - "integrity": "sha512-9m9gleSMoxq3YO8aCq5pGUrqG9rKF0w/P70JHQ1ymjUQA/3+fVa2Stju9XORJKLmyLYEO3zzX40MJYaYl5Og4w==", - "license": "MIT", - "dependencies": { - "lodash": "~4.17.21" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -21643,30 +21274,6 @@ "dev": true, "license": "MIT" }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -22039,9 +21646,9 @@ } }, "node_modules/pretty-format/node_modules/@types/yargs": { - "version": "15.0.19", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", - "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "version": "15.0.20", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.20.tgz", + "integrity": "sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==", "dev": true, "license": "MIT", "dependencies": { @@ -22272,18 +21879,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, "node_modules/pump": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", @@ -22299,6 +21894,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -22346,12 +21942,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -22413,15 +22003,15 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" @@ -22922,12 +22512,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "license": "ISC" }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "license": "MIT" - }, "node_modules/requizzle": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", @@ -23089,9 +22673,9 @@ } }, "node_modules/rewire/node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -23101,7 +22685,7 @@ "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, @@ -23113,9 +22697,9 @@ } }, "node_modules/rewire/node_modules/@eslint/js": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", - "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "dev": true, "license": "MIT", "engines": { @@ -23154,9 +22738,9 @@ } }, "node_modules/rewire/node_modules/eslint": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", - "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", "dependencies": { @@ -23166,7 +22750,7 @@ "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.1", + "@eslint/js": "9.39.2", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -23353,9 +22937,9 @@ } }, "node_modules/rimraf/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -23394,9 +22978,9 @@ } }, "node_modules/rollup": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", - "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz", + "integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -23409,28 +22993,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.53.2", - "@rollup/rollup-android-arm64": "4.53.2", - "@rollup/rollup-darwin-arm64": "4.53.2", - "@rollup/rollup-darwin-x64": "4.53.2", - "@rollup/rollup-freebsd-arm64": "4.53.2", - "@rollup/rollup-freebsd-x64": "4.53.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", - "@rollup/rollup-linux-arm-musleabihf": "4.53.2", - "@rollup/rollup-linux-arm64-gnu": "4.53.2", - "@rollup/rollup-linux-arm64-musl": "4.53.2", - "@rollup/rollup-linux-loong64-gnu": "4.53.2", - "@rollup/rollup-linux-ppc64-gnu": "4.53.2", - "@rollup/rollup-linux-riscv64-gnu": "4.53.2", - "@rollup/rollup-linux-riscv64-musl": "4.53.2", - "@rollup/rollup-linux-s390x-gnu": "4.53.2", - "@rollup/rollup-linux-x64-gnu": "4.53.2", - "@rollup/rollup-linux-x64-musl": "4.53.2", - "@rollup/rollup-openharmony-arm64": "4.53.2", - "@rollup/rollup-win32-arm64-msvc": "4.53.2", - "@rollup/rollup-win32-ia32-msvc": "4.53.2", - "@rollup/rollup-win32-x64-gnu": "4.53.2", - "@rollup/rollup-win32-x64-msvc": "4.53.2", + "@rollup/rollup-android-arm-eabi": "4.54.0", + "@rollup/rollup-android-arm64": "4.54.0", + "@rollup/rollup-darwin-arm64": "4.54.0", + "@rollup/rollup-darwin-x64": "4.54.0", + "@rollup/rollup-freebsd-arm64": "4.54.0", + "@rollup/rollup-freebsd-x64": "4.54.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.54.0", + "@rollup/rollup-linux-arm-musleabihf": "4.54.0", + "@rollup/rollup-linux-arm64-gnu": "4.54.0", + "@rollup/rollup-linux-arm64-musl": "4.54.0", + "@rollup/rollup-linux-loong64-gnu": "4.54.0", + "@rollup/rollup-linux-ppc64-gnu": "4.54.0", + "@rollup/rollup-linux-riscv64-gnu": "4.54.0", + "@rollup/rollup-linux-riscv64-musl": "4.54.0", + "@rollup/rollup-linux-s390x-gnu": "4.54.0", + "@rollup/rollup-linux-x64-gnu": "4.54.0", + "@rollup/rollup-linux-x64-musl": "4.54.0", + "@rollup/rollup-openharmony-arm64": "4.54.0", + "@rollup/rollup-win32-arm64-msvc": "4.54.0", + "@rollup/rollup-win32-ia32-msvc": "4.54.0", + "@rollup/rollup-win32-x64-gnu": "4.54.0", + "@rollup/rollup-win32-x64-msvc": "4.54.0", "fsevents": "~2.3.2" } }, @@ -23585,18 +23169,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -23610,24 +23182,24 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -23648,15 +23220,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/sentence-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", @@ -23680,15 +23243,15 @@ } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" @@ -24062,6 +23625,7 @@ "version": "19.0.5", "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.5.tgz", "integrity": "sha512-r15s9/s+ub/d4bxNXqIUmwp6imVSdTorIRaxoecYjqTVLZ8RuoXr/4EDGwIBo6Waxn7f2gnURX9zuhAfCwaF6Q==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", @@ -24080,6 +23644,7 @@ "version": "13.0.5", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1" @@ -24089,6 +23654,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -24098,6 +23664,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -24123,17 +23690,6 @@ "node": ">=8" } }, - "node_modules/slate": { - "version": "0.103.0", - "resolved": "https://registry.npmjs.org/slate/-/slate-0.103.0.tgz", - "integrity": "sha512-eCUOVqUpADYMZ59O37QQvUdnFG+8rin0OGQAXNHvHbQeVJ67Bu0spQbcy621vtf8GQUXTEQBlk6OP9atwwob4w==", - "license": "MIT", - "dependencies": { - "immer": "^10.0.3", - "is-plain-object": "^5.0.0", - "tiny-warning": "^1.0.3" - } - }, "node_modules/slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", @@ -24368,7 +23924,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -24579,9 +24135,9 @@ } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -24871,9 +24427,9 @@ } }, "node_modules/strnum": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", - "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", + "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", "dev": true, "funding": [ { @@ -24919,12 +24475,6 @@ "node": ">=0.10" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "license": "MIT" - }, "node_modules/table": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", @@ -25153,12 +24703,6 @@ "dev": true, "license": "MIT" }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "license": "MIT" - }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -25213,41 +24757,11 @@ "node": ">=0.6" } }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/traverse": { "version": "0.6.11", @@ -25324,9 +24838,9 @@ } }, "node_modules/ts-jest": { - "version": "29.4.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz", - "integrity": "sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==", + "version": "29.4.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz", + "integrity": "sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==", "dev": true, "license": "MIT", "dependencies": { @@ -25519,13 +25033,13 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.20.6", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", - "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "~0.25.0", + "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "bin": { @@ -25598,6 +25112,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -25754,16 +25269,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.4.tgz", - "integrity": "sha512-KALyxkpYV5Ix7UhvjTwJXZv76VWsHG+NjNlt/z+a17SOQSiOcBdUXdbJdyXi7RPxrBFECtFOiPwUJQusJuCqrg==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.50.0.tgz", + "integrity": "sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.46.4", - "@typescript-eslint/parser": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4", - "@typescript-eslint/utils": "8.46.4" + "@typescript-eslint/eslint-plugin": "8.50.0", + "@typescript-eslint/parser": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0", + "@typescript-eslint/utils": "8.50.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -25778,18 +25293,17 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.4.tgz", - "integrity": "sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.50.0.tgz", + "integrity": "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/type-utils": "8.46.4", - "@typescript-eslint/utils": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", - "graphemer": "^1.4.0", + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/type-utils": "8.50.0", + "@typescript-eslint/utils": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" @@ -25802,22 +25316,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.46.4", + "@typescript-eslint/parser": "^8.50.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.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.4.tgz", - "integrity": "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.50.0.tgz", + "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", "debug": "^4.3.4" }, "engines": { @@ -25833,14 +25347,14 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz", - "integrity": "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.50.0.tgz", + "integrity": "sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4" + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -25851,15 +25365,15 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.4.tgz", - "integrity": "sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.50.0.tgz", + "integrity": "sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4", - "@typescript-eslint/utils": "8.46.4", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0", + "@typescript-eslint/utils": "8.50.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -25876,9 +25390,9 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", - "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", + "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", "dev": true, "license": "MIT", "engines": { @@ -25890,21 +25404,20 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz", - "integrity": "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz", + "integrity": "sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.46.4", - "@typescript-eslint/tsconfig-utils": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", + "@typescript-eslint/project-service": "8.50.0", + "@typescript-eslint/tsconfig-utils": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", + "tinyglobby": "^0.2.15", "ts-api-utils": "^2.1.0" }, "engines": { @@ -25919,16 +25432,16 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.4.tgz", - "integrity": "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.50.0.tgz", + "integrity": "sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4" + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -25943,13 +25456,13 @@ } }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz", - "integrity": "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz", + "integrity": "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/types": "8.50.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -26109,9 +25622,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -26169,16 +25682,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -26289,27 +25792,6 @@ "node": ">= 0.8" } }, - "node_modules/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "license": "MIT", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/walk-back": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.1.tgz", @@ -26340,58 +25822,19 @@ } }, "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "license": "MIT", - "engines": { - "node": ">=12" - } + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/which": { @@ -26513,9 +25956,9 @@ } }, "node_modules/winston": { - "version": "3.18.3", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.18.3.tgz", - "integrity": "sha512-NoBZauFNNWENgsnC9YpgyYwOVrl2m58PpQ8lNHjV3kosGs7KJ7Npk9pCUE+WJlawVSe8mykWDKWFSVfs3QO9ww==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", + "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", "license": "MIT", "dependencies": { "@colors/colors": "^1.6.0", @@ -26650,27 +26093,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", @@ -26680,21 +26102,6 @@ "node": ">=8" } }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "license": "MIT" - }, "node_modules/xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", @@ -26894,13 +26301,12 @@ "@contentstack/cli-cm-export": "~2.0.0-beta.2", "@contentstack/cli-cm-export-to-csv": "~1.10.0", "@contentstack/cli-cm-import": "~2.0.0-beta.2", - "@contentstack/cli-cm-import-setup": "1.7.0", - "@contentstack/cli-cm-migrate-rte": "~1.6.2", + "@contentstack/cli-cm-import-setup": "~2.0.0-beta.1", "@contentstack/cli-cm-seed": "~2.0.0-beta.2", "@contentstack/cli-command": "~1.6.2", "@contentstack/cli-config": "~1.15.3", "@contentstack/cli-launch": "^1.9.2", - "@contentstack/cli-migration": "~1.8.2", + "@contentstack/cli-migration": "~2.0.0-beta", "@contentstack/cli-utilities": "~1.15.0", "@contentstack/cli-variants": "~2.0.0-beta.2", "@contentstack/management": "~1.22.0", @@ -27005,9 +26411,9 @@ "license": "MIT" }, "packages/contentstack-audit/node_modules/@types/node": { - "version": "20.19.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", - "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", + "version": "20.19.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz", + "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==", "dev": true, "license": "MIT", "dependencies": { @@ -27822,9 +27228,9 @@ } }, "packages/contentstack-dev-dependencies/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -28191,9 +27597,9 @@ } }, "packages/contentstack-export-to-csv/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -28370,7 +27776,7 @@ }, "packages/contentstack-import-setup": { "name": "@contentstack/cli-cm-import-setup", - "version": "1.7.0", + "version": "2.0.0-beta.1", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.6.1", @@ -28411,41 +27817,9 @@ "node": ">=14.0.0" } }, - "packages/contentstack-migrate-rte": { - "name": "@contentstack/cli-cm-migrate-rte", - "version": "1.6.2", - "license": "MIT", - "dependencies": { - "@contentstack/cli-command": "~1.6.1", - "@contentstack/cli-utilities": "~1.15.0", - "@contentstack/json-rte-serializer": "~2.1.0", - "@oclif/core": "^4.3.0", - "@oclif/plugin-help": "^6.2.28", - "chalk": "^4.1.2", - "collapse-whitespace": "^1.1.7", - "jsdom": "^20.0.3", - "jsonschema": "^1.5.0", - "lodash": "^4.17.21", - "nock": "^13.5.6", - "omit-deep-lodash": "^1.1.7", - "sinon": "^19.0.5" - }, - "devDependencies": { - "@oclif/test": "^4.1.13", - "chai": "^4.5.0", - "eslint": "^8.57.1", - "eslint-config-oclif": "^6.0.62", - "mocha": "^10.8.2", - "nyc": "^15.1.0", - "oclif": "^4.17.46" - }, - "engines": { - "node": ">=14.0.0" - } - }, "packages/contentstack-migration": { "name": "@contentstack/cli-migration", - "version": "1.8.2", + "version": "2.0.0-beta", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.6.1", @@ -28711,9 +28085,9 @@ } }, "packages/contentstack-variants/node_modules/@types/node": { - "version": "20.19.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", - "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", + "version": "20.19.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz", + "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==", "dev": true, "license": "MIT", "dependencies": { diff --git a/packages/contentstack-import-setup/package.json b/packages/contentstack-import-setup/package.json index fa80aab692..d2b13452c8 100644 --- a/packages/contentstack-import-setup/package.json +++ b/packages/contentstack-import-setup/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-import-setup", "description": "Contentstack CLI plugin to setup the mappers and configurations for the import command", - "version": "1.7.0", + "version": "2.0.0-beta.1", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { diff --git a/packages/contentstack-import-setup/src/commands/cm/stacks/import-setup.ts b/packages/contentstack-import-setup/src/commands/cm/stacks/import-setup.ts index 00b6b3e471..af1e0dd937 100644 --- a/packages/contentstack-import-setup/src/commands/cm/stacks/import-setup.ts +++ b/packages/contentstack-import-setup/src/commands/cm/stacks/import-setup.ts @@ -9,6 +9,8 @@ import { ContentstackClient, pathValidator, formatError, + CLIProgressManager, + configHandler, } from '@contentstack/cli-utilities'; import { ImportConfig } from '../../../types'; @@ -71,9 +73,27 @@ export default class ImportSetupCommand extends Command { importSetupConfig.host = this.cmaHost; importSetupConfig.region = this.region; importSetupConfig.developerHubBaseUrl = this.developerHubUrl; + + // Prepare the context object + const context = this.createImportContext(importSetupConfig.apiKey, importSetupConfig.authenticationMethod); + importSetupConfig.context = { ...context }; + + if (flags.branch) { + CLIProgressManager.initializeGlobalSummary( + `IMPORT-SETUP-${flags.branch}`, + flags.branch, + `Setting up import for "${flags.branch}" branch...`, + ); + } else { + CLIProgressManager.initializeGlobalSummary(`IMPORT-SETUP`, flags.branch, 'Setting up import...'); + } + const managementAPIClient: ContentstackClient = await managementSDKClient(importSetupConfig); const importSetup = new ImportSetup(importSetupConfig, managementAPIClient); await importSetup.start(); + + CLIProgressManager.printGlobalSummary(); + log( importSetupConfig, `Backup folder and mapper files have been successfully created for the stack using the API key ${importSetupConfig.apiKey}.`, @@ -85,6 +105,7 @@ export default class ImportSetupCommand extends Command { 'success', ); } catch (error) { + CLIProgressManager.printGlobalSummary(); log( { data: '' } as ImportConfig, `Failed to create the backup folder and mapper files: ${formatError(error)}`, @@ -92,4 +113,16 @@ export default class ImportSetupCommand extends Command { ); } } + + private createImportContext(apiKey: string, authenticationMethod?: string): any { + return { + command: this.context?.info?.command || 'cm:stacks:import-setup', + module: '', + userId: configHandler.get('userUid') || '', + sessionId: this.context?.sessionId, + apiKey: apiKey || '', + orgId: configHandler.get('oauthOrgUid') || '', + authenticationMethod: authenticationMethod || 'Basic Auth', + }; + } } diff --git a/packages/contentstack-import-setup/src/import/modules/assets.ts b/packages/contentstack-import-setup/src/import/modules/assets.ts index e27081a1ae..70e3220304 100644 --- a/packages/contentstack-import-setup/src/import/modules/assets.ts +++ b/packages/contentstack-import-setup/src/import/modules/assets.ts @@ -5,6 +5,7 @@ import { AssetRecord, ImportConfig, ModuleClassParams } from '../../types'; import { isEmpty, orderBy, values } from 'lodash'; import { formatError, FsUtility, sanitizePath } from '@contentstack/cli-utilities'; import BaseImportSetup from './base-setup'; +import { MODULE_NAMES, MODULE_CONTEXTS, PROCESS_NAMES, PROCESS_STATUS } from '../../utils'; export default class AssetImportSetup extends BaseImportSetup { private assetsFilePath: string; @@ -20,6 +21,7 @@ export default class AssetImportSetup extends BaseImportSetup { constructor({ config, stackAPIClient, dependencies }: ModuleClassParams) { super({ config, stackAPIClient, dependencies }); + this.currentModuleName = MODULE_NAMES[MODULE_CONTEXTS.ASSETS]; this.assetsFolderPath = join(sanitizePath(this.config.contentDir), 'assets'); this.assetsFilePath = join(sanitizePath(this.config.contentDir), 'assets', 'assets.json'); this.assetsConfig = config.modules.assets; @@ -39,10 +41,51 @@ export default class AssetImportSetup extends BaseImportSetup { */ async start() { try { + const progress = this.createNestedProgress(this.currentModuleName); + + // Analyze to get chunk count + const indexerCount = await this.withLoadingSpinner('ASSETS: Analyzing import data...', async () => { + const basePath = this.assetsFolderPath; + const fs = new FsUtility({ basePath, indexFileName: 'assets.json' }); + const indexer = fs.indexFileContent; + return values(indexer).length; + }); + + if (indexerCount === 0) { + log(this.config, 'No assets found in the content folder.', 'info'); + return; + } + + // Add processes - use a large number for total assets since we don't know exact count + // The progress will update as we process each asset + progress.addProcess(PROCESS_NAMES.ASSETS_MAPPER_GENERATION, 1); + progress.addProcess(PROCESS_NAMES.ASSETS_FETCH_AND_MAP, indexerCount * 10); // Estimate: ~10 assets per chunk + + // Create mapper directory + progress + .startProcess(PROCESS_NAMES.ASSETS_MAPPER_GENERATION) + .updateStatus( + PROCESS_STATUS.ASSETS_MAPPER_GENERATION.GENERATING, + PROCESS_NAMES.ASSETS_MAPPER_GENERATION, + ); fsUtil.makeDirectory(this.mapperDirPath); + this.progressManager?.tick(true, 'mapper directory created', null, PROCESS_NAMES.ASSETS_MAPPER_GENERATION); + progress.completeProcess(PROCESS_NAMES.ASSETS_MAPPER_GENERATION, true); + + // Fetch and map assets + progress + .startProcess(PROCESS_NAMES.ASSETS_FETCH_AND_MAP) + .updateStatus( + PROCESS_STATUS.ASSETS_FETCH_AND_MAP.FETCHING, + PROCESS_NAMES.ASSETS_FETCH_AND_MAP, + ); await this.fetchAndMapAssets(); + progress.completeProcess(PROCESS_NAMES.ASSETS_FETCH_AND_MAP, true); + + this.completeProgress(true); log(this.config, `The required setup files for the asset have been generated successfully.`, 'success'); } catch (error) { + this.completeProgress(false, error?.message || 'Assets mapper generation failed'); log(this.config, `Error occurred while generating the asset mapper: ${formatError(error)}.`, 'error'); } } @@ -67,17 +110,21 @@ export default class AssetImportSetup extends BaseImportSetup { if (items.length === 1) { this.assetUidMapper[uid] = items[0].uid; this.assetUrlMapper[url] = items[0].url; + this.progressManager?.tick(true, `asset: ${title}`, null, PROCESS_NAMES.ASSETS_FETCH_AND_MAP); log(this.config, `Mapped asset successfully: '${title}'`, 'info'); } else if (items.length > 1) { this.duplicateAssets[uid] = items.map((asset: any) => { return { uid: asset.uid, title: asset.title, url: asset.url }; }); + this.progressManager?.tick(true, `asset: ${title} (duplicate)`, null, PROCESS_NAMES.ASSETS_FETCH_AND_MAP); log(this.config, `Multiple assets found with the title '${title}'.`, 'info'); } else { + this.progressManager?.tick(false, `asset: ${title}`, 'Not found in stack', PROCESS_NAMES.ASSETS_FETCH_AND_MAP); log(this.config, `Asset with title '${title}' not found in the stack!`, 'info'); } }; const onReject = ({ error, apiData: { title } = undefined }: any) => { + this.progressManager?.tick(false, `asset: ${title}`, formatError(error), PROCESS_NAMES.ASSETS_FETCH_AND_MAP); log(this.config, `Failed to map the asset '${title}'.`, 'error'); log(this.config, formatError(error), 'error'); }; diff --git a/packages/contentstack-import-setup/src/import/modules/base-setup.ts b/packages/contentstack-import-setup/src/import/modules/base-setup.ts index 5385a0ea49..69bea1cde1 100644 --- a/packages/contentstack-import-setup/src/import/modules/base-setup.ts +++ b/packages/contentstack-import-setup/src/import/modules/base-setup.ts @@ -1,11 +1,14 @@ import { log, fsUtil } from '../../utils'; import { ApiOptions, CustomPromiseHandler, EnvType, ImportConfig, ModuleClassParams } from '../../types'; import { chunk, entries, isEmpty, isEqual, last } from 'lodash'; +import { CLIProgressManager, configHandler } from '@contentstack/cli-utilities'; export default class BaseImportSetup { public config: ImportConfig; public stackAPIClient: ModuleClassParams['stackAPIClient']; public dependencies: ModuleClassParams['dependencies']; + protected progressManager: CLIProgressManager | null = null; + protected currentModuleName: string = ''; constructor({ config, stackAPIClient, dependencies }: ModuleClassParams) { this.config = config; @@ -205,4 +208,48 @@ export default class BaseImportSetup { return Promise.resolve(); } } + + /** + * Create simple progress manager + */ + protected createSimpleProgress(moduleName: string, total?: number): CLIProgressManager { + this.currentModuleName = moduleName; + const logConfig = configHandler.get('log') || {}; + const showConsoleLogs = logConfig.showConsoleLogs ?? false; + this.progressManager = CLIProgressManager.createSimple(moduleName, total, showConsoleLogs); + return this.progressManager; + } + + /** + * Create nested progress manager + */ + protected createNestedProgress(moduleName: string): CLIProgressManager { + this.currentModuleName = moduleName; + const logConfig = configHandler.get('log') || {}; + const showConsoleLogs = logConfig.showConsoleLogs ?? false; + this.progressManager = CLIProgressManager.createNested(moduleName, showConsoleLogs); + return this.progressManager; + } + + /** + * Complete progress manager + */ + protected completeProgress(success: boolean = true, error?: string): void { + this.progressManager?.complete(success, error); + this.progressManager = null; + } + + /** + * Show a loading spinner before initializing progress + */ + protected async withLoadingSpinner(message: string, action: () => Promise): Promise { + const logConfig = configHandler.get('log') || {}; + const showConsoleLogs = logConfig.showConsoleLogs ?? false; + + if (showConsoleLogs) { + // If console logs are enabled, don't show spinner, just execute the action + return await action(); + } + return await CLIProgressManager.withLoadingSpinner(message, action); + } } diff --git a/packages/contentstack-import-setup/src/import/modules/content-types.ts b/packages/contentstack-import-setup/src/import/modules/content-types.ts index 476615481c..c06036a33c 100644 --- a/packages/contentstack-import-setup/src/import/modules/content-types.ts +++ b/packages/contentstack-import-setup/src/import/modules/content-types.ts @@ -4,17 +4,52 @@ import { join } from 'path'; import { ImportConfig, ModuleClassParams } from '../../types'; import ExtensionImportSetup from './extensions'; import BaseImportSetup from './base-setup'; +import { MODULE_NAMES, MODULE_CONTEXTS, PROCESS_NAMES, PROCESS_STATUS } from '../../utils'; export default class ContentTypesImportSetup extends BaseImportSetup { constructor(options: ModuleClassParams) { super(options); + this.currentModuleName = MODULE_NAMES[MODULE_CONTEXTS.CONTENT_TYPES]; } async start() { try { - await this.setupDependencies(); + const progress = this.createNestedProgress(this.currentModuleName); + + // Add processes + progress.addProcess(PROCESS_NAMES.CONTENT_TYPES_DEPENDENCY_SETUP, this.dependencies?.length || 0); + progress.addProcess(PROCESS_NAMES.CONTENT_TYPES_MAPPER_GENERATION, 1); + + // Setup dependencies + if (this.dependencies && this.dependencies.length > 0) { + progress + .startProcess(PROCESS_NAMES.CONTENT_TYPES_DEPENDENCY_SETUP) + .updateStatus( + PROCESS_STATUS.CONTENT_TYPES_DEPENDENCY_SETUP.SETTING_UP, + PROCESS_NAMES.CONTENT_TYPES_DEPENDENCY_SETUP, + ); + + await this.setupDependencies(); + + this.progressManager?.tick(true, 'dependencies setup', null, PROCESS_NAMES.CONTENT_TYPES_DEPENDENCY_SETUP); + progress.completeProcess(PROCESS_NAMES.CONTENT_TYPES_DEPENDENCY_SETUP, true); + } + + // Mapper generation + progress + .startProcess(PROCESS_NAMES.CONTENT_TYPES_MAPPER_GENERATION) + .updateStatus( + PROCESS_STATUS.CONTENT_TYPES_MAPPER_GENERATION.GENERATING, + PROCESS_NAMES.CONTENT_TYPES_MAPPER_GENERATION, + ); + + this.progressManager?.tick(true, 'mapper generation', null, PROCESS_NAMES.CONTENT_TYPES_MAPPER_GENERATION); + progress.completeProcess(PROCESS_NAMES.CONTENT_TYPES_MAPPER_GENERATION, true); + + this.completeProgress(true); log(this.config, `The required setup files for content types have been generated successfully.`, 'success'); } catch (error) { + this.completeProgress(false, error?.message || 'Content types mapper generation failed'); log(this.config, `Error occurred while generating the content type mapper: ${error.message}.`, 'error'); } } diff --git a/packages/contentstack-import-setup/src/import/modules/entries.ts b/packages/contentstack-import-setup/src/import/modules/entries.ts index 93cde3ace8..412a5e6a76 100644 --- a/packages/contentstack-import-setup/src/import/modules/entries.ts +++ b/packages/contentstack-import-setup/src/import/modules/entries.ts @@ -1,17 +1,27 @@ import { log } from '../../utils'; import { ModuleClassParams } from '../../types'; import BaseImportSetup from './base-setup'; +import { MODULE_NAMES, MODULE_CONTEXTS, PROCESS_NAMES, PROCESS_STATUS } from '../../utils'; export default class EntriesImportSetup extends BaseImportSetup { constructor(options: ModuleClassParams) { super(options); + this.currentModuleName = MODULE_NAMES[MODULE_CONTEXTS.ENTRIES]; } async start() { try { + const progress = this.createSimpleProgress(this.currentModuleName, 1); + + progress.updateStatus('Setting up dependencies...'); await this.setupDependencies(); + + this.progressManager?.tick(true, 'entries mapper setup', null); + this.completeProgress(true); + log(this.config, `The required setup files for entries have been generated successfully.`, 'success'); } catch (error) { + this.completeProgress(false, error?.message || 'Entries mapper generation failed'); log(this.config, `Error occurred while generating the entry mapper: ${error.message}.`, 'error'); } } diff --git a/packages/contentstack-import-setup/src/import/modules/extensions.ts b/packages/contentstack-import-setup/src/import/modules/extensions.ts index f6794bd70e..31e108d7f4 100644 --- a/packages/contentstack-import-setup/src/import/modules/extensions.ts +++ b/packages/contentstack-import-setup/src/import/modules/extensions.ts @@ -4,21 +4,19 @@ import { join } from 'path'; import { ImportConfig, ModuleClassParams } from '../../types'; import { isEmpty } from 'lodash'; import { formatError, sanitizePath } from '@contentstack/cli-utilities'; +import BaseImportSetup from './base-setup'; +import { MODULE_NAMES, MODULE_CONTEXTS, PROCESS_NAMES, PROCESS_STATUS } from '../../utils'; -export default class ExtensionImportSetup { - private config: ImportConfig; +export default class ExtensionImportSetup extends BaseImportSetup { private extensionsFilePath: string; private extensionMapper: Record; - private stackAPIClient: ModuleClassParams['stackAPIClient']; - private dependencies: ModuleClassParams['dependencies']; private extensionsConfig: ImportConfig['modules']['extensions']; - private mapperDirPath: string; private extensionsFolderPath: string; private extUidMapperPath: string; constructor({ config, stackAPIClient }: ModuleClassParams) { - this.config = config; - this.stackAPIClient = stackAPIClient; + super({ config, stackAPIClient, dependencies: [] }); + this.currentModuleName = MODULE_NAMES[MODULE_CONTEXTS.EXTENSIONS]; this.extensionsFilePath = join(sanitizePath(this.config.contentDir), 'extensions', 'extensions.json'); this.extensionsConfig = config.modules.extensions; this.extUidMapperPath = join(sanitizePath(this.config.backupDir), 'mapper', 'extensions', 'uid-mapping.json'); @@ -32,28 +30,53 @@ export default class ExtensionImportSetup { */ async start() { try { - const extensions: any = await fsUtil.readFile(this.extensionsFilePath); + const extensions: any = await this.withLoadingSpinner('EXTENSIONS: Analyzing import data...', async () => { + return await fsUtil.readFile(this.extensionsFilePath); + }); + if (!isEmpty(extensions)) { - // 2. Create mapper directory + const extensionsArray = Object.values(extensions) as any[]; + const progress = this.createNestedProgress(this.currentModuleName); + + // Add process + progress.addProcess(PROCESS_NAMES.EXTENSIONS_MAPPER_GENERATION, extensionsArray.length); + + // Create mapper directory const mapperFilePath = join(sanitizePath(this.config.backupDir), 'mapper', 'extensions'); - fsUtil.makeDirectory(mapperFilePath); // Use fsUtil + fsUtil.makeDirectory(mapperFilePath); + + progress + .startProcess(PROCESS_NAMES.EXTENSIONS_MAPPER_GENERATION) + .updateStatus( + PROCESS_STATUS.EXTENSIONS_MAPPER_GENERATION.GENERATING, + PROCESS_NAMES.EXTENSIONS_MAPPER_GENERATION, + ); - for (const extension of Object.values(extensions) as any) { - const targetExtension: any = await this.getExtension(extension); - if (!targetExtension) { - log(this.config, `Extension with the title '${extension.title}' not found in the stack.`, 'info'); - continue; + for (const extension of extensionsArray) { + try { + const targetExtension: any = await this.getExtension(extension); + if (!targetExtension) { + log(this.config, `Extension with the title '${extension.title}' not found in the stack.`, 'info'); + this.progressManager?.tick(false, `extension: ${extension.title}`, 'Not found in stack', PROCESS_NAMES.EXTENSIONS_MAPPER_GENERATION); + continue; + } + this.extensionMapper[extension.uid] = targetExtension.uid; + this.progressManager?.tick(true, `extension: ${extension.title}`, null, PROCESS_NAMES.EXTENSIONS_MAPPER_GENERATION); + } catch (error) { + this.progressManager?.tick(false, `extension: ${extension.title}`, formatError(error), PROCESS_NAMES.EXTENSIONS_MAPPER_GENERATION); } - this.extensionMapper[extension.uid] = targetExtension.uid; } await fsUtil.writeFile(this.extUidMapperPath, this.extensionMapper); + progress.completeProcess(PROCESS_NAMES.EXTENSIONS_MAPPER_GENERATION, true); + this.completeProgress(true); log(this.config, `The required setup files for extensions have been generated successfully.`, 'success'); } else { log(this.config, 'No extensions found in the content folder.', 'info'); } } catch (error) { + this.completeProgress(false, error?.message || 'Extensions mapper generation failed'); log(this.config, `Error occurred while generating the extension mapper: ${formatError(error)}.`, 'error'); } } diff --git a/packages/contentstack-import-setup/src/import/modules/global-fields.ts b/packages/contentstack-import-setup/src/import/modules/global-fields.ts index 6c3e9cc68e..1ade770000 100644 --- a/packages/contentstack-import-setup/src/import/modules/global-fields.ts +++ b/packages/contentstack-import-setup/src/import/modules/global-fields.ts @@ -3,17 +3,52 @@ import { log, fsUtil } from '../../utils'; import { join } from 'path'; import { ImportConfig, ModuleClassParams } from '../../types'; import BaseImportSetup from './base-setup'; +import { MODULE_NAMES, MODULE_CONTEXTS, PROCESS_NAMES, PROCESS_STATUS } from '../../utils'; export default class GlobalFieldsImportSetup extends BaseImportSetup { constructor(options: ModuleClassParams) { super(options); + this.currentModuleName = MODULE_NAMES[MODULE_CONTEXTS.GLOBAL_FIELDS]; } async start() { try { - await this.setupDependencies(); + const progress = this.createNestedProgress(this.currentModuleName); + + // Add processes + progress.addProcess(PROCESS_NAMES.GLOBAL_FIELDS_DEPENDENCY_SETUP, this.dependencies?.length || 0); + progress.addProcess(PROCESS_NAMES.GLOBAL_FIELDS_MAPPER_GENERATION, 1); + + // Setup dependencies + if (this.dependencies && this.dependencies.length > 0) { + progress + .startProcess(PROCESS_NAMES.GLOBAL_FIELDS_DEPENDENCY_SETUP) + .updateStatus( + PROCESS_STATUS.GLOBAL_FIELDS_DEPENDENCY_SETUP.SETTING_UP, + PROCESS_NAMES.GLOBAL_FIELDS_DEPENDENCY_SETUP, + ); + + await this.setupDependencies(); + + this.progressManager?.tick(true, 'dependencies setup', null, PROCESS_NAMES.GLOBAL_FIELDS_DEPENDENCY_SETUP); + progress.completeProcess(PROCESS_NAMES.GLOBAL_FIELDS_DEPENDENCY_SETUP, true); + } + + // Mapper generation + progress + .startProcess(PROCESS_NAMES.GLOBAL_FIELDS_MAPPER_GENERATION) + .updateStatus( + PROCESS_STATUS.GLOBAL_FIELDS_MAPPER_GENERATION.GENERATING, + PROCESS_NAMES.GLOBAL_FIELDS_MAPPER_GENERATION, + ); + + this.progressManager?.tick(true, 'mapper generation', null, PROCESS_NAMES.GLOBAL_FIELDS_MAPPER_GENERATION); + progress.completeProcess(PROCESS_NAMES.GLOBAL_FIELDS_MAPPER_GENERATION, true); + + this.completeProgress(true); log(this.config, `The required setup files for global fields have been generated successfully.`, 'success'); } catch (error) { + this.completeProgress(false, error?.message || 'Global fields mapper generation failed'); log(this.config, `Error occurred while generating the global field mapper: ${error.message}.`, 'error'); } } diff --git a/packages/contentstack-import-setup/src/import/modules/marketplace-apps.ts b/packages/contentstack-import-setup/src/import/modules/marketplace-apps.ts index 4b379ddefa..7757a12acd 100644 --- a/packages/contentstack-import-setup/src/import/modules/marketplace-apps.ts +++ b/packages/contentstack-import-setup/src/import/modules/marketplace-apps.ts @@ -11,13 +11,12 @@ import { createDeveloperHubUrl, sanitizePath, } from '@contentstack/cli-utilities'; +import BaseImportSetup from './base-setup'; +import { MODULE_NAMES, MODULE_CONTEXTS, PROCESS_NAMES, PROCESS_STATUS } from '../../utils'; -export default class marketplaceAppImportSetup { - private config: ImportConfig; +export default class marketplaceAppImportSetup extends BaseImportSetup { private marketplaceAppsFilePath: string; private marketplaceAppMapper: any; - private stackAPIClient: ModuleClassParams['stackAPIClient']; - private dependencies: ModuleClassParams['dependencies']; private marketplaceAppsConfig: ImportConfig['modules']['marketplace-apps']; private mapperDirPath: string; private marketplaceAppsFolderPath: string; @@ -28,8 +27,8 @@ export default class marketplaceAppImportSetup { public appSdk: ContentstackMarketplaceClient; constructor({ config, stackAPIClient }: ModuleClassParams) { - this.config = config; - this.stackAPIClient = stackAPIClient; + super({ config, stackAPIClient, dependencies: [] }); + this.currentModuleName = MODULE_NAMES[MODULE_CONTEXTS.MARKETPLACE_APPS]; this.marketplaceAppsFilePath = join( sanitizePath(this.config.contentDir), 'marketplace_apps', @@ -47,22 +46,57 @@ export default class marketplaceAppImportSetup { */ async start() { try { - const sourceMarketplaceApps: any = await fsUtil.readFile(this.marketplaceAppsFilePath); + const sourceMarketplaceApps: any = await this.withLoadingSpinner('MARKETPLACE APPS: Analyzing import data...', async () => { + return await fsUtil.readFile(this.marketplaceAppsFilePath); + }); + if (!isEmpty(sourceMarketplaceApps)) { - fsUtil.makeDirectory(this.marketplaceAppsUidMapperPath); // Use fsUtil + const appsArray = Array.isArray(sourceMarketplaceApps) ? sourceMarketplaceApps : Object.values(sourceMarketplaceApps); + const progress = this.createNestedProgress(this.currentModuleName); + + // Add processes + progress.addProcess(PROCESS_NAMES.MARKETPLACE_APPS_MAPPER_GENERATION, 1); + progress.addProcess(PROCESS_NAMES.MARKETPLACE_APPS_FETCH, appsArray.length); + + // Create mapper directory + progress + .startProcess(PROCESS_NAMES.MARKETPLACE_APPS_MAPPER_GENERATION) + .updateStatus( + PROCESS_STATUS.MARKETPLACE_APPS_MAPPER_GENERATION.GENERATING, + PROCESS_NAMES.MARKETPLACE_APPS_MAPPER_GENERATION, + ); + fsUtil.makeDirectory(this.marketplaceAppsUidMapperPath); + this.progressManager?.tick(true, 'mapper directory created', null, PROCESS_NAMES.MARKETPLACE_APPS_MAPPER_GENERATION); + progress.completeProcess(PROCESS_NAMES.MARKETPLACE_APPS_MAPPER_GENERATION, true); + + // Fetch marketplace apps + progress + .startProcess(PROCESS_NAMES.MARKETPLACE_APPS_FETCH) + .updateStatus( + PROCESS_STATUS.MARKETPLACE_APPS_FETCH.FETCHING, + PROCESS_NAMES.MARKETPLACE_APPS_FETCH, + ); + this.developerHubBaseUrl = this.config.developerHubBaseUrl || (await createDeveloperHubUrl(this.config.host)); // NOTE init marketplace app sdk const host = this.developerHubBaseUrl.split('://').pop(); this.appSdk = await marketplaceSDKClient({ host }); const targetMarketplaceApps: any = await this.getMarketplaceApps(); + + this.progressManager?.tick(true, 'marketplace apps fetched', null, PROCESS_NAMES.MARKETPLACE_APPS_FETCH); + this.createMapper(sourceMarketplaceApps, targetMarketplaceApps); await fsUtil.writeFile(join(this.marketplaceAppsUidMapperPath, 'uid-mapping.json'), this.marketplaceAppMapper); + + progress.completeProcess(PROCESS_NAMES.MARKETPLACE_APPS_FETCH, true); + this.completeProgress(true); log(this.config, `The required setup files for Marketplace apps have been generated successfully.`, 'success'); } else { log(this.config, 'No Marketplace apps found in the content folder.', 'info'); } } catch (error) { + this.completeProgress(false, error?.message || 'Marketplace apps mapper generation failed'); log(this.config, `Error occurred while generating the Marketplace app mapper: ${error.message}.`, 'error'); } } @@ -83,7 +117,9 @@ export default class marketplaceAppImportSetup { } createMapper(sourceMarketplaceApps: any, targetMarketplaceApps: any) { - sourceMarketplaceApps.forEach((sourceApp: any) => { + const appsArray = Array.isArray(sourceMarketplaceApps) ? sourceMarketplaceApps : Object.values(sourceMarketplaceApps); + + appsArray.forEach((sourceApp: any) => { // Find matching target item based on manifest.name // TBD: This logic is not foolproof, need to find a better way to match source and target apps // Reason: While importing apps, if an app exist in the target with the same name, it will be a conflict and will not be imported @@ -119,7 +155,9 @@ export default class marketplaceAppImportSetup { }); } }); + this.progressManager?.tick(true, `app: ${sourceAppName}`, null, PROCESS_NAMES.MARKETPLACE_APPS_FETCH); } else { + this.progressManager?.tick(false, `app: ${sourceAppName}`, 'Not found in target stack', PROCESS_NAMES.MARKETPLACE_APPS_FETCH); log(this.config, `No matching Marketplace app found in the target stack with name ${sourceAppName}`, 'info'); } }); diff --git a/packages/contentstack-import-setup/src/import/modules/taxonomies.ts b/packages/contentstack-import-setup/src/import/modules/taxonomies.ts index 38dcad4c9c..10e1f8cf56 100644 --- a/packages/contentstack-import-setup/src/import/modules/taxonomies.ts +++ b/packages/contentstack-import-setup/src/import/modules/taxonomies.ts @@ -5,13 +5,12 @@ import isEmpty from 'lodash/isEmpty'; import { log, fsUtil, fileHelper } from '../../utils'; import { ImportConfig, ModuleClassParams, TaxonomyQueryParams } from '../../types'; import { sanitizePath } from '@contentstack/cli-utilities'; +import BaseImportSetup from './base-setup'; +import { MODULE_NAMES, MODULE_CONTEXTS, PROCESS_NAMES, PROCESS_STATUS } from '../../utils'; -export default class TaxonomiesImportSetup { - private config: ImportConfig; +export default class TaxonomiesImportSetup extends BaseImportSetup { private taxonomiesFilePath: string; private taxonomiesFolderPath: string; - private stackAPIClient: ModuleClassParams['stackAPIClient']; - private dependencies: ModuleClassParams['dependencies']; private taxonomiesConfig: ImportConfig['modules']['taxonomies']; private termsSuccessPath: string; private taxSuccessPath: string; @@ -24,8 +23,8 @@ export default class TaxonomiesImportSetup { public masterLocaleFilePath: string; constructor({ config, stackAPIClient }: ModuleClassParams) { - this.config = config; - this.stackAPIClient = stackAPIClient; + super({ config, stackAPIClient, dependencies: [] }); + this.currentModuleName = MODULE_NAMES[MODULE_CONTEXTS.TAXONOMIES]; this.taxonomiesFolderPath = join(sanitizePath(this.config.contentDir), 'taxonomies'); this.taxonomiesFilePath = join(this.taxonomiesFolderPath, 'taxonomies.json'); this.taxonomiesConfig = config.modules.taxonomies; @@ -55,23 +54,53 @@ export default class TaxonomiesImportSetup { */ async start(): Promise { try { - const taxonomies: any = fsUtil.readFile(this.taxonomiesFilePath); + const taxonomies: any = await this.withLoadingSpinner('TAXONOMIES: Analyzing import data...', async () => { + return fsUtil.readFile(this.taxonomiesFilePath); + }); + if (!isEmpty(taxonomies)) { - // 1. Detect locale-based structure + const taxonomiesArray = Object.values(taxonomies) as any[]; + const progress = this.createNestedProgress(this.currentModuleName); + + // Detect locale-based structure this.isLocaleBasedStructure = this.detectLocaleBasedStructure(); - // 2. Create mapper directory + // Add processes + progress.addProcess(PROCESS_NAMES.TAXONOMIES_MAPPER_GENERATION, 1); + progress.addProcess(PROCESS_NAMES.TAXONOMIES_FETCH, taxonomiesArray.length); + progress.addProcess(PROCESS_NAMES.TAXONOMIES_TERMS_FETCH, taxonomiesArray.length); + + // Create mapper directory + progress + .startProcess(PROCESS_NAMES.TAXONOMIES_MAPPER_GENERATION) + .updateStatus( + PROCESS_STATUS.TAXONOMIES_MAPPER_GENERATION.GENERATING, + PROCESS_NAMES.TAXONOMIES_MAPPER_GENERATION, + ); fsUtil.makeDirectory(this.taxonomiesMapperDirPath); fsUtil.makeDirectory(this.termsMapperDirPath); + this.progressManager?.tick(true, 'mapper directories created', null, PROCESS_NAMES.TAXONOMIES_MAPPER_GENERATION); + progress.completeProcess(PROCESS_NAMES.TAXONOMIES_MAPPER_GENERATION, true); + + // Fetch taxonomies + progress + .startProcess(PROCESS_NAMES.TAXONOMIES_FETCH) + .updateStatus( + PROCESS_STATUS.TAXONOMIES_FETCH.FETCHING, + PROCESS_NAMES.TAXONOMIES_FETCH, + ); if (this.isLocaleBasedStructure) { log(this.config, 'Detected locale-based folder structure for taxonomies', 'info'); - await this.setupTaxonomiesByLocale(taxonomies); + await this.setupTaxonomiesByLocale(taxonomies, progress); } else { log(this.config, 'Using legacy folder structure for taxonomies', 'info'); - await this.setupTaxonomiesLegacy(taxonomies); + await this.setupTaxonomiesLegacy(taxonomies, progress); } + progress.completeProcess(PROCESS_NAMES.TAXONOMIES_FETCH, true); + progress.completeProcess(PROCESS_NAMES.TAXONOMIES_TERMS_FETCH, true); + if (this.taxonomiesMapper !== undefined && !isEmpty(this.taxonomiesMapper)) { fsUtil.writeFile(this.taxSuccessPath, this.taxonomiesMapper); } @@ -79,11 +108,13 @@ export default class TaxonomiesImportSetup { fsUtil.writeFile(this.termsSuccessPath, this.termsMapper); } + this.completeProgress(true); log(this.config, `The required setup files for taxonomies have been generated successfully.`, 'success'); } else { log(this.config, 'No taxonomies found in the content folder.', 'info'); } } catch (error) { + this.completeProgress(false, error?.message || 'Taxonomies mapper generation failed'); log(this.config, `Error generating taxonomies mapper: ${error.message}`, 'error'); } } @@ -91,22 +122,31 @@ export default class TaxonomiesImportSetup { /** * Setup taxonomies using legacy format (root-level taxonomy files) */ - async setupTaxonomiesLegacy(taxonomies: any): Promise { + async setupTaxonomiesLegacy(taxonomies: any, progress: any): Promise { for (const taxonomy of Object.values(taxonomies) as any) { - let targetTaxonomy: any = await this.getTaxonomies(taxonomy); - if (!targetTaxonomy) { - log(this.config, `Taxonomies with uid '${taxonomy.uid}' not found in the stack!`, 'info'); - continue; - } - targetTaxonomy = this.sanitizeTaxonomyAttribs(targetTaxonomy); - this.taxonomiesMapper[taxonomy.uid] = targetTaxonomy; - const terms = await this.getAllTermsOfTaxonomy(targetTaxonomy); - if (Array.isArray(terms) && terms.length > 0) { - log(this.config, `Terms found for taxonomy '${taxonomy.uid}', processing...`, 'info'); - const sanitizedTerms = this.sanitizeTermsAttribs(terms); - this.termsMapper[taxonomy.uid] = sanitizedTerms; - } else { - log(this.config, `No terms found for taxonomy '${taxonomy.uid}', skipping...`, 'info'); + try { + let targetTaxonomy: any = await this.getTaxonomies(taxonomy); + if (!targetTaxonomy) { + this.progressManager?.tick(false, `taxonomy: ${taxonomy.uid}`, 'Not found in stack', PROCESS_NAMES.TAXONOMIES_FETCH); + log(this.config, `Taxonomies with uid '${taxonomy.uid}' not found in the stack!`, 'info'); + continue; + } + targetTaxonomy = this.sanitizeTaxonomyAttribs(targetTaxonomy); + this.taxonomiesMapper[taxonomy.uid] = targetTaxonomy; + this.progressManager?.tick(true, `taxonomy: ${taxonomy.uid}`, null, PROCESS_NAMES.TAXONOMIES_FETCH); + + const terms = await this.getAllTermsOfTaxonomy(targetTaxonomy); + if (Array.isArray(terms) && terms.length > 0) { + log(this.config, `Terms found for taxonomy '${taxonomy.uid}', processing...`, 'info'); + const sanitizedTerms = this.sanitizeTermsAttribs(terms); + this.termsMapper[taxonomy.uid] = sanitizedTerms; + this.progressManager?.tick(true, `terms: ${taxonomy.uid} (${terms.length})`, null, PROCESS_NAMES.TAXONOMIES_TERMS_FETCH); + } else { + log(this.config, `No terms found for taxonomy '${taxonomy.uid}', skipping...`, 'info'); + this.progressManager?.tick(true, `terms: ${taxonomy.uid} (none)`, null, PROCESS_NAMES.TAXONOMIES_TERMS_FETCH); + } + } catch (error) { + this.progressManager?.tick(false, `taxonomy: ${taxonomy.uid}`, error?.message || 'Failed to fetch', PROCESS_NAMES.TAXONOMIES_FETCH); } } } @@ -115,40 +155,49 @@ export default class TaxonomiesImportSetup { * Setup taxonomies using locale-based format (taxonomies organized by locale) * For locale-based structure, we query the target stack for each taxonomy+locale combination */ - async setupTaxonomiesByLocale(taxonomies: any): Promise { + async setupTaxonomiesByLocale(taxonomies: any, progress: any): Promise { const locales = this.loadAvailableLocales(); for (const localeCode of Object.keys(locales)) { log(this.config, `Processing taxonomies for locale: ${localeCode}`, 'info'); for (const taxonomy of Object.values(taxonomies) as any) { - // Query target stack for this taxonomy in this locale - let targetTaxonomy: any = await this.getTaxonomies(taxonomy, localeCode); - if (!targetTaxonomy) { - log(this.config, `Taxonomy '${taxonomy.uid}' not found in target stack for locale: ${localeCode}`, 'info'); - continue; - } - - targetTaxonomy = this.sanitizeTaxonomyAttribs(targetTaxonomy); - - // Store with composite key: taxonomyUID_locale - // const mapperKey = `${taxonomy.uid}_${localeCode}`; // TODO: Unsure about this required or not - this.taxonomiesMapper[taxonomy.uid] = targetTaxonomy; - const terms = await this.getAllTermsOfTaxonomy(targetTaxonomy, localeCode); - if (Array.isArray(terms) && terms.length > 0) { - log( - this.config, - `Terms found for taxonomy '${taxonomy.uid} for locale: ${localeCode}', processing...`, - 'info', - ); - const sanitizedTerms = this.sanitizeTermsAttribs(terms); - this.termsMapper[taxonomy.uid] = sanitizedTerms; - } else { - log( - this.config, - `No terms found for taxonomy '${taxonomy.uid} for locale: ${localeCode}', skipping...`, - 'info', - ); + try { + // Query target stack for this taxonomy in this locale + let targetTaxonomy: any = await this.getTaxonomies(taxonomy, localeCode); + if (!targetTaxonomy) { + this.progressManager?.tick(false, `taxonomy: ${taxonomy.uid} (${localeCode})`, 'Not found in stack', PROCESS_NAMES.TAXONOMIES_FETCH); + log(this.config, `Taxonomy '${taxonomy.uid}' not found in target stack for locale: ${localeCode}`, 'info'); + continue; + } + + targetTaxonomy = this.sanitizeTaxonomyAttribs(targetTaxonomy); + + // Store with composite key: taxonomyUID_locale + // const mapperKey = `${taxonomy.uid}_${localeCode}`; // TODO: Unsure about this required or not + this.taxonomiesMapper[taxonomy.uid] = targetTaxonomy; + this.progressManager?.tick(true, `taxonomy: ${taxonomy.uid} (${localeCode})`, null, PROCESS_NAMES.TAXONOMIES_FETCH); + + const terms = await this.getAllTermsOfTaxonomy(targetTaxonomy, localeCode); + if (Array.isArray(terms) && terms.length > 0) { + log( + this.config, + `Terms found for taxonomy '${taxonomy.uid} for locale: ${localeCode}', processing...`, + 'info', + ); + const sanitizedTerms = this.sanitizeTermsAttribs(terms); + this.termsMapper[taxonomy.uid] = sanitizedTerms; + this.progressManager?.tick(true, `terms: ${taxonomy.uid} (${localeCode}, ${terms.length})`, null, PROCESS_NAMES.TAXONOMIES_TERMS_FETCH); + } else { + log( + this.config, + `No terms found for taxonomy '${taxonomy.uid} for locale: ${localeCode}', skipping...`, + 'info', + ); + this.progressManager?.tick(true, `terms: ${taxonomy.uid} (${localeCode}, none)`, null, PROCESS_NAMES.TAXONOMIES_TERMS_FETCH); + } + } catch (error) { + this.progressManager?.tick(false, `taxonomy: ${taxonomy.uid} (${localeCode})`, error?.message || 'Failed to fetch', PROCESS_NAMES.TAXONOMIES_FETCH); } } } diff --git a/packages/contentstack-import-setup/src/types/import-config.ts b/packages/contentstack-import-setup/src/types/import-config.ts index f401d5f41a..5c68eb773c 100644 --- a/packages/contentstack-import-setup/src/types/import-config.ts +++ b/packages/contentstack-import-setup/src/types/import-config.ts @@ -10,6 +10,18 @@ export interface ExternalConfig { password?: string; } +export interface Context { + command: string; + module: string; + userId: string | undefined; + email?: string | undefined; + sessionId: string | undefined; + clientId?: string | undefined; + apiKey: string; + orgId: string; + authenticationMethod?: string; +} + export default interface ImportConfig extends DefaultConfig, ExternalConfig { cliLogsPath?: string; contentDir: string; @@ -39,7 +51,6 @@ export default interface ImportConfig extends DefaultConfig, ExternalConfig { authtoken?: string; destinationStackName?: string; org_uid?: string; - contentVersion: number; stackName?: string; branchName: string; selectedModules: Modules[]; @@ -47,6 +58,8 @@ export default interface ImportConfig extends DefaultConfig, ExternalConfig { backupDir: string; createBackupDir?: string; region: any; + authenticationMethod?: string; + context?: Context; } type branch = { diff --git a/packages/contentstack-import-setup/src/utils/constants.ts b/packages/contentstack-import-setup/src/utils/constants.ts new file mode 100644 index 0000000000..014e7d2ae8 --- /dev/null +++ b/packages/contentstack-import-setup/src/utils/constants.ts @@ -0,0 +1,132 @@ +export const PROCESS_NAMES = { + // Entries module + ENTRIES_MAPPER_GENERATION: 'Mapper Generation', + + // Content Types module + CONTENT_TYPES_MAPPER_GENERATION: 'Mapper Generation', + CONTENT_TYPES_DEPENDENCY_SETUP: 'Dependency Setup', + + // Global Fields module + GLOBAL_FIELDS_MAPPER_GENERATION: 'Mapper Generation', + GLOBAL_FIELDS_DEPENDENCY_SETUP: 'Dependency Setup', + + // Extensions module + EXTENSIONS_MAPPER_GENERATION: 'Mapper Generation', + + // Assets module + ASSETS_MAPPER_GENERATION: 'Mapper Generation', + ASSETS_FETCH_AND_MAP: 'Fetch and Map', + + // Custom Roles module + CUSTOM_ROLES_MAPPER_GENERATION: 'Mapper Generation', + + // Marketplace Apps module + MARKETPLACE_APPS_MAPPER_GENERATION: 'Mapper Generation', + MARKETPLACE_APPS_FETCH: 'Fetch Apps', + + // Taxonomies module + TAXONOMIES_MAPPER_GENERATION: 'Mapper Generation', + TAXONOMIES_FETCH: 'Fetch Taxonomies', + TAXONOMIES_TERMS_FETCH: 'Fetch Terms', +} as const; + +export const MODULE_CONTEXTS = { + ENTRIES: 'entries', + CONTENT_TYPES: 'content-types', + GLOBAL_FIELDS: 'global-fields', + EXTENSIONS: 'extensions', + ASSETS: 'assets', + CUSTOM_ROLES: 'custom-roles', + MARKETPLACE_APPS: 'marketplace-apps', + TAXONOMIES: 'taxonomies', +} as const; + +// Display names for modules to avoid scattering user-facing strings +export const MODULE_NAMES = { + [MODULE_CONTEXTS.ENTRIES]: 'Entries', + [MODULE_CONTEXTS.CONTENT_TYPES]: 'Content Types', + [MODULE_CONTEXTS.GLOBAL_FIELDS]: 'Global Fields', + [MODULE_CONTEXTS.EXTENSIONS]: 'Extensions', + [MODULE_CONTEXTS.ASSETS]: 'Assets', + [MODULE_CONTEXTS.CUSTOM_ROLES]: 'Custom Roles', + [MODULE_CONTEXTS.MARKETPLACE_APPS]: 'Marketplace Apps', + [MODULE_CONTEXTS.TAXONOMIES]: 'Taxonomies', +} as const; + +export const PROCESS_STATUS: Record> = { + // Entries + ENTRIES_MAPPER_GENERATION: { + GENERATING: 'Generating mapper files...', + FAILED: 'Failed to generate mapper files.', + }, + + // Content Types + CONTENT_TYPES_MAPPER_GENERATION: { + GENERATING: 'Generating mapper files...', + FAILED: 'Failed to generate mapper files.', + }, + CONTENT_TYPES_DEPENDENCY_SETUP: { + SETTING_UP: 'Setting up dependencies...', + FAILED: 'Failed to setup dependencies.', + }, + + // Global Fields + GLOBAL_FIELDS_MAPPER_GENERATION: { + GENERATING: 'Generating mapper files...', + FAILED: 'Failed to generate mapper files.', + }, + GLOBAL_FIELDS_DEPENDENCY_SETUP: { + SETTING_UP: 'Setting up dependencies...', + FAILED: 'Failed to setup dependencies.', + }, + + // Extensions + EXTENSIONS_MAPPER_GENERATION: { + GENERATING: 'Generating mapper files...', + FAILED: 'Failed to generate mapper files.', + }, + + // Assets + ASSETS_MAPPER_GENERATION: { + GENERATING: 'Generating mapper files...', + FAILED: 'Failed to generate mapper files.', + }, + ASSETS_FETCH_AND_MAP: { + FETCHING: 'Fetching and mapping assets...', + FAILED: 'Failed to fetch and map assets.', + }, + + // Custom Roles + CUSTOM_ROLES_MAPPER_GENERATION: { + GENERATING: 'Generating mapper files...', + FAILED: 'Failed to generate mapper files.', + }, + + // Marketplace Apps + MARKETPLACE_APPS_MAPPER_GENERATION: { + GENERATING: 'Generating mapper files...', + FAILED: 'Failed to generate mapper files.', + }, + MARKETPLACE_APPS_FETCH: { + FETCHING: 'Fetching marketplace apps...', + FAILED: 'Failed to fetch marketplace apps.', + }, + + // Taxonomies + TAXONOMIES_MAPPER_GENERATION: { + GENERATING: 'Generating mapper files...', + FAILED: 'Failed to generate mapper files.', + }, + TAXONOMIES_FETCH: { + FETCHING: 'Fetching taxonomies...', + FAILED: 'Failed to fetch taxonomies.', + }, + TAXONOMIES_TERMS_FETCH: { + FETCHING: 'Fetching terms...', + FAILED: 'Failed to fetch terms.', + }, +} as const; + +export type ImportSetupProcessName = (typeof PROCESS_NAMES)[keyof typeof PROCESS_NAMES]; +export type ImportSetupModuleContext = (typeof MODULE_CONTEXTS)[keyof typeof MODULE_CONTEXTS]; + diff --git a/packages/contentstack-import-setup/src/utils/import-config-handler.ts b/packages/contentstack-import-setup/src/utils/import-config-handler.ts index 9949274beb..e099d43ae8 100644 --- a/packages/contentstack-import-setup/src/utils/import-config-handler.ts +++ b/packages/contentstack-import-setup/src/utils/import-config-handler.ts @@ -32,12 +32,6 @@ const setupConfig = async (importCmdFlags: any): Promise => { config.contentDir = path.resolve(config.contentDir); //Note to support the old key config.data = config.contentDir; - if (fileExistsSync(path.join(config.contentDir, 'export-info.json'))) { - config.contentVersion = - ((await readFile(path.join(config.contentDir, 'export-info.json'))) || {}).contentVersion || 2; - } else { - config.contentVersion = 1; - } const managementTokenAlias = importCmdFlags['management-token-alias'] || importCmdFlags['alias']; diff --git a/packages/contentstack-import-setup/src/utils/index.ts b/packages/contentstack-import-setup/src/utils/index.ts index e349a5225d..de35f72021 100644 --- a/packages/contentstack-import-setup/src/utils/index.ts +++ b/packages/contentstack-import-setup/src/utils/index.ts @@ -7,3 +7,4 @@ export { log, unlinkFileLogger } from './logger'; export * from './log'; export * from './common-helper'; export { setupBranchConfig } from './setup-branch'; +export { MODULE_CONTEXTS, MODULE_NAMES, PROCESS_NAMES, PROCESS_STATUS } from './constants'; diff --git a/packages/contentstack-import-setup/src/utils/log.ts b/packages/contentstack-import-setup/src/utils/log.ts index aac6d63457..7bacf4aea8 100644 --- a/packages/contentstack-import-setup/src/utils/log.ts +++ b/packages/contentstack-import-setup/src/utils/log.ts @@ -8,7 +8,7 @@ import { ImportConfig } from '../types'; let logger: Logger; export function isImportConfig(config: ImportConfig | MessageType): config is ImportConfig { - return (config as ImportConfig).data !== undefined && (config as ImportConfig)?.contentVersion !== undefined; + return (config as ImportConfig).data !== undefined; } export function log(entry: LogEntry): void; diff --git a/packages/contentstack-import-setup/test/unit/backup-handler.test.ts b/packages/contentstack-import-setup/test/unit/backup-handler.test.ts index b371864af6..03e85b250f 100644 --- a/packages/contentstack-import-setup/test/unit/backup-handler.test.ts +++ b/packages/contentstack-import-setup/test/unit/backup-handler.test.ts @@ -25,7 +25,6 @@ describe('Backup Handler', () => { branchName: '', selectedModules: ['entries'], backupDir: '', - contentVersion: 1, region: 'us', }; diff --git a/packages/contentstack-import-setup/test/unit/common-helper.test.ts b/packages/contentstack-import-setup/test/unit/common-helper.test.ts index d287219145..bcc50358c6 100644 --- a/packages/contentstack-import-setup/test/unit/common-helper.test.ts +++ b/packages/contentstack-import-setup/test/unit/common-helper.test.ts @@ -23,7 +23,6 @@ describe('Common Helper Utilities', () => { branchName: '', selectedModules: ['entries'], backupDir: '', - contentVersion: 1, region: 'us', }; diff --git a/packages/contentstack-import-setup/test/unit/import-config-handler.test.ts b/packages/contentstack-import-setup/test/unit/import-config-handler.test.ts index 082717ef77..6d05f440db 100644 --- a/packages/contentstack-import-setup/test/unit/import-config-handler.test.ts +++ b/packages/contentstack-import-setup/test/unit/import-config-handler.test.ts @@ -123,16 +123,6 @@ describe('Import Config Handler', () => { expect(config.branchName).to.equal('development'); }); - it('should set default content version to 1', async () => { - const flags = { - 'data-dir': contentDir, - }; - - const config = await setupConfig(flags); - - expect(config.contentVersion).to.equal(1); - }); - it('should ask for modules when none are provided', async () => { const flags = { 'data-dir': contentDir, diff --git a/packages/contentstack-import-setup/test/unit/import-setup.test.ts b/packages/contentstack-import-setup/test/unit/import-setup.test.ts index ee0eca6b6d..a35c1fc490 100644 --- a/packages/contentstack-import-setup/test/unit/import-setup.test.ts +++ b/packages/contentstack-import-setup/test/unit/import-setup.test.ts @@ -29,7 +29,6 @@ describe('ImportSetup', () => { branchName: '', selectedModules: ['entries'], backupDir: '', - contentVersion: 1, region: 'us', modules: { extensions: { @@ -58,6 +57,11 @@ describe('ImportSetup', () => { fileName: 'environments', dependencies: [], }, + locales: { + dirName: 'locales', + fileName: 'locales', + dependencies: [], + }, entries: { dirName: 'entries', fileName: 'entries', diff --git a/packages/contentstack-import-setup/test/unit/login-handler.test.ts b/packages/contentstack-import-setup/test/unit/login-handler.test.ts index dfdb08450c..d5f193ae24 100644 --- a/packages/contentstack-import-setup/test/unit/login-handler.test.ts +++ b/packages/contentstack-import-setup/test/unit/login-handler.test.ts @@ -1,186 +1,555 @@ import { expect } from 'chai'; -import { stub, restore, SinonStub } from 'sinon'; -import proxyquire from 'proxyquire'; +import sinon from 'sinon'; import loginHandler from '../../src/utils/login-handler'; import * as logger from '../../src/utils/logger'; import { ImportConfig } from '../../src/types'; describe('Login Handler', () => { - let managementSDKClientStub: SinonStub; - let clientLoginStub: SinonStub; - let stackStub: SinonStub; - let fetchStub: SinonStub; - let logStub: SinonStub; - let isAuthenticatedStub: SinonStub; - let mockStack: any; - - // Setup stubs for client methods - clientLoginStub = stub(); - fetchStub = stub(); - - mockStack = { - fetch: fetchStub, - }; - - stackStub = stub().returns(mockStack); - - // Create a mock client that will be returned by managementSDKClient - const mockClient = { - login: clientLoginStub, - stack: stackStub, - }; - - // Make managementSDKClient return our mock client - managementSDKClientStub = stub().resolves(mockClient); - isAuthenticatedStub = stub().returns(false); - - // Load the compiled JS version of your TS file - const { default: loginHandler } = proxyquire('../../src/utils/login-handler', { - '@contentstack/cli-utilities': { - managementSDKClient: managementSDKClientStub, - isAuthenticated: isAuthenticatedStub, - }, - }); - - // Base mock config that satisfies ImportConfig type - const baseConfig: Partial = { - contentDir: '/content/path', - data: '/content/path', - apiKey: 'test-api-key', - forceStopMarketplaceAppsPrompt: false, - master_locale: { code: 'en-us' }, - masterLocale: { code: 'en-us' }, - branchName: '', - selectedModules: ['entries'], - backupDir: '', - contentVersion: 1, - region: 'us', - }; + let sandbox: sinon.SinonSandbox; + let managementSDKClientStub: sinon.SinonStub; + let configHandlerGetStub: sinon.SinonStub; + let logStub: sinon.SinonStub; + let mockClient: any; + let mockStackAPIClient: any; beforeEach(() => { - restore(); - - logStub = stub(logger, 'log'); + sandbox = sinon.createSandbox(); + + // Mock stack API client + mockStackAPIClient = { + fetch: sandbox.stub(), + }; + + // Mock management SDK client + mockClient = { + login: sandbox.stub(), + stack: sandbox.stub().returns(mockStackAPIClient), + }; + + // Stub managementSDKClient using .value() pattern - ensure it returns the mock client + const cliUtilitiesModule = require('@contentstack/cli-utilities'); + sandbox.stub(cliUtilitiesModule, 'managementSDKClient').value(() => Promise.resolve(mockClient)); + + // Stub configHandler.get to control isAuthenticated() behavior + // isAuthenticated() internally checks configHandler.get('authorisationType') + // Returns 'OAUTH' or 'AUTH' for authenticated, undefined for not authenticated + const configHandler = require('@contentstack/cli-utilities').configHandler; + configHandlerGetStub = sandbox.stub(configHandler, 'get'); + // Default to undefined (not authenticated) - tests can override as needed + configHandlerGetStub.returns(undefined); + + // Stub logger + logStub = sandbox.stub(logger, 'log'); }); afterEach(() => { - restore(); + sandbox.restore(); }); - describe('with email and password', () => { - it('should login successfully and return updated config', async () => { - const mockConfig = { - ...baseConfig, + describe('Email/Password Authentication', () => { + it('should successfully login with email and password and set headers', async () => { + const config: ImportConfig = { email: 'test@example.com', - password: 'password123', - source_stack: 'test-stack-key', + password: 'testpassword', + source_stack: 'test-api-key', + access_token: 'test-access-token', + authtoken: 'test-auth-token', + apiKey: 'test-api-key', + contentDir: '/test/content', + data: '/test/content', + management_token: undefined, + target_stack: 'test-api-key', } as ImportConfig; - // Mock successful login - clientLoginStub.resolves({ + mockClient.login.resolves({ user: { - authtoken: 'test-auth-token', + authtoken: 'new-auth-token-123', }, }); - const result = await loginHandler(mockConfig); + const result = await loginHandler(config); + + expect(result).to.equal(config); + expect(config.headers).to.exist; + expect(config.headers!.api_key).to.equal('test-api-key'); + expect(config.headers!.access_token).to.equal('test-access-token'); + expect(config.headers!.authtoken).to.equal('test-auth-token'); + expect(config.headers!['X-User-Agent']).to.equal('contentstack-export/v'); + expect(mockClient.login.calledOnce).to.be.true; + expect(mockClient.login.calledWith({ email: 'test@example.com', password: 'testpassword' })).to.be.true; + expect(logStub.calledWith(config, 'Contentstack account authenticated successfully!', 'success')).to.be.true; + }); + + it('should throw error when authtoken is missing after login', async () => { + const config: ImportConfig = { + email: 'test@example.com', + password: 'testpassword', + apiKey: 'test-api-key', + contentDir: '/test/content', + data: '/test/content', + } as ImportConfig; + + mockClient.login.resolves({ + user: { + authtoken: null, + }, + }); - expect(managementSDKClientStub.calledOnce).to.be.true; - expect(clientLoginStub.calledOnce).to.be.true; - expect( - clientLoginStub.calledWith({ - email: 'test@example.com', - password: 'password123', - }), - ).to.be.true; + try { + await loginHandler(config); + expect.fail('Should have thrown an error'); + } catch (error: any) { + expect(error.message).to.equal('Invalid auth token received after login'); + } - expect(logStub.calledWith(result, 'Contentstack account authenticated successfully!', 'success')).to.be.true; + expect(mockClient.login.calledOnce).to.be.true; }); - it('should throw error when login fails', async () => { - const mockConfig = { - ...baseConfig, + it('should throw error when user object is missing authtoken property', async () => { + const config: ImportConfig = { email: 'test@example.com', - password: 'wrong-password', + password: 'testpassword', + apiKey: 'test-api-key', + contentDir: '/test/content', + data: '/test/content', } as ImportConfig; - // Mock failed login - clientLoginStub.resolves({ + mockClient.login.resolves({ user: {}, }); try { - await loginHandler(mockConfig); + await loginHandler(config); expect.fail('Should have thrown an error'); - } catch (err: any) { - expect(err.message).to.equal('Invalid auth token received after login'); + } catch (error: any) { + expect(error.message).to.equal('Invalid auth token received after login'); } }); + + it('should throw error when user object is missing', async () => { + const config: ImportConfig = { + email: 'test@example.com', + password: 'testpassword', + apiKey: 'test-api-key', + contentDir: '/test/content', + data: '/test/content', + } as ImportConfig; + + mockClient.login.resolves({}); + + try { + await loginHandler(config); + expect.fail('Should have thrown an error'); + } catch (error: any) { + expect(error.message).to.equal('Invalid auth token received after login'); + } + }); + + it('should handle login API errors', async () => { + const config: ImportConfig = { + email: 'test@example.com', + password: 'testpassword', + apiKey: 'test-api-key', + contentDir: '/test/content', + data: '/test/content', + } as ImportConfig; + + const loginError = new Error('Login failed'); + mockClient.login.rejects(loginError); + + try { + await loginHandler(config); + expect.fail('Should have thrown an error'); + } catch (error: any) { + expect(error).to.equal(loginError); + } + + expect(mockClient.login.calledOnce).to.be.true; + }); + }); + + describe('Management Token Authentication', () => { + it('should return config when management_token is provided', async () => { + const config: ImportConfig = { + management_token: 'test-management-token', + apiKey: 'test-api-key', + contentDir: '/test/content', + data: '/test/content', + email: undefined, + password: undefined, + } as ImportConfig; + + const result = await loginHandler(config); + + expect(result).to.equal(config); + expect(mockClient.login.called).to.be.false; + expect(mockStackAPIClient.fetch.called).to.be.false; + }); + + it('should return config when management_token is provided without email/password', async () => { + const config: ImportConfig = { + management_token: 'test-management-token', + apiKey: 'test-api-key', + contentDir: '/test/content', + data: '/test/content', + email: undefined, + password: undefined, + } as ImportConfig; + + const result = await loginHandler(config); + + // Management token path is used when email/password are not provided + expect(result).to.equal(config); + expect(mockClient.login.called).to.be.false; + }); }); - describe('with authentication', () => { - it('should handle stack api key error', async () => { - const mockConfig = { - ...baseConfig, - target_stack: 'invalid-stack-key', + describe('Existing Authentication', () => { + it('should validate stack access when user is already authenticated', async () => { + const config: ImportConfig = { + apiKey: 'test-api-key', + target_stack: 'test-api-key', + management_token: undefined, // NOT set - so it will check isAuthenticated() + contentDir: '/test/content', + data: '/test/content', + email: undefined, + password: undefined, } as ImportConfig; - // Set isAuthenticated to return true for this test - isAuthenticatedStub.returns(true); + // Reset stub completely to clear any previous behavior + configHandlerGetStub.reset(); + + // Make isAuthenticated() return true by returning 'OAUTH' for authorisationType + configHandlerGetStub.callsFake((key: string) => { + if (key === 'authorisationType') { + return 'OAUTH'; // This makes isAuthenticated() return true + } + return undefined; + }); + + // Reset fetch stub and mock stack response + mockStackAPIClient.fetch.reset(); + mockStackAPIClient.fetch.resolves({ + name: 'Test Stack Name', + }); + + // Ensure client.stack returns the mock stack client + mockClient.stack.reset(); + mockClient.stack.returns(mockStackAPIClient); + + const result = await loginHandler(config); + + expect(result).to.equal(config); + expect(config.destinationStackName).to.equal('Test Stack Name'); + // Verify stub was called - if stack was called, then isAuthenticated() returned true, which means the stub was called + expect(mockClient.stack.calledOnce).to.be.true; + expect(mockClient.stack.calledWith({ + api_key: 'test-api-key', + management_token: undefined, // This is what gets passed when management_token is not set + })).to.be.true; + expect(mockStackAPIClient.fetch.calledOnce).to.be.true; + }); - const error = { + it('should throw error when stack fetch fails with api_key error', async () => { + const config: ImportConfig = { + apiKey: 'test-api-key', + target_stack: 'test-api-key', + management_token: undefined, // NOT set - so it will check isAuthenticated() + contentDir: '/test/content', + data: '/test/content', + email: undefined, + password: undefined, + } as ImportConfig; + + const apiKeyError: any = { errors: { api_key: ['Invalid stack API key'], }, }; - fetchStub.rejects(error); + // Setup configHandler to return values that isAuthenticated() needs + configHandlerGetStub.callsFake((key: string) => { + if (key === 'authorisationType') { + return 'OAUTH'; // This makes isAuthenticated() return true + } + // Return undefined for other keys + return undefined; + }); + mockStackAPIClient.fetch.reset(); + mockClient.stack.reset(); + mockClient.stack.returns(mockStackAPIClient); + mockStackAPIClient.fetch.rejects(apiKeyError); try { - await loginHandler(mockConfig); + await loginHandler(config); expect.fail('Should have thrown an error'); - } catch (err) { - expect(err).to.equal(error); + } catch (error: any) { + expect(error).to.exist; + expect(error.errors).to.deep.equal(apiKeyError.errors); expect(logStub.called).to.be.true; } + + expect(mockStackAPIClient.fetch.calledOnce).to.be.true; }); - it('should handle general fetch error', async () => { - const mockConfig = { - ...baseConfig, - target_stack: 'test-stack-key', + it('should throw error when stack fetch fails with errorMessage', async () => { + const config: ImportConfig = { + apiKey: 'test-api-key', + target_stack: 'test-api-key', + management_token: undefined, // NOT set - so it will check isAuthenticated() + contentDir: '/test/content', + data: '/test/content', + email: undefined, + password: undefined, } as ImportConfig; - // Set isAuthenticated to return true for this test - isAuthenticatedStub.returns(true); + const fetchError: any = { + errorMessage: 'Stack not found', + }; - const error: any = new Error('Network error'); - error.errorMessage = 'Failed to fetch stack'; + // Reset stubs + configHandlerGetStub.reset(); + mockStackAPIClient.fetch.reset(); + mockClient.stack.reset(); + + configHandlerGetStub.callsFake((key: string) => { + if (key === 'authorisationType') { + return 'OAUTH'; // This makes isAuthenticated() return true + } + return undefined; + }); + mockClient.stack.returns(mockStackAPIClient); + mockStackAPIClient.fetch.rejects(fetchError); - fetchStub.rejects(error); + try { + await loginHandler(config); + expect.fail('Should have thrown an error'); + } catch (error: any) { + expect(error).to.exist; + expect(error.errorMessage).to.equal(fetchError.errorMessage); + expect(logStub.calledWith(config, 'Stack not found', 'error')).to.be.true; + } + + expect(mockStackAPIClient.fetch.calledOnce).to.be.true; + }); + + it('should throw error when stack fetch fails with generic error', async () => { + const config: ImportConfig = { + apiKey: 'test-api-key', + target_stack: 'test-api-key', + management_token: undefined, // NOT set - so it will check isAuthenticated() + contentDir: '/test/content', + data: '/test/content', + email: undefined, + password: undefined, + } as ImportConfig; + + const genericError = new Error('Network error'); + + // Reset stubs + configHandlerGetStub.reset(); + mockStackAPIClient.fetch.reset(); + + configHandlerGetStub.callsFake((key: string) => { + if (key === 'authorisationType') { + return 'OAUTH'; // This makes isAuthenticated() return true + } + return undefined; + }); + mockClient.stack.reset(); + mockClient.stack.returns(mockStackAPIClient); + mockStackAPIClient.fetch.rejects(genericError); + + try { + await loginHandler(config); + expect.fail('Should have thrown an error'); + } catch (error: any) { + expect(error).to.exist; + expect(error.message).to.equal(genericError.message); + } + + expect(mockStackAPIClient.fetch.calledOnce).to.be.true; + }); + + it('should handle error when errorstack_key is empty array', async () => { + const config: ImportConfig = { + apiKey: 'test-api-key', + target_stack: 'test-api-key', + management_token: undefined, // NOT set - so it will check isAuthenticated() + contentDir: '/test/content', + data: '/test/content', + email: undefined, + password: undefined, + } as ImportConfig; + + const errorWithEmptyKey: any = { + errors: { + api_key: [], + }, + errorMessage: 'Stack fetch failed', + }; + + // Reset stubs + configHandlerGetStub.reset(); + mockStackAPIClient.fetch.reset(); + mockClient.stack.reset(); + + configHandlerGetStub.callsFake((key: string) => { + if (key === 'authorisationType') { + return 'OAUTH'; // This makes isAuthenticated() return true + } + return undefined; + }); + mockClient.stack.returns(mockStackAPIClient); + mockStackAPIClient.fetch.rejects(errorWithEmptyKey); try { - await loginHandler(mockConfig); + await loginHandler(config); expect.fail('Should have thrown an error'); - } catch (err) { - expect(err).to.equal(error); - expect(logStub.calledWith(mockConfig, 'Failed to fetch stack', 'error')).to.be.true; + } catch (error: any) { + expect(error).to.exist; + expect(error).to.have.property('errors'); + expect(error).to.have.property('errorMessage'); } }); }); - describe('without credentials', () => { - it('should return undefined when no login method is available', async () => { - const mockConfig = { - ...baseConfig, + describe('Authentication Priority', () => { + it('should prioritize email/password over existing auth when email and password are present', async () => { + const config: ImportConfig = { + email: 'test@example.com', + password: 'testpassword', + apiKey: 'test-api-key', + source_stack: 'test-api-key', + access_token: 'test-access-token', + authtoken: 'test-auth-token', + contentDir: '/test/content', + data: '/test/content', + management_token: undefined, + } as ImportConfig; + + // Reset configHandler stub for this test + configHandlerGetStub.reset(); + configHandlerGetStub.callsFake((key: string) => { + if (key === 'authorisationType') { + return 'OAUTH'; // This makes isAuthenticated() return true + } + return undefined; + }); + + // Reset and setup login mock + mockClient.login.reset(); + mockClient.login.resolves({ + user: { + authtoken: 'new-auth-token', + }, + }); + + const result = await loginHandler(config); + + expect(result).to.equal(config); + expect(mockClient.login.calledOnce).to.be.true; + expect(mockStackAPIClient.fetch.called).to.be.false; + }); + + it('should prioritize management_token over email/password', async () => { + // Reset stubs + configHandlerGetStub.reset(); + mockClient.login.reset(); + mockStackAPIClient.fetch.reset(); + + // Note: Based on the code logic, email/password is checked FIRST, then management_token + // So when both are present, email/password takes priority + // This test verifies that when management_token is provided without email/password, + // it uses management_token (not email/password auth) + const configForManagementToken: ImportConfig = { + management_token: 'test-management-token', + email: undefined, + password: undefined, + apiKey: 'test-api-key', + contentDir: '/test/content', + data: '/test/content', + } as ImportConfig; + + const result = await loginHandler(configForManagementToken); + + expect(result).to.equal(configForManagementToken); + expect(mockClient.login.called).to.be.false; + }); + + it('should check existing auth only when email/password and management_token are not provided', async () => { + const config: ImportConfig = { + apiKey: 'test-api-key', + target_stack: 'test-api-key', + management_token: undefined, + email: undefined, + password: undefined, + contentDir: '/test/content', + data: '/test/content', } as ImportConfig; - // Set isAuthenticated to return false for this test - isAuthenticatedStub.returns(false); + // Reset stub completely to clear any previous behavior + configHandlerGetStub.reset(); + + configHandlerGetStub.callsFake((key: string) => { + if (key === 'authorisationType') { + return 'OAUTH'; // This makes isAuthenticated() return true + } + return undefined; + }); + + mockStackAPIClient.fetch.reset(); + mockStackAPIClient.fetch.resolves({ + name: 'Test Stack', + }); + + // Ensure mockClient.stack is set up (from beforeEach, but ensure it's correct) + mockClient.stack.reset(); + mockClient.stack.returns(mockStackAPIClient); + mockClient.login.reset(); - const result = await loginHandler(mockConfig); + const result = await loginHandler(config); + + expect(result).to.equal(config); + // Verify stub was called - if stack was called, then isAuthenticated() returned true, which means the stub was called + expect(mockClient.login.called).to.be.false; + }); - expect(result).to.be.undefined; + }); + + describe('Edge Cases', () => { + it('should handle null values in error object gracefully', async () => { + const config: ImportConfig = { + apiKey: 'test-api-key', + target_stack: 'test-api-key', + management_token: undefined, // NOT set - so it will check isAuthenticated() + contentDir: '/test/content', + data: '/test/content', + email: undefined, + password: undefined, + } as ImportConfig; + + // Reset stubs + configHandlerGetStub.reset(); + mockStackAPIClient.fetch.reset(); + + configHandlerGetStub.callsFake((key: string) => { + if (key === 'authorisationType') { + return 'OAUTH'; // This makes isAuthenticated() return true + } + return undefined; + }); + mockClient.stack.reset(); + mockClient.stack.returns(mockStackAPIClient); + mockStackAPIClient.fetch.rejects(null); + + try { + await loginHandler(config); + expect.fail('Should have thrown an error'); + } catch (error: any) { + // When error is null, it will still throw but we just verify it was thrown + expect(error).to.exist; + } }); }); }); diff --git a/packages/contentstack-import-setup/test/unit/modules/assets.test.ts b/packages/contentstack-import-setup/test/unit/modules/assets.test.ts index 5cd8d42838..bde556ac7f 100644 --- a/packages/contentstack-import-setup/test/unit/modules/assets.test.ts +++ b/packages/contentstack-import-setup/test/unit/modules/assets.test.ts @@ -24,7 +24,6 @@ describe('AssetImportSetup', () => { branchName: '', selectedModules: ['assets'], backupDir: '/path/to/backup', - contentVersion: 1, region: 'us', fetchConcurrency: 2, writeConcurrency: 1, @@ -82,14 +81,25 @@ describe('AssetImportSetup', () => { // }); it('should log success message after setup', async () => { + // Stub withLoadingSpinner to return a non-zero indexerCount to avoid early return + stub(assetSetup as any, 'withLoadingSpinner').resolves(1); // Stub fetchAndMapAssets to avoid actual implementation stub(assetSetup as any, 'fetchAndMapAssets').resolves(); + // Stub createNestedProgress and completeProgress to avoid progress manager issues + stub(assetSetup as any, 'createNestedProgress').returns({ + addProcess: stub().returnsThis(), + startProcess: stub().returnsThis(), + updateStatus: stub().returnsThis(), + completeProcess: stub().returnsThis(), + }); + stub(assetSetup as any, 'completeProgress'); await assetSetup.start(); - expect(logStub.calledOnce).to.be.true; - expect(logStub.firstCall.args[1]).to.include('successfully'); - expect(logStub.firstCall.args[2]).to.equal('success'); + expect(logStub.called).to.be.true; + const successCall = logStub.getCalls().find((call) => call.args[1]?.includes('successfully')); + expect(successCall).to.exist; + expect(successCall?.args[2]).to.equal('success'); }); it('should handle errors during start process', async () => { diff --git a/packages/contentstack-import-setup/test/unit/modules/base-setup.test.ts b/packages/contentstack-import-setup/test/unit/modules/base-setup.test.ts index 9ce1a5d7f3..620ea95da7 100644 --- a/packages/contentstack-import-setup/test/unit/modules/base-setup.test.ts +++ b/packages/contentstack-import-setup/test/unit/modules/base-setup.test.ts @@ -3,6 +3,7 @@ import { stub, restore, SinonStub } from 'sinon'; import BaseImportSetup from '../../../src/import/modules/base-setup'; import * as loggerModule from '../../../src/utils/logger'; import { ImportConfig } from '../../../src/types'; +import { CLIProgressManager, configHandler } from '@contentstack/cli-utilities'; describe('BaseImportSetup', () => { let baseSetup: BaseImportSetup; @@ -19,7 +20,6 @@ describe('BaseImportSetup', () => { branchName: '', selectedModules: ['entries'], backupDir: '', - contentVersion: 1, region: 'us', fetchConcurrency: 2, writeConcurrency: 1, @@ -40,7 +40,7 @@ describe('BaseImportSetup', () => { baseSetup = new BaseImportSetup({ config: baseConfig as ImportConfig, stackAPIClient: mockStackAPIClient, - dependencies: {} as any, + dependencies: [] as any, }); }); @@ -51,7 +51,7 @@ describe('BaseImportSetup', () => { it('should initialize with the provided config and client', () => { expect(baseSetup.config).to.equal(baseConfig); expect(baseSetup.stackAPIClient).to.equal(mockStackAPIClient); - expect(baseSetup.dependencies).to.deep.equal({} as any); + expect(baseSetup.dependencies).to.deep.equal([] as any); }); it('should delay execution for specified milliseconds', async () => { @@ -120,4 +120,191 @@ describe('BaseImportSetup', () => { await baseSetup.logMsgAndWaitIfRequired('test-process', Date.now() - 500, 5, 3, false); expect(logStub.called).to.be.false; }); + + describe('Progress Manager', () => { + let configHandlerGetStub: SinonStub; + let createSimpleStub: SinonStub; + let createNestedStub: SinonStub; + let withLoadingSpinnerStub: SinonStub; + let mockProgressManager: any; + + beforeEach(() => { + mockProgressManager = { + tick: stub(), + complete: stub(), + addProcess: stub().returnsThis(), + startProcess: stub().returnsThis(), + updateStatus: stub().returnsThis(), + completeProcess: stub().returnsThis(), + }; + + configHandlerGetStub = stub(configHandler, 'get'); + createSimpleStub = stub(CLIProgressManager, 'createSimple'); + createNestedStub = stub(CLIProgressManager, 'createNested'); + withLoadingSpinnerStub = stub(CLIProgressManager, 'withLoadingSpinner'); + }); + + afterEach(() => { + restore(); + }); + + describe('createSimpleProgress', () => { + it('should create a simple progress manager with default showConsoleLogs', () => { + configHandlerGetStub.returns({}); + createSimpleStub.returns(mockProgressManager); + + const result = (baseSetup as any).createSimpleProgress('test-module', 100); + + expect(configHandlerGetStub.calledWith('log')).to.be.true; + expect(createSimpleStub.calledOnce).to.be.true; + expect(createSimpleStub.firstCall.args[0]).to.equal('test-module'); + expect(createSimpleStub.firstCall.args[1]).to.equal(100); + expect(createSimpleStub.firstCall.args[2]).to.equal(false); + expect(result).to.equal(mockProgressManager); + expect((baseSetup as any).currentModuleName).to.equal('test-module'); + expect((baseSetup as any).progressManager).to.equal(mockProgressManager); + }); + + it('should create a simple progress manager with showConsoleLogs enabled', () => { + configHandlerGetStub.returns({ showConsoleLogs: true }); + createSimpleStub.returns(mockProgressManager); + + const result = (baseSetup as any).createSimpleProgress('test-module', 50); + + expect(createSimpleStub.firstCall.args[2]).to.equal(true); + expect(result).to.equal(mockProgressManager); + }); + + it('should create a simple progress manager without total count', () => { + configHandlerGetStub.returns({}); + createSimpleStub.returns(mockProgressManager); + + (baseSetup as any).createSimpleProgress('test-module'); + + expect(createSimpleStub.firstCall.args[1]).to.be.undefined; + }); + }); + + describe('createNestedProgress', () => { + it('should create a nested progress manager with default showConsoleLogs', () => { + configHandlerGetStub.returns({}); + createNestedStub.returns(mockProgressManager); + + const result = (baseSetup as any).createNestedProgress('test-module'); + + expect(configHandlerGetStub.calledWith('log')).to.be.true; + expect(createNestedStub.calledOnce).to.be.true; + expect(createNestedStub.firstCall.args[0]).to.equal('test-module'); + expect(createNestedStub.firstCall.args[1]).to.equal(false); + expect(result).to.equal(mockProgressManager); + expect((baseSetup as any).currentModuleName).to.equal('test-module'); + expect((baseSetup as any).progressManager).to.equal(mockProgressManager); + }); + + it('should create a nested progress manager with showConsoleLogs enabled', () => { + configHandlerGetStub.returns({ showConsoleLogs: true }); + createNestedStub.returns(mockProgressManager); + + const result = (baseSetup as any).createNestedProgress('test-module'); + + expect(createNestedStub.firstCall.args[1]).to.equal(true); + expect(result).to.equal(mockProgressManager); + }); + }); + + describe('completeProgress', () => { + it('should complete progress manager with success', () => { + (baseSetup as any).progressManager = mockProgressManager; + + (baseSetup as any).completeProgress(true); + + expect(mockProgressManager.complete.calledOnce).to.be.true; + expect(mockProgressManager.complete.firstCall.args[0]).to.equal(true); + expect(mockProgressManager.complete.firstCall.args[1]).to.be.undefined; + expect((baseSetup as any).progressManager).to.be.null; + }); + + it('should complete progress manager with error', () => { + (baseSetup as any).progressManager = mockProgressManager; + const errorMessage = 'Test error message'; + + (baseSetup as any).completeProgress(false, errorMessage); + + expect(mockProgressManager.complete.calledOnce).to.be.true; + expect(mockProgressManager.complete.firstCall.args[0]).to.equal(false); + expect(mockProgressManager.complete.firstCall.args[1]).to.equal(errorMessage); + expect((baseSetup as any).progressManager).to.be.null; + }); + + it('should handle null progress manager gracefully', () => { + (baseSetup as any).progressManager = null; + + expect(() => (baseSetup as any).completeProgress(true)).to.not.throw(); + }); + }); + + describe('withLoadingSpinner', () => { + it('should execute action directly when showConsoleLogs is enabled', async () => { + configHandlerGetStub.returns({ showConsoleLogs: true }); + const action = stub().resolves('result'); + + const result = await (baseSetup as any).withLoadingSpinner('Loading...', action); + + expect(action.calledOnce).to.be.true; + expect(withLoadingSpinnerStub.called).to.be.false; + expect(result).to.equal('result'); + }); + + it('should use CLIProgressManager.withLoadingSpinner when showConsoleLogs is disabled', async () => { + configHandlerGetStub.returns({ showConsoleLogs: false }); + const action = stub().resolves('result'); + withLoadingSpinnerStub.resolves('result'); + + const result = await (baseSetup as any).withLoadingSpinner('Loading...', action); + + expect(withLoadingSpinnerStub.calledOnce).to.be.true; + expect(withLoadingSpinnerStub.firstCall.args[0]).to.equal('Loading...'); + expect(withLoadingSpinnerStub.firstCall.args[1]).to.equal(action); + expect(result).to.equal('result'); + }); + + it('should use CLIProgressManager.withLoadingSpinner when log config is empty', async () => { + configHandlerGetStub.returns({}); + const action = stub().resolves('result'); + withLoadingSpinnerStub.resolves('result'); + + const result = await (baseSetup as any).withLoadingSpinner('Loading...', action); + + expect(withLoadingSpinnerStub.calledOnce).to.be.true; + expect(result).to.equal('result'); + }); + + it('should handle errors in action when showConsoleLogs is enabled', async () => { + configHandlerGetStub.returns({ showConsoleLogs: true }); + const error = new Error('Action failed'); + const action = stub().rejects(error); + + try { + await (baseSetup as any).withLoadingSpinner('Loading...', action); + expect.fail('Should have thrown an error'); + } catch (e) { + expect(e).to.equal(error); + } + }); + + it('should handle errors in action when showConsoleLogs is disabled', async () => { + configHandlerGetStub.returns({ showConsoleLogs: false }); + const error = new Error('Action failed'); + const action = stub().rejects(error); + withLoadingSpinnerStub.rejects(error); + + try { + await (baseSetup as any).withLoadingSpinner('Loading...', action); + expect.fail('Should have thrown an error'); + } catch (e) { + expect(e).to.equal(error); + } + }); + }); + }); }); diff --git a/packages/contentstack-import-setup/test/unit/modules/content-types.test.ts b/packages/contentstack-import-setup/test/unit/modules/content-types.test.ts index 3aecf108b0..8380440ce3 100644 --- a/packages/contentstack-import-setup/test/unit/modules/content-types.test.ts +++ b/packages/contentstack-import-setup/test/unit/modules/content-types.test.ts @@ -20,7 +20,6 @@ describe('ContentTypesImportSetup', () => { branchName: '', selectedModules: ['content-types'], backupDir: '', - contentVersion: 1, region: 'us', fetchConcurrency: 2, writeConcurrency: 1, @@ -41,11 +40,19 @@ describe('ContentTypesImportSetup', () => { contentTypesSetup = new ContentTypesImportSetup({ config: baseConfig as ImportConfig, stackAPIClient: mockStackAPIClient, - dependencies: {} as any, + dependencies: ['extensions'] as any, }); // Stub the setupDependencies method to avoid actual imports setupDependenciesStub = stub(contentTypesSetup, 'setupDependencies').resolves(); + // Stub createNestedProgress and completeProgress to avoid progress manager issues + stub(contentTypesSetup as any, 'createNestedProgress').returns({ + addProcess: stub().returnsThis(), + startProcess: stub().returnsThis(), + updateStatus: stub().returnsThis(), + completeProcess: stub().returnsThis(), + }); + stub(contentTypesSetup as any, 'completeProgress'); }); afterEach(() => { @@ -55,7 +62,7 @@ describe('ContentTypesImportSetup', () => { it('should initialize with the provided config and client', () => { expect(contentTypesSetup.config).to.equal(baseConfig); expect(contentTypesSetup.stackAPIClient).to.equal(mockStackAPIClient); - expect(contentTypesSetup.dependencies).to.deep.equal({} as any); + expect(contentTypesSetup.dependencies).to.deep.equal(['extensions'] as any); }); it('should call setupDependencies during start', async () => { @@ -76,9 +83,10 @@ describe('ContentTypesImportSetup', () => { await contentTypesSetup.start(); - expect(logStub.calledOnce).to.be.true; - expect(logStub.firstCall.args[1]).to.include('Error occurred'); - expect(logStub.firstCall.args[1]).to.include('Test error'); - expect(logStub.firstCall.args[2]).to.equal('error'); + expect(logStub.called).to.be.true; + const errorCall = logStub.getCalls().find((call) => call.args[1]?.includes('Error occurred')); + expect(errorCall).to.exist; + expect(errorCall?.args[1]).to.include('Test error'); + expect(errorCall?.args[2]).to.equal('error'); }); }); diff --git a/packages/contentstack-import-setup/test/unit/modules/entries.test.ts b/packages/contentstack-import-setup/test/unit/modules/entries.test.ts index ba50f58434..c5eacd54de 100644 --- a/packages/contentstack-import-setup/test/unit/modules/entries.test.ts +++ b/packages/contentstack-import-setup/test/unit/modules/entries.test.ts @@ -20,7 +20,6 @@ describe('EntriesImportSetup', () => { branchName: '', selectedModules: ['entries'], backupDir: '', - contentVersion: 1, region: 'us', fetchConcurrency: 2, writeConcurrency: 1, diff --git a/packages/contentstack-import-setup/test/unit/modules/extensions.test.ts b/packages/contentstack-import-setup/test/unit/modules/extensions.test.ts index 168efb51e5..fdd12fa38f 100644 --- a/packages/contentstack-import-setup/test/unit/modules/extensions.test.ts +++ b/packages/contentstack-import-setup/test/unit/modules/extensions.test.ts @@ -22,7 +22,6 @@ describe('ExtensionsImportSetup', () => { branchName: '', selectedModules: ['extensions'], backupDir: '/path/to/backup', - contentVersion: 1, region: 'us', fetchConcurrency: 2, writeConcurrency: 1, diff --git a/packages/contentstack-import-setup/test/unit/modules/global-fields.test.ts b/packages/contentstack-import-setup/test/unit/modules/global-fields.test.ts index 605c2116a5..1416c7fb59 100644 --- a/packages/contentstack-import-setup/test/unit/modules/global-fields.test.ts +++ b/packages/contentstack-import-setup/test/unit/modules/global-fields.test.ts @@ -20,7 +20,6 @@ describe('GlobalFieldsImportSetup', () => { branchName: '', selectedModules: ['global-fields'], backupDir: '', - contentVersion: 1, region: 'us', fetchConcurrency: 2, writeConcurrency: 1, @@ -41,11 +40,19 @@ describe('GlobalFieldsImportSetup', () => { globalFieldsSetup = new GlobalFieldsImportSetup({ config: baseConfig as ImportConfig, stackAPIClient: mockStackAPIClient, - dependencies: {} as any, + dependencies: ['extensions'] as any, }); // Stub the setupDependencies method to avoid actual imports setupDependenciesStub = stub(globalFieldsSetup, 'setupDependencies').resolves(); + // Stub createNestedProgress and completeProgress to avoid progress manager issues + stub(globalFieldsSetup as any, 'createNestedProgress').returns({ + addProcess: stub().returnsThis(), + startProcess: stub().returnsThis(), + updateStatus: stub().returnsThis(), + completeProcess: stub().returnsThis(), + }); + stub(globalFieldsSetup as any, 'completeProgress'); }); afterEach(() => { @@ -55,7 +62,7 @@ describe('GlobalFieldsImportSetup', () => { it('should initialize with the provided config and client', () => { expect((globalFieldsSetup as any).config).to.equal(baseConfig); expect((globalFieldsSetup as any).stackAPIClient).to.equal(mockStackAPIClient); - expect((globalFieldsSetup as any).dependencies).to.deep.equal({} as any); + expect((globalFieldsSetup as any).dependencies).to.deep.equal(['extensions'] as any); }); it('should call setupDependencies during start', async () => { @@ -76,9 +83,10 @@ describe('GlobalFieldsImportSetup', () => { await globalFieldsSetup.start(); - expect(logStub.calledOnce).to.be.true; - expect(logStub.firstCall.args[1]).to.include('Error occurred'); - expect(logStub.firstCall.args[1]).to.include('Test error'); - expect(logStub.firstCall.args[2]).to.equal('error'); + expect(logStub.called).to.be.true; + const errorCall = logStub.getCalls().find((call) => call.args[1]?.includes('Error occurred')); + expect(errorCall).to.exist; + expect(errorCall?.args[1]).to.include('Test error'); + expect(errorCall?.args[2]).to.equal('error'); }); }); diff --git a/packages/contentstack-import-setup/test/unit/modules/marketplace-apps.test.ts b/packages/contentstack-import-setup/test/unit/modules/marketplace-apps.test.ts index c829093ef0..6dafb1dd83 100644 --- a/packages/contentstack-import-setup/test/unit/modules/marketplace-apps.test.ts +++ b/packages/contentstack-import-setup/test/unit/modules/marketplace-apps.test.ts @@ -22,7 +22,6 @@ describe('MarketplaceAppsImportSetup', () => { branchName: '', selectedModules: ['marketplace-apps'], backupDir: '/path/to/backup', - contentVersion: 1, region: 'us', fetchConcurrency: 2, writeConcurrency: 1, diff --git a/packages/contentstack-import-setup/test/unit/modules/taxonomies.test.ts b/packages/contentstack-import-setup/test/unit/modules/taxonomies.test.ts index cc092a99ba..fa67a6ba46 100644 --- a/packages/contentstack-import-setup/test/unit/modules/taxonomies.test.ts +++ b/packages/contentstack-import-setup/test/unit/modules/taxonomies.test.ts @@ -24,7 +24,6 @@ describe('TaxonomiesImportSetup', () => { branchName: '', selectedModules: ['taxonomies'], backupDir: '/path/to/backup', - contentVersion: 1, region: 'us', fetchConcurrency: 2, writeConcurrency: 1, diff --git a/packages/contentstack-migrate-rte/.eslintrc b/packages/contentstack-migrate-rte/.eslintrc deleted file mode 100644 index e56091ba65..0000000000 --- a/packages/contentstack-migrate-rte/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "oclif" -} diff --git a/packages/contentstack-migrate-rte/.gitignore b/packages/contentstack-migrate-rte/.gitignore deleted file mode 100644 index 80ee047d32..0000000000 --- a/packages/contentstack-migrate-rte/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -*-debug.log -*-error.log -/.nyc_output -/dist -/tmp -/logs -/yarn.lock -node_modules -/coverage diff --git a/packages/contentstack-migrate-rte/LICENSE b/packages/contentstack-migrate-rte/LICENSE deleted file mode 100644 index ffb4ad010b..0000000000 --- a/packages/contentstack-migrate-rte/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Contentstack - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/packages/contentstack-migrate-rte/README.md b/packages/contentstack-migrate-rte/README.md deleted file mode 100644 index c38cde1007..0000000000 --- a/packages/contentstack-migrate-rte/README.md +++ /dev/null @@ -1,156 +0,0 @@ -# @contentstack/cli-cm-migrate-rte - -It is Contentstack’s CLI plugin to migrate rte. Using this command, you can copy existing value of HTML RTE into JSON RTE. - - -* [@contentstack/cli-cm-migrate-rte](#contentstackcli-cm-migrate-rte) -* [Usage](#usage) -* [Commands](#commands) - - -# Usage - - -```sh-session -$ npm install -g @contentstack/cli-cm-migrate-rte -$ csdx COMMAND -running command... -$ csdx (--version) -@contentstack/cli-cm-migrate-rte/1.6.2 darwin-arm64 node-v22.14.0 -$ csdx --help [COMMAND] -USAGE - $ csdx COMMAND -... -``` - - -# Commands - - -* [`csdx cm:entries:migrate-html-rte`](#csdx-cmentriesmigrate-html-rte) -* [`csdx cm:migrate-rte`](#csdx-cmmigrate-rte) - -## `csdx cm:entries:migrate-html-rte` - -Migration script to migrate content from HTML RTE to JSON RTE - -``` -USAGE - $ csdx cm:entries:migrate-html-rte [-c ] [-a ] [--stack-api-key ] [--content-type ] - [--global-field] [-y] [--branch ] [--html-path --json-path ] [--delay ] [--locale - ] [--batch-limit ] - -FLAGS - -a, --alias= Enter the alias name. You must use either the --alias flag or the --stack-api-key flag. - -c, --config-path= Specify the path where your config file is located. - -y, --yes Avoids reconfirmation of your configuration. - --batch-limit= [default: 50] Provide batch limit for updating entries (default: 50). - --branch= The name of the branch to be used. - --content-type= Specify the UID of the content type for which you want to migrate HTML RTE content. - --delay= [default: 1000] To set the interval time between the migration of HTML RTE to JSON RTE in - subsequent entries of a content type. The default value is 1,000 milliseconds. - --global-field Checks whether the specified UID belongs to a content type or a global field. This flag - is set to false by default. - --html-path= Enter the path to the HTML RTE whose content you want to migrate. - --json-path= Enter the path to the JSON RTE to which you want to migrate the HTML RTE content. - --locale= The locale from which entries will be migrated. - --stack-api-key= API key of the source stack. You must use either the --stack-api-key flag or the --alias - flag. - -DESCRIPTION - Migration script to migrate content from HTML RTE to JSON RTE - -ALIASES - $ csdx cm:migrate-rte - -EXAMPLES - General Usage - - $ csdx cm:entries:migrate-html-rte --config-path path/to/config.json - - - - Using Flags - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path html-path --json-path json-path - - - - Nested RTE - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path modular_block_uid.block_uid.html_rte_uid --json-path modular_block_uid.block_uid.json_rte_uid - - - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path group_uid.html_rte_uid --json-path group_uid.json_rte_uid - - - - Global Field - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type global_field_uid --global-field --html-path html-path --json-path json-path -``` - -_See code: [src/commands/cm/entries/migrate-html-rte.js](https://github.com/contentstack/cli/blob/main/packages/contentstack-migrate-rte/src/commands/cm/entries/migrate-html-rte.js)_ - -## `csdx cm:migrate-rte` - -Migration script to migrate content from HTML RTE to JSON RTE - -``` -USAGE - $ csdx cm:migrate-rte [-c ] [-a ] [--stack-api-key ] [--content-type ] - [--global-field] [-y] [--branch ] [--html-path --json-path ] [--delay ] [--locale - ] [--batch-limit ] - -FLAGS - -a, --alias= Enter the alias name. You must use either the --alias flag or the --stack-api-key flag. - -c, --config-path= Specify the path where your config file is located. - -y, --yes Avoids reconfirmation of your configuration. - --batch-limit= [default: 50] Provide batch limit for updating entries (default: 50). - --branch= The name of the branch to be used. - --content-type= Specify the UID of the content type for which you want to migrate HTML RTE content. - --delay= [default: 1000] To set the interval time between the migration of HTML RTE to JSON RTE in - subsequent entries of a content type. The default value is 1,000 milliseconds. - --global-field Checks whether the specified UID belongs to a content type or a global field. This flag - is set to false by default. - --html-path= Enter the path to the HTML RTE whose content you want to migrate. - --json-path= Enter the path to the JSON RTE to which you want to migrate the HTML RTE content. - --locale= The locale from which entries will be migrated. - --stack-api-key= API key of the source stack. You must use either the --stack-api-key flag or the --alias - flag. - -DESCRIPTION - Migration script to migrate content from HTML RTE to JSON RTE - -ALIASES - $ csdx cm:migrate-rte - -EXAMPLES - General Usage - - $ csdx cm:entries:migrate-html-rte --config-path path/to/config.json - - - - Using Flags - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path html-path --json-path json-path - - - - Nested RTE - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path modular_block_uid.block_uid.html_rte_uid --json-path modular_block_uid.block_uid.json_rte_uid - - - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path group_uid.html_rte_uid --json-path group_uid.json_rte_uid - - - - Global Field - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type global_field_uid --global-field --html-path html-path --json-path json-path -``` - diff --git a/packages/contentstack-migrate-rte/bin/run.cmd b/packages/contentstack-migrate-rte/bin/run.cmd deleted file mode 100644 index 968fc30758..0000000000 --- a/packages/contentstack-migrate-rte/bin/run.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off - -node "%~dp0\run" %* diff --git a/packages/contentstack-migrate-rte/bin/run.js b/packages/contentstack-migrate-rte/bin/run.js deleted file mode 100755 index 8baf302391..0000000000 --- a/packages/contentstack-migrate-rte/bin/run.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node - -// eslint-disable-next-line unicorn/prefer-top-level-await -(async () => { - const oclif = await import('@oclif/core'); - await oclif.execute({ development: false, dir: __dirname }); -})(); diff --git a/packages/contentstack-migrate-rte/package.json b/packages/contentstack-migrate-rte/package.json deleted file mode 100644 index 85e867c762..0000000000 --- a/packages/contentstack-migrate-rte/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "@contentstack/cli-cm-migrate-rte", - "description": "Contentstack CLI plugin to migrate HTML RTE to JSON RTE", - "version": "1.6.2", - "author": "contentstack", - "bugs": "https://github.com/contentstack/cli/issues", - "dependencies": { - "@contentstack/cli-command": "~1.6.1", - "@contentstack/cli-utilities": "~1.15.0", - "@contentstack/json-rte-serializer": "~2.1.0", - "@oclif/core": "^4.3.0", - "@oclif/plugin-help": "^6.2.28", - "collapse-whitespace": "^1.1.7", - "chalk": "^4.1.2", - "jsdom": "^20.0.3", - "jsonschema": "^1.5.0", - "lodash": "^4.17.21", - "nock": "^13.5.6", - "omit-deep-lodash": "^1.1.7", - "sinon": "^19.0.5" - }, - "devDependencies": { - "@oclif/test": "^4.1.13", - "chai": "^4.5.0", - "eslint": "^8.57.1", - "eslint-config-oclif": "^6.0.62", - "mocha": "^10.8.2", - "nyc": "^15.1.0", - "oclif": "^4.17.46" - }, - "engines": { - "node": ">=14.0.0" - }, - "files": [ - "/npm-shrinkwrap.json", - "/oclif.manifest.json", - "/src" - ], - "homepage": "https://github.com/contentstack/cli", - "keywords": [ - "contentstack", - "cli", - "plugin", - "JSON RTE" - ], - "license": "MIT", - "oclif": { - "commands": "./src/commands", - "bin": "csdx", - "repositoryPrefix": "<%- repo %>/blob/main/packages/contentstack-migrate-rte/<%- commandPath %>" - }, - "repository": "contentstack/cli", - "scripts": { - "postpack": "rm -f oclif.manifest.json", - "prepack": "oclif manifest && oclif readme", - "test": "nyc mocha --forbid-only \"test/**/*.test.js\"", - "version": "oclif readme && git add README.md", - "clean": "rm -rf ./node_modules tsconfig.build.tsbuildinfo" - }, - "csdxConfig": { - "expiredCommands": { - "cm:migrate-rte": "csdx cm:entries:migrate-html-rte" - }, - "shortCommandName": { - "cm:entries:migrate-html-rte": "MGRTRTE", - "cm:migrate-rte": "O-MGRTRTE" - } - } -} diff --git a/packages/contentstack-migrate-rte/src/commands/cm/entries/migrate-html-rte.js b/packages/contentstack-migrate-rte/src/commands/cm/entries/migrate-html-rte.js deleted file mode 100644 index 5a04309a1b..0000000000 --- a/packages/contentstack-migrate-rte/src/commands/cm/entries/migrate-html-rte.js +++ /dev/null @@ -1,174 +0,0 @@ -const { Command } = require('@contentstack/cli-command'); -const { printFlagDeprecation, flags } = require('@contentstack/cli-utilities'); -const { isEmpty } = require('lodash'); -const chalk = require('chalk'); -let { - getStack, - getConfig, - getToken, - updateSingleContentTypeEntries, - updateContentTypeForGlobalField, - normalizeFlags, -} = require('../../../lib/util'); - -class JsonMigrationCommand extends Command { - async run() { - const { flags: migrateRteFlags } = await this.parse(JsonMigrationCommand); - try { - const normalizedFlags = normalizeFlags(migrateRteFlags); - let config = await getConfig(normalizedFlags); - if (isEmpty(config.paths)) { - throw new Error('No value provided for the "paths" property in config.'); - } - const stackOptions = { host: this.cmaHost }; - if (config.alias) { - stackOptions.token = getToken(config.alias) - } - if (config['stack-api-key']) { - stackOptions.stackApiKey = config['stack-api-key'] - } - if (config.branch) stackOptions.branch = config.branch; - let stack = await getStack(stackOptions); - config.entriesCount = 0; - config.contentTypeCount = 0; - config.errorEntriesUid = {}; - if (config['global-field']) { - await updateContentTypeForGlobalField(stack, config['content-type'], config); - } else { - await updateSingleContentTypeEntries(stack, config['content-type'], config); - } - console.log( - chalk.green(`\nUpdated ${config.contentTypeCount} Content Type(s) and ${config.entriesCount} Entrie(s)`), - ); - if (config.errorEntriesUid && Object.keys(config.errorEntriesUid).length > 0) { - const failedCTs = Object.keys(config.errorEntriesUid); - for (const failedCT of failedCTs) { - const locales = Object.keys(config.errorEntriesUid[failedCT]); - for (const locale of locales) { - console.log( - chalk.red( - `Faced issue while migrating some entrie(s) for "${failedCT}" Content-type in "${locale}" locale,"${config.errorEntriesUid[ - failedCT - ][locale].join(', ')}"`, - ), - ); - } - } - } - } catch (error) { - this.error(error.message, { exit: 2 }); - } - } -} - -JsonMigrationCommand.description = 'Migration script to migrate content from HTML RTE to JSON RTE'; - -JsonMigrationCommand.flags = { - 'config-path': flags.string({ - char: 'c', - description: 'Specify the path where your config file is located.', - required: false, - }), - alias: flags.string({ - char: 'a', - description: 'Enter the alias name. You must use either the --alias flag or the --stack-api-key flag.', - required: false, - }), - 'stack-api-key': flags.string({ - description: 'API key of the source stack. You must use either the --stack-api-key flag or the --alias flag.', - required: false, - }), - 'content-type': flags.string({ - description: 'Specify the UID of the content type for which you want to migrate HTML RTE content.', - required: false, - }), - 'global-field': flags.boolean({ - description: 'Checks whether the specified UID belongs to a content type or a global field. This flag is set to false by default.', - default: false, - required: false, - }), - yes: flags.boolean({ - char: 'y', - description: 'Avoids reconfirmation of your configuration.', - default: false, - required: false, - }), - branch: flags.string({ - description: 'The name of the branch to be used.', - required: false, - }), - 'html-path': flags.string({ - description: 'Enter the path to the HTML RTE whose content you want to migrate.', - dependsOn: ['json-path'], - required: false, - }), - 'json-path': flags.string({ - description: 'Enter the path to the JSON RTE to which you want to migrate the HTML RTE content.', - dependsOn: ['html-path'], - required: false, - }), - delay: flags.integer({ - description: 'To set the interval time between the migration of HTML RTE to JSON RTE in subsequent entries of a content type. The default value is 1,000 milliseconds.', - default: 1000, - required: false, - }), - locale: flags.string({ - description: 'The locale from which entries will be migrated.', - required: false, - }), - 'batch-limit': flags.integer({ - description: 'Provide batch limit for updating entries (default: 50).', - default: 50, - }), - - // To be deprecated - configPath: flags.string({ - char: 'p', - description: 'Path to the config file', - hidden: true, - parse: printFlagDeprecation(['-p', '--configPath'], ['-c', '--config-path']), - }), - content_type: flags.string({ - description: 'The content-type from which entries need to be migrated', - hidden: true, - parse: printFlagDeprecation(['-c', '--content_type'], ['--content-type']), - }), - isGlobalField: flags.boolean({ - char: 'g', - description: 'Indicates that the current content type is a global field (default: false)', - hidden: true, - parse: printFlagDeprecation(['-g', '--isGlobalField'], ['--global-field']), - }), - htmlPath: flags.string({ - char: 'h', - description: 'Provide the path of HTML RTE to migrate', - hidden: true, - parse: printFlagDeprecation(['-h', '--htmlPath'], ['--html-path']), - }), - jsonPath: flags.string({ - char: 'j', - description: 'Provide the path of JSON RTE to migrate', - hidden: true, - parse: printFlagDeprecation(['-j', '--jsonPath'], ['--json-path']), - }), -}; - -JsonMigrationCommand.examples = [ - 'General Usage', - 'csdx cm:entries:migrate-html-rte --config-path path/to/config.json', - '', - 'Using Flags', - 'csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path html-path --json-path json-path', - '', - 'Nested RTE', - 'csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path modular_block_uid.block_uid.html_rte_uid --json-path modular_block_uid.block_uid.json_rte_uid', - '', - 'csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path group_uid.html_rte_uid --json-path group_uid.json_rte_uid', - '', - 'Global Field', - 'csdx cm:entries:migrate-html-rte --alias alias --content-type global_field_uid --global-field --html-path html-path --json-path json-path', -]; - -JsonMigrationCommand.aliases = ['cm:migrate-rte']; - -module.exports = JsonMigrationCommand; diff --git a/packages/contentstack-migrate-rte/src/lib/util/config_schema.json b/packages/contentstack-migrate-rte/src/lib/util/config_schema.json deleted file mode 100644 index 81410c98a3..0000000000 --- a/packages/contentstack-migrate-rte/src/lib/util/config_schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "http://example.com/example.json", - "type": "object", - "title": "The root schema", - "description": "The root schema comprises the entire JSON document.", - "default": {}, - "examples": [ - { - "alias": "test1", - "content-type": "Migration Test", - "global-field": false, - "paths": [ - { - "from": "rich_text", - "to": "supercharged_rte" - } - ] - } - ], - "required": ["content-type", "paths"], - "properties": { - "alias": { - "$id": "#/properties/alias", - "type": "string", - "title": "The alias schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": ["test1"] - }, - "branch": { - "$id": "#/properties/branch", - "type": "string", - "title": "The branch schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": ["test1"] - }, - "stack-api-key": { - "$id": "#/properties/stack-api-key", - "type": "string", - "title": "The Stack api key", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": ["Migration Test"] - }, - "content-type": { - "$id": "#/properties/content-type", - "type": "string", - "title": "The content-type schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": ["Migration Test"] - }, - "global-field": { - "$id": "#/properties/global-field", - "type": "boolean", - "title": "The global-field schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [false] - }, - "paths": { - "$id": "#/properties/paths", - "type": "array", - "title": "The paths schema", - "description": "An explanation about the purpose of this instance.", - "default": [], - "examples": [ - [ - { - "from": "rich_text", - "to": "supercharged_rte" - } - ] - ], - "additionalItems": true, - "items": { - "$id": "#/properties/paths/items", - "anyOf": [ - { - "$id": "html-path and json-path are required", - "type": "object", - "title": "The first anyOf schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "from": "rich_text", - "to": "supercharged_rte" - } - ], - "required": ["from", "to"], - "properties": { - "from": { - "$id": "#/properties/paths/items/anyOf/0/properties/from", - "type": "string", - "title": "The from schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": ["rich_text"] - }, - "to": { - "$id": "#/properties/paths/items/anyOf/0/properties/to", - "type": "string", - "title": "The to schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": ["supercharged_rte"] - } - }, - "additionalProperties": true - } - ] - } - }, - "delay": { - "$id": "#/properties/delay", - "type": "integer", - "title": "The delay schema", - "description": "Provide delay in ms between two entry update", - "default": 1000, - "examples": [100] - }, - "failed-entries": { - "type": "array", - "default": [], - "title": "The failed-entries Schema", - "items": { - "type": "string", - "default": "", - "title": "A Schema", - "examples": [ - "blt1c37c346218e033e, blt6ed6d545cdc2064f, blt0594909c6f0a2e82, blt07fe0dc0d2f89e71, blt6d0d993a944947e8" - ] - }, - "examples": [ - ["blt1c37c346218e033e, blt6ed6d545cdc2064f, blt0594909c6f0a2e82, blt07fe0dc0d2f89e71, blt6d0d993a944947e8"] - ] - }, - "locale": { - "type": "array", - "default": [], - "title": "The locale Schema", - "items": { - "type": "string", - "default": "", - "title": "A Schema", - "examples": ["en-in"] - }, - "paths": { - "$id": "#/properties/paths", - "type": "array", - "title": "The paths schema", - "description": "An explanation about the purpose of this instance.", - "default": [], - "examples": [ - [ - { - "from": "rich_text", - "to": "supercharged_rte" - } - ] - ], - "additionalItems": true, - "items": { - "$id": "#/properties/paths/items", - "anyOf": [ - { - "$id": "#/properties/paths/items/anyOf/0", - "type": "object", - "title": "The first anyOf schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "from": "rich_text", - "to": "supercharged_rte" - } - ], - "required": ["from", "to"], - "properties": { - "from": { - "$id": "#/properties/paths/items/anyOf/0/properties/from", - "type": "string", - "title": "The from schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": ["rich_text"] - }, - "to": { - "$id": "#/properties/paths/items/anyOf/0/properties/to", - "type": "string", - "title": "The to schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": ["supercharged_rte"] - } - }, - "additionalProperties": true - } - ] - } - }, - "delay": { - "$id": "#/properties/delay", - "type": "integer", - "title": "The delay schema", - "description": "Provide delay in ms between two entry update", - "default": 1000, - "examples": [100] - }, - "failed-entries": { - "type": "array", - "default": [], - "title": "The failed-entries Schema", - "items": { - "type": "string", - "default": "", - "title": "A Schema", - "examples": [ - "blt1c37c346218e033e, blt6ed6d545cdc2064f, blt0594909c6f0a2e82, blt07fe0dc0d2f89e71, blt6d0d993a944947e8" - ] - }, - "examples": [ - ["blt1c37c346218e033e, blt6ed6d545cdc2064f, blt0594909c6f0a2e82, blt07fe0dc0d2f89e71, blt6d0d993a944947e8"] - ] - }, - "locale": { - "type": "array", - "default": [], - "title": "The locale Schema", - "items": { - "type": "string", - "default": "", - "title": "A Schema", - "examples": ["en-in"] - }, - "examples": [["en-in"]] - }, - "batch-limit": { - "type": "integer", - "default": 50, - "title": "The batch-limit Schema", - "examples": [30], - "maximum": 100, - "minimum": 1 - } - }, - "batch-limit": { - "type": "integer", - "default": 50, - "title": "The batch-limit Schema", - "examples": [30], - "maximum": 100, - "minimum": 1 - } - }, - "oneOf": [ - { - "type": "object", - "title": "stack-api-key", - "required": ["stack-api-key"] - }, - { - "type": "object", - "title": "alias", - "required": ["alias"] - } - ], - "additionalProperties": true -} diff --git a/packages/contentstack-migrate-rte/src/lib/util/index.js b/packages/contentstack-migrate-rte/src/lib/util/index.js deleted file mode 100644 index fef9df0159..0000000000 --- a/packages/contentstack-migrate-rte/src/lib/util/index.js +++ /dev/null @@ -1,720 +0,0 @@ -const { Command } = require('@contentstack/cli-command'); -const command = new Command(); -const chalk = require('chalk'); -const { - isEmpty, - find, - get, - isArray, - isUndefined, - set, - flatten, - cloneDeep, - isNil, - isNull, - isPlainObject, -} = require('lodash'); -const Validator = require('jsonschema').Validator; -const configSchema = require('./config_schema.json'); -const { JSDOM } = require('jsdom'); -const collapseWithSpace = require('collapse-whitespace'); -const { htmlToJson } = require('@contentstack/json-rte-serializer'); -const nodePath = require('path'); -const { - cliux, - managementSDKClient, - isAuthenticated, - doesBranchExist, - pathValidator, -} = require('@contentstack/cli-utilities'); -const packageValue = require('../../../package.json'); -const isBlank = (variable) => { - return isNil(variable) || isEmpty(variable); -}; - -async function getStack(data) { - const stackOptions = {}; - const options = { - host: data.host, - application: `json-rte-migration/${packageValue.version}`, - timeout: 120000, - }; - if (data.token) { - const tokenDetails = data.token; - stackOptions['api_key'] = tokenDetails.apiKey; - options['management_token'] = tokenDetails.token; // need to pass management token so that the sdk doesn't get configured with authtoken (throws error in case of oauth, if the provided stack doesn't belong to the org selected while logging in with oauth) - stackOptions['management_token'] = tokenDetails.token; - } - if (data.stackApiKey) { - if (!isAuthenticated()) { - throw new Error( - 'Please login to proceed further. Or use `--alias` instead of `--stack-api-key` to proceed without logging in.', - ); - } - stackOptions['api_key'] = data.stackApiKey; - } - if (data.branch) options.branchName = data.branch; - const client = await managementSDKClient(options); - const stack = client.stack(stackOptions); - - stack.host = data.host; - if (data.branch) { - let branchData = await doesBranchExist(stack, data.branch); - if (branchData && branchData.errorCode) { - throw new Error(branchData.errorMessage); - } - } - return stack; -} - -const deprecatedFields = { - configPath: 'config-path', - content_type: 'content-type', - isGlobalField: 'global-field', - htmlPath: 'html-path', - jsonPath: 'json-path', -}; -function normalizeFlags(config) { - let normalizedConfig = cloneDeep(config); - Object.keys(deprecatedFields).forEach((key) => { - if (normalizedConfig.hasOwnProperty(key)) { - normalizedConfig[deprecatedFields[key]] = normalizedConfig[key]; - delete normalizedConfig[key]; - } - }); - return normalizedConfig; -} - -const customBar = cliux.progress({ - format: '{title} ' + '| {bar} | {value}/{total} Entries', - barCompleteChar: '\u2588', - barIncompleteChar: '\u2591', - stream: process.stdout, -}); -async function getConfig(flags) { - try { - let config; - if (flags['config-path']) { - const configPath = flags['config-path']; - config = require(pathValidator(configPath)); - } else { - config = { - 'content-type': flags['content-type'], - 'global-field': flags['global-field'], - paths: [ - { - from: flags['html-path'] || flags.htmlPath, - to: flags['json-path'] || flags.jsonPath, - }, - ], - delay: flags.delay, - 'batch-limit': flags['batch-limit'], - }; - if (flags.locale) { - config.locale = [flags.locale]; - } - if (flags.branch) { - config.branch = flags['branch']; - } - if (flags.alias) { - config.alias = flags.alias; - } - if (flags['stack-api-key']) { - config['stack-api-key'] = flags['stack-api-key']; - } - } - if (checkConfig(config)) { - let confirmed = await confirmConfig(config, flags.yes); - if (confirmed) { - return config; - } - throw new Error('User aborted the command.'); - } - } catch (error) { - if (error.code === 'ENOENT' || error.code === 'MODULE_NOT_FOUND') { - throw new Error('The specified path to config file does not exist.'); - } - if (error.schema && error.errors && error.errors[0]) { - throwConfigError(error.errors[0]); - } - throw error; - } -} -function getToken(alias) { - try { - return command.getToken(alias); - } catch (error) { - throw new Error('Invalid alias provided for the management token.'); - } -} -function getContentType(stack, contentTypeUid) { - return stack - .contentType(contentTypeUid) - .fetch({ include_global_field_schema: true }) - .then((content) => content) - .catch((error) => { - throw new Error(error.errorMessage || error.message); - }); -} -function getGlobalField(stack, globalFieldUid) { - return stack - .globalField(globalFieldUid) - .fetch({ include_content_types: true }) - .then((content) => content) - .catch((error) => { - throw new Error(error.errorMessage || error.message); - }); -} -function throwConfigError(error) { - const { name, path, argument } = error; - let fieldName = path.join('.'); - if (fieldName === '') { - fieldName = argument || 'Config'; - } - if (name === 'required') { - throw new Error(`${fieldName} is mandatory while defining config.`); - } else if (name === 'type') { - throw new Error(`Invalid key type. ${fieldName} must be of ${argument[0] || 'string'} type(s).`); - } else if (name === 'minimum' || name === 'maximum') { - throw new Error(`${fieldName} must be between 1 and 100.`); - } -} -function checkConfig(config) { - let v = new Validator(); - let res = v.validate(config, configSchema, { throwError: true, nestedErrors: true }); - return res.valid; -} -function prettyPrint(data) { - console.log(chalk.yellow('Configuration to be used for executing this command:')); - console.log(chalk.grey(JSON.stringify(data, null, 2))); - console.log('\n'); -} -async function confirmConfig(config, skipConfirmation) { - if (skipConfirmation) { - return Promise.resolve(true); - } - prettyPrint(config); - return await cliux.confirm('Do you want to continue with this configuration ? [yes or no]'); -} -const delay = (ms) => new Promise((res) => setTimeout(res, ms)); - -async function updateEntriesInBatch(contentType, config, skip = 0, retry = 0, locale = undefined) { - let title = `Migrating entries for ${contentType.uid}`; - let extraParams = {}; - if (locale) { - extraParams.locale = locale; - extraParams.query = { locale: locale }; - } - if (config['failed-entries'] && config['failed-entries'].length > 0) { - title = `Migrating failed entries for ${contentType.uid}`; - if (extraParams.query) { - extraParams.query['uid'] = { $in: config['failed-entries'] }; - } else { - extraParams = { query: { uid: { $in: config['failed-entries'] } } }; - } - } - let entryQuery = { - include_count: true, - ...extraParams, - skip: skip, - limit: config['batch-limit'] || 50, - }; - try { - await contentType - .entry() - .query(entryQuery) - .find() - .then(async (entriesResponse) => { - try { - customBar.start(entriesResponse.count, skip, { - title: title, - }); - } catch (error) {} - skip += entriesResponse.items.length; - let entries = entriesResponse.items; - - for (const entry of entries) { - try { - customBar.increment(); - } catch (error) {} - await updateSingleEntry(entry, contentType, config); - await delay(config.delay || 1000); - } - if (skip === entriesResponse.count) { - return Promise.resolve(); - } - await updateEntriesInBatch(contentType, config, skip, 0, locale); - }); - } catch (error) { - console.error(`Error while fetching batch of entries: ${error.message}`); - if (retry < 3) { - retry += 1; - console.error(`Retrying again in 5 seconds... (${retry}/3)`); - await delay(5000); - await updateEntriesInBatch(contentType, config, skip, retry, locale); - } else { - throw new Error(`Max retry exceeded: Error while fetching batch of entries: ${error.message}`); - } - } -} -async function updateSingleContentTypeEntries(stack, contentTypeUid, config) { - let contentType = await getContentType(stack, contentTypeUid); - let schema = contentType.schema; - for (const path of config.paths) { - if (!isEmpty(schema)) { - isPathValid(contentType.schema, path); - } else { - throw new Error(`The ${contentTypeUid} content type contains an empty schema.`); - } - } - if (config.locale && isArray(config.locale) && config.locale.length > 0) { - const locales = config.locale; - for (const locale of locales) { - console.log(`\nMigrating entries for "${contentTypeUid}" Content-type in "${locale}" locale`); - await updateEntriesInBatch(contentType, config, 0, 0, locale); - await delay(config.delay || 1000); - } - } else { - await updateEntriesInBatch(contentType, config); - } - config.contentTypeCount += 1; - try { - customBar.stop(); - } catch (error) {} -} -async function updateSingleContentTypeEntriesWithGlobalField(contentType, config) { - let schema = contentType.schema; - for (const path of config.paths) { - isPathValid(schema, path); - } - if (config.locale && isArray(config.locale) && config.locale.length > 0) { - const locales = config.locale; - for (const locale of locales) { - console.log(`\nMigrating entries for ${contentType.uid} in locale ${locale}`); - await updateEntriesInBatch(contentType, config, 0, 0, locale); - await delay(config.delay || 1000); - } - } else { - await updateEntriesInBatch(contentType, config); - } - config.contentTypeCount += 1; -} -async function updateSingleEntry(entry, contentType, config) { - let schema = contentType.schema; - let paths = config.paths; - let entryUploadPath = uploadPaths(schema); - entryUploadPath = Object.keys(entryUploadPath); - for (const path of paths) { - let htmlPath = path.from.split('.'); - let jsonPath = path.to.split('.'); - let htmlRteUid = htmlPath[htmlPath.length - 1]; - let jsonRteUid = jsonPath[jsonPath.length - 1]; - let parentPath = htmlPath.slice(0, htmlPath.length - 1).join('.'); - setEntryData(parentPath, entry, schema, { htmlRteUid, jsonRteUid }); - } - try { - for (const filePath of entryUploadPath) { - let fileFieldPath = filePath.split('.'); - let fileUid = fileFieldPath[fileFieldPath.length - 1]; - let parentFileFieldPath = fileFieldPath.slice(0, fileFieldPath.length - 1).join('.'); - unsetResolvedUploadData(parentFileFieldPath, entry, schema, { fileUid }); - } - } catch (error) { - console.error(`Error while unsetting resolved upload data: ${error.message}`); - } - await handleEntryUpdate(entry, config, 0); -} -async function handleEntryUpdate(entry, config, retry = 0) { - try { - await entry.update({ locale: entry.locale }); - config.entriesCount += 1; - } catch (error) { - console.log(chalk.red(`Error while updating '${entry.uid}' entry`)); - if (error.errors && isPlainObject(error.errors)) { - const errVal = Object.entries(error.errors); - errVal.forEach(([key, vals]) => { - console.log(chalk.red(` ${key}:- ${vals.join(',')}`)); - }); - } else { - console.log(chalk.red(`Error stack: ${error}`)); - } - if (retry < 3) { - retry += 1; - console.log(`Retrying again in 5 seconds... (${retry}/3)`); - await delay(5000); - await handleEntryUpdate(entry, config, retry); - } else { - if ( - config && - config.errorEntriesUid && - config.errorEntriesUid[entry.content_type_uid] && - config.errorEntriesUid[entry.content_type_uid][entry.locale] - ) { - config.errorEntriesUid[entry.content_type_uid][entry.locale].push(entry.uid); - } else { - set(config, ['errorEntriesUid', entry.content_type_uid, entry.locale], [entry.uid]); - } - } - } -} -function traverseSchemaForField(schema, path, field_uid) { - let paths = path.split('.'); - if (paths.length === 1) { - let field = find(schema, (o) => { - return o.uid === paths[0]; - }); - if (Boolean(field) && field.uid === field_uid) { - return field; - } - } else { - let fieldUid = paths.shift(); - let fieldSchema = find(schema, { uid: fieldUid }); - if (!isEmpty(fieldSchema)) { - if (fieldSchema.data_type === 'group' || fieldSchema.data_type === 'global_field') { - return traverseSchemaForField(fieldSchema.schema, paths.join('.'), field_uid); - } - if (fieldSchema.data_type === 'blocks') { - let blockUid = paths.shift(); - let block = find(fieldSchema.blocks, { uid: blockUid }); - if (!isEmpty(block) && block.schema) { - return traverseSchemaForField(block.schema, paths.join('.'), field_uid); - } - } - } - } - return {}; -} -function isPathValid(schema, path) { - let pathFrom = path.from.split('.'); - let htmlParentPath = pathFrom.slice(0, pathFrom.length - 1).join('.'); - const rteUid = pathFrom[pathFrom.length - 1]; - let rteSchema = traverseSchemaForField(schema, path.from, rteUid); - if (isEmpty(rteSchema)) { - throw new Error(`The specified path to ${rteUid} HTML RTE does not exist.`); - } - let ishtmlRteMultiple = rteSchema.multiple || false; - if (rteSchema.field_metadata && rteSchema.field_metadata.allow_rich_text) { - let pathTo = path.to.split('.'); - let jsonParentPath = pathTo.slice(0, pathTo.length - 1).join('.'); - - const jsonUid = pathTo[pathTo.length - 1]; - let jsonSchema = traverseSchemaForField(schema, path.to, jsonUid); - if (isEmpty(jsonSchema)) { - throw new Error(`The specified path to ${jsonUid} JSON RTE does not exist.`); - } - let isJSONRteMultiple = jsonSchema.multiple || false; - - if (jsonSchema.field_metadata && jsonSchema.field_metadata.allow_json_rte) { - if (htmlParentPath === jsonParentPath) { - if (ishtmlRteMultiple === isJSONRteMultiple) { - return true; - } - throw new Error( - `Cannot convert "${ishtmlRteMultiple ? 'Multiple' : 'Single'}" type HTML RTE to "${ - isJSONRteMultiple ? 'Multiple' : 'Single' - }" type JSON RTE.`, - ); - } else { - throw new Error( - 'To complete migration, HTML RTE and JSON RTE should be present at the same field depth level.', - ); - } - } else { - throw new Error(`The specified path to ${jsonUid} JSON RTE does not exist.`); - } - } else { - throw new Error(`The specified path to ${rteUid} HTML RTE does not exist.`); - } -} -function setEntryData(path, entry, schema, fieldMetaData) { - let paths = path.split('.'); - if (paths.length === 1 && paths[0] === '') { - paths.shift(); - } - if (paths.length > 0) { - let field = find(schema, { - uid: paths[0], - }); - if (field) { - if (field.data_type === 'group' || field.data_type === 'global_field') { - paths.shift(); - - let sub_entry_data = get(entry, field.uid); - if (isArray(sub_entry_data)) { - for (const sub_data of sub_entry_data) { - setEntryData(paths.join('.'), sub_data, field.schema, fieldMetaData); - } - } else { - setEntryData(paths.join('.'), sub_entry_data, field.schema, fieldMetaData); - } - } else if (field.data_type === 'blocks') { - if (field.blocks) { - let ModularBlockUid = paths.shift(); - let blockUid = paths.shift(); - let blockField = find(field.blocks, { uid: blockUid }); - if (blockField) { - let modularBlockDetails = get(entry, ModularBlockUid) || []; - for (const blocks of modularBlockDetails) { - let blockdata = get(blocks, blockUid); - if (blockdata) { - setEntryData(paths.join('.'), blockdata, blockField.schema, fieldMetaData); - } - } - } - } - } - } - } else if (paths.length === 0) { - if (entry) { - const { htmlRteUid, jsonRteUid } = fieldMetaData; - const htmlValue = get(entry, htmlRteUid); - // check if html field exist in traversed path - if (!isUndefined(htmlValue)) { - // if Rte field is multiple - if (isArray(htmlValue)) { - for (let i = 0; i < htmlValue.length; i++) { - let html = htmlValue[i]; - setJsonValue(html, entry, `${jsonRteUid}.${i}`); - } - } else { - setJsonValue(htmlValue, entry, jsonRteUid); - } - } - } - } -} - -function unsetResolvedUploadData(path, entry, schema, fieldMetaData) { - let paths = path.split('.'); - if (paths.length === 1 && paths[0] === '') { - paths.shift(); - } - if (paths.length > 0) { - let field = find(schema, { - uid: paths[0], - }); - if (field) { - if (field.data_type === 'group' || field.data_type === 'global_field') { - paths.shift(); - - let sub_entry_data = get(entry, field.uid); - if (isArray(sub_entry_data)) { - for (const sub_data of sub_entry_data) { - unsetResolvedUploadData(paths.join('.'), sub_data, field.schema, fieldMetaData); - } - } else { - unsetResolvedUploadData(paths.join('.'), sub_entry_data, field.schema, fieldMetaData); - } - } else if (field.data_type === 'blocks') { - if (field.blocks) { - let ModularBlockUid = paths.shift(); - let blockUid = paths.shift(); - let blockField = find(field.blocks, { uid: blockUid }); - if (blockField) { - let modularBlockDetails = get(entry, ModularBlockUid) || []; - for (const blocks of modularBlockDetails) { - let blockdata = get(blocks, blockUid); - if (blockdata) { - unsetResolvedUploadData(paths.join('.'), blockdata, blockField.schema, fieldMetaData); - } - } - } - } - } - } - } else if (paths.length === 0) { - if (entry) { - const { fileUid } = fieldMetaData; - const fieldValue = get(entry, fileUid); - if (!isUndefined(fieldValue) && !isNull(fieldValue)) { - if (isArray(fieldValue)) { - for (let i = 0; i < fieldValue.length; i++) { - const singleFile = fieldValue[i]; - if (!isUndefined(singleFile.uid)) { - set(entry, `${fileUid}.${i}`, singleFile.uid); - } - } - } else if (!isUndefined(fieldValue.uid)) { - set(entry, fileUid, fieldValue.uid); - } - } - } - } -} -function setJsonValue(html, entry, path) { - let doc = convertHtmlToJson(html); - set(entry, path, doc); -} -function convertHtmlToJson(html) { - const dom = new JSDOM(html); - let htmlDoc = dom.window.document.querySelector('body'); - collapseWithSpace(htmlDoc); - let doc; - try { - doc = htmlToJson(htmlDoc); - applyDirtyAttributesToBlock(doc); - } catch (error) { - throw new Error('Error while converting html '.concat(error.message)); - } - return doc; -} -function applyDirtyAttributesToBlock(block) { - if (block.hasOwnProperty('text')) { - return block; - } - let children = flatten([...(block.children || [])].map(applyDirtyAttributesToBlock)); - if (block.hasOwnProperty('type')) { - set(block, 'attrs.dirty', true); - } - block.children = children; - return block; -} -async function updateContentTypeForGlobalField(stack, global_field, config) { - const globalField = await getGlobalField(stack, global_field); - if (isEmpty(globalField.schema)) { - throw new Error(`The ${global_field} Global field contains an empty schema.`); - } - let allReferredContentTypes = globalField.referred_content_types; - if (!isEmpty(allReferredContentTypes)) { - for (const contentType of allReferredContentTypes) { - let contentTypeInstance = await getContentType(stack, contentType.uid); - const schema = contentTypeInstance.schema; - if (!isEmpty(schema) && !isUndefined(schema)) { - let globalFieldPaths = getGlobalFieldPath(contentTypeInstance.schema, global_field); - let newConfig = cloneDeep(config); - updateMigrationPath(globalFieldPaths, newConfig); - await updateSingleContentTypeEntriesWithGlobalField(contentTypeInstance, newConfig); - config.contentTypeCount = newConfig.contentTypeCount; - config.entriesCount = newConfig.entriesCount; - config.errorEntriesUid = newConfig.errorEntriesUid; - } else { - throw new Error(`The ${contentType.uid} content type referred in ${globalField.uid} contains an empty schema.`); - } - } - try { - customBar.stop(); - } catch (error) {} - } else { - throw new Error(`${globalField.uid} Global field is not referred in any content type.`); - } -} -function updateMigrationPath(globalFieldPaths, config) { - const newPath = []; - for (const path of config.paths) { - for (const globalFieldPath of globalFieldPaths) { - newPath.push({ from: globalFieldPath + '.' + path.from, to: globalFieldPath + '.' + path.to }); - } - } - config.paths = newPath; -} -function getGlobalFieldPath(schema, globalFieldUid) { - let paths = []; - - function genPath(prefix, path) { - return isEmpty(prefix) ? path : [prefix, path].join('.'); - } - - function traverse(fields, path) { - path = path || ''; - for (const field of fields) { - let currPath = genPath(path, field.uid); - if (field.data_type === 'group') { - traverse(field.schema, currPath); - } - - if ( - field.data_type === 'global_field' && - isUndefined(field.schema) === false && - isEmpty(field.schema) === false - ) { - if (field.reference_to === globalFieldUid) { - paths.push(currPath); - } - } - if (field.data_type === 'blocks') { - field.blocks.forEach(function (block) { - if (block.schema) { - if (block.reference_to && block.reference_to === globalFieldUid) { - paths.push(currPath + '.' + block.uid); - } - traverse(block.schema, currPath + '.' + block.uid); - } - }); - } - // experience_container - if (field.data_type === 'experience_container') { - if (field.variations) { - field.variations.forEach(function (variation) { - if (variation.schema) traverse(variation.schema, currPath + '.' + variation.uid); - }); - } - } - } - } - - if (!isEmpty(schema)) { - traverse(schema, ''); - } - - return paths; -} - -/* - Get the upload paths - */ -function uploadPaths(schema) { - return getPaths(schema, 'file'); -} - -/* -Generic function to get schema paths -*/ -function getPaths(schema, type) { - const paths = {}; - - function genPath(prefix, path) { - return isBlank(prefix) ? path : [prefix, path].join('.'); - } - - function traverse(fields, path) { - path = path || ''; - for (const element of fields) { - const field = element; - const currPath = genPath(path, field.uid); - - if (field.data_type === type) paths[currPath] = true; - - if (field.data_type === 'group') traverse(field.schema, currPath); - - if (field.data_type === 'global_field' && isUndefined(field.schema) === false && isEmpty(field.schema) === false) - traverse(field.schema, currPath); - if (field.data_type === 'blocks') { - field.blocks.forEach(function (block) { - if (block.schema) traverse(block.schema, currPath + '.' + block.uid); - }); - } - // experience_container - if (field.data_type === 'experience_container') { - field.variations.forEach(function (variation) { - if (variation.schema) traverse(variation.schema, currPath + '.' + variation.uid); - }); - } - } - } - - traverse(schema); - - return paths; -} - -module.exports = { - getStack, - getConfig, - getToken, - getContentType, - updateEntriesInBatch, - updateSingleContentTypeEntries, - updateContentTypeForGlobalField, - command, - normalizeFlags, -}; diff --git a/packages/contentstack-migrate-rte/test/commands/json-migration.test.js b/packages/contentstack-migrate-rte/test/commands/json-migration.test.js deleted file mode 100644 index ef7c7f4c0d..0000000000 --- a/packages/contentstack-migrate-rte/test/commands/json-migration.test.js +++ /dev/null @@ -1,940 +0,0 @@ -const { runCommand } = require('@oclif/test'); -const sinon = require('sinon'); -const qs = require('querystring'); -const nock = require('nock'); -const { cliux } = require('@contentstack/cli-utilities'); -const { expect } = require('chai'); -const { fancy } = require('fancy-test'); -const { - getToken, - getContentType, - getEntries, - getExpectedOutput, - getGlobalField, - getEntriesOnlyUID, - getEntry, -} = require('../utils'); -const omitDeep = require('omit-deep-lodash'); -const { isEqual, cloneDeep } = require('lodash'); -const { command } = require('../../src/lib/util'); - -describe('Migration Config validation', () => { - const getTokenCallback = sinon.stub(); - getTokenCallback - .withArgs('test1') - .returns({ - token: 'testManagementToken', - apiKey: 'testApiKey', - type: 'management', - }) - .withArgs('invalidAlias') - .throws("Token with alias 'invalidAlias' was not found"); - - fancy - .stub(cliux, 'confirm', () => false) - .it('deny config confirmation', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithsinglerte', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain('User aborted the command.'); - }); - - fancy - .stub(cliux, 'confirm', () => true) - .stub(command, 'getToken', getTokenCallback) - .it('throw error on Empty paths', async () => { - const {error} = await runCommand( - ['cm:entries:migrate-html-rte', '--config-path', './test/dummy/config/configWithEmptyPath.json', '--yes'], - { root: process.cwd() }, - ); - expect(error.message).to.contain('No value provided for the "paths" property in config.'); - }); - - fancy - .stub(cliux, 'confirm', () => true) - .stub(command, 'getToken', getTokenCallback) - .it('throw error on invalid config type', async () => { - const {error} = await runCommand( - ['cm:entries:migrate-html-rte', '--config-path', '../test/dummy/config/invalidConfig.json', '--yes'], - { root: process.cwd() }, - ); - expect(error.message).to.contain('The specified path to config file does not exist.'); - }); - - fancy - .stub(cliux, 'confirm', () => true) - .it('throw error on config without alias property', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--content-type', - 'contenttypewithsinglerte', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain('is not exactly one from "stack-api-key","alias"'); - }); - - fancy - .stub(cliux, 'confirm', () => true) - .stub(command, 'getToken', getTokenCallback) - .it('throw error on invalidAlias', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'invalidAlias', - '--content-type', - 'contenttypewithsinglerte', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain('Invalid alias provided for the management token.'); - }); - - fancy - .stub(cliux, 'confirm', () => true) - .stub(command, 'getToken', getTokenCallback) - .it('throw error on invalid config file', async () => { - const { error } = await runCommand( - ['cm:entries:migrate-html-rte', '--config-path', './test/dummy/config/configWithInvalidPath.json', '--yes'], - { root: process.cwd() }, - ); - expect(error.message).to.contain('The specified path to config file does not exist.'); - }); -}); -describe('Content Type with Single RTE Field of Single Type', function () { - this.timeout(1000000); - let token = getToken('test1'); - beforeEach(() => { - nock(`${command.cmaAPIUrl}`, { - reqheaders: { - api_key: token.apiKey, - authorization: token.token, - }, - }) - .persist() - .get(/\/v3\/content_types\/(\w)*/) - .query({ - include_global_field_schema: true, - }) - .reply((uri) => { - var match = uri.match(/\/v3\/content_types\/((\w)*)/); - return getContentType(match[1]); - }); - nock(`${command.cmaAPIUrl}`, { - reqheaders: { - api_key: token.apiKey, - authorization: token.token, - }, - }) - .persist() - .get(/\/v3\/content_types\/((\w)*)\/entries/) - .query({ - include_count: true, - skip: 0, - limit: 100, - 'only[Base][]': 'uid', - }) - .reply(200, (uri) => { - var match = uri.match(/\/v3\/content_types\/((\w)*)\/entries/); - return getEntriesOnlyUID(match[1]); - }); - - nock(`${command.cmaAPIUrl}`, { - reqheaders: { - api_key: token.apiKey, - authorization: token.token, - }, - }) - .persist() - .get(/\/v3\/content_types\/((\w)*)\/entries/) - .query(true) - .reply(200, function (uri) { - let query = this.req.options.search; - query = query.substring(1); - let locale = undefined; - query = qs.parse(query); - if (query.locale) { - locale = query.locale; - } - var match = uri.match(/\/v3\/content_types\/((\w)*)\/entries/); - return getEntries(match[1], locale); - }); - // mock get locale - nock(`${command.cmaAPIUrl}`, { - reqheaders: { - api_key: token.apiKey, - authorization: token.token, - }, - }) - .persist() - .get(/\/v3\/content_types\/((\w)*)\/entries\/((\w)*)\/locale/) - .query({ - deleted: false, - }) - .reply(200, () => { - return { - locales: [ - { - code: 'en-in', - localized: true, - }, - { - code: 'en-us', - }, - ], - }; - }); - - // mock single entry fetch - nock(`${command.cmaAPIUrl}`, { - reqheaders: { - api_key: token.apiKey, - authorization: token.token, - }, - }) - .persist() - .get(/\/v3\/content_types\/((\w)*)\/entries\/((\w)*)/) - .query(true) - .reply(200, (uri) => { - const query = this.queries; - let match = uri.match(/\/v3\/content_types\/((\w)*)\/entries\/((\w)*)/); - if (query.locale) { - return getEntry(match[1], match[3], query.locale); - } else { - return getEntry(match2[1], match2[3]); - } - }); - - nock(`${command.cmaAPIUrl}`, { - reqheaders: { - api_key: token.apiKey, - authorization: token.token, - }, - }) - .persist() - .put(/\/v3\/content_types\/((\w)*)\/entries/) - .reply((uri, body) => { - let match = uri.match(/\/v3\/content_types\/((\w)*)\/entries\/((\w)*)\?locale=((\w|-)*)/); - let responseModified = cloneDeep(omitDeep(body, ['uid'])); - let expectedResponse = omitDeep(getExpectedOutput(match[1], match[3], match[5]), ['uid']); - expectedResponse = cloneDeep(expectedResponse); - if (isEqual(responseModified, expectedResponse)) { - return [ - 200, - { - notice: 'Entry updated successfully.', - entry: {}, - }, - ]; - } - return [ - 400, - { - notice: 'Update Failed.', - error_message: 'Entry update failed.', - entry: {}, - }, - ]; - }); - }); - const getTokenCallback = sinon.stub(); - getTokenCallback.withArgs('test1').returns({ - token: 'testManagementToken', - apiKey: 'testApiKey', - type: 'management', - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using config file w/o locale', async () => { - const { stdout } = await runCommand( - ['cm:entries:migrate-html-rte', '--config-path', './test/dummy/config/config.json', '--yes'], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 1 Content Type(s) and 2 Entrie(s)'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using config file w/ locale', async () => { - const { stdout } = await runCommand( - ['cm:entries:migrate-html-rte', '--config-path', './test/dummy/config/config_locale.json', '--yes'], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 1 Content Type(s) and 1 Entrie(s)'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using config file w/ multiple locale', async () => { - const { stdout } = await runCommand( - ['cm:entries:migrate-html-rte', '--config-path', './test/dummy/config/config-locale-2.json', '--yes'], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 1 Content Type(s) and 3 Entrie(s)'); - }); - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using flags (w/o locale)', async () => { - const { stdout } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithsinglerte', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 1 Content Type(s) and 2 Entrie(s)'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using flags w/ locale', async () => { - const { stdout } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithsinglerte', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--locale', - 'en-in', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 1 Content Type(s) and 1 Entrie(s)'); - }); - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on invalid html rte path', async () => { - const { error } = await runCommand([ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithsinglerte', - '--html-path', - 'rich_text_editor.invalidPath', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ],{ root: process.cwd() }); - expect(error.message).to.contain('The specified path to invalidPath HTML RTE does not exist.'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on invalid html rte field schema', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithinvalidhtmlrteschema', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain('The specified path to rich_text_editor HTML RTE does not exist.'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on invalid json rte field schema', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithinvalidjsonrteschema', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain('The specified path to supercharged_rte JSON RTE does not exist.'); - }); - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on invalid json rte path', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithsinglerte', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte.invalidPath', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain('The specified path to invalidPath JSON RTE does not exist.'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on migration of Mutiple Html rte with single Json rte', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--config-path', - './test/dummy/config/configForInvalidContentType.json', - '--yes', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain('Cannot convert "Multiple" type HTML RTE to "Single" type JSON RTE.'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on content type with empty schema', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithemptyschema', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain('The contenttypewithemptyschema content type contains an empty schema.'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on different level rte migration', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypedifferentlevelrte', - '--html-path', - 'group.rich_text_editor', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain( - 'To complete migration, HTML RTE and JSON RTE should be present at the same field depth level.', - ); - }); - - fancy - .stub(cliux, 'confirm', () => true) - .stub(command, 'getToken', getTokenCallback) - .it('throw error on invalid contenttype', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'invalidContentType', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain("The Content Type 'invalidContentType' was not found. Please try again."); - }); - - fancy - .skip() - .stub(cliux, 'confirm', () => true) - .stub(command, 'getToken', getTokenCallback) - .it('notify user on entry update failed', async () => { - const { stdout } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithentryupdateerror', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(stdout).to.contain( - `Faced issue while migrating some entrie(s) for "contenttypewithentryupdateerror" Content-type in "en-us" locale,"blta9b16ac2827c54ed, blta9b16ac2827c54e1"`, - ); - }); - - fancy - .skip() - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('should have proper json structure for images migrated from HTML RTE', async () => { - const { stdout } = await runCommand( - ['cm:entries:migrate-html-rte', '--config-path', './test/dummy/config/config-for-images-in-rte.json', '--yes'], - { root: process.cwd() }, - ); - expect(stdout).to.match(/Updated \d+ Content Type\(s\) and \d+ Entrie\(s\)/); - }); -}); -describe('Global Field Migration', () => { - let token = getToken('test1'); - beforeEach(() => { - nock(`${command.cmaAPIUrl}`, { - reqheaders: { - api_key: token.apiKey, - authorization: token.token, - }, - }) - .persist() - .get(/\/v3\/global_fields\/([a-zA-Z_])*/) - .query({ - include_content_types: true, - }) - .reply((uri) => { - var match = uri.match(/\/v3\/global_fields\/(([a-zA-Z_])*)/); - return getGlobalField(match[1]); - }); - }); - - const getTokenCallback = sinon.stub(); - getTokenCallback.withArgs('test1').returns({ - token: 'testManagementToken', - apiKey: 'testApiKey', - type: 'management', - }); - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using config file', async () => { - const { stdout } = await runCommand( - ['cm:entries:migrate-html-rte', '--config-path', './test/dummy/config/configForGlobalField.json', '--yes'], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 2 Content Type(s) and 2 Entrie(s)'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on global field with empty referred content_types', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'globalfieldwithemptycontenttype', - '--global-field', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain('globalfieldformigration Global field is not referred in any content type.'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on global field with invalid content_type', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'globalfieldwithinvalidcontenttype', - '--global-field', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain( - 'The contenttypewithemptyschema content type referred in globalfieldformigration contains an empty schema.', - ); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on global field with empty schema', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'globalfieldwithemptyschema', - '--global-field', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain('The globalfieldwithemptyschema Global field contains an empty schema.'); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on global field with empty schema content_type', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'globalfieldwithemptyschemacontenttype', - '--global-field', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain( - 'The contenttypewithemptyschema content type referred in globalfieldwithemptyschemacontenttype contains an empty schema.', - ); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('throw error on invalid global_field uid', async () => { - const { error } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'invalidUidGlobalfield', - '--global-field', - '--html-path', - 'rich_text_editor', - '--json-path', - 'supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(error.message).to.contain("The Global Field 'invalidUidGlobalfield' was not found. Please try again."); - }); -}); - -describe('Content Type with single rte of multiple type', () => { - const getTokenCallback = sinon.stub(); - getTokenCallback.withArgs('test1').returns({ - token: 'testManagementToken', - apiKey: 'testApiKey', - type: 'management', - }); - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using config file', async () => { - const {stdout} = await runCommand( - ['cm:entries:migrate-html-rte', '--config-path', './test/dummy/config/configForMultipleRte.json', '--yes'], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 1 Content Type(s) and 1 Entrie(s)'); - }); -}); - -describe('Content Type with Single RTE inside modular block', () => { - const getTokenCallback = sinon.stub(); - getTokenCallback.withArgs('test1').returns({ - token: 'testManagementToken', - apiKey: 'testApiKey', - type: 'management', - }); - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using Flags', async () => { - const { stdout } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithmodularblock', - '--html-path', - 'modular_blocks.test1.rich_text_editor', - '--json-path', - 'modular_blocks.test1.supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 1 Content Type(s) and 1 Entrie(s)'); - }); -}); - -describe('Content Type with Single RTE of type multiple inside group', () => { - const getTokenCallback = sinon.stub(); - getTokenCallback.withArgs('test1').returns({ - token: 'testManagementToken', - apiKey: 'testApiKey', - type: 'management', - }); - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using Flags', async () => { - const { stdout } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithgroup', - '--html-path', - 'group.rich_text_editor', - '--json-path', - 'group.supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 1 Content Type(s) and 1 Entrie(s)'); - }); -}); - -describe('Content Type with Single RTE inside group of type multiple', () => { - const getTokenCallback = sinon.stub(); - getTokenCallback.withArgs('test1').returns({ - token: 'testManagementToken', - apiKey: 'testApiKey', - type: 'management', - }); - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using Flags', async () => { - const { stdout } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithmultiplegroup', - '--html-path', - 'group.rich_text_editor', - '--json-path', - 'group.supercharged_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 1 Content Type(s) and 1 Entrie(s)'); - }); -}); - -// Check this one -describe('Content Type with multiple file field', () => { - const getTokenCallback = sinon.stub(); - getTokenCallback.withArgs('test1').returns({ - token: 'testManagementToken', - apiKey: 'testApiKey', - type: 'management', - }); - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using Flags', async () => { - const { stdout } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content-type', - 'contenttypewithfilefield', - '--html-path', - 'rich_text_editor', - '--json-path', - 'json_rte', - '--yes', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - expect(stdout).to.contain('Updated 1 Content Type(s) and 1 Entrie(s)'); - }); -}); - -describe('Migration with old flags and command', () => { - const getTokenCallback = sinon.stub(); - getTokenCallback.withArgs('test1').returns({ - token: 'testManagementToken', - apiKey: 'testApiKey', - type: 'management', - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using config file w/o locale', async (ctx) => { - const { stdout } = await runCommand( - ['cm:migrate-rte', '--configPath', './test/dummy/config/config.json', '--yes'], - { root: process.cwd() }, - ); - expect(stdout).to.contain( - `WARNING!!! You're using the old (soon to be deprecated) Contentstack CLI flags (-p, --configPath). We recommend you to use the updated flags (-c, --config-path).`, - ); - }); - - fancy - .stub(cliux, 'confirm', () => 'yes') - .stub(command, 'getToken', getTokenCallback) - .it('execute using flags (w/o locale)', async () => { - const { stdout } = await runCommand( - [ - 'cm:entries:migrate-html-rte', - '--alias', - 'test1', - '--content_type', - 'contenttypewithsinglerte', - '--htmlPath', - 'rich_text_editor', - '--jsonPath', - 'supercharged_rte', - '--delay', - '50', - ], - { root: process.cwd() }, - ); - - expect(stdout).to.contain( - `WARNING!!! You're using the old (soon to be deprecated) Contentstack CLI flags (-c, --content_type). We recommend you to use the updated flags (--content-type).`, - ); - expect(stdout).to.contain( - `WARNING!!! You're using the old (soon to be deprecated) Contentstack CLI flags (-h, --htmlPath). We recommend you to use the updated flags (--html-path)`, - ); - expect(stdout).to.contain( - `WARNING!!! You're using the old (soon to be deprecated) Contentstack CLI flags (-j, --jsonPath). We recommend you to use the updated flags (--json-path).`, - ); - }); -}); diff --git a/packages/contentstack-migrate-rte/test/dummy/config/config-for-images-in-rte.json b/packages/contentstack-migrate-rte/test/dummy/config/config-for-images-in-rte.json deleted file mode 100644 index 4b12389ccc..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/config/config-for-images-in-rte.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "alias": "test1", - "content-type": "rte_images", - "global-field": false, - "paths": [ - { - "from": "rich_text_editor", - "to": "supercharged_rte" - } - ], - "delay": 50 -} diff --git a/packages/contentstack-migrate-rte/test/dummy/config/config-locale-2.json b/packages/contentstack-migrate-rte/test/dummy/config/config-locale-2.json deleted file mode 100644 index 9405011617..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/config/config-locale-2.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "alias": "test1", - "content-type": "contenttypewithsinglerte", - "global-field": false, - "paths": [ - { - "from": "rich_text_editor", - "to": "supercharged_rte" - } - ], - "delay": 50, - "locale": ["en-in", "en-us"] -} diff --git a/packages/contentstack-migrate-rte/test/dummy/config/config-locale.json b/packages/contentstack-migrate-rte/test/dummy/config/config-locale.json deleted file mode 100644 index a54e527c80..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/config/config-locale.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "alias": "test1", - "content_type": "contenttypewithsinglerte", - "isGlobalField": false, - "paths": [ - { - "from": "rich_text_editor", - "to": "supercharged_rte" - } - ], - "delay": 50, - "locale":["en-in"] -} \ No newline at end of file diff --git a/packages/contentstack-migrate-rte/test/dummy/config/config.json b/packages/contentstack-migrate-rte/test/dummy/config/config.json deleted file mode 100644 index 337aa4d3ae..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/config/config.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "alias": "test1", - "content-type": "contenttypewithsinglerte", - "global-field": false, - "paths": [ - { - "from": "rich_text_editor", - "to": "supercharged_rte" - } - ], - "delay": 50 -} diff --git a/packages/contentstack-migrate-rte/test/dummy/config/configForGlobalField.json b/packages/contentstack-migrate-rte/test/dummy/config/configForGlobalField.json deleted file mode 100644 index 80c572f488..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/config/configForGlobalField.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "alias": "test1", - "content-type": "globalfieldformigration", - "global-field": true, - "paths": [ - { - "from": "rich_text_editor", - "to": "supercharged_rte" - } - ], - "delay": 50 -} diff --git a/packages/contentstack-migrate-rte/test/dummy/config/configForInvalidContentType.json b/packages/contentstack-migrate-rte/test/dummy/config/configForInvalidContentType.json deleted file mode 100644 index 3506c60cc4..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/config/configForInvalidContentType.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "alias": "test1", - "content-type": "contenttypewithinvalidrtetype", - "global-field": false, - "paths": [ - { - "from": "rich_text_editor", - "to": "supercharged_rte" - } - ], - "delay": 50 -} diff --git a/packages/contentstack-migrate-rte/test/dummy/config/configForMultipleRte.json b/packages/contentstack-migrate-rte/test/dummy/config/configForMultipleRte.json deleted file mode 100644 index a17c5bb5ba..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/config/configForMultipleRte.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "alias": "test1", - "content-type": "contenttypewithmultiplerte", - "global-field": false, - "paths": [ - { - "from": "rich_text_editor", - "to": "supercharged_rte" - } - ], - "delay": 50 -} diff --git a/packages/contentstack-migrate-rte/test/dummy/config/configWithEmptyPath.json b/packages/contentstack-migrate-rte/test/dummy/config/configWithEmptyPath.json deleted file mode 100644 index 0361c38197..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/config/configWithEmptyPath.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "alias": "test2", - "content-type": "contenttypewithsinglerte", - "global-field": false, - "paths": [], - "delay": 50 -} diff --git a/packages/contentstack-migrate-rte/test/dummy/config/config_locale.json b/packages/contentstack-migrate-rte/test/dummy/config/config_locale.json deleted file mode 100644 index ffd4453468..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/config/config_locale.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "alias": "test1", - "content-type": "contenttypewithsinglerte", - "global-field": false, - "paths": [ - { - "from": "rich_text_editor", - "to": "supercharged_rte" - } - ], - "locale":["en-in"], - "delay": 50 -} diff --git a/packages/contentstack-migrate-rte/test/dummy/config/invalidConfig.json b/packages/contentstack-migrate-rte/test/dummy/config/invalidConfig.json deleted file mode 100644 index 2f939adc07..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/config/invalidConfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "alias": 123, - "content-type": "contenttypewithsinglerte", - "global-field": false, - "paths": [ - { - "from": "rich_text_editor", - "to": "supercharged_rte" - } - ], - "delay": 50 -} diff --git a/packages/contentstack-migrate-rte/test/dummy/contentTypeResponse.json b/packages/contentstack-migrate-rte/test/dummy/contentTypeResponse.json deleted file mode 100644 index 16f5e630e8..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/contentTypeResponse.json +++ /dev/null @@ -1,3014 +0,0 @@ -{ - "contenttypewithsinglerte": { - "content_type": { - "created_at": "2021-06-18T08:28:40.550Z", - "updated_at": "2021-06-18T08:29:11.162Z", - "title": "ContentTypeWithSingleRTE", - "uid": "contenttypewithsinglerte", - "_version": 2, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypewithinvalidjsonrteschema": { - "content_type": { - "created_at": "2021-06-18T08:28:40.550Z", - "updated_at": "2021-06-18T08:29:11.162Z", - "title": "ContentTypeWithSingleRTE", - "uid": "contenttypewithsinglerte", - "_version": 2, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypedifferentlevelrte": { - "content_type": { - "created_at": "2021-06-22T11:35:00.339Z", - "updated_at": "2021-06-22T11:35:19.016Z", - "title": "contenttypedifferentlevelrte", - "uid": "contenttypedifferentlevelrte", - "_version": 2, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "group", - "display_name": "Group", - "field_metadata": { - "description": "", - "instruction": "" - }, - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - } - ], - "uid": "group", - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypewithinvalidhtmlrteschema": { - "content_type": { - "created_at": "2021-06-18T08:28:40.550Z", - "updated_at": "2021-06-18T08:29:11.162Z", - "title": "contenttypewithinvalidhtmlrteschema", - "uid": "contenttypewithinvalidhtmlrteschema", - "_version": 2, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttype1forglobalfield": { - "content_type": { - "created_at": "2021-06-21T09:35:10.023Z", - "updated_at": "2021-06-21T09:35:58.489Z", - "title": "contentType1ForglobalField", - "uid": "contenttype1forglobalfield", - "_version": 2, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "global_field", - "display_name": "Global", - "reference_to": "globalfieldformigration", - "field_metadata": { - "description": "" - }, - "uid": "global_field", - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false, - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false, - "indexed": false, - "inbuilt_model": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false, - "indexed": false, - "inbuilt_model": false - } - ] - }, - { - "data_type": "group", - "display_name": "Group", - "field_metadata": { - "description": "", - "instruction": "" - }, - "schema": [ - { - "data_type": "global_field", - "display_name": "Global", - "reference_to": "globalfieldformigration", - "field_metadata": { - "description": "" - }, - "uid": "global_field", - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false, - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false, - "indexed": false, - "inbuilt_model": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false, - "indexed": false, - "inbuilt_model": false - } - ] - } - ], - "uid": "group", - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttype2forglobalfield": { - "content_type": { - "created_at": "2021-06-21T09:36:41.354Z", - "updated_at": "2021-06-21T09:37:19.970Z", - "title": "contenttype2forglobalfield", - "uid": "contenttype2forglobalfield", - "_version": 2, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "global_field", - "display_name": "Global", - "reference_to": "globalfieldformigration", - "field_metadata": { - "description": "" - }, - "uid": "global_field", - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false, - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false, - "indexed": false, - "inbuilt_model": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false, - "indexed": false, - "inbuilt_model": false - } - ] - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypewithinvalidrtetype": { - "content_type": { - "created_at": "2021-06-22T05:00:12.357Z", - "updated_at": "2021-06-22T05:01:53.175Z", - "title": "contenttypewithinvalidrtetype", - "uid": "contenttypewithinvalidrtetype", - "_version": 3, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "multiple": true, - "non_localizable": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypewithmultiplerte": { - "content_type": { - "created_at": "2021-06-22T05:18:50.239Z", - "updated_at": "2021-06-22T05:50:45.916Z", - "title": "contenttypewithmultiplerte", - "uid": "contenttypewithmultiplerte", - "_version": 3, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "multiple": true, - "non_localizable": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "multiple": true, - "non_localizable": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypewithemptyschema": { - "content_type": { - "created_at": "2021-06-22T05:18:50.239Z", - "updated_at": "2021-06-22T05:50:45.916Z", - "title": "contenttypewithemptyschema", - "uid": "contenttypewithemptyschema", - "_version": 3, - "inbuilt_class": false, - "schema": [], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypewithmodularblock": { - "content_type": { - "created_at": "2021-06-22T08:36:26.050Z", - "updated_at": "2021-06-22T09:55:52.105Z", - "title": "contenttypewithmodularblock", - "uid": "contenttypewithmodularblock", - "_version": 3, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "blocks", - "display_name": "Modular Blocks", - "blocks": [ - { - "title": "test1", - "uid": "test1", - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ] - } - ], - "multiple": true, - "uid": "modular_blocks", - "field_metadata": { - "instruction": "", - "description": "" - }, - "non_localizable": false, - "mandatory": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypewithgroup": { - "content_type": { - "created_at": "2021-06-22T10:18:54.177Z", - "updated_at": "2021-06-22T10:19:31.012Z", - "title": "contenttypewithgroup", - "uid": "contenttypewithgroup", - "_version": 2, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "group", - "display_name": "Group", - "field_metadata": { - "description": "", - "instruction": "" - }, - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "multiple": true, - "non_localizable": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "multiple": true, - "non_localizable": false, - "unique": false - } - ], - "uid": "group", - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypewithmultiplegroup": { - "content_type": { - "created_at": "2021-06-22T10:35:26.275Z", - "updated_at": "2021-06-22T10:36:06.768Z", - "title": "contenttypewithmultiplegroup", - "uid": "contenttypewithmultiplegroup", - "_version": 2, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "group", - "display_name": "Group", - "field_metadata": { - "description": "", - "instruction": "" - }, - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "uid": "group", - "multiple": true, - "non_localizable": false, - "mandatory": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypewithentryupdateerror": { - "content_type": { - "created_at": "2021-06-24T09:59:49.808Z", - "updated_at": "2021-06-24T10:01:00.908Z", - "title": "contenttypewithentryUpdateError", - "uid": "contenttypewithentryupdateerror", - "_version": 2, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - }, - "contenttypewithfilefield": { - "content_type": { - "created_at": "2021-08-11T08:48:38.491Z", - "updated_at": "2021-08-11T08:50:42.734Z", - "title": "contenttypewithfilefield", - "uid": "contenttypewithfilefield", - "_version": 3, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "file", - "display_name": "File", - "uid": "file", - "extensions": [], - "field_metadata": { - "description": "", - "rich_text_type": "standard" - }, - "mandatory": false, - "multiple": false, - "non_localizable": false, - "unique": false - }, - { - "data_type": "file", - "display_name": "File", - "uid": "asset", - "extensions": [], - "field_metadata": { - "description": "", - "rich_text_type": "standard" - }, - "mandatory": false, - "multiple": false, - "non_localizable": false, - "unique": false - }, - { - "data_type": "blocks", - "display_name": "Modular Blocks", - "blocks": [ - { - "title": "test1", - "uid": "test1", - "schema": [ - { - "data_type": "file", - "display_name": "File", - "uid": "file", - "extensions": [], - "field_metadata": { - "description": "", - "rich_text_type": "standard" - }, - "mandatory": false, - "multiple": true, - "non_localizable": false, - "unique": false - } - ] - } - ], - "multiple": true, - "uid": "modular_blocks", - "field_metadata": { - "instruction": "", - "description": "" - }, - "mandatory": false, - "non_localizable": false, - "unique": false - }, - { - "data_type": "group", - "display_name": "Group", - "field_metadata": { - "description": "", - "instruction": "" - }, - "schema": [ - { - "data_type": "file", - "display_name": "File", - "uid": "file", - "field_metadata": { - "description": "", - "rich_text_type": "standard", - "image": true - }, - "mandatory": false, - "multiple": false, - "non_localizable": false, - "unique": false, - "dimension": { - "width": { - "min": null, - "max": null - }, - "height": { - "min": null, - "max": null - } - } - } - ], - "uid": "group", - "mandatory": false, - "multiple": false, - "non_localizable": false, - "unique": false - }, - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "mandatory": false, - "multiple": false, - "non_localizable": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "JSON Rich Text Editor", - "uid": "json_rte", - "field_metadata": { - "allow_json_rte": true, - "embed_entry": false, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "reference_to": [ - "sys_assets" - ], - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": true, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - }, - "extension_uids": [] - } - }, - "rte_images": { - "content_type": { - "created_at": "2021-06-18T08:28:40.550Z", - "updated_at": "2021-06-18T08:29:11.162Z", - "title": "ContentTypeWithSingleRTE", - "uid": "rte_images", - "_version": 2, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Title", - "field_metadata": { - "_default": true, - "version": 3 - }, - "mandatory": true, - "uid": "title", - "unique": true, - "non_localizable": false, - "multiple": false - }, - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "DEFAULT_ACL": { - "others": { - "read": false, - "create": false - }, - "users": [ - { - "uid": "bltd17749910d177e04", - "read": true, - "sub_acl": { - "read": true - } - } - ] - }, - "SYS_ACL": { - "roles": [ - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltbfe2abeba30ff382", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - }, - { - "uid": "bltfa739fdd274aa467", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - } - }, - { - "uid": "blt6cafb115ee0f0a25", - "read": true, - "sub_acl": { - "create": true, - "read": true, - "update": true, - "delete": true, - "publish": true - }, - "update": true, - "delete": true - } - ], - "others": { - "read": false, - "create": false, - "update": false, - "delete": false, - "sub_acl": { - "read": false, - "create": false, - "update": false, - "delete": false, - "publish": false - } - } - }, - "options": { - "is_page": false, - "singleton": false, - "sub_title": [], - "title": "title" - }, - "abilities": { - "get_one_object": true, - "get_all_objects": true, - "create_object": true, - "update_object": true, - "delete_object": true, - "delete_all_objects": true - } - } - } -} \ No newline at end of file diff --git a/packages/contentstack-migrate-rte/test/dummy/defaultConfig.json b/packages/contentstack-migrate-rte/test/dummy/defaultConfig.json deleted file mode 100644 index 0eb5963a93..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/defaultConfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "apiEndpoint": "http://localhost:8000", - "cdnEndpoint": "https://cdn.contentstack.io", - "apiVersion": 3 -} \ No newline at end of file diff --git a/packages/contentstack-migrate-rte/test/dummy/entriesResponse.json b/packages/contentstack-migrate-rte/test/dummy/entriesResponse.json deleted file mode 100644 index b313313f67..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/entriesResponse.json +++ /dev/null @@ -1,444 +0,0 @@ -{ - "contenttypewithsinglerte": { - "entries": [ - { - "title": "Entry 2", - "rich_text_editor": "

value 2

", - "tags": [], - "locale": "en-us", - "uid": "blt6168b6493a122849", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-18T10:10:35.292Z", - "updated_at": "2021-06-18T10:10:35.292Z", - "ACL": {}, - "_version": 1, - "_in_progress": false - }, - { - "title": "Entry 2", - "rich_text_editor": "

value 2 en-in

", - "tags": [], - "locale": "en-in", - "uid": "blt6168b6493a122849", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-18T10:10:35.292Z", - "updated_at": "2021-06-18T10:10:35.292Z", - "ACL": {}, - "_version": 1, - "_in_progress": false - }, - { - "title": "entry 1", - "rich_text_editor": "

value 1

", - "tags": [], - "locale": "en-us", - "uid": "blt94ab8cf0a7956243", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-18T10:01:47.035Z", - "updated_at": "2021-06-18T10:01:47.035Z", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - ], - "count": 2 - }, - "contenttype1forglobalfield": { - "entries": [ - { - "title": "test1", - "global_field": { - "rich_text_editor": "

global => richtext

" - }, - "group": { - "global_field": { - "rich_text_editor": "

group => global => rte

" - } - }, - "tags": [], - "locale": "en-us", - "uid": "blt982804d4a39b0197", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-21T09:47:49.318Z", - "updated_at": "2021-06-21T09:47:49.318Z", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - ], - "count": 1 - }, - "contenttype2forglobalfield": { - "entries": [ - { - "title": "test1", - "global_field": { - "rich_text_editor": "

global => rte

" - }, - "tags": [], - "locale": "en-us", - "uid": "blta20a822fdd7bcc87", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-21T09:50:48.065Z", - "updated_at": "2021-06-21T09:50:48.065Z", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - ], - "count": 1 - }, - "contenttypewithmultiplerte": { - "entries": [ - { - "title": "test1", - "rich_text_editor": [ - "

multiple 1

", - "

mutiple 2

" - ], - "tags": [], - "locale": "en-us", - "uid": "blt55ac0aa11a1dafe9", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-22T05:28:36.417Z", - "updated_at": "2021-06-22T05:28:36.417Z", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - ], - "count": 1 - }, - "contenttypewithmodularblock": { - "entries": [ - { - "title": "", - "modular_blocks": [ - { - "test1": { - "rich_text_editor": "

M1

", - "_metadata": { - "uid": "csa15520723d8f9738" - } - } - }, - { - "test1": { - "rich_text_editor": "

m2

", - "_metadata": { - "uid": "csc3ccd3f10d8ceff6" - } - } - }, - { - "test1": { - "rich_text_editor": "

m3

", - "_metadata": { - "uid": "csf2355ddf2979a0a1" - } - } - } - ], - "tags": [], - "locale": "en-us", - "uid": "blte02628730f4d0c3c", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-22T08:37:47.911Z", - "updated_at": "2021-06-22T08:37:47.911Z", - "_version": 1, - "_in_progress": true - } - ], - "count": 1 - }, - "contenttypewithgroup": { - "entries": [ - { - "title": "test1", - "group": { - "rich_text_editor": [ - "

rte1

", - "

rte2

" - ] - }, - "tags": [], - "locale": "en-us", - "uid": "blt279161bdc0c77b2d", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-22T10:24:00.471Z", - "updated_at": "2021-06-22T10:24:00.471Z", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - ], - "count": 1 - }, - "contenttypewithmultiplegroup": { - "entries": [ - { - "title": "test1", - "group": [ - { - "rich_text_editor": "

instance 1

", - "_metadata": { - "uid": "cs46fbdc80bbb32699" - } - }, - { - "rich_text_editor": "

instance 2

", - "_metadata": { - "uid": "cs9fa775294fcb9aba" - } - } - ], - "tags": [], - "locale": "en-us", - "uid": "bltd939c78b885da314", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-22T10:38:00.168Z", - "updated_at": "2021-06-22T10:38:00.168Z", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - ], - "count": 1 - }, - "contenttypewithentryupdateerror": { - "entries": [ - { - "title": "sdsdsds", - "rich_text_editor": "

will give error

", - "tags": [], - "locale": "en-us", - "uid": "blta9b16ac2827c54ed", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-24T10:03:39.192Z", - "updated_at": "2021-06-24T10:03:44.173Z", - "_version": 2, - "_in_progress": false - }, - { - "title": "sdsdsdsds", - "rich_text_editor": "

will give error

", - "tags": [], - "locale": "en-us", - "uid": "blta9b16ac2827c54e1", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-24T10:03:39.192Z", - "updated_at": "2021-06-24T10:03:44.173Z", - "_version": 2, - "_in_progress": false - } - ], - "count": 2 - }, - "contenttypewithfilefield": { - "entries": [ - { - "title": "This is test", - "file": null, - "asset": { - "uid": "bltab83acc0e405b6f8", - "created_at": "2021-07-26T10:47:48.337Z", - "updated_at": "2021-08-05T06:30:56.359Z", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "content_type": "image/png", - "file_size": "344996", - "tags": [], - "filename": "image.png", - "url": "***REMOVED***bltab83acc0e405b6f8/60fe92d4fe65cc54a3e7e5c3/image.png", - "ACL": [], - "is_dir": false, - "parent_uid": null, - "_version": 5, - "title": "image.png", - "description": "5", - "dimension": { - "height": 1080, - "width": 1920 - }, - "publish_details": [] - }, - "modular_blocks": [ - { - "test1": { - "file": [ - { - "uid": "bltb13b08635ebffdc4", - "created_at": "2021-03-10T12:51:20.447Z", - "updated_at": "2021-03-10T12:51:20.447Z", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "content_type": "image/jpeg", - "file_size": "7701", - "tags": [], - "filename": "48558898.jpeg", - "url": "***REMOVED***bltb13b08635ebffdc4/6048c0c887ab224351aab15f/48558898.jpeg", - "ACL": [], - "is_dir": false, - "parent_uid": null, - "_version": 1, - "title": "48558898.jpeg", - "dimension": { - "height": 275, - "width": 183 - }, - "publish_details": [] - }, - { - "uid": "bltb85f710a4a984858", - "created_at": "2021-03-10T13:37:22.523Z", - "updated_at": "2021-07-22T12:20:20.026Z", - "created_by": "blt3943ff6628403515", - "updated_by": "blt6436c4ee410b7913", - "content_type": "image/jpeg", - "file_size": "5403", - "tags": [], - "filename": "download.jpeg", - "url": "***REMOVED***bltb85f710a4a984858/6049fa897477c27b7b34443d/download.jpeg", - "ACL": [], - "is_dir": false, - "parent_uid": null, - "_version": 37, - "title": "This is test1", - "description": "test1", - "dimension": { - "height": 194, - "width": 259 - }, - "publish_details": [] - }, - { - "uid": "blt3d60320b8e0b9b0a", - "created_at": "2021-03-04T10:36:08.977Z", - "updated_at": "2021-03-04T10:36:08.977Z", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "content_type": "image/jpeg", - "file_size": "5906", - "tags": [], - "filename": "download_(2).jpeg", - "url": "***REMOVED***blt3d60320b8e0b9b0a/6040b819116a7015b467265e/download_(2).jpeg", - "ACL": [], - "is_dir": false, - "parent_uid": null, - "_version": 1, - "title": "download_(2).jpeg", - "dimension": { - "height": 183, - "width": 275 - }, - "publish_details": [] - } - ], - "_metadata": { - "uid": "csd629a3435c480311" - } - } - }, - { - "test1": { - "file": [ - { - "uid": "bltab83acc0e405b6f8", - "created_at": "2021-07-26T10:47:48.337Z", - "updated_at": "2021-08-05T06:30:56.359Z", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "content_type": "image/png", - "file_size": "344996", - "tags": [], - "filename": "image.png", - "url": "***REMOVED***bltab83acc0e405b6f8/60fe92d4fe65cc54a3e7e5c3/image.png", - "ACL": [], - "is_dir": false, - "parent_uid": null, - "_version": 5, - "title": "image.png", - "description": "5", - "dimension": { - "height": 1080, - "width": 1920 - }, - "publish_details": [] - } - ], - "_metadata": { - "uid": "cs2fc2c61d898700d9" - } - } - } - ], - "group": { - "file": { - "uid": "bltab83acc0e405b6f8", - "created_at": "2021-07-26T10:47:48.337Z", - "updated_at": "2021-08-05T06:30:56.359Z", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "content_type": "image/png", - "file_size": "344996", - "tags": [], - "filename": "image.png", - "url": "***REMOVED***bltab83acc0e405b6f8/60fe92d4fe65cc54a3e7e5c3/image.png", - "ACL": [], - "is_dir": false, - "parent_uid": null, - "_version": 5, - "title": "image.png", - "description": "5", - "dimension": { - "height": 1080, - "width": 1920 - }, - "publish_details": [] - } - }, - "rich_text_editor": "

This is test

", - "tags": [], - "locale": "en-us", - "uid": "bltcbf22e3759df80ef", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-08-11T08:57:28.614Z", - "updated_at": "2021-08-11T08:57:28.614Z", - "_version": 1, - "_in_progress": false - } - ], - "count": 1 - }, - "rte_images": { - "entries": [ - { - "title": "Entry 2", - "rich_text_editor": "

", - "tags": [], - "locale": "en-us", - "uid": "blt6168b6493a122849", - "created_by": "blt3943ff6628403515", - "updated_by": "blt3943ff6628403515", - "created_at": "2021-06-18T10:10:35.292Z", - "updated_at": "2021-06-18T10:10:35.292Z", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - ], - "count": 1 - } -} \ No newline at end of file diff --git a/packages/contentstack-migrate-rte/test/dummy/expectedEntriesResponse.json b/packages/contentstack-migrate-rte/test/dummy/expectedEntriesResponse.json deleted file mode 100644 index bfee8fe075..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/expectedEntriesResponse.json +++ /dev/null @@ -1,663 +0,0 @@ -{ - "contenttypewithsinglerte": { - "blt6168b6493a122849": { - "entry": { - "content_type_uid": "contenttypewithsinglerte", - "title": "Entry 2", - "rich_text_editor": "

value 2

", - "supercharged_rte": { - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "children": [ - { - "text": "value 2" - } - ] - } - ], - "type": "doc" - }, - "tags": [], - "locale": "en-us", - "uid": "blt6168b6493a122849", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - }, - "blt6168b6493a122849_en-in": { - "entry": { - "content_type_uid": "contenttypewithsinglerte", - "title": "Entry 2", - "rich_text_editor": "

value 2 en-in

", - "tags": [ - ], - "locale": "en-in", - "ACL": { - }, - "_version": 1, - "_in_progress": false, - "supercharged_rte": { - "type": "doc", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "children": [ - { - "text": "value 2 en-in" - } - ] - } - ] - } - } - }, - "blt94ab8cf0a7956243": { - "entry": { - "content_type_uid": "contenttypewithsinglerte", - "title": "entry 1", - "rich_text_editor": "

value 1

", - "supercharged_rte": { - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "children": [ - { - "text": "value 1" - } - ] - } - ], - "type": "doc" - }, - "tags": [], - "locale": "en-us", - "uid": "blt94ab8cf0a7956243", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - } - }, - "contenttype1forglobalfield": { - "blt982804d4a39b0197": { - "entry": { - "content_type_uid": "contenttype1forglobalfield", - "title": "test1", - "global_field": { - "rich_text_editor": "

global => richtext

", - "supercharged_rte": { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "global => richtext" - } - ] - } - ], - "type": "doc" - } - }, - "group": { - "global_field": { - "rich_text_editor": "

group => global => rte

", - "supercharged_rte": { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "group => global => rte" - } - ] - } - ], - "type": "doc" - } - } - }, - "tags": [], - "locale": "en-us", - "uid": "blt982804d4a39b0197", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - } - }, - "contenttype2forglobalfield": { - "blta20a822fdd7bcc87": { - "entry": { - "content_type_uid": "contenttype2forglobalfield", - "title": "test1", - "global_field": { - "rich_text_editor": "

global => rte

", - "supercharged_rte": { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "global => rte" - } - ] - } - ], - "type": "doc" - } - }, - "tags": [], - "locale": "en-us", - "uid": "blta20a822fdd7bcc87", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - } - }, - "contenttypewithmultiplerte": { - "blt55ac0aa11a1dafe9": { - "entry": { - "content_type_uid": "contenttypewithmultiplerte", - "title": "test1", - "rich_text_editor": [ - "

multiple 1

", - "

mutiple 2

" - ], - "tags": [], - "locale": "en-us", - "uid": "blt55ac0aa11a1dafe9", - "ACL": {}, - "_version": 1, - "_in_progress": false, - "supercharged_rte": [ - { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "multiple 1" - } - ] - } - ], - "type": "doc" - }, - { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "mutiple 2" - } - ] - } - ], - "type": "doc" - } - ] - } - } - }, - "contenttypewithmodularblock": { - "blte02628730f4d0c3c": { - "entry": { - "content_type_uid": "contenttypewithmodularblock", - "title": "", - "modular_blocks": [ - { - "test1": { - "rich_text_editor": "

M1

", - "_metadata": { - "uid": "csa15520723d8f9738" - }, - "supercharged_rte": { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "M1" - } - ] - } - ], - "type": "doc" - } - } - }, - { - "test1": { - "rich_text_editor": "

m2

", - "_metadata": { - "uid": "csc3ccd3f10d8ceff6" - }, - "supercharged_rte": { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "m2" - } - ] - } - ], - "type": "doc" - } - } - }, - { - "test1": { - "rich_text_editor": "

m3

", - "_metadata": { - "uid": "csf2355ddf2979a0a1" - }, - "supercharged_rte": { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "m3" - } - ] - } - ], - "type": "doc" - } - } - } - ], - "tags": [], - "locale": "en-us", - "uid": "blte02628730f4d0c3c", - "_version": 1, - "_in_progress": true - } - } - }, - "contenttypewithgroup": { - "blt279161bdc0c77b2d": { - "entry": { - "content_type_uid": "contenttypewithgroup", - "title": "test1", - "group": { - "rich_text_editor": [ - "

rte1

", - "

rte2

" - ], - "supercharged_rte": [ - { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "rte1" - } - ] - } - ], - "type": "doc" - }, - { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "rte2" - } - ] - } - ], - "type": "doc" - } - ] - }, - "tags": [], - "locale": "en-us", - "uid": "blt279161bdc0c77b2d", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - } - }, - "contenttypewithmultiplegroup": { - "bltd939c78b885da314": { - "entry": { - "content_type_uid": "contenttypewithmultiplegroup", - "title": "test1", - "group": [ - { - "rich_text_editor": "

instance 1

", - "_metadata": { - "uid": "cs46fbdc80bbb32699" - }, - "supercharged_rte": { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "instance 1" - } - ] - } - ], - "type": "doc" - } - }, - { - "rich_text_editor": "

instance 2

", - "_metadata": { - "uid": "cs9fa775294fcb9aba" - }, - "supercharged_rte": { - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "instance 2" - } - ] - } - ], - "type": "doc" - } - } - ], - "tags": [], - "locale": "en-us", - "uid": "bltd939c78b885da314", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - } - }, - "contenttypewithfilefield": { - "bltcbf22e3759df80ef": { - "entry": { - "content_type_uid": "contenttypewithfilefield", - "title": "This is test", - "file": null, - "asset": "bltab83acc0e405b6f8", - "modular_blocks": [ - { - "test1": { - "file": [ - "bltb13b08635ebffdc4", - "bltb85f710a4a984858", - "blt3d60320b8e0b9b0a" - ], - "_metadata": {} - } - }, - { - "test1": { - "file": [ - "bltab83acc0e405b6f8" - ], - "_metadata": {} - } - } - ], - "group": { - "file": "bltab83acc0e405b6f8" - }, - "rich_text_editor": "

This is test

", - "tags": [], - "locale": "en-us", - "_version": 1, - "_in_progress": false, - "json_rte": { - "type": "doc", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "children": [ - { - "text": "This is test" - } - ] - } - ] - } - } - } - }, - "rte_images": { - "blt6168b6493a122849": { - "entry": { - "content_type_uid": "rte_images", - "title": "Entry 2", - "rich_text_editor": "

", - "supercharged_rte": { - "type": "doc", - "uid": "***REMOVED***", - "attrs": { - "dirty": true - }, - "children": [ - { - "type": "p", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "" - } - ] - }, - { - "type": "reference", - "attrs": { - "asset-name": "landscape-3.jpg", - "content-type-uid": "sys_assets", - "asset-link": "***REMOVED***8e12437ac2679e/bltfea8157ddfb8e776/6329f1106a7f7364973c028c/landscape-3.jpg", - "asset-type": "image/jpg", - "display-type": "display", - "type": "asset", - "asset-uid": "bltfea8157ddfb8e776", - "style": { - "width": "194px", - "height": "auto" - }, - "redactor-attributes": { - "asset_uid": "bltfea8157ddfb8e776", - "height": "auto", - "src": "***REMOVED***8e12437ac2679e/bltfea8157ddfb8e776/6329f1106a7f7364973c028c/landscape-3.jpg", - "width": "194", - "max-width": "194", - "style": "width: 194px; height: auto;" - }, - "width": 194, - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "" - } - ] - }, - { - "type": "fragment", - "attrs": { - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": " " - } - ] - }, - { - "type": "img", - "attrs": { - "url": "***REMOVED***8e12437ac2679e/bltfea8157ddfb8e776/6329f1106a7f7364973c028c/landscape-3.jpg", - "style": { - "width": "194px", - "height": "auto" - }, - "redactor-attributes": { - "height": "auto", - "src": "***REMOVED***8e12437ac2679e/bltfea8157ddfb8e776/6329f1106a7f7364973c028c/landscape-3.jpg", - "width": "194", - "max-width": "194", - "style": "width: 194px; height: auto;" - }, - "width": 194, - "dirty": true - }, - "uid": "***REMOVED***", - "children": [ - { - "text": "" - } - ] - } - ] - }, - "tags": [], - "locale": "en-us", - "uid": "blt6168b6493a122849", - "ACL": {}, - "_version": 1, - "_in_progress": false - } - } - } -} \ No newline at end of file diff --git a/packages/contentstack-migrate-rte/test/dummy/globalFieldResponse.json b/packages/contentstack-migrate-rte/test/dummy/globalFieldResponse.json deleted file mode 100644 index c482d60d4e..0000000000 --- a/packages/contentstack-migrate-rte/test/dummy/globalFieldResponse.json +++ /dev/null @@ -1,257 +0,0 @@ -{ - "globalfieldformigration": { - "global_field": { - "created_at": "2021-06-21T09:31:40.548Z", - "updated_at": "2021-06-21T09:31:40.548Z", - "title": "globalFieldForMigration", - "uid": "globalfieldformigration", - "_version": 1, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "referred_content_types": [ - { - "uid": "contenttype1forglobalfield", - "title": "contentType1ForglobalField" - }, - { - "uid": "contenttype2forglobalfield", - "title": "contenttype2forglobalfield" - } - ] - } - }, - "globalfieldwithemptyschema": { - "global_field": { - "created_at": "2021-06-21T09:31:40.548Z", - "updated_at": "2021-06-21T09:31:40.548Z", - "title": "globalfieldwithemptyschema", - "uid": "globalfieldwithemptyschema", - "_version": 1, - "inbuilt_class": false, - "schema": [], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "referred_content_types": [ - { - "uid": "contenttypewithemptyschema", - "title": "contenttypewithemptyschema" - } - ] - } - }, - "globalfieldwithemptyschemacontenttype": { - "global_field": { - "created_at": "2021-06-21T09:31:40.548Z", - "updated_at": "2021-06-21T09:31:40.548Z", - "title": "globalfieldwithemptyschemacontenttype", - "uid": "globalfieldwithemptyschemacontenttype", - "_version": 1, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "referred_content_types": [ - { - "uid": "contenttypewithemptyschema", - "title": "contenttypewithemptyschema" - } - ] - } - }, - "globalfieldwithemptycontenttype": { - "global_field": { - "created_at": "2021-06-21T09:31:40.548Z", - "updated_at": "2021-06-21T09:31:40.548Z", - "title": "globalFieldForMigration", - "uid": "globalfieldformigration", - "_version": 1, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "referred_content_types": [] - } - }, - "globalfieldwithinvalidcontenttype": { - "global_field": { - "created_at": "2021-06-21T09:31:40.548Z", - "updated_at": "2021-06-21T09:31:40.548Z", - "title": "globalFieldForMigration", - "uid": "globalfieldformigration", - "_version": 1, - "inbuilt_class": false, - "schema": [ - { - "data_type": "text", - "display_name": "Rich Text Editor", - "uid": "rich_text_editor", - "field_metadata": { - "allow_rich_text": true, - "description": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [], - "version": 3 - }, - "non_localizable": false, - "multiple": false, - "mandatory": false, - "unique": false - }, - { - "data_type": "json", - "display_name": "Supercharged RTE", - "uid": "supercharged_rte", - "field_metadata": { - "allow_json_rte": true, - "description": "", - "default_value": "", - "multiline": false, - "rich_text_type": "advanced", - "options": [] - }, - "format": "", - "error_messages": { - "format": "" - }, - "mandatory": false, - "non_localizable": false, - "multiple": false, - "unique": false - } - ], - "last_activity": {}, - "maintain_revisions": true, - "description": "", - "referred_content_types": [ - { - "uid": "contenttypewithemptyschema", - "title": "contenttypewithemptyschema" - } - ] - } - } -} \ No newline at end of file diff --git a/packages/contentstack-migrate-rte/test/mocha.opts b/packages/contentstack-migrate-rte/test/mocha.opts deleted file mode 100644 index c6d1cb290c..0000000000 --- a/packages/contentstack-migrate-rte/test/mocha.opts +++ /dev/null @@ -1,3 +0,0 @@ ---recursive ---reporter spec ---timeout 5000 diff --git a/packages/contentstack-migrate-rte/test/utils/index.js b/packages/contentstack-migrate-rte/test/utils/index.js deleted file mode 100644 index 2d10fe667f..0000000000 --- a/packages/contentstack-migrate-rte/test/utils/index.js +++ /dev/null @@ -1,140 +0,0 @@ -const { find } = require('lodash') -const contentTypeResponse = require('../dummy/contentTypeResponse.json') -const entriesResponse = require('../dummy/entriesResponse.json') -const expectedResponse = require('../dummy/expectedEntriesResponse.json') -const globalFieldResponse = require('../dummy/globalFieldResponse.json') -const dummyToken = { - test1: { - token: 'testManagementToken', - apiKey: 'testApiKey', - type: 'management', - }, -} -function getToken(alias) { - if (dummyToken[alias]) { - return dummyToken[alias] - } - throw new Error('Token with alias ' + "'" + alias + "'" + ' was not found') -} -function getGlobalField(uid) { - if (globalFieldResponse[uid]) { - return [200, globalFieldResponse[uid]] - } - return [422, { - error_message: `The Global Field '${uid}' was not found. Please try again.`, - error_code: 118, - errors: { - uid: [ - 'is not valid.', - ], - }, - }] -} -function getContentType(uid) { - if (contentTypeResponse[uid]) { - return [200, contentTypeResponse[uid]] - } - - return [422, { - error_message: `The Content Type '${uid}' was not found. Please try again.`, - error_code: 118, - errors: { - uid: [ - 'is not valid.', - ], - }, - }] -} -function getEntriesOnlyUID(contentstackTypeUid,locale = 'en-us') { - if (entriesResponse[contentstackTypeUid]) { - const entries = entriesResponse[contentstackTypeUid] - const allEntries = entries.entries.filter(entry => entry.locale === locale).map(entry => ({uid:entry.uid})) - return { - entries: allEntries, - count: allEntries.length - } - } - return { - error_message: `The Content Type '${contentstackTypeUid}' was not found. Please try again.`, - error_code: 118, - errors: { - uid: [ - 'is not valid.', - ], - }, - } -} -function getEntries(contentstackTypeUid,locale = "en-us") { - if (entriesResponse[contentstackTypeUid]) { - const entries = entriesResponse[contentstackTypeUid] - return { - entries: entries.entries.filter(entry => entry.locale === locale), - count: entries.entries.filter(entry => entry.locale === locale).length - } - } - return { - error_message: `The Content Type '${contentstackTypeUid}' was not found. Please try again.`, - error_code: 118, - errors: { - uid: [ - 'is not valid.', - ], - }, - } -} -function getEntry(contentstackTypeUid, entryUid, locale = "en-us") { - if (entriesResponse[contentstackTypeUid]) { - const entries = entriesResponse[contentstackTypeUid] - const entry = find(entries.entries, { uid: entryUid, locale }) - const masterEntry = find(entries.entries, { uid: entryUid, locale: 'en-us' }) - if (entry) { - return { - entry - } - } else { - if (masterEntry) { - return { - entry: masterEntry - } - } else { - return { - "error_message": "The requested object doesn't exist.", - "error_code": 141, - "errors": { - "uid": [ - "is not valid." - ] - } - } - } - } - } - return { - "error_message": "The requested object doesn't exist.", - "error_code": 141, - "errors": { - "uid": [ - "is not valid." - ] - } - } -} -function getExpectedOutput(contentTypeUid, entryUid,locale = "en-us") { - let entrySuffix = '' - if (locale !== 'en-us') { - entrySuffix = '_' + locale - } - if (expectedResponse[contentTypeUid] && expectedResponse[contentTypeUid][`${entryUid}${entrySuffix}`]) { - return expectedResponse[contentTypeUid][`${entryUid}${entrySuffix}`] - } - return {} -} -module.exports = { - getToken, - getContentType, - getEntries, - getExpectedOutput, - getGlobalField, - getEntriesOnlyUID, - getEntry -} diff --git a/packages/contentstack-migration/docs/api-reference.md b/packages/contentstack-migration/docs/api-reference.md index da8e9a473f..42a4d7a38e 100644 --- a/packages/contentstack-migration/docs/api-reference.md +++ b/packages/contentstack-migration/docs/api-reference.md @@ -474,4 +474,4 @@ migration.addTask(task) File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ----------|---------|----------|---------|---------|------------------- All files | 0 | 0 | 0 | 0 | -----------|---------|----------|---------|---------|------------------- +----------|---------|----------|---------|---------|------------------- \ No newline at end of file diff --git a/packages/contentstack-migration/examples/taxonomies/import-taxonomies.js b/packages/contentstack-migration/examples/taxonomies/import-taxonomies.js deleted file mode 100644 index 586224e3e0..0000000000 --- a/packages/contentstack-migration/examples/taxonomies/import-taxonomies.js +++ /dev/null @@ -1,152 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const fastcsv = require('fast-csv'); - -module.exports = ({ migration, stackSDKInstance, managementAPIClient, config }) => { - const dataDir = config['data-dir']; - const delimiter = config['delimiter'] ?? ','; // default comma - const locale = config['locale']; - const includeFallback = config['include_fallback'] ?? false; - //parent and child term pointer - let parentDetails = { taxonomy_uid: '' }; - let stack; - let depth = 1, - parentUID = null; - let taxonomies = {}; - - const stackClient = () => { - return managementAPIClient.stack({ api_key: stackSDKInstance.api_key }); - }; - - const pushTaxonomyDetails = async (apiData) => { - if (!taxonomies[apiData?.uid]) taxonomies[apiData?.uid] = { taxonomy: apiData }; - }; - - const pushTermDetails = async (apiData) => { - if (taxonomies[apiData?.taxonomy_uid]) { - const terms = (taxonomies[apiData.taxonomy_uid].terms ||= []); - terms.push({ uid: apiData.uid, name: apiData.name, parent_uid: apiData.parent_uid }); - } - }; - - function handleErrorMsg(err) { - let errMsg; - if (err?.errorMessage || err?.message) { - errMsg = - err?.errorMessage || err?.errors?.taxonomy || err?.errors?.term || JSON.stringify(err?.errors) || err?.message; - } - throw errMsg ?? err; - } - - const readCsv = (path, options) => { - return new Promise((resolve, reject) => { - const taxonomies = []; - fastcsv - .parseFile(path, options) - .on('error', reject) - .on('data', (data) => { - taxonomies.push(data); - }) - .on('end', () => { - resolve(taxonomies); - }); - }); - }; - - const importTaxonomies = async () => { - for (const taxonomyUID in taxonomies) { - const filePath = path.resolve(process.cwd(), `${taxonomyUID}.json`); - if (!fs.existsSync(filePath)) { - fs.writeFileSync(filePath, JSON.stringify(taxonomies[taxonomyUID])); - } - const queryParam = {}; - if (locale) { - queryParam.locale = locale; - queryParam.include_fallback = includeFallback; - } - - await stack - .taxonomy() - .import({ taxonomy: filePath }, queryParam) - .then(() => console.log(`Taxonomy ${taxonomyUID} migrated successfully!`)) - .catch((err) => { - handleErrorMsg(err); - }); - fs.unlinkSync(filePath); - } - }; - - const toSnakeCase = (str) => - str - .match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) - .map((x) => x.toLowerCase()) - .join('_'); - - const createTaxonomyTask = (params) => { - return { - title: 'Create Taxonomies', - successMessage: 'Taxonomies created successfully!', - failedMessage: 'Failed to create taxonomies!', - task: async (params) => { - try { - stack = stackClient(); - if (!fs.existsSync(dataDir)) throw new Error(`No Taxonomies folder found! - ${dataDir}`); - const taxonomies = await readCsv(dataDir, { headers: true, delimiter }); - - if (!taxonomies?.length) throw new Error('No Taxonomies found!'); - - for (const taxDetails of taxonomies) { - const taxonomyName = taxDetails['Taxonomy Name'] ?? ''; - const taxonomyUID = taxDetails['Taxonomy Uid'] ?? ''; - const taxonomyDesc = taxDetails['Taxonomy Description'] ?? ''; - //taxonomy name required - if (taxonomyName) { - const reqTaxonomyObj = { - name: taxonomyName, - uid: taxonomyUID ?? toSnakeCase(taxonomyName), - description: taxonomyDesc, - }; - parentDetails = { taxonomy_uid: reqTaxonomyObj.uid }; - await pushTaxonomyDetails(reqTaxonomyObj); - } else if (!taxonomyName && parentDetails['taxonomy_uid']) { - const column = Object.keys(taxDetails).find((col) => taxDetails[col] !== ''); - if (!column) continue; - - const termLevel = (column.match(/Level \d+/) || [''])[0]; // Output:- Level 1/Level 2 - const termDepth = +termLevel.replace(/\D/g, ''); // fetch depth from header - const termName = taxDetails[`${termLevel} Term Name`] ?? ''; - - //term name required field to generate term uid - if (termName && termDepth) { - const termUID = taxDetails[`${termLevel} Term Uid`] || toSnakeCase(termName); - //Handled cases - //1.child term case 2.sibling term 3.different parent term parentUID = parentDetails[termDepth - 1] || null - //4.parent term -> parentUID = null & depth=1 - parentUID = parentDetails[termDepth - 1] || (termDepth === 1 ? null : parentUID); - depth = termDepth; - parentDetails[depth] = termUID; - const reqTermObj = { - uid: termUID, - name: termName, - parent_uid: parentUID, - taxonomy_uid: parentDetails['taxonomy_uid'], - }; - await pushTermDetails(reqTermObj); - } - } - } - - // create json file & remove it after migrating taxonomy - await importTaxonomies(); - } catch (error) { - throw error; - } - }, - }; - }; - if (config?.['data-dir']) { - migration.addTask(createTaxonomyTask()); - } else { - console.error('Please provide config using --config data-dir:""'); - } -}; diff --git a/packages/contentstack-migration/examples/taxonomies/test_taxonomies.csv b/packages/contentstack-migration/examples/taxonomies/test_taxonomies.csv deleted file mode 100644 index 67e9e2b36d..0000000000 --- a/packages/contentstack-migration/examples/taxonomies/test_taxonomies.csv +++ /dev/null @@ -1,21 +0,0 @@ -Taxonomy Name,Taxonomy Uid,Taxonomy Description,Taxonomy Locale, Level 1 Term Name,Level 1 Term Uid,Level 1 Term Locale,Level 2 Term Name,Level 2 Term Uid,Level 2 Term Locale,Level 3 Term Name,Level 3 Term Uid,Level 3 Term Locale,Level 4 Term Name,Level 4 Term Uid,Level 4 Term Locale,Level 5 Term Name,Level 5 Term Uid,Level 5 Term Locale,Level 6 Term Name,Level 6 Term Uid,Level 6 Term Locale,Level 7 Term Name,Level 7 Term Uid,Level 7 Term Locale,Level 8 Term Name,Level 8 Term Uid,Level 8 Term Locale,Level 9 Term Name,Level 9 Term Uid,Level 9 Term Locale,Level 10 Term Name,Level 10 Term Uid,Level 10 Term Locale -Regions,regions,A Taxonomy which focuses on the categorization of various regions & it's sub regions,en-us,,,,,,,,,,,,,,,,,,,, -,,,,EMEA,emea,en-us,,,,,,,,,,,,,,,,,, -,,,,,,,Europe,europe,en-us,,,,,,,,,,,,,,,, -,,,,,,,Middle East,middle_east,en-us,,,,,,,,,,,,,,,, -,,,,,,,Africa,africa,en-us,,,,,,,,,,,,,,,, -,,,,APAC,apac,en-us,,,,,,,,,,,,,,,,,, -,,,,,,,Asia,asia,en-us,,,,,,,,,,,,,,,, -,,,,,,,,,,Northeastern Asia,northeastern_asia,en-us,,,,,,,,,,,,,, -,,,,,,,,,,Central and South Asia,central_and_south_asia,en-us,,,,,,,,,,,,,, -,,,,,,,,,,,,,Central Asia,central_asia,en-us,,,,,,,,,,,, -,,,,,,,,,,,,,South Asia,south_asia,en-us,,,,,,,,,,,, -,,,,,,,,,,,,,India,india,en-us,,,,,,,,,, -,,,,,,,,,,,,,,,,Maharashtra,maharashtra,en-us,,,,,,,, -,,,,,,,,,,,,,,,,,,,Mumbai,mumbai,en-us,,,,,, -,,,,,,,,,,Southeastern Asia,southeastern_asia,en-us,,,,,,,,,,,,,, -,,,,,,,Pacific,pacific,en-us,,,,,,,,,,,,,,,, -clothes,clothes,categorization of various clothes,en-us,,,,,,,,,,,,,,,,,,,, -,,,,Casual wear,casual,en-us,,,,,,,,,,,,,,,,,, -,,,,Formal wear,formal,en-us,,,,,,,,,,,,,,,,,, -,,,,Sports wear,sports,en-us,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/packages/contentstack-migration/package.json b/packages/contentstack-migration/package.json index 03cdc2e4e9..16931f722d 100644 --- a/packages/contentstack-migration/package.json +++ b/packages/contentstack-migration/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-migration", - "version": "1.8.2", + "version": "2.0.0-beta", "author": "@contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { diff --git a/packages/contentstack-migration/src/modules/fields.js b/packages/contentstack-migration/src/modules/fields.js index 0b6e69f9e6..a534d099c9 100644 --- a/packages/contentstack-migration/src/modules/fields.js +++ b/packages/contentstack-migration/src/modules/fields.js @@ -336,4 +336,4 @@ class Field extends Base { } } -module.exports = Field; +module.exports = Field; \ No newline at end of file diff --git a/packages/contentstack-utilities/src/constants/logging.ts b/packages/contentstack-utilities/src/constants/logging.ts index b553006701..ac2e09eecc 100644 --- a/packages/contentstack-utilities/src/constants/logging.ts +++ b/packages/contentstack-utilities/src/constants/logging.ts @@ -16,4 +16,4 @@ export const levelColors = { debug: 'blue', }; -export const PROGRESS_SUPPORTED_MODULES = ['export', 'import'] as const; +export const PROGRESS_SUPPORTED_MODULES = ['export', 'import','import-setup'] as const; diff --git a/packages/contentstack/README.md b/packages/contentstack/README.md index 61d3f6846f..8214a98e8c 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/2.0.0-beta.1 darwin-arm64 node-v22.14.0 +@contentstack/cli/2.0.0-beta.2 darwin-arm64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND @@ -57,7 +57,6 @@ USAGE * [`csdx cm:bulk-publish:revert`](#csdx-cmbulk-publishrevert) * [`csdx csdx cm:stacks:unpublish [-a ] [-e ] [-c ] [-y] [--locale ] [--branch ] [--retry-failed ] [--bulk-unpublish ] [--content-type ] [--delivery-token ] [--only-assets] [--only-entries]`](#csdx-csdx-cmstacksunpublish--a-value--e-value--c-value--y---locale-value---branch-value---retry-failed-value---bulk-unpublish-value---content-type-value---delivery-token-value---only-assets---only-entries) * [`csdx cm:entries:publish-only-unpublished [-a ] [--retry-failed ] [--bulk-publish ] [--source-env ] [--content-types ] [--locales ] [-e ] [-c ] [-y] [--branch ]`](#csdx-cmentriespublish-only-unpublished--a-value---retry-failed-value---bulk-publish-value---source-env-value---content-types-value---locales-value--e-value--c-value--y---branch-value) -* [`csdx cm:entries:migrate-html-rte`](#csdx-cmentriesmigrate-html-rte) * [`csdx cm:entries:publish [-a ] [--retry-failed ] [--bulk-publish ] [--publish-all-content-types] [--content-types ] [--locales ] [-e ] [-c ] [-y] [--branch ] [--delivery-token ] [--source-env ] [--entry-uid ] [--include-variants]`](#csdx-cmentriespublish--a-value---retry-failed-value---bulk-publish-value---publish-all-content-types---content-types-value---locales-value--e-value--c-value--y---branch-value---delivery-token-value---source-env-value---entry-uid-value---include-variants) * [`csdx cm:entries:publish-modified [-a ] [--retry-failed ] [--bulk-publish ] [--source-env ] [--content-types ] [--locales ] [-e ] [-c ] [-y] [--branch ]`](#csdx-cmentriespublish-modified--a-value---retry-failed-value---bulk-publish-value---source-env-value---content-types-value---locales-value--e-value--c-value--y---branch-value) * [`csdx cm:entries:publish-non-localized-fields [-a ] [--retry-failed ] [--bulk-publish ] [--source-env ] [--content-types ] [-e ] [-c ] [-y] [--branch ]`](#csdx-cmentriespublish-non-localized-fields--a-value---retry-failed-value---bulk-publish-value---source-env-value---content-types-value--e-value--c-value--y---branch-value) @@ -68,7 +67,6 @@ USAGE * [`csdx cm:export-to-csv`](#csdx-cmexport-to-csv) * [`csdx cm:stacks:import [-c ] [-k ] [-d ] [-a ] [--module ] [--backup-dir ] [--branch ] [--import-webhook-status disable|current]`](#csdx-cmstacksimport--c-value--k-value--d-value--a-value---module-value---backup-dir-value---branch-value---import-webhook-status-disablecurrent) * [`csdx cm:stacks:import-setup [-k ] [-d ] [-a ] [--modules ]`](#csdx-cmstacksimport-setup--k-value--d-value--a-value---modules-valuevalue) -* [`csdx cm:migrate-rte`](#csdx-cmmigrate-rte) * [`csdx cm:stacks:migration [-k ] [-a ] [--file-path ] [--branch ] [--config-file ] [--config ] [--multiple]`](#csdx-cmstacksmigration--k-value--a-value---file-path-value---branch-value---config-file-value---config-value---multiple) * [`csdx cm:stacks:seed [--repo ] [--org ] [-k ] [-n ] [-y ] [-s ] [--locale ]`](#csdx-cmstacksseed---repo-value---org-value--k-value--n-value--y-value--s-value---locale-value) * [`csdx cm:stacks:clone [--source-branch ] [--target-branch ] [--source-management-token-alias ] [--destination-management-token-alias ] [-n ] [--type a|b] [--source-stack-api-key ] [--destination-stack-api-key ] [--import-webhook-status disable|current]`](#csdx-cmstacksclone---source-branch-value---target-branch-value---source-management-token-alias-value---destination-management-token-alias-value--n-value---type-ab---source-stack-api-key-value---destination-stack-api-key-value---import-webhook-status-disablecurrent) @@ -1596,69 +1594,6 @@ EXAMPLES $ csdx cm:entries:publish-only-unpublished -b --content-types [CONTENT TYPES] -e [ENVIRONMENTS] --locales LOCALE -a [MANAGEMENT TOKEN ALIAS] --stack-api-key [STACK API KEY] -source-env [SOURCE ENV] ``` -## `csdx cm:entries:migrate-html-rte` - -Migration script to migrate content from HTML RTE to JSON RTE - -``` -USAGE - $ csdx cm:entries:migrate-html-rte [-c ] [-a ] [--stack-api-key ] [--content-type ] - [--global-field] [-y] [--branch ] [--html-path --json-path ] [--delay ] [--locale - ] [--batch-limit ] - -FLAGS - -a, --alias= Enter the alias name. You must use either the --alias flag or the --stack-api-key flag. - -c, --config-path= Specify the path where your config file is located. - -y, --yes Avoids reconfirmation of your configuration. - --batch-limit= [default: 50] Provide batch limit for updating entries (default: 50). - --branch= The name of the branch to be used. - --content-type= Specify the UID of the content type for which you want to migrate HTML RTE content. - --delay= [default: 1000] To set the interval time between the migration of HTML RTE to JSON RTE in - subsequent entries of a content type. The default value is 1,000 milliseconds. - --global-field Checks whether the specified UID belongs to a content type or a global field. This flag - is set to false by default. - --html-path= Enter the path to the HTML RTE whose content you want to migrate. - --json-path= Enter the path to the JSON RTE to which you want to migrate the HTML RTE content. - --locale= The locale from which entries will be migrated. - --stack-api-key= API key of the source stack. You must use either the --stack-api-key flag or the --alias - flag. - -DESCRIPTION - Migration script to migrate content from HTML RTE to JSON RTE - -ALIASES - $ csdx cm:migrate-rte - -EXAMPLES - General Usage - - $ csdx cm:entries:migrate-html-rte --config-path path/to/config.json - - - - Using Flags - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path html-path --json-path json-path - - - - Nested RTE - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path modular_block_uid.block_uid.html_rte_uid --json-path modular_block_uid.block_uid.json_rte_uid - - - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type content_type_uid --html-path group_uid.html_rte_uid --json-path group_uid.json_rte_uid - - - - Global Field - - $ csdx cm:entries:migrate-html-rte --alias alias --content-type global_field_uid --global-field --html-path html-path --json-path json-path -``` - -_See code: [@contentstack/cli-cm-migrate-rte](https://github.com/contentstack/cli/blob/main/packages/contentstack-migrate-rte/src/commands/cm/entries/migrate-html-rte.js)_ - ## `csdx cm:entries:publish [-a ] [--retry-failed ] [--bulk-publish ] [--publish-all-content-types] [--content-types ] [--locales ] [-e ] [-c ] [-y] [--branch ] [--delivery-token ] [--source-env ] [--entry-uid ] [--include-variants]` Publish entries from multiple contenttypes to multiple environments and locales @@ -2392,8 +2327,6 @@ FLAGS extensions, marketplace-apps, global-fields, labels, locales, webhooks, workflows, custom-roles, personalize projects, and taxonomies. -y, --yes [optional] Force override all Marketplace prompts. - --branch-alias= Specify the branch alias where you want to import your content. If not - specified, the content is imported into the main branch by default. --branch-alias= Specify the branch alias where you want to import your content. If not specified, the content is imported into the main branch by default. --exclude-global-modules Excludes the branch-independent module from the import operation. @@ -2449,8 +2382,6 @@ FLAGS branches involved, then the path should point till the particular branch. For example, “-d "C:\Users\Name\Desktop\cli\content\branch_name" -k, --stack-api-key= API key of the target stack - --branch-alias= Specify the branch alias where you want to import your content. If not specified, the - content is imported into the main branch by default. --branch-alias= Specify the branch alias where you want to import your content. If not specified, the content is imported into the main branch by default. --module=