From a4d908a3c45e5227875cefe22424687c6dae7374 Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Fri, 5 Jun 2026 14:39:50 +0530 Subject: [PATCH 01/24] feat: add asset scanning support in import --- .talismanrc | 96 +------------------ .../src/import/module-importer.ts | 16 ++++ .../src/import/modules/assets.ts | 7 ++ .../src/types/import-config.ts | 1 + 4 files changed, 26 insertions(+), 94 deletions(-) diff --git a/.talismanrc b/.talismanrc index abd4b976c..51f9d046d 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,96 +1,4 @@ fileignoreconfig: - - filename: packages/contentstack-migrate-rte/test/dummy/expectedEntriesResponse.json - checksum: a2784a3cb21780434958478d478dcb91d2d9a3a8025567d90fe8d74e9141b052 - - filename: packages/contentstack-migrate-rte/test/dummy/entriesResponse.json - checksum: 691f3dcfbbcf69fd21e109a0d7003bdb500af2d0253bb7d7e8a0636d8f2a58f4 - - filename: pnpm-lock.yaml - checksum: e0fb4541c1f31354c8899eba61bc579942a4c1057658973b4691c2890c98ff93 - - filename: packages/contentstack-bulk-operations/src/utils/bulk-publish-url-generator.ts - checksum: 052d811adb5da9bac8c70e5b3dc4ddf700d5aea274dd2aa90a2df374118fbd26 - - filename: packages/contentstack-bulk-operations/src/utils/client.ts - checksum: efdada21291db6d66e3114b7408163dee4cafe6ddb3904f02aa67140a1a89bb6 - - filename: packages/contentstack-bulk-operations/test/unit/core/index.test.ts - checksum: 0d789258f5a9664e8a7dc5f5b23da846d0eaf8c52638ff20fb1f26104d3f9f8d - - filename: packages/contentstack-migrate-rte/README.md - checksum: 3810817d905405de86814af35fc0f0a6712cacd70f43223869b4f0599b6e579c - - filename: packages/contentstack-bulk-operations/test/unit/messages/index.test.ts - checksum: e86e76db4f4afc899ae2a4742627a71a7d227a7139014361b9d83de6154b3c7a - - filename: packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts - checksum: 18684a596707865e671f1ee57b4819cb3f4b4f2633d6c49f7f4b6ce09391359f - - filename: packages/contentstack-bulk-operations/src/base-bulk-command.ts - checksum: 34907f0e00c40096cbe517b680a24fdf57caac351e45bc44b96e41987e619b67 - - filename: packages/contentstack-bulk-operations/test/unit/services/index.test.ts - checksum: aae62ba072551bedf869ec7b1f6bf90238bc039336f37e7c583da8ba0637f9be - - filename: packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts - checksum: cec7ba35157c6516d67931d41deb57b7a156d9fc05dbab93ca5116e89b95c820 - - filename: packages/contentstack-bulk-operations/test/unit/utils/client.test.ts - checksum: 178611b1f153b46a0020da22cc18293d5bd9c539ec2e54557fd8c1a3c2e796b3 - - filename: packages/contentstack-bulk-operations/test/unit/services/taxonomy-service.test.ts - checksum: 33af8ee198158dd92916d76207e172b5316864d063a6929526ca259b459ec79a - - filename: packages/contentstack-cli-tsgen/src/commands/tsgen.ts - checksum: 054ea78f765edca62c785714cf8962df4fb91529c0851439d1ed61e963467408 - - filename: packages/contentstack-cli-cm-regex-validate/messages/index.json - checksum: 044b311bde624dcc3c12434174d6027dbb6b62eefdfae120570a1748f806c60c - - filename: packages/contentstack-cli-tsgen/AGENTS.md - checksum: 75b4f1414b547d0bd83df5ed4fb80020acc0ed849619bed2639491b565be7a1b - - filename: packages/contentstack-bulk-operations/eslint.config.js - checksum: 0d93d7f660fe4cd6d62348c85ac10bf7c66018ea0b8e3e6d5a53419433f15867 - - filename: packages/contentstack-cli-cm-regex-validate/test/utils/connect-stack.test.ts - checksum: 8fcd1dc2770a2a3f55ba462b7ffd3fc2e3cf45342c63e5b6dc5c1db4c2bd9738 - - filename: packages/contentstack-bulk-operations/test/unit/utils/validators.test.ts - checksum: 69cf394584e325b972d6825879de7c31b9dd1bd50b0bb057aecb739258ac0317 - - filename: packages/contentstack-bulk-operations/test/unit/commands/bulk-assets.test.ts - checksum: c099c628c7ae1a40a9ca5580de0afa8309a611b2dff7837b10bb8f70eb92f8b3 - - filename: packages/contentstack-bulk-operations/test/unit/core/operation-executor.test.ts - checksum: 97f0ddd4d547f37a8d93650aa1e8af4ef4dbce343dd51853e34bbde6107cd725 - - filename: packages/contentstack-cli-tsgen/src/lib/helper.ts - checksum: a7ead0030ead9d15b6b6e9623f61e7def77b00325e3988f0e3d73a145180dedc - - filename: packages/contentstack-migrate-rte/test/utils/index.js - checksum: bc2a509a86174aecbaf0bfc44d6ad3afabe57ef871ec91b796d498e00177e3f0 - - filename: packages/contentstack-cli-cm-regex-validate/skills/code-review/SKILL.md - checksum: b92ea1c8e2f901c9e1e60f6ef6986d348a40a7869c236e3c1f3ca53b553dbb8e - - filename: packages/contentstack-migrate-rte/test/commands/json-migration.test.js - checksum: 56e10f1e0d2794fa13bcf5a6bb3e868b28277df1762fb3df0a8a82ad44f8045b - - filename: packages/contentstack-bulk-operations/test/unit/utils/interactive.test.ts - checksum: 3ee0ff5a74929346bfe997aeb977b4e93d398ea63892efc5f85e0b51a21074f6 - - filename: packages/contentstack-bulk-operations/src/core/operation-executor.ts - checksum: 46295f495f007ad291787133936c5af3c76838d72f2be0de9c235bb644d6f905 - - filename: packages/contentstack-bulk-operations/src/utils/batch-queue-handler.ts - checksum: d1d031242b99f5c738e2f4587ca2f5f3e96373e479ebaf4d93b2f98152943593 - - filename: packages/contentstack-bulk-operations/src/messages/index.ts - checksum: 2d904462af6dc3ddc00ae6bb4433c846500ddfecee5a9e1fb1c236bd598a2ee1 - - filename: packages/contentstack-migrate-rte/src/commands/cm/entries/migrate-html-rte.js - checksum: a069c50d5152022a0957d5f597158e2d8c74803b3d24ff6bbbe3b09f0e9053e2 - - filename: packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts - checksum: d46757d3bb98d76845e83d4585f269b62b1fa9cb5bee3215b88fed38fd1dbb53 - - filename: packages/contentstack-bulk-operations/src/utils/revert-retry-handler.ts - checksum: 76899098d74de1dd20f1b08401c65f23b2bec584c051388e63f70f3d24a6d1a4 - - filename: packages/contentstack-bulk-operations/src/utils/interactive.ts - checksum: ba4fdd6f17c7d43cae639158f82dea3065ba8a368ddce8c476bfe49a6945e5c1 - - filename: packages/contentstack-bulk-operations/test/unit/utils/taxonomy-interactive-select.test.ts - checksum: 34a085702d01d7e16e1507ea1e434b374c2cba5dd884aad5996c5484412897c0 - - filename: packages/contentstack-bulk-operations/src/core/rate-limiter.ts - checksum: 81e3d624166ab34a589e3e8527b9e57ebc7e7f4374efd0483b1df0dd11788b68 - - filename: packages/contentstack-bulk-operations/src/interfaces/index.ts - checksum: 0ff6bbc372758a20783f36bd391ba9d500530433fde472a1aacaf54f6b4a1688 - - filename: packages/contentstack-bulk-operations/test/unit/utils/operation-confirmation.test.ts - checksum: 043185e56361ffae2116a2af5a4da16986816ad054fd94f189269e5b6150609e - - filename: packages/contentstack-cli-cm-regex-validate/skills/contentstack-cli/SKILL.md - checksum: 9420a516ba6046b05748683c90e3817d091cef76c46e029cb3745d6c0c350838 - - filename: packages/contentstack-cli-cm-regex-validate/skills/dev-workflow/SKILL.md - checksum: b423dd35d0f7f0f25315e2a30198669b50db350f0ab2f917a1d3c4fbb0af0534 - - filename: packages/contentstack-bulk-operations/test/unit/commands/bulk-entries.test.ts - checksum: 845512e660813a6d7d96efd89dcff6eba4591a3f9ff371dc9b1aad38921e18a6 - - filename: packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts - checksum: 078f9633edb53204ed14ebe3cf6b1d6063729dd37b7ee1c6e936a344ceabebda - - filename: packages/contentstack-migrate-rte/src/lib/util/index.js - checksum: 7d85f342c7fd7875713cebfae83f68d8592cc732a15cca48ddecbeae818cb4c5 - - filename: packages/contentstack-cli-cm-regex-validate/src/utils/connect-stack.ts - checksum: c77c7c25efc6d043b26e3dd0a516e22ac50142fa9fa5ff3a53a7c9fb8f24ebd6 - - filename: packages/contentstack-bulk-operations/src/utils/config-builder.ts - checksum: a7b5259ad719b8c5929f9fea3783bdc92610dc2549426204c1bb6813e7e1112a - - filename: packages/contentstack-bulk-operations/README.md - checksum: 169110e7c6159632f19dc16e17dcb5bac22e5d6880339b35ba076a2fe0d75266 - - filename: packages/contentstack-bulk-operations/test/unit/utils/batch-queue-handler.test.ts - checksum: c91f1822b5cfd34a4f4ba05dfc56c10a66e0f5ddb55a1cf5b454fa9549ea0052 +- filename: packages/contentstack-import/src/import/modules/assets.ts + checksum: 85cac8ac469ccb8ac47f4430df5bf6cd0a5f8f4c2d165baabc8121d4ad63919d version: '1.0' diff --git a/packages/contentstack-import/src/import/module-importer.ts b/packages/contentstack-import/src/import/module-importer.ts index 2a6879c09..6e9243fa2 100755 --- a/packages/contentstack-import/src/import/module-importer.ts +++ b/packages/contentstack-import/src/import/module-importer.ts @@ -34,6 +34,12 @@ class ModuleImporter { const stackDetails: Record = await this.stackAPIClient.fetch(); this.importConfig.stackName = stackDetails.name as string; this.importConfig.org_uid = stackDetails.org_uid as string; + + const assetScanningEnabled = await this.detectAssetScanning(this.importConfig.org_uid); + if (assetScanningEnabled) { + this.importConfig.assetScanningEnabled = true; + this.importConfig.skipAssetsPublish = true; + } } await this.resolveImportPath(); @@ -209,6 +215,16 @@ class ModuleImporter { log.error(`Audit failed with following error. ${error}`, this.importConfig.context); } } + + private async detectAssetScanning(orgUid: string): Promise { + try { + const orgDetails = await this.managementAPIClient.organization(orgUid).fetch({ include_plan: true }); + const features: Array<{ uid: string; enabled?: boolean }> = orgDetails?.plan?.features || []; + return features.some((f) => (f.uid === 'assetsScan' || f.uid === 'amAssetsScan') && f.enabled === true); + } catch { + return false; + } + } } export default ModuleImporter; diff --git a/packages/contentstack-import/src/import/modules/assets.ts b/packages/contentstack-import/src/import/modules/assets.ts index e8b792f0b..ba7705b1b 100644 --- a/packages/contentstack-import/src/import/modules/assets.ts +++ b/packages/contentstack-import/src/import/modules/assets.ts @@ -79,6 +79,13 @@ export default class ImportAssets extends BaseClass { } log.success('Assets imported successfully!', this.importConfig.context); + + if (this.importConfig.assetScanningEnabled) { + log.info(' Asset Scanning is enabled for this stack.', this.importConfig.context); + log.info(' Assets cannot be published immediately — scanning must complete first.', this.importConfig.context); + log.info(' Once scanning is done, publish your assets using:', this.importConfig.context); + log.info(' csdx cm:assets:publish --environments [ENVIRONMENT 1] [ENVIRONMENT 2] --locales [LOCALE] --stack-api-key [STACK API KEY]', this.importConfig.context); + } } catch (error) { handleAndLogError(error, { ...this.importConfig.context }); } diff --git a/packages/contentstack-import/src/types/import-config.ts b/packages/contentstack-import/src/types/import-config.ts index 2c4c9a000..70ca10a27 100644 --- a/packages/contentstack-import/src/types/import-config.ts +++ b/packages/contentstack-import/src/types/import-config.ts @@ -15,6 +15,7 @@ export default interface ImportConfig extends DefaultConfig, ExternalConfig { skipAssetsPublish?: boolean; skipEntriesPublish?: boolean; cliLogsPath: string; + assetScanningEnabled?: boolean; canCreatePrivateApp: boolean; contentDir: string; data: string; From 25acf4961173f2f67f475ff1766092518fb23532 Mon Sep 17 00:00:00 2001 From: Naman Dembla Date: Tue, 9 Jun 2026 11:48:22 +0530 Subject: [PATCH 02/24] chore: removed whitespace --- packages/contentstack-import/src/import/modules/assets.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/contentstack-import/src/import/modules/assets.ts b/packages/contentstack-import/src/import/modules/assets.ts index ba7705b1b..ebdd2bf89 100644 --- a/packages/contentstack-import/src/import/modules/assets.ts +++ b/packages/contentstack-import/src/import/modules/assets.ts @@ -81,10 +81,10 @@ export default class ImportAssets extends BaseClass { log.success('Assets imported successfully!', this.importConfig.context); if (this.importConfig.assetScanningEnabled) { - log.info(' Asset Scanning is enabled for this stack.', this.importConfig.context); - log.info(' Assets cannot be published immediately — scanning must complete first.', this.importConfig.context); - log.info(' Once scanning is done, publish your assets using:', this.importConfig.context); - log.info(' csdx cm:assets:publish --environments [ENVIRONMENT 1] [ENVIRONMENT 2] --locales [LOCALE] --stack-api-key [STACK API KEY]', this.importConfig.context); + log.info('Asset Scanning is enabled for this stack.', this.importConfig.context); + log.info('Assets cannot be published immediately — scanning must complete first.', this.importConfig.context); + log.info('Once scanning is done, publish your assets using:', this.importConfig.context); + log.info('csdx cm:assets:publish --environments [ENVIRONMENT 1] [ENVIRONMENT 2] --locales [LOCALE] --stack-api-key [STACK API KEY]', this.importConfig.context); } } catch (error) { handleAndLogError(error, { ...this.importConfig.context }); From 1b6fb69558e620f24c2ff4fc6178a1a88d5bd6f1 Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Wed, 10 Jun 2026 14:41:38 +0530 Subject: [PATCH 03/24] feat: add asset scanning support in bulk publish v1 --- .../contentstack-bulk-publish/.mocharc.json | 3 +- .../src/producer/publish-assets.js | 168 ++++++++++++++++-- .../src/util/asset-scan.js | 121 +++++++++++++ .../test/unit/util/asset-scan.test.js | 162 +++++++++++++++++ 4 files changed, 434 insertions(+), 20 deletions(-) create mode 100644 packages/contentstack-bulk-publish/src/util/asset-scan.js create mode 100644 packages/contentstack-bulk-publish/test/unit/util/asset-scan.test.js diff --git a/packages/contentstack-bulk-publish/.mocharc.json b/packages/contentstack-bulk-publish/.mocharc.json index 50e4a6804..3d76d7307 100644 --- a/packages/contentstack-bulk-publish/.mocharc.json +++ b/packages/contentstack-bulk-publish/.mocharc.json @@ -5,7 +5,8 @@ "test/unit/commands/assets/unpublish.test.js", "test/unit/commands/bulk-publish/cross-publish.test.js", "test/unit/commands/entries/publish.test.js", - "test/unit/commands/entries/unpublish.test.js" + "test/unit/commands/entries/unpublish.test.js", + "test/unit/util/asset-scan.test.js" ], "reporter": "dot", "timeout": 60000, diff --git a/packages/contentstack-bulk-publish/src/producer/publish-assets.js b/packages/contentstack-bulk-publish/src/producer/publish-assets.js index a9afbdd7c..777ed31d4 100644 --- a/packages/contentstack-bulk-publish/src/producer/publish-assets.js +++ b/packages/contentstack-bulk-publish/src/producer/publish-assets.js @@ -1,6 +1,7 @@ /* eslint-disable no-console */ /* eslint-disable new-cap */ /* eslint-disable camelcase */ +const chalk = require('chalk'); const { cliux } = require('@contentstack/cli-utilities'); const { getQueue } = require('../util/queue'); const { performBulkPublish, publishAsset, initializeLogger } = require('../consumer/publish'); @@ -9,14 +10,27 @@ const { validateFile } = require('../util/fs'); const { isEmpty } = require('../util'); const { fetchBulkPublishLimit } = require('../util/common-utility'); const { generateBulkPublishStatusUrl } = require('../util/generate-bulk-publish-url'); +const { resolveInQueueAssets, ASSET_SCAN_STATUS } = require('../util/asset-scan'); const queue = getQueue(); let logFileName; let bulkPublishSet = []; +let pendingAssetsForRetry = []; +let scanSummary = { clean: 0, quarantined: 0, inQueue: 0, noStatus: 0 }; let filePath; /* eslint-disable no-param-reassign */ +function printScanSummary({ clean, noStatus, inQueue, quarantined }) { + const total = clean + noStatus + inQueue + quarantined; + if (total === 0) return; + console.log(chalk.bold(`\nAsset scan summary (${total} total):`)); + console.log(chalk.green(` ✓ Clean (publishing): ${clean}`)); + if (noStatus > 0) console.log(chalk.green(` ✓ No scan status (publishing): ${noStatus}`)); + if (inQueue > 0) console.log(chalk.yellow(` ⧖ In queue (retrying): ${inQueue}`)); + if (quarantined > 0) console.log(chalk.red(` ✗ Quarantined (skipped): ${quarantined}`)); +} + async function getAssets(stack, folder, bulkPublish, environments, locale, apiVersion, bulkPublishLimit, skip = 0) { return new Promise((resolve, reject) => { let queryParams = { @@ -25,6 +39,7 @@ async function getAssets(stack, folder, bulkPublish, environments, locale, apiVe include_count: true, include_folders: true, include_publish_details: true, + include_asset_scan_status: true, }; stack .asset() @@ -34,7 +49,8 @@ async function getAssets(stack, folder, bulkPublish, environments, locale, apiVe if (assetResponse && assetResponse.items.length > 0) { skip += assetResponse.items.length; let assets = assetResponse.items; - for (let index = 0; index < assetResponse.items.length; index++) { + + for (let index = 0; index < assets.length; index++) { if (assets[index].is_dir === true) { await getAssets( stack, @@ -48,6 +64,35 @@ async function getAssets(stack, folder, bulkPublish, environments, locale, apiVe ); continue; } + + const scanStatus = assets[index]._asset_scan_status; + + // Quarantined assets are skipped permanently + if (scanStatus === ASSET_SCAN_STATUS.QUARANTINE) { + scanSummary.quarantined++; + console.log(chalk.yellow(`Skipped (quarantined): Asset UID '${assets[index].uid}'`)); + continue; + } + + // In-queue assets are deferred for retry after all pages are processed + if (scanStatus === ASSET_SCAN_STATUS.IN_QUEUE) { + scanSummary.inQueue++; + pendingAssetsForRetry.push({ + uid: assets[index].uid, + locale, + publish_details: assets[index].publish_details || [], + environments, + }); + continue; + } + + // Ready (clean) or no scan status — enqueue for publish + if (scanStatus === ASSET_SCAN_STATUS.READY) { + scanSummary.clean++; + } else { + scanSummary.noStatus++; + } + if (bulkPublish) { if (bulkPublishSet.length < bulkPublishLimit) { bulkPublishSet.push({ @@ -67,22 +112,6 @@ async function getAssets(stack, folder, bulkPublish, environments, locale, apiVe }); bulkPublishSet = []; } - - if ( - assetResponse.items.length - 1 === index && - bulkPublishSet.length > 0 && - bulkPublishSet.length < bulkPublishLimit - ) { - await queue.Enqueue({ - assets: bulkPublishSet, - Type: 'asset', - environments: environments, - locale, - stack: stack, - apiVersion, - }); - bulkPublishSet = []; - } } else { await queue.Enqueue({ assetUid: assets[index].uid, @@ -94,6 +123,23 @@ async function getAssets(stack, folder, bulkPublish, environments, locale, apiVe }); } } + + // Flush any partial bulk batch at the end of the page. + // Done outside the for-loop so it fires correctly even when some assets + // were skipped (quarantined/in-queue) and the last non-skipped asset is + // not at the final array index. + if (bulkPublish && bulkPublishSet.length > 0) { + await queue.Enqueue({ + assets: bulkPublishSet, + Type: 'asset', + environments: environments, + locale, + stack: stack, + apiVersion, + }); + bulkPublishSet = []; + } + if (skip === assetResponse.count) { return resolve(true); } @@ -109,6 +155,78 @@ async function getAssets(stack, folder, bulkPublish, environments, locale, apiVe }); } +/** + * After all pages/locales are scanned, retry any assets that were in-queue. + * Takes pendingItems explicitly — does not read from module-level state. + * Uses incremental backoff (see asset-scan.js SCAN_RETRY config). + */ +async function processPendingAssets(pendingItems, stack, bulkPublish, environments, apiVersion, bulkPublishLimit) { + if (pendingItems.length === 0) return; + + // Deduplicate UIDs across locales — scan status is per-asset, not per-locale. + // Resolving once avoids redundant retry loops for multi-locale runs. + const allUids = [...new Set(pendingItems.map((a) => a.uid))]; + const resolvedUids = await resolveInQueueAssets(stack, allUids); + + if (resolvedUids.length === 0) { + console.log(chalk.yellow('No in-queue assets resolved after retries.')); + return; + } + + const resolvedSet = new Set(resolvedUids); + + // Group resolved items by locale for correct enqueue context + const byLocale = {}; + for (const item of pendingItems) { + if (!resolvedSet.has(item.uid)) continue; + if (!byLocale[item.locale]) byLocale[item.locale] = []; + byLocale[item.locale].push(item); + } + + for (const locale of Object.keys(byLocale)) { + const resolvedItems = byLocale[locale]; + + if (bulkPublish) { + let batchSet = []; + for (const item of resolvedItems) { + batchSet.push({ uid: item.uid, locale, publish_details: item.publish_details }); + if (batchSet.length === bulkPublishLimit) { + await queue.Enqueue({ + assets: batchSet, + Type: 'asset', + environments, + locale, + stack, + apiVersion, + }); + batchSet = []; + } + } + if (batchSet.length > 0) { + await queue.Enqueue({ + assets: batchSet, + Type: 'asset', + environments, + locale, + stack, + apiVersion, + }); + } + } else { + for (const item of resolvedItems) { + await queue.Enqueue({ + assetUid: item.uid, + publish_details: item.publish_details, + environments, + Type: 'asset', + locale, + stack, + }); + } + } + } +} + function setConfig(conf, bp) { if (bp) { queue.consumer = performBulkPublish; @@ -120,6 +238,8 @@ function setConfig(conf, bp) { config = conf; queue.config = conf; filePath = initializeLogger(logFileName); + pendingAssetsForRetry = []; + scanSummary = { clean: 0, quarantined: 0, inQueue: 0, noStatus: 0 }; } async function start({ retryFailed, bulkPublish, environments, folderUid, locales, apiVersion }, stack, config) { @@ -131,7 +251,7 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale } else if (!isSuccessLogEmpty) { console.log(`The success log for this session is stored at ${filePath}.success`); } - + // Generate and display the bulk publish status link if (bulkPublish && stack && config) { const statusUrl = generateBulkPublishStatusUrl(stack, config); @@ -142,11 +262,12 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale process.stdout.write('\n'); } } - + process.exit(0); }); if (retryFailed) { + console.log(chalk.yellow('Note: --retry-failed replays from log and skips asset scan status checks.')); if (!validateFile(retryFailed, ['publish-assets', 'bulk-publish-assets'])) { return false; } @@ -165,6 +286,14 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale for (const locale of locales) { await getAssets(stack, folderUid, bulkPublish, environments, locale, apiVersion, bulkPublishLimit); } + + printScanSummary(scanSummary); + + // Resolve in-queue assets with incremental retry; pass pendingAssetsForRetry explicitly + if (pendingAssetsForRetry.length > 0) { + await processPendingAssets(pendingAssetsForRetry, stack, bulkPublish, environments, apiVersion, bulkPublishLimit); + pendingAssetsForRetry = []; + } } } @@ -172,4 +301,5 @@ module.exports = { getAssets, setConfig, start, + processPendingAssets, }; diff --git a/packages/contentstack-bulk-publish/src/util/asset-scan.js b/packages/contentstack-bulk-publish/src/util/asset-scan.js new file mode 100644 index 000000000..9c9f3f0d1 --- /dev/null +++ b/packages/contentstack-bulk-publish/src/util/asset-scan.js @@ -0,0 +1,121 @@ +/* eslint-disable no-console */ +const chalk = require('chalk'); + +const ASSET_SCAN_STATUS = { + READY: 'clean', + QUARANTINE: 'quarantined', + IN_QUEUE: 'pending', +}; + +const SCAN_RETRY = { + MAX_RETRIES: 5, + INITIAL_WAIT_MS: 5000, + BACKOFF_FACTOR: 2, +}; + +function getIncrementalWaitMs(attempt) { + return SCAN_RETRY.INITIAL_WAIT_MS * Math.pow(SCAN_RETRY.BACKOFF_FACTOR, attempt); +} + +/** + * Batch-fetch asset scan statuses for a list of UIDs. + * Returns a Map. UIDs with no scan data map to undefined. + * Throws on API error — callers must not silently treat failures as "ready". + */ +async function fetchScanStatusBatch(stack, uids) { + const statusMap = new Map(); + if (!uids || uids.length === 0) return statusMap; + + const BATCH_SIZE = 100; + for (let i = 0; i < uids.length; i += BATCH_SIZE) { + const batch = uids.slice(i, i + BATCH_SIZE); + const response = await stack + .asset() + .query({ uid: { $in: batch }, include_asset_scan_status: true, limit: BATCH_SIZE }) + .find(); + for (const asset of response.items || []) { + statusMap.set(asset.uid, asset._asset_scan_status); + } + } + + return statusMap; +} + +/** + * Retry pending (in-queue) assets with incremental backoff until they become + * clean or max retries is reached. + * + * Wait series: 5s, 10s, 20s, 40s, 80s (5 attempts total, max 155s). + * + * @param {object} stack - Management SDK stack instance + * @param {string[]} pendingUids - UIDs currently in scan queue + * @returns {string[]} UIDs that became clean and are safe to publish + */ +async function resolveInQueueAssets(stack, pendingUids) { + if (!pendingUids || pendingUids.length === 0) return []; + + const totalWaitSec = + Array.from({ length: SCAN_RETRY.MAX_RETRIES }, (_, i) => getIncrementalWaitMs(i)).reduce( + (a, b) => a + b, + 0, + ) / 1000; + console.log( + chalk.yellow( + `Resolving ${pendingUids.length} in-queue asset(s). Max wait: ${totalWaitSec}s over ${SCAN_RETRY.MAX_RETRIES} retries.`, + ), + ); + + let remaining = [...pendingUids]; + const resolvedUids = []; + + for (let attempt = 0; attempt < SCAN_RETRY.MAX_RETRIES && remaining.length > 0; attempt++) { + const waitMs = getIncrementalWaitMs(attempt); + console.log( + chalk.yellow( + `Asset scan: ${remaining.length} asset(s) in queue. Waiting ${waitMs / 1000}s before retry ${attempt + 1}/${ + SCAN_RETRY.MAX_RETRIES + }...`, + ), + ); + + await new Promise((resolve) => setTimeout(resolve, waitMs)); + + const statusMap = await fetchScanStatusBatch(stack, remaining); + const stillPending = []; + + for (const uid of remaining) { + const status = statusMap.get(uid); + if (status === ASSET_SCAN_STATUS.QUARANTINE) { + console.log(chalk.red(`Skipped (quarantined after retry): Asset UID '${uid}'`)); + } else if (status === ASSET_SCAN_STATUS.IN_QUEUE) { + stillPending.push(uid); + } else { + // clean or undefined (scanning disabled) — publishable + resolvedUids.push(uid); + } + } + + remaining = stillPending; + } + + if (remaining.length > 0) { + console.warn( + chalk.red( + `Asset scan: ${remaining.length} asset(s) remained in queue after ${SCAN_RETRY.MAX_RETRIES} retries and will be skipped.`, + ), + ); + for (const uid of remaining) { + console.warn(chalk.red(`Skipped (max retries exceeded): Asset UID '${uid}'`)); + } + } + + return resolvedUids; +} + +module.exports = { + ASSET_SCAN_STATUS, + SCAN_RETRY, + getIncrementalWaitMs, + fetchScanStatusBatch, + resolveInQueueAssets, +}; diff --git a/packages/contentstack-bulk-publish/test/unit/util/asset-scan.test.js b/packages/contentstack-bulk-publish/test/unit/util/asset-scan.test.js new file mode 100644 index 000000000..83b430bde --- /dev/null +++ b/packages/contentstack-bulk-publish/test/unit/util/asset-scan.test.js @@ -0,0 +1,162 @@ +'use strict'; + +const { describe, it, beforeEach, afterEach } = require('mocha'); +const { expect } = require('chai'); + +const { + ASSET_SCAN_STATUS, + SCAN_RETRY, + getIncrementalWaitMs, + fetchScanStatusBatch, + resolveInQueueAssets, +} = require('../../../src/util/asset-scan'); + +// Minimal mock stack factory +function makeStack(items) { + return { + asset() { + return { + query() { + return { + find: async () => ({ items: items || [] }), + }; + }, + }; + }, + }; +} + +// Stack that throws on query +function makeErrorStack(errorMsg) { + return { + asset() { + return { + query() { + return { + find: async () => { + throw new Error(errorMsg); + }, + }; + }, + }; + }, + }; +} + +describe('asset-scan utilities', () => { + // ─── getIncrementalWaitMs ──────────────────────────────────────────────── + + describe('getIncrementalWaitMs', () => { + it('returns INITIAL_WAIT_MS for attempt 0', () => { + expect(getIncrementalWaitMs(0)).to.equal(SCAN_RETRY.INITIAL_WAIT_MS); + }); + + it('doubles on each subsequent attempt', () => { + const seq = [0, 1, 2, 3, 4].map(getIncrementalWaitMs); + for (let i = 1; i < seq.length; i++) { + expect(seq[i]).to.equal(seq[i - 1] * SCAN_RETRY.BACKOFF_FACTOR); + } + }); + + it('produces the correct 5-attempt sequence', () => { + const expected = [5000, 10000, 20000, 40000, 80000]; + expected.forEach((ms, attempt) => { + expect(getIncrementalWaitMs(attempt)).to.equal(ms); + }); + }); + }); + + // ─── fetchScanStatusBatch ─────────────────────────────────────────────── + + describe('fetchScanStatusBatch', () => { + it('returns empty Map when called with empty uid array', async () => { + const map = await fetchScanStatusBatch(makeStack([]), []); + expect(map.size).to.equal(0); + }); + + it('maps UIDs to their scan statuses', async () => { + const items = [ + { uid: 'a1', _asset_scan_status: 'clean' }, + { uid: 'a2', _asset_scan_status: 'quarantined' }, + { uid: 'a3', _asset_scan_status: 'pending' }, + ]; + const map = await fetchScanStatusBatch(makeStack(items), ['a1', 'a2', 'a3']); + expect(map.get('a1')).to.equal(ASSET_SCAN_STATUS.READY); + expect(map.get('a2')).to.equal(ASSET_SCAN_STATUS.QUARANTINE); + expect(map.get('a3')).to.equal(ASSET_SCAN_STATUS.IN_QUEUE); + }); + + it('maps UIDs with no scan field to undefined', async () => { + const items = [{ uid: 'a1' }]; + const map = await fetchScanStatusBatch(makeStack(items), ['a1']); + expect(map.get('a1')).to.equal(undefined); + }); + + it('throws on API error (fail fast — do not silently treat as ready)', async () => { + try { + await fetchScanStatusBatch(makeErrorStack('Network error'), ['a1']); + expect.fail('Expected fetchScanStatusBatch to throw'); + } catch (error) { + expect(error.message).to.equal('Network error'); + } + }); + }); + + // ─── resolveInQueueAssets ─────────────────────────────────────────────── + + describe('resolveInQueueAssets', () => { + let originalSetTimeout; + + beforeEach(() => { + // Replace setTimeout with an immediate resolver to avoid real waits + originalSetTimeout = global.setTimeout; + global.setTimeout = (fn) => fn(); + }); + + afterEach(() => { + global.setTimeout = originalSetTimeout; + }); + + it('returns empty array for empty input without calling stack', async () => { + const result = await resolveInQueueAssets(makeStack([]), []); + expect(result).to.deep.equal([]); + }); + + it('resolves UIDs that become clean on the first retry', async () => { + const items = [{ uid: 'a1', _asset_scan_status: 'clean' }]; + const result = await resolveInQueueAssets(makeStack(items), ['a1']); + expect(result).to.include('a1'); + }); + + it('excludes UIDs that become quarantined during retry', async () => { + const items = [{ uid: 'a1', _asset_scan_status: 'quarantined' }]; + const result = await resolveInQueueAssets(makeStack(items), ['a1']); + expect(result).to.not.include('a1'); + }); + + it('resolves UIDs with no scan status (scanning disabled)', async () => { + const items = [{ uid: 'a1' }]; // no _asset_scan_status field + const result = await resolveInQueueAssets(makeStack(items), ['a1']); + expect(result).to.include('a1'); + }); + + it('drops UIDs still pending after MAX_RETRIES', async () => { + // Always returns pending status + const items = [{ uid: 'a1', _asset_scan_status: 'pending' }]; + const result = await resolveInQueueAssets(makeStack(items), ['a1']); + expect(result).to.deep.equal([]); + }); + + it('handles mixed outcomes: clean, quarantined, and pending exhausted', async () => { + const items = [ + { uid: 'clean1', _asset_scan_status: 'clean' }, + { uid: 'quar1', _asset_scan_status: 'quarantined' }, + { uid: 'pend1', _asset_scan_status: 'pending' }, + ]; + const result = await resolveInQueueAssets(makeStack(items), ['clean1', 'quar1', 'pend1']); + expect(result).to.include('clean1'); + expect(result).to.not.include('quar1'); + expect(result).to.not.include('pend1'); + }); + }); +}); From 420c32e34f1df0a78bdca70ea4560bc4db92fe2a Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Fri, 12 Jun 2026 01:29:42 +0530 Subject: [PATCH 04/24] feat: enhance asset publishing with data-dir support for post-import flow --- .talismanrc | 4 +- .../src/commands/cm/assets/publish.js | 20 +- .../src/producer/publish-assets.js | 226 +++++++++++++++++- .../src/import/modules/assets.ts | 5 +- 4 files changed, 247 insertions(+), 8 deletions(-) diff --git a/.talismanrc b/.talismanrc index 51f9d046d..5354972f8 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,4 +1,4 @@ fileignoreconfig: -- filename: packages/contentstack-import/src/import/modules/assets.ts - checksum: 85cac8ac469ccb8ac47f4430df5bf6cd0a5f8f4c2d165baabc8121d4ad63919d +- filename: packages/contentstack-bulk-publish/src/producer/publish-assets.js + checksum: 584bed451d8a916fd2629e93583206d3a39d40a7ff05b43a7b9a0e78c688fa2f version: '1.0' diff --git a/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js b/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js index a032678c0..3aecb2c8e 100644 --- a/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js +++ b/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js @@ -15,10 +15,12 @@ class AssetsPublishCommand extends Command { assetsFlags.folderUid = assetsFlags['folder-uid'] || assetsFlags.folderUid; assetsFlags.bulkPublish = assetsFlags['bulk-publish'] || assetsFlags.bulkPublish; assetsFlags.apiVersion = assetsFlags['api-version'] || '3'; // setting default value for apiVersion + assetsFlags.dataDir = assetsFlags['data-dir'] || assetsFlags.dataDir; delete assetsFlags['api-version']; delete assetsFlags['retry-failed']; delete assetsFlags['folder-uid']; delete assetsFlags['bulk-publish']; + delete assetsFlags['data-dir']; let updatedFlags; try { @@ -111,12 +113,18 @@ class AssetsPublishCommand extends Command { } } - validate({ environments, retryFailed, locales, 'source-env': sourceEnv, 'delivery-token': deliveryToken }) { + validate({ environments, retryFailed, locales, dataDir, 'source-env': sourceEnv, 'delivery-token': deliveryToken }) { let missing = []; if (retryFailed) { return true; } + // In data-dir mode, environments and locales are derived per-asset from the + // backup publish_details, so they are not required on the command line. + if (dataDir) { + return true; + } + if (sourceEnv && !deliveryToken) { this.error('Specify the source environment delivery token. Run --help for more details.', { exit: 2 }); } @@ -181,6 +189,11 @@ AssetsPublishCommand.flags = { '(optional) The UID of the Assets’ folder from which the assets need to be published. The default value is cs_root.', exclusive: ['source-env'], }), + 'data-dir': flags.string({ + description: + '(optional) Path to the import backup directory. When set, each imported asset is published only to the environments and locales it was published to in the source stack (read from the backup’s publish details and asset UID mapping), with asset-scan gating applied. Intended for the post-import publish flow.', + exclusive: ['source-env', 'folder-uid'], + }), 'bulk-publish': flags.string({ description: 'Set this flag to use Contentstack’s Bulk Publish APIs. It is true, by default.', default: 'true', @@ -259,11 +272,14 @@ AssetsPublishCommand.examples = [ '', 'Using --stack-api-key flag', 'csdx cm:assets:publish --environments [ENVIRONMENT 1] [ENVIRONMENT 2] --locales [LOCALE] --stack-api-key [STACK API KEY]', + '', + 'Using --data-dir flag (publish imported assets to their original environments after asset scanning)', + 'csdx cm:assets:publish --data-dir [PATH TO IMPORT BACKUP DIR] --stack-api-key [STACK API KEY]', ]; AssetsPublishCommand.aliases = ['cm:bulk-publish:assets']; AssetsPublishCommand.usage = - 'cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]'; + 'cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--data-dir ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]'; module.exports = AssetsPublishCommand; diff --git a/packages/contentstack-bulk-publish/src/producer/publish-assets.js b/packages/contentstack-bulk-publish/src/producer/publish-assets.js index 777ed31d4..edee00ed1 100644 --- a/packages/contentstack-bulk-publish/src/producer/publish-assets.js +++ b/packages/contentstack-bulk-publish/src/producer/publish-assets.js @@ -1,8 +1,10 @@ /* eslint-disable no-console */ /* eslint-disable new-cap */ /* eslint-disable camelcase */ +const path = require('path'); +const { existsSync } = require('fs'); const chalk = require('chalk'); -const { cliux } = require('@contentstack/cli-utilities'); +const { cliux, FsUtility } = require('@contentstack/cli-utilities'); const { getQueue } = require('../util/queue'); const { performBulkPublish, publishAsset, initializeLogger } = require('../consumer/publish'); const retryFailedLogs = require('../util/retryfailed'); @@ -10,7 +12,7 @@ const { validateFile } = require('../util/fs'); const { isEmpty } = require('../util'); const { fetchBulkPublishLimit } = require('../util/common-utility'); const { generateBulkPublishStatusUrl } = require('../util/generate-bulk-publish-url'); -const { resolveInQueueAssets, ASSET_SCAN_STATUS } = require('../util/asset-scan'); +const { resolveInQueueAssets, fetchScanStatusBatch, ASSET_SCAN_STATUS } = require('../util/asset-scan'); const queue = getQueue(); let logFileName; @@ -227,6 +229,216 @@ async function processPendingAssets(pendingItems, stack, bulkPublish, environmen } } +/** + * Publish assets from an import backup directory (post-import flow). + * + * Unlike getAssets (live folder scan), this drives publishing from the backup: + * each imported asset is published ONLY to the environments/locales it was + * published to in the source stack (from its publish_details), remapped to the + * target stack. Scan-status gating is applied to the target asset UIDs. + * + * Mirrors the publish_details/env-name resolution of contentstack-import's + * assets `publish()` (the bulk publish API resolves environment NAMES against + * the target stack, and import preserves env names, so source name == target + * name), and adds the clean/quarantined/in-queue scan gating that import skips. + * + * Source of truth split: + * - publish_details + environments come from the BACKUP (post-import flow): an + * asset's target environments are its source publish_details, gated by the + * environment uid-mapping (only environments actually imported into the target + * are publishable) — avoids doomed publish calls to envs never created there. + * - scan status comes from the LIVE target API (it is a runtime property of the + * freshly-imported assets and cannot exist in the backup). + * + * Streaming: asset chunks are processed and released one at a time and scan-gated + * per chunk, so memory does not scale with total asset count. The only structures + * retained across chunks are bounded (partial publish batches + the in-queue + * subset). The single in-memory floor is the asset uid-mapping file itself (same + * as import's publish()); for very large stacks raise Node's --max-old-space-size. + */ +async function getAssetsFromBackup(stack, dataDir, bulkPublish, apiVersion, bulkPublishLimit) { + const assetsPath = path.join(dataDir, 'assets'); + const assetsIndexPath = path.join(assetsPath, 'assets.json'); + const assetUidMapperPath = path.join(dataDir, 'mapper', 'assets', 'uid-mapping.json'); + const envUidMapperPath = path.join(dataDir, 'mapper', 'environments', 'uid-mapping.json'); + const environmentsPath = path.join(dataDir, 'environments', 'environments.json'); + + // Fail fast with actionable errors when the backup is incomplete. + if (!existsSync(assetsPath) || !existsSync(assetsIndexPath)) { + throw new Error(`No assets found in backup. Expected '${assetsIndexPath}'. Check the --data-dir path.`); + } + if (!existsSync(assetUidMapperPath)) { + throw new Error( + `Asset UID mapping not found at '${assetUidMapperPath}'. Run import against this data dir before publishing.`, + ); + } + if (!existsSync(environmentsPath)) { + throw new Error(`Environments not found at '${environmentsPath}'. Cannot resolve target environments.`); + } + + const fsUtil = new FsUtility({ basePath: assetsPath, indexFileName: 'assets.json' }); + const assetUidMap = fsUtil.readFile(assetUidMapperPath, true) || {}; + // environments.json: { [sourceEnvUid]: { name, ... } } — source env definitions. + const environments = fsUtil.readFile(environmentsPath, true) || {}; + // uid-mapping.json: { [sourceEnvUid]: targetEnvUid } — only environments actually + // imported into the target. Used as the "is publishable" gate. Optional: older + // backups (or runs with no imported environments) may not have it. + const envUidMapping = existsSync(envUidMapperPath) ? fsUtil.readFile(envUidMapperPath, true) || {} : null; + if (!envUidMapping) { + console.log( + chalk.yellow( + `Environment UID mapping not found at '${envUidMapperPath}'. Falling back to environment names from ` + + `environments.json — ensure the target stack has environments with matching names.`, + ), + ); + } + const isEnvImported = (sourceEnvUid) => + !envUidMapping || Object.prototype.hasOwnProperty.call(envUidMapping, sourceEnvUid); + + // Resolve an asset's deduped, env-gated target (envName, locale) pairs from its + // publish_details. Env name comes from the backup; only environments actually + // imported into the target (per the env uid-mapping) are publishable. + const resolvePairs = (asset) => { + const seen = new Set(); + const pairs = []; + for (const pd of asset.publish_details) { + const env = environments[pd.environment]; + if (!env || !env.name) continue; // env not in the data dir — cannot resolve a name + if (!isEnvImported(pd.environment)) continue; // env not imported into target — skip + const key = `${env.name}||${pd.locale}`; + if (seen.has(key)) continue; + seen.add(key); + pairs.push({ envName: env.name, locale: pd.locale }); + } + return pairs; + }; + + // Bounded cross-chunk state only — nothing scales with total asset count: + // - `buffers`: partial publish batches, capped at envCount x localeCount x bulkPublishLimit. + // - `pending`: the in-queue (scanning) subset awaiting retry. + // The full asset universe is never held in memory; chunks are processed and + // released one at a time (same streaming shape as contentstack-import's publish()). + const buffers = new Map(); // "envName||locale" -> { envName, locale, uids: [] } + const pending = []; // { targetUid, pairs } for assets whose scan is still in queue + let skippedNoUidMapping = 0; // source asset was not imported (no asset uid mapping) + let skippedNoMappableEnv = 0; // asset has publish details, but none of its envs were imported + let publishableAssets = 0; // assets enqueued for publish (across all env/locale pairs) + + const enqueueBatch = async (envName, locale, uids) => { + if (uids.length === 0) return; + if (bulkPublish) { + const assets = uids.map((uid) => ({ uid, locale })); + await queue.Enqueue({ assets, Type: 'asset', environments: [envName], locale, stack, apiVersion }); + } else { + for (const uid of uids) { + await queue.Enqueue({ assetUid: uid, environments: [envName], Type: 'asset', locale, stack }); + } + } + }; + + // Add a publishable asset to its (env, locale) buffers, flushing any that fill up. + // Grouping by the exact pair keeps the bulk API from publishing an asset to a + // combo it was not published to in source. + const bufferAsset = async (targetUid, pairs) => { + publishableAssets++; + for (const { envName, locale } of pairs) { + const key = `${envName}||${locale}`; + let buf = buffers.get(key); + if (!buf) { + buf = { envName, locale, uids: [] }; + buffers.set(key, buf); + } + buf.uids.push(targetUid); + if (buf.uids.length >= bulkPublishLimit) { + await enqueueBatch(envName, locale, buf.uids); + buf.uids = []; + } + } + }; + + const indexer = fsUtil.indexFileContent; + + // NOTE: one readChunkFiles.next() call per index entry — the iteration count must + // equal the number of chunk files (same contract as contentstack-import's publish()). + for (const _index in indexer) { + const chunk = await fsUtil.readChunkFiles.next(); + const assetsArr = Object.values(chunk || {}); + + // Resolve this chunk's assets to publish targets (bounded by chunk size). + const resolved = []; + for (const asset of assetsArr) { + if (!asset || !Array.isArray(asset.publish_details) || asset.publish_details.length === 0) { + continue; + } + const targetUid = assetUidMap[asset.uid]; + if (!targetUid) { + skippedNoUidMapping++; + continue; + } + const pairs = resolvePairs(asset); + if (pairs.length === 0) { + skippedNoMappableEnv++; + continue; + } + resolved.push({ targetUid, pairs }); + } + if (resolved.length === 0) continue; + + // Scan status is a target-stack property of the freshly-imported assets, so it + // is fetched live (one batched read per chunk) — it is not in the backup. + const statusMap = await fetchScanStatusBatch( + stack, + resolved.map((r) => r.targetUid), + ); + + for (const { targetUid, pairs } of resolved) { + const status = statusMap.get(targetUid); + if (status === ASSET_SCAN_STATUS.QUARANTINE) { + scanSummary.quarantined++; + console.log(chalk.yellow(`Skipped (quarantined): Asset UID '${targetUid}'`)); + } else if (status === ASSET_SCAN_STATUS.IN_QUEUE) { + scanSummary.inQueue++; + pending.push({ targetUid, pairs }); + } else { + if (status === ASSET_SCAN_STATUS.READY) scanSummary.clean++; + else scanSummary.noStatus++; + await bufferAsset(targetUid, pairs); + } + } + } + + // Resolve in-queue assets once (incremental backoff); publish those that turn clean. + if (pending.length > 0) { + const resolvedUids = await resolveInQueueAssets( + stack, + pending.map((p) => p.targetUid), + ); + const resolvedSet = new Set(resolvedUids); + for (const { targetUid, pairs } of pending) { + if (resolvedSet.has(targetUid)) await bufferAsset(targetUid, pairs); + } + } + + // Flush remaining partial (env, locale) batches. + for (const { envName, locale, uids } of buffers.values()) { + await enqueueBatch(envName, locale, uids); + } + + if (skippedNoUidMapping > 0) { + console.log(chalk.yellow(`Skipped ${skippedNoUidMapping} asset(s): no UID mapping (not imported into target).`)); + } + if (skippedNoMappableEnv > 0) { + console.log( + chalk.yellow( + `Skipped ${skippedNoMappableEnv} asset(s): none of their published environments were imported into the target.`, + ), + ); + } + if (publishableAssets === 0) { + console.log(chalk.yellow('No publishable assets found in backup (no mapped assets with publishable environments).')); + } +} + function setConfig(conf, bp) { if (bp) { queue.consumer = performBulkPublish; @@ -242,7 +454,7 @@ function setConfig(conf, bp) { scanSummary = { clean: 0, quarantined: 0, inQueue: 0, noStatus: 0 }; } -async function start({ retryFailed, bulkPublish, environments, folderUid, locales, apiVersion }, stack, config) { +async function start({ retryFailed, bulkPublish, environments, folderUid, locales, apiVersion, dataDir }, stack, config) { process.on('beforeExit', async () => { const isErrorLogEmpty = await isEmpty(`${filePath}.error`); const isSuccessLogEmpty = await isEmpty(`${filePath}.success`); @@ -280,6 +492,13 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale } else { await retryFailedLogs(retryFailed, { assetQueue: queue }, 'publish'); } + } else if (dataDir) { + // Post-import flow: publish each imported asset only to its original + // environments/locales (from backup publish_details), scan-gated. + setConfig(config, bulkPublish); + const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid); + await getAssetsFromBackup(stack, dataDir, bulkPublish, apiVersion, bulkPublishLimit); + printScanSummary(scanSummary); } else if (folderUid) { setConfig(config, bulkPublish); const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid); @@ -299,6 +518,7 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale module.exports = { getAssets, + getAssetsFromBackup, setConfig, start, processPendingAssets, diff --git a/packages/contentstack-import/src/import/modules/assets.ts b/packages/contentstack-import/src/import/modules/assets.ts index ebdd2bf89..ab21f419e 100644 --- a/packages/contentstack-import/src/import/modules/assets.ts +++ b/packages/contentstack-import/src/import/modules/assets.ts @@ -84,7 +84,10 @@ export default class ImportAssets extends BaseClass { log.info('Asset Scanning is enabled for this stack.', this.importConfig.context); log.info('Assets cannot be published immediately — scanning must complete first.', this.importConfig.context); log.info('Once scanning is done, publish your assets using:', this.importConfig.context); - log.info('csdx cm:assets:publish --environments [ENVIRONMENT 1] [ENVIRONMENT 2] --locales [LOCALE] --stack-api-key [STACK API KEY]', this.importConfig.context); + log.info( + `csdx cm:assets:publish --data-dir ${this.importConfig.backupDir} --stack-api-key [STACK API KEY]`, + this.importConfig.context, + ); } } catch (error) { handleAndLogError(error, { ...this.importConfig.context }); From 8aaeebe0920cc75fe53085049077bd6e56688642 Mon Sep 17 00:00:00 2001 From: Naman Dembla Date: Tue, 16 Jun 2026 15:30:56 +0530 Subject: [PATCH 05/24] Set maximum scan retries to zero --- packages/contentstack-bulk-publish/src/util/asset-scan.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/contentstack-bulk-publish/src/util/asset-scan.js b/packages/contentstack-bulk-publish/src/util/asset-scan.js index 9c9f3f0d1..27c3ffe77 100644 --- a/packages/contentstack-bulk-publish/src/util/asset-scan.js +++ b/packages/contentstack-bulk-publish/src/util/asset-scan.js @@ -8,7 +8,7 @@ const ASSET_SCAN_STATUS = { }; const SCAN_RETRY = { - MAX_RETRIES: 5, + MAX_RETRIES: 0, INITIAL_WAIT_MS: 5000, BACKOFF_FACTOR: 2, }; From b51e1273ecd5e1e5c18b19e0f32fc4c3e5c4e4d0 Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Sun, 28 Jun 2026 18:24:54 +0530 Subject: [PATCH 06/24] fix: minor fixes in bulk publish --- .../src/producer/publish-assets.js | 13 ++++++++----- .../src/import/modules/assets.ts | 6 +++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/contentstack-bulk-publish/src/producer/publish-assets.js b/packages/contentstack-bulk-publish/src/producer/publish-assets.js index edee00ed1..df5af5da4 100644 --- a/packages/contentstack-bulk-publish/src/producer/publish-assets.js +++ b/packages/contentstack-bulk-publish/src/producer/publish-assets.js @@ -263,9 +263,12 @@ async function getAssetsFromBackup(stack, dataDir, bulkPublish, apiVersion, bulk const envUidMapperPath = path.join(dataDir, 'mapper', 'environments', 'uid-mapping.json'); const environmentsPath = path.join(dataDir, 'environments', 'environments.json'); - // Fail fast with actionable errors when the backup is incomplete. + // A backup with no assets is a legitimate outcome of a successful import that + // had 0 assets (assets.json is never produced) — exit cleanly, not as a crash. + // A genuinely wrong --data-dir surfaces via the uid-mapping/environments guards below. if (!existsSync(assetsPath) || !existsSync(assetsIndexPath)) { - throw new Error(`No assets found in backup. Expected '${assetsIndexPath}'. Check the --data-dir path.`); + console.log(chalk.yellow('No assets found in backup — nothing to publish.')); + return; } if (!existsSync(assetUidMapperPath)) { throw new Error( @@ -456,6 +459,9 @@ function setConfig(conf, bp) { async function start({ retryFailed, bulkPublish, environments, folderUid, locales, apiVersion, dataDir }, stack, config) { process.on('beforeExit', async () => { + // Print the scan summary here (not inline after enqueueing): + printScanSummary(scanSummary); + const isErrorLogEmpty = await isEmpty(`${filePath}.error`); const isSuccessLogEmpty = await isEmpty(`${filePath}.success`); if (!isErrorLogEmpty) { @@ -498,7 +504,6 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale setConfig(config, bulkPublish); const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid); await getAssetsFromBackup(stack, dataDir, bulkPublish, apiVersion, bulkPublishLimit); - printScanSummary(scanSummary); } else if (folderUid) { setConfig(config, bulkPublish); const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid); @@ -506,8 +511,6 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale await getAssets(stack, folderUid, bulkPublish, environments, locale, apiVersion, bulkPublishLimit); } - printScanSummary(scanSummary); - // Resolve in-queue assets with incremental retry; pass pendingAssetsForRetry explicitly if (pendingAssetsForRetry.length > 0) { await processPendingAssets(pendingAssetsForRetry, stack, bulkPublish, environments, apiVersion, bulkPublishLimit); diff --git a/packages/contentstack-import/src/import/modules/assets.ts b/packages/contentstack-import/src/import/modules/assets.ts index ab21f419e..4d23c0524 100644 --- a/packages/contentstack-import/src/import/modules/assets.ts +++ b/packages/contentstack-import/src/import/modules/assets.ts @@ -80,7 +80,11 @@ export default class ImportAssets extends BaseClass { log.success('Assets imported successfully!', this.importConfig.context); - if (this.importConfig.assetScanningEnabled) { + // Only surface the "publish later" guidance when assets were actually + // imported. With 0 assets, assetsUidMap is empty and the backup has no + // assets to publish — printing the guidance would send the user to run + // cm:assets:publish against an empty backup. + if (this.importConfig.assetScanningEnabled && !isEmpty(this.assetsUidMap)) { log.info('Asset Scanning is enabled for this stack.', this.importConfig.context); log.info('Assets cannot be published immediately — scanning must complete first.', this.importConfig.context); log.info('Once scanning is done, publish your assets using:', this.importConfig.context); From 560e9c054c1a40858d3bf163d8c3c885bdff65e9 Mon Sep 17 00:00:00 2001 From: aniket-shikhare-cstk Date: Tue, 30 Jun 2026 15:15:59 +0530 Subject: [PATCH 07/24] fix(bulk-publish): add null guard on asset.publish_details before forEach Assets loaded from --data-dir backup may not have a publish_details field if they were never published. The optional chain only guarded `asset`, not `publish_details`, causing a TypeError in displayAssetsDetails(). --- packages/contentstack-bulk-publish/src/consumer/publish.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/contentstack-bulk-publish/src/consumer/publish.js b/packages/contentstack-bulk-publish/src/consumer/publish.js index f466b250c..ad25da96f 100644 --- a/packages/contentstack-bulk-publish/src/consumer/publish.js +++ b/packages/contentstack-bulk-publish/src/consumer/publish.js @@ -61,7 +61,7 @@ function displayEntriesDetails(sanitizedData, action, mapping = []) { function displayAssetsDetails(sanitizedData, action, mapping) { if (action === 'bulk_publish') { sanitizedData.forEach((asset) => { - asset?.publish_details.forEach((pd) => { + asset?.publish_details?.forEach((pd) => { if (Object.keys(mapping).includes(pd.environment)) { console.log( chalk.green( From 1eb074a6ea38ffecda28f1733ea6cfc0a31cacde Mon Sep 17 00:00:00 2001 From: aniket-shikhare-cstk Date: Tue, 30 Jun 2026 15:37:10 +0530 Subject: [PATCH 08/24] fix(bulk-publish): declare module-level config variable in publish-assets.js setConfig() assigned to `config` at module scope but the variable was never declared, causing a ReferenceError on any cm:assets:publish run that goes through the data-dir flow. --- .../contentstack-bulk-publish/src/producer/publish-assets.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/contentstack-bulk-publish/src/producer/publish-assets.js b/packages/contentstack-bulk-publish/src/producer/publish-assets.js index df5af5da4..07c58a7d3 100644 --- a/packages/contentstack-bulk-publish/src/producer/publish-assets.js +++ b/packages/contentstack-bulk-publish/src/producer/publish-assets.js @@ -15,6 +15,7 @@ const { generateBulkPublishStatusUrl } = require('../util/generate-bulk-publish- const { resolveInQueueAssets, fetchScanStatusBatch, ASSET_SCAN_STATUS } = require('../util/asset-scan'); const queue = getQueue(); +let config; let logFileName; let bulkPublishSet = []; let pendingAssetsForRetry = []; From e5260b7eddb1ccf1c00530ed7d37c45016ab7c72 Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Fri, 10 Jul 2026 13:59:53 +0530 Subject: [PATCH 09/24] fix: Update flags in AssetsPublishCommand and add user reminder in ImportCommand for asset publishing --- .talismanrc | 2 ++ .../src/commands/cm/assets/publish.js | 2 +- .../src/commands/cm/stacks/import.ts | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/.talismanrc b/.talismanrc index ae12936cd..76ff7e4b3 100644 --- a/.talismanrc +++ b/.talismanrc @@ -67,4 +67,6 @@ fileignoreconfig: checksum: 653a7e0443f6b9712ed91ad45aa4189864bee710ea4bd3ac40031225da4da5a5 - filename: pnpm-lock.yaml checksum: 07642e8dd04d580185a459e5b088d8a1bb4e91be4e04f4842bf4fe4775205bf6 +- filename: packages/contentstack-import/src/commands/cm/stacks/import.ts + checksum: 5ae9bf66f5b5b4ef2c5ec337f8f1a30b379ce984b1087508d368548fa6adbb0e version: '1.0' diff --git a/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js b/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js index 3aecb2c8e..22416e2e9 100644 --- a/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js +++ b/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js @@ -192,7 +192,7 @@ AssetsPublishCommand.flags = { 'data-dir': flags.string({ description: '(optional) Path to the import backup directory. When set, each imported asset is published only to the environments and locales it was published to in the source stack (read from the backup’s publish details and asset UID mapping), with asset-scan gating applied. Intended for the post-import publish flow.', - exclusive: ['source-env', 'folder-uid'], + exclusive: ['source-env', 'folder-uid', 'environments', 'locales'], }), 'bulk-publish': flags.string({ description: 'Set this flag to use Contentstack’s Bulk Publish APIs. It is true, by default.', diff --git a/packages/contentstack-import/src/commands/cm/stacks/import.ts b/packages/contentstack-import/src/commands/cm/stacks/import.ts index 74217cf45..95387d15f 100644 --- a/packages/contentstack-import/src/commands/cm/stacks/import.ts +++ b/packages/contentstack-import/src/commands/cm/stacks/import.ts @@ -187,6 +187,23 @@ export default class ImportCommand extends Command { log.success(`The log has been stored at: ${getLogPath()}`, importConfig.context); log.info(`The backup content has been stored at: ${backupDir}`, importConfig.context); + + // Closing reminder: when assets were imported but not published inline + // (asset scanning enabled, or --skip-assets-publish), point the user to + // cm:assets:publish with the backup dir and stack pre-filled so the note + // isn't lost in the per-module logs above. + const assetsImported = importConfig.moduleName + ? importConfig.moduleName === 'assets' + : importConfig.modules?.types?.includes('assets'); + // Mirror the publish gate in assets.ts (`!skipAssetsPublish`): assets are + // left unpublished exactly when skipAssetsPublish is set — which also + // covers the scanning case, since detecting scanning sets skipAssetsPublish. + if (!result?.noSuccessMsg && assetsImported && importConfig.skipAssetsPublish) { + log.info( + `Note: assets were imported but not published asset scanning is enabled and must complete first. To publish them, run:\n csdx cm:assets:publish --data-dir ${backupDir} --stack-api-key ${importConfig.apiKey}`, + importConfig.context, + ); + } } catch (error) { handleAndLogError(error); log.info(`The log has been stored at '${getLogPath()}'`); From 32ba9c47d5ca8cea188556a19fe44af5bf67cafa Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Tue, 14 Jul 2026 15:53:02 +0530 Subject: [PATCH 10/24] fix: Rename 'data-dir' to 'backup-dir' in asset publishing commands and update related logic --- .../src/commands/cm/assets/publish.js | 18 +++++++++--------- .../src/consumer/publish.js | 4 ++-- .../src/producer/publish-assets.js | 18 +++++++++--------- .../src/commands/cm/stacks/import.ts | 2 +- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js b/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js index 22416e2e9..b121906c9 100644 --- a/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js +++ b/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js @@ -15,12 +15,12 @@ class AssetsPublishCommand extends Command { assetsFlags.folderUid = assetsFlags['folder-uid'] || assetsFlags.folderUid; assetsFlags.bulkPublish = assetsFlags['bulk-publish'] || assetsFlags.bulkPublish; assetsFlags.apiVersion = assetsFlags['api-version'] || '3'; // setting default value for apiVersion - assetsFlags.dataDir = assetsFlags['data-dir'] || assetsFlags.dataDir; + assetsFlags.backupDir = assetsFlags['backup-dir'] || assetsFlags.backupDir; delete assetsFlags['api-version']; delete assetsFlags['retry-failed']; delete assetsFlags['folder-uid']; delete assetsFlags['bulk-publish']; - delete assetsFlags['data-dir']; + delete assetsFlags['backup-dir']; let updatedFlags; try { @@ -113,15 +113,15 @@ class AssetsPublishCommand extends Command { } } - validate({ environments, retryFailed, locales, dataDir, 'source-env': sourceEnv, 'delivery-token': deliveryToken }) { + validate({ environments, retryFailed, locales, backupDir, 'source-env': sourceEnv, 'delivery-token': deliveryToken }) { let missing = []; if (retryFailed) { return true; } - // In data-dir mode, environments and locales are derived per-asset from the + // In backup-dir mode, environments and locales are derived per-asset from the // backup publish_details, so they are not required on the command line. - if (dataDir) { + if (backupDir) { return true; } @@ -189,7 +189,7 @@ AssetsPublishCommand.flags = { '(optional) The UID of the Assets’ folder from which the assets need to be published. The default value is cs_root.', exclusive: ['source-env'], }), - 'data-dir': flags.string({ + 'backup-dir': flags.string({ description: '(optional) Path to the import backup directory. When set, each imported asset is published only to the environments and locales it was published to in the source stack (read from the backup’s publish details and asset UID mapping), with asset-scan gating applied. Intended for the post-import publish flow.', exclusive: ['source-env', 'folder-uid', 'environments', 'locales'], @@ -273,13 +273,13 @@ AssetsPublishCommand.examples = [ 'Using --stack-api-key flag', 'csdx cm:assets:publish --environments [ENVIRONMENT 1] [ENVIRONMENT 2] --locales [LOCALE] --stack-api-key [STACK API KEY]', '', - 'Using --data-dir flag (publish imported assets to their original environments after asset scanning)', - 'csdx cm:assets:publish --data-dir [PATH TO IMPORT BACKUP DIR] --stack-api-key [STACK API KEY]', + 'Using --backup-dir flag (publish imported assets to their original environments after asset scanning)', + 'csdx cm:assets:publish --backup-dir [PATH TO IMPORT BACKUP DIR] --stack-api-key [STACK API KEY]', ]; AssetsPublishCommand.aliases = ['cm:bulk-publish:assets']; AssetsPublishCommand.usage = - 'cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--data-dir ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]'; + 'cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--backup-dir ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]'; module.exports = AssetsPublishCommand; diff --git a/packages/contentstack-bulk-publish/src/consumer/publish.js b/packages/contentstack-bulk-publish/src/consumer/publish.js index f466b250c..cea6392fd 100644 --- a/packages/contentstack-bulk-publish/src/consumer/publish.js +++ b/packages/contentstack-bulk-publish/src/consumer/publish.js @@ -61,12 +61,12 @@ function displayEntriesDetails(sanitizedData, action, mapping = []) { function displayAssetsDetails(sanitizedData, action, mapping) { if (action === 'bulk_publish') { sanitizedData.forEach((asset) => { - asset?.publish_details.forEach((pd) => { + asset?.publish_details?.forEach((pd) => { if (Object.keys(mapping).includes(pd.environment)) { console.log( chalk.green( `Asset UID: '${asset.uid}'${pd.version ? `, Version: '${pd.version}'` : ''}${ - asset.locale ? `, Locale: '${asset.locale}'` : '' + asset.locale ? `, Locale: '${asset.locale}'` : ''} }, Environment: ${pd.environment}`, ), ); diff --git a/packages/contentstack-bulk-publish/src/producer/publish-assets.js b/packages/contentstack-bulk-publish/src/producer/publish-assets.js index df5af5da4..f35f2d751 100644 --- a/packages/contentstack-bulk-publish/src/producer/publish-assets.js +++ b/packages/contentstack-bulk-publish/src/producer/publish-assets.js @@ -256,16 +256,16 @@ async function processPendingAssets(pendingItems, stack, bulkPublish, environmen * subset). The single in-memory floor is the asset uid-mapping file itself (same * as import's publish()); for very large stacks raise Node's --max-old-space-size. */ -async function getAssetsFromBackup(stack, dataDir, bulkPublish, apiVersion, bulkPublishLimit) { - const assetsPath = path.join(dataDir, 'assets'); +async function getAssetsFromBackup(stack, backupDir, bulkPublish, apiVersion, bulkPublishLimit) { + const assetsPath = path.join(backupDir, 'assets'); const assetsIndexPath = path.join(assetsPath, 'assets.json'); - const assetUidMapperPath = path.join(dataDir, 'mapper', 'assets', 'uid-mapping.json'); - const envUidMapperPath = path.join(dataDir, 'mapper', 'environments', 'uid-mapping.json'); - const environmentsPath = path.join(dataDir, 'environments', 'environments.json'); + const assetUidMapperPath = path.join(backupDir, 'mapper', 'assets', 'uid-mapping.json'); + const envUidMapperPath = path.join(backupDir, 'mapper', 'environments', 'uid-mapping.json'); + const environmentsPath = path.join(backupDir, 'environments', 'environments.json'); // A backup with no assets is a legitimate outcome of a successful import that // had 0 assets (assets.json is never produced) — exit cleanly, not as a crash. - // A genuinely wrong --data-dir surfaces via the uid-mapping/environments guards below. + // A genuinely wrong --backup-dir surfaces via the uid-mapping/environments guards below. if (!existsSync(assetsPath) || !existsSync(assetsIndexPath)) { console.log(chalk.yellow('No assets found in backup — nothing to publish.')); return; @@ -457,7 +457,7 @@ function setConfig(conf, bp) { scanSummary = { clean: 0, quarantined: 0, inQueue: 0, noStatus: 0 }; } -async function start({ retryFailed, bulkPublish, environments, folderUid, locales, apiVersion, dataDir }, stack, config) { +async function start({ retryFailed, bulkPublish, environments, folderUid, locales, apiVersion, backupDir }, stack, config) { process.on('beforeExit', async () => { // Print the scan summary here (not inline after enqueueing): printScanSummary(scanSummary); @@ -498,12 +498,12 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale } else { await retryFailedLogs(retryFailed, { assetQueue: queue }, 'publish'); } - } else if (dataDir) { + } else if (backupDir) { // Post-import flow: publish each imported asset only to its original // environments/locales (from backup publish_details), scan-gated. setConfig(config, bulkPublish); const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid); - await getAssetsFromBackup(stack, dataDir, bulkPublish, apiVersion, bulkPublishLimit); + await getAssetsFromBackup(stack, backupDir, bulkPublish, apiVersion, bulkPublishLimit); } else if (folderUid) { setConfig(config, bulkPublish); const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid); diff --git a/packages/contentstack-import/src/commands/cm/stacks/import.ts b/packages/contentstack-import/src/commands/cm/stacks/import.ts index 95387d15f..7cfc7f49a 100644 --- a/packages/contentstack-import/src/commands/cm/stacks/import.ts +++ b/packages/contentstack-import/src/commands/cm/stacks/import.ts @@ -200,7 +200,7 @@ export default class ImportCommand extends Command { // covers the scanning case, since detecting scanning sets skipAssetsPublish. if (!result?.noSuccessMsg && assetsImported && importConfig.skipAssetsPublish) { log.info( - `Note: assets were imported but not published asset scanning is enabled and must complete first. To publish them, run:\n csdx cm:assets:publish --data-dir ${backupDir} --stack-api-key ${importConfig.apiKey}`, + `Note: assets were imported but not published asset scanning is enabled and must complete first. To publish them, run:\n csdx cm:assets:publish --backup-dir ${backupDir} --stack-api-key ${importConfig.apiKey}`, importConfig.context, ); } From 53b9674fca902675d728e01aade2d0238b0c309e Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 23 Jul 2026 16:13:34 +0530 Subject: [PATCH 11/24] added support for orgplan check in export and import --- .talismanrc | 4 ++ packages/contentstack-export/package.json | 3 +- .../src/commands/cm/stacks/export.ts | 2 +- .../src/types/export-config.ts | 2 + .../src/utils/export-config-handler.ts | 42 +++++++++++++++++-- packages/contentstack-import/package.json | 3 +- .../src/commands/cm/stacks/import.ts | 2 +- .../src/import/module-importer.ts | 16 ------- .../src/import/modules/assets.ts | 12 ++++-- .../src/types/import-config.ts | 2 + .../src/utils/import-config-handler.ts | 31 +++++++++++++- 11 files changed, 90 insertions(+), 29 deletions(-) diff --git a/.talismanrc b/.talismanrc index 8577dbcbd..90ec9724b 100644 --- a/.talismanrc +++ b/.talismanrc @@ -12,4 +12,8 @@ fileignoreconfig: checksum: 8cafd5994d3ec13ba9af74c80b330bfd14721ea4e0359b456598964a6c2913ce - filename: packages/contentstack-seed/tests/contentstack.test.ts checksum: 04196568bf29f4693e968079867e87d96219b022bfee0f4697dce1b9bc161ac3 +- filename: packages/contentstack-export/src/utils/export-config-handler.ts + checksum: 362c1042a70958b52e73a7a3096152cf0259c55095c8b2c6f308b8f5fb90614e +- filename: packages/contentstack-import/src/utils/import-config-handler.ts + checksum: f310186b5ea1fc756bd200dbe01967bc07e5490dc5ed17018f0ca4b35f0fd86f version: '1.0' diff --git a/packages/contentstack-export/package.json b/packages/contentstack-export/package.json index ece2abd96..def2158fb 100644 --- a/packages/contentstack-export/package.json +++ b/packages/contentstack-export/package.json @@ -93,7 +93,8 @@ "shortCommandName": { "cm:stacks:export": "EXPRT", "cm:export": "O-EXPRT" - } + }, + "planProtectedFeatures": ["assetsScan"] }, "repository": "https://github.com/contentstack/cli" } diff --git a/packages/contentstack-export/src/commands/cm/stacks/export.ts b/packages/contentstack-export/src/commands/cm/stacks/export.ts index 15f88c573..d7dd749e5 100644 --- a/packages/contentstack-export/src/commands/cm/stacks/export.ts +++ b/packages/contentstack-export/src/commands/cm/stacks/export.ts @@ -120,7 +120,7 @@ export default class ExportCommand extends Command { let exportDir: string = pathValidator('logs'); try { const { flags } = await this.parse(ExportCommand); - const exportConfig = await setupExportConfig(flags); + const exportConfig = await setupExportConfig(flags, this.context); // Store apiKey in configHandler for session.json (return value not needed) createLogContext( diff --git a/packages/contentstack-export/src/types/export-config.ts b/packages/contentstack-export/src/types/export-config.ts index 8b0e1b37b..a6fd5fe4c 100644 --- a/packages/contentstack-export/src/types/export-config.ts +++ b/packages/contentstack-export/src/types/export-config.ts @@ -1,3 +1,4 @@ +import { FeatureStatus } from '@contentstack/cli-utilities'; import { Context, Modules, Region } from '.'; import DefaultConfig from './default-config'; @@ -36,6 +37,7 @@ export default interface ExportConfig extends DefaultConfig { skipStackSettings?: boolean; skipDependencies?: boolean; authenticationMethod?: string; + planStatus?: Record; } type branch = { diff --git a/packages/contentstack-export/src/utils/export-config-handler.ts b/packages/contentstack-export/src/utils/export-config-handler.ts index c67b6c12b..bf984f3da 100644 --- a/packages/contentstack-export/src/utils/export-config-handler.ts +++ b/packages/contentstack-export/src/utils/export-config-handler.ts @@ -1,6 +1,14 @@ import merge from 'merge'; import * as path from 'path'; -import { configHandler, isAuthenticated,cliux, sanitizePath, log } from '@contentstack/cli-utilities'; +import { + configHandler, + isAuthenticated, + cliux, + sanitizePath, + log, + FeatureCtx, + isFeatureEnabled, +} from '@contentstack/cli-utilities'; import defaultConfig from '../config'; import { readFile } from './file-helper'; import { askExportDir, askAPIKey } from './interactive'; @@ -8,7 +16,7 @@ import login from './basic-login'; import { filter, includes } from 'lodash'; import { ExportConfig } from '../types'; -const setupConfig = async (exportCmdFlags: any): Promise => { +const setupConfig = async (exportCmdFlags: any, context?: any): Promise => { let config = merge({}, defaultConfig); // Track authentication method @@ -97,7 +105,7 @@ const setupConfig = async (exportCmdFlags: any): Promise => { if (exportCmdFlags['branch-alias']) { config.branchAlias = exportCmdFlags['branch-alias']; - } + } if (exportCmdFlags['branch']) { config.branchName = exportCmdFlags['branch']; } @@ -133,10 +141,36 @@ const setupConfig = async (exportCmdFlags: any): Promise => { } } - // Add authentication details to config for context tracking + // Add authentication details to config for context tracking config.authenticationMethod = authenticationMethod; log.debug('Export configuration setup completed.', { ...config }); + // Deferred plan check — credentials now available after setupExportConfig + const deferredFeatures: string[] = context?.planCheckRequired ?? []; + if (deferredFeatures.length > 0) { + const planCtx: FeatureCtx = { + apiKey: config.apiKey, + managementToken: config.management_token, + authToken: config.auth_token, + }; + for (const featureUid of deferredFeatures) { + try { + const status = await isFeatureEnabled(featureUid, planCtx); + if (context) { + context.planStatus[featureUid] = status; + } + + log.debug(`[export] Deferred plan status fetched for "${featureUid}".`); + } catch (error) { + log.warn(`[export] Could not fetch deferred plan status for "${featureUid}": ${(error as Error).message}`); + } + } + } + + if (context?.planStatus) { + config.planStatus = context.planStatus; + } + return config; }; diff --git a/packages/contentstack-import/package.json b/packages/contentstack-import/package.json index d26a96032..9b72827aa 100644 --- a/packages/contentstack-import/package.json +++ b/packages/contentstack-import/package.json @@ -85,7 +85,8 @@ "shortCommandName": { "cm:stacks:import": "IMPRT", "cm:import": "O-IMPRT" - } + }, + "planProtectedFeatures": ["assetsScan"] }, "repository": "https://github.com/contentstack/cli" } diff --git a/packages/contentstack-import/src/commands/cm/stacks/import.ts b/packages/contentstack-import/src/commands/cm/stacks/import.ts index 7cfc7f49a..0d795b66b 100644 --- a/packages/contentstack-import/src/commands/cm/stacks/import.ts +++ b/packages/contentstack-import/src/commands/cm/stacks/import.ts @@ -154,7 +154,7 @@ export default class ImportCommand extends Command { let importConfig: ImportConfig; try { const { flags } = await this.parse(ImportCommand); - importConfig = await setupImportConfig(flags); + importConfig = await setupImportConfig(flags, this.context); // Prepare the context object createLogContext( this.context?.info?.command || 'cm:stacks:export', diff --git a/packages/contentstack-import/src/import/module-importer.ts b/packages/contentstack-import/src/import/module-importer.ts index 6e9243fa2..2a6879c09 100755 --- a/packages/contentstack-import/src/import/module-importer.ts +++ b/packages/contentstack-import/src/import/module-importer.ts @@ -34,12 +34,6 @@ class ModuleImporter { const stackDetails: Record = await this.stackAPIClient.fetch(); this.importConfig.stackName = stackDetails.name as string; this.importConfig.org_uid = stackDetails.org_uid as string; - - const assetScanningEnabled = await this.detectAssetScanning(this.importConfig.org_uid); - if (assetScanningEnabled) { - this.importConfig.assetScanningEnabled = true; - this.importConfig.skipAssetsPublish = true; - } } await this.resolveImportPath(); @@ -215,16 +209,6 @@ class ModuleImporter { log.error(`Audit failed with following error. ${error}`, this.importConfig.context); } } - - private async detectAssetScanning(orgUid: string): Promise { - try { - const orgDetails = await this.managementAPIClient.organization(orgUid).fetch({ include_plan: true }); - const features: Array<{ uid: string; enabled?: boolean }> = orgDetails?.plan?.features || []; - return features.some((f) => (f.uid === 'assetsScan' || f.uid === 'amAssetsScan') && f.enabled === true); - } catch { - return false; - } - } } export default ModuleImporter; diff --git a/packages/contentstack-import/src/import/modules/assets.ts b/packages/contentstack-import/src/import/modules/assets.ts index 4d23c0524..7e4a13111 100644 --- a/packages/contentstack-import/src/import/modules/assets.ts +++ b/packages/contentstack-import/src/import/modules/assets.ts @@ -53,11 +53,15 @@ export default class ImportAssets extends BaseClass { */ async start(): Promise { try { - // NOTE Step 1: Import folders and create uid mapping file + if (this.importConfig.assetScanningEnabled) { + log.info('Assets Scanning is enabled in this stack', this.importConfig.context); + log.warn('Assets publishing will be skipped', this.importConfig.context); + } + // NOTE Step 1: Import folders and create uid mapping file log.debug('Starting folder import process...', this.importConfig.context); await this.importFolders(); - // NOTE Step 2: Import versioned assets and create it mapping files (uid, url) + // NOTE Step 2: Import versioned assets and create it mapping files (uid, url) if (this.assetConfig.includeVersionedAssets) { const versionsPath = `${this.assetsPath}/versions`; if (existsSync(versionsPath)) { @@ -68,11 +72,11 @@ export default class ImportAssets extends BaseClass { } } - // NOTE Step 3: Import Assets and create it mapping files (uid, url) + // NOTE Step 3: Import Assets and create it mapping files (uid, url) log.debug('Starting assets import...', this.importConfig.context); await this.importAssets(); - // NOTE Step 4: Publish assets + // NOTE Step 4: Publish assets if (!this.importConfig.skipAssetsPublish) { log.debug('Starting assets publishing...', this.importConfig.context); await this.publish(); diff --git a/packages/contentstack-import/src/types/import-config.ts b/packages/contentstack-import/src/types/import-config.ts index 70ca10a27..80805ae2c 100644 --- a/packages/contentstack-import/src/types/import-config.ts +++ b/packages/contentstack-import/src/types/import-config.ts @@ -1,3 +1,4 @@ +import { FeatureStatus } from '@contentstack/cli-utilities'; import { Context, Modules, Region } from '.'; import DefaultConfig from './default-config'; @@ -60,6 +61,7 @@ export default interface ImportConfig extends DefaultConfig, ExternalConfig { personalizeProjectName?: string; 'exclude-global-modules': false; context: Context; + planStatus?: Record; } type branch = { diff --git a/packages/contentstack-import/src/utils/import-config-handler.ts b/packages/contentstack-import/src/utils/import-config-handler.ts index 9df8a1bbd..e25a93034 100644 --- a/packages/contentstack-import/src/utils/import-config-handler.ts +++ b/packages/contentstack-import/src/utils/import-config-handler.ts @@ -7,6 +7,8 @@ import { cliux, sanitizePath, log, + isFeatureEnabled, + FeatureCtx, } from '@contentstack/cli-utilities'; import defaultConfig from '../config'; import { readFile, fileExistsSync } from './file-helper'; @@ -14,7 +16,7 @@ import { askContentDir, askAPIKey } from './interactive'; import login from './login-handler'; import { ImportConfig } from '../types'; -const setupConfig = async (importCmdFlags: any): Promise => { +const setupConfig = async (importCmdFlags: any, context?: any): Promise => { let config: ImportConfig = merge({}, defaultConfig); // Track authentication method let authenticationMethod = 'unknown'; @@ -139,6 +141,33 @@ const setupConfig = async (importCmdFlags: any): Promise => { config.authenticationMethod = authenticationMethod; log.debug('Import configuration setup completed.', { ...config }); + // Deferred plan check — credentials now available after setupImportConfig + const deferredFeatures: string[] = context?.planCheckRequired ?? []; + if (deferredFeatures.length > 0) { + const planCtx: FeatureCtx = { + apiKey: config.apiKey, + managementToken: config.management_token, + authToken: config.auth_token, + }; + for (const featureUid of deferredFeatures) { + try { + const status = await isFeatureEnabled(featureUid, planCtx); + if (context) context.planStatus[featureUid] = status; + log.debug(`[import] Deferred plan status fetched for "${featureUid}".`); + } catch (error) { + log.warn(`[import] Could not fetch deferred plan status for "${featureUid}": ${(error as Error).message}`); + } + } + } + + if (context?.planStatus) { + config.planStatus = context.planStatus; + if (config.planStatus['assetsScan']?.is_part_of_plan) { + config.assetScanningEnabled = true; + config.skipAssetsPublish = true; + } + } + return config; }; From f537d43fc944abf661733d273514af47d461a1f1 Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Fri, 24 Jul 2026 17:22:53 +0530 Subject: [PATCH 12/24] fix(import): preserve env-locale pairing for asset publish (DX-9772) publish() flattened each asset's publish_details into independent environments[] and locales[] arrays, so the CMA republished the cartesian product. For a ragged publish state (different locales on different environments) this over-published to env-locale pairs that never existed on the source stack. Add buildPublishGroups: group publish_details by environment, coalesce environments with an identical locale set, and emit one publish call per group so each call is a single rectangle the CMA reproduces exactly. A rectangular asset still collapses to one call (unchanged behavior). The DX-1656 invalid-environment guard is preserved (envs absent from the destination are still skipped). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/import/modules/assets.ts | 88 ++++++---- .../test/unit/import/modules/assets.test.ts | 162 +++++++++++------- 2 files changed, 158 insertions(+), 92 deletions(-) diff --git a/packages/contentstack-import/src/import/modules/assets.ts b/packages/contentstack-import/src/import/modules/assets.ts index e8b792f0b..38481d5eb 100644 --- a/packages/contentstack-import/src/import/modules/assets.ts +++ b/packages/contentstack-import/src/import/modules/assets.ts @@ -4,7 +4,6 @@ import filter from 'lodash/filter'; import unionBy from 'lodash/unionBy'; import orderBy from 'lodash/orderBy'; import isEmpty from 'lodash/isEmpty'; -import uniq from 'lodash/uniq'; import { existsSync } from 'node:fs'; import includes from 'lodash/includes'; import { resolve as pResolve, join } from 'node:path'; @@ -301,6 +300,47 @@ export default class ImportAssets extends BaseClass { return apiOptions; } + /** + * Groups already-filtered `publish_details` into publish payloads that preserve the source + * env↔locale pairing. Entries are grouped by environment, then environments sharing an + * identical locale set are coalesced into one payload. Each returned group is a rectangle + * (its environments × its locales), so the CMA env×locale cross-product reproduces exactly + * the source pairs — never a phantom combination (the DX-9772 over-publish). + * + * A fully-rectangular input (every env published to the same locales) collapses to a single + * group, so behavior is unchanged for the common case; a ragged input fans out into one group + * per distinct locale set. Only environments present in `this.environments` are kept, so the + * env-name lookup is always safe — this preserves the DX-1656 invalid-environment guard. + */ + private buildPublishGroups( + publishDetails: Record[], + ): { environments: string[]; locales: string[] }[] { + const localesByEnv = new Map>(); + for (const { environment, locale } of publishDetails || []) { + if (!locale || !this.environments?.hasOwnProperty(environment)) continue; + let set = localesByEnv.get(environment); + if (!set) { + set = new Set(); + localesByEnv.set(environment, set); + } + set.add(locale); + } + + // Coalesce environments with an identical locale set into a single payload. + const groups = new Map(); + for (const [envUid, localeSet] of localesByEnv) { + const locales = [...localeSet].sort(); + const signature = locales.join(' '); + const existing = groups.get(signature); + if (existing) { + existing.environments.push(this.environments[envUid].name); + } else { + groups.set(signature, { environments: [this.environments[envUid].name], locales }); + } + } + return [...groups.values()]; + } + /** * @method publish * @returns {Promise} Promise @@ -325,49 +365,31 @@ export default class ImportAssets extends BaseClass { handleAndLogError(error, { ...this.importConfig.context, uid, title }); }; + // apiData is a pre-expanded sub-item ({ uid, title, publishDetails }); one per env-locale-set + // group (see below). Pairing is already preserved, so this only resolves the destination UID. const serializeData = (apiOptions: ApiOptions) => { - const { apiData: asset } = apiOptions; - const publishDetails = filter(asset.publish_details, ({ environment }) => { - return this.environments?.hasOwnProperty(environment); - }); - - if (publishDetails.length) { - const environments = uniq(map(publishDetails, ({ environment }) => this.environments[environment].name)); - const locales = uniq(map(publishDetails, 'locale')); - - if (environments.length === 0 || locales.length === 0) { - log.debug( - `Skipping publish for asset ${asset.uid}: no valid environments/locales`, - this.importConfig.context, - ); - apiOptions.entity = undefined; - return apiOptions; - } - - asset.locales = locales; - asset.environments = environments; - apiOptions.apiData.publishDetails = { locales, environments }; - log.debug(`Prepared publish details for asset ${asset.uid}`, this.importConfig.context); - } - - apiOptions.uid = this.assetsUidMap[asset.uid] as string; - + const { apiData } = apiOptions; + apiOptions.uid = this.assetsUidMap[apiData.uid] as string; if (!apiOptions.uid) { - log.debug(`Skipping publish for asset ${asset.uid}: no UID mapping found.`, this.importConfig.context); + log.debug(`Skipping publish for asset ${apiData.uid}: no UID mapping found.`, this.importConfig.context); apiOptions.entity = undefined; } - return apiOptions; }; for (const index in indexer) { log.debug(`Processing publish chunk ${index} of ${indexerCount}`, this.importConfig.context); - const apiContent = filter( - values(await fs.readChunkFiles.next()), - ({ publish_details }) => !isEmpty(publish_details), + // Expand each asset into one sub-item per env-locale-set group, so each makeConcurrentCall + // item is a single-rectangle publish (preserves env↔locale pairing). + const apiContent = values(await fs.readChunkFiles.next()).flatMap((asset: Record) => + this.buildPublishGroups(asset.publish_details).map((publishDetails) => ({ + uid: asset.uid, + title: asset.title, + publishDetails, + })), ); - log.debug(`Found ${apiContent.length} publishable assets in chunk`, this.importConfig.context); + log.debug(`Found ${apiContent.length} asset publish calls in chunk`, this.importConfig.context); await this.makeConcurrentCall({ apiContent, diff --git a/packages/contentstack-import/test/unit/import/modules/assets.test.ts b/packages/contentstack-import/test/unit/import/modules/assets.test.ts index 9cb43df50..c171af5b3 100644 --- a/packages/contentstack-import/test/unit/import/modules/assets.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/assets.test.ts @@ -651,101 +651,145 @@ describe('ImportAssets', () => { expect(makeConcurrentCallStub.called).to.be.true; }); - it('should filter publish_details by valid environments', async () => { - importAssets['environments'] = { 'env-1': { name: 'production' } }; + it('should skip publish when no UID mapping found', async () => { + importAssets['assetsUidMap'] = {}; makeConcurrentCallStub.callsFake(async (options: any) => { const serializeData = options.apiParams.serializeData; + // apiData is now a pre-grouped sub-item. const result = serializeData({ apiData: { - uid: 'asset-1', - publish_details: [ - { environment: 'env-1', locale: 'en-us' }, - { environment: 'env-invalid', locale: 'en-us' } - ] + uid: 'asset-unknown', + publishDetails: { environments: ['production'], locales: ['en-us'] } } }); - - expect(result.apiData.environments).to.deep.equal(['production']); - expect(result.apiData.locales).to.deep.equal(['en-us']); + + expect(result.entity).to.be.undefined; }); await (importAssets as any).publish(); }); - it('should skip publish when no valid environments', async () => { + it('should set correct UID from mapping and preserve the grouped payload', async () => { + importAssets['assetsUidMap'] = { 'asset-1': 'mapped-asset-1' }; + makeConcurrentCallStub.callsFake(async (options: any) => { const serializeData = options.apiParams.serializeData; const result = serializeData({ apiData: { uid: 'asset-1', - publish_details: [ - { environment: 'env-invalid', locale: 'en-us' } - ] + publishDetails: { environments: ['production'], locales: ['en-us'] } } }); - - expect(result.entity).to.be.undefined; + + expect(result.uid).to.equal('mapped-asset-1'); + // serializeData no longer flattens — it leaves the pre-grouped payload untouched. + expect(result.apiData.publishDetails).to.deep.equal({ environments: ['production'], locales: ['en-us'] }); }); await (importAssets as any).publish(); }); - it('should skip publish when no UID mapping found', async () => { - importAssets['assetsUidMap'] = {}; + it('preserves env-locale pairing for a RAGGED asset (DX-9772) — no phantom pairs', async () => { + // production published only in en-us; preview published only in fr-fr. + importAssets['assetsUidMap'] = { 'asset-1': 'new-asset-1' }; + importAssets['environments'] = { 'env-1': { name: 'production' }, 'env-2': { name: 'preview' } }; + Object.defineProperty(FsUtility.prototype, 'readChunkFiles', { + get: sinon.stub().returns({ + next: sinon.stub().resolves([ + { + uid: 'asset-1', + title: 'ragged.jpg', + publish_details: [ + { environment: 'env-1', locale: 'en-us' }, + { environment: 'env-2', locale: 'fr-fr' } + ] + } + ]) + }), + configurable: true + }); + let apiContent: any[] = []; makeConcurrentCallStub.callsFake(async (options: any) => { - const serializeData = options.apiParams.serializeData; - const result = serializeData({ - apiData: { - uid: 'asset-unknown', - publish_details: [{ environment: 'env-1', locale: 'en-us' }] - } - }); - - expect(result.entity).to.be.undefined; + apiContent = options.apiContent; }); await (importAssets as any).publish(); + + // Two separate publish calls, each a single-rectangle payload — never a cartesian. + expect(apiContent).to.have.lengthOf(2); + const payloads = apiContent.map((i) => i.publishDetails); + expect(payloads).to.deep.include.members([ + { environments: ['production'], locales: ['en-us'] }, + { environments: ['preview'], locales: ['fr-fr'] } + ]); + for (const p of payloads) { + const hasPhantom = + (p.environments.includes('production') && p.locales.includes('fr-fr')) || + (p.environments.includes('preview') && p.locales.includes('en-us')); + expect(hasPhantom, `phantom pair in ${JSON.stringify(p)}`).to.be.false; + } }); + }); - it('should set correct UID from mapping', async () => { - importAssets['assetsUidMap'] = { 'asset-1': 'mapped-asset-1' }; + describe('buildPublishGroups() method', () => { + it('collapses a RECTANGULAR asset to a single publish call (behavior-preserving)', () => { + importAssets['environments'] = { + 'e1': { name: 'production' }, + 'e2': { name: 'preview' }, + 'e3': { name: 'development' } + }; + const pd = ['e1', 'e2', 'e3'].flatMap((environment) => [ + { environment, locale: 'en-us' }, + { environment, locale: 'fr-fr' } + ]); - makeConcurrentCallStub.callsFake(async (options: any) => { - const serializeData = options.apiParams.serializeData; - const result = serializeData({ - apiData: { - uid: 'asset-1', - publish_details: [{ environment: 'env-1', locale: 'en-us' }] - } - }); - - expect(result.uid).to.equal('mapped-asset-1'); - }); + const groups = (importAssets as any).buildPublishGroups(pd); - await (importAssets as any).publish(); + expect(groups).to.have.lengthOf(1); + expect(groups[0].locales).to.deep.equal(['en-us', 'fr-fr']); + expect(groups[0].environments).to.have.members(['production', 'preview', 'development']); }); - it('should extract unique locales from publish_details', async () => { - makeConcurrentCallStub.callsFake(async (options: any) => { - const serializeData = options.apiParams.serializeData; - const result = serializeData({ - apiData: { - uid: 'asset-1', - publish_details: [ - { environment: 'env-1', locale: 'en-us' }, - { environment: 'env-1', locale: 'en-us' }, - { environment: 'env-1', locale: 'fr-fr' } - ] - } - }); - - expect(result.apiData.locales).to.have.lengthOf(2); - expect(result.apiData.locales).to.include.members(['en-us', 'fr-fr']); - }); + it('fans a RAGGED asset out into one group per distinct locale set (DX-9772)', () => { + importAssets['environments'] = { 'e1': { name: 'new' }, 'e2': { name: 'blt5795' } }; + const pd = [ + { environment: 'e2', locale: 'en-us' }, + { environment: 'e1', locale: 'en-us' }, + { environment: 'e1', locale: 'ar' } + ]; - await (importAssets as any).publish(); + const groups = (importAssets as any).buildPublishGroups(pd); + + expect(groups).to.have.lengthOf(2); + expect(groups).to.deep.include.members([ + { environments: ['new'], locales: ['ar', 'en-us'] }, + { environments: ['blt5795'], locales: ['en-us'] } + ]); + const blt5795 = groups.find((g: any) => g.environments.includes('blt5795')); + expect(blt5795.locales).to.not.include('ar'); + }); + + it('handles a single env-locale pair (1×1) as one group', () => { + importAssets['environments'] = { 'e1': { name: 'production' } }; + const groups = (importAssets as any).buildPublishGroups([{ environment: 'e1', locale: 'en-us' }]); + expect(groups).to.deep.equal([{ environments: ['production'], locales: ['en-us'] }]); + }); + + it('drops environments absent from the destination (preserves DX-1656 guard)', () => { + importAssets['environments'] = { 'e1': { name: 'production' } }; + const groups = (importAssets as any).buildPublishGroups([ + { environment: 'e1', locale: 'en-us' }, + { environment: 'gone', locale: 'en-us' } + ]); + expect(groups).to.deep.equal([{ environments: ['production'], locales: ['en-us'] }]); + }); + + it('returns [] for empty publish_details', () => { + importAssets['environments'] = { 'e1': { name: 'production' } }; + expect((importAssets as any).buildPublishGroups([])).to.deep.equal([]); + expect((importAssets as any).buildPublishGroups(undefined)).to.deep.equal([]); }); }); From 78da02ea3f9ff018ff92ee4a047a697678b0f015 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 28 Jul 2026 14:38:30 +0530 Subject: [PATCH 13/24] bumped dependencies version --- packages/contentstack-apps-cli/package.json | 4 ++-- packages/contentstack-audit/package.json | 4 ++-- packages/contentstack-bootstrap/package.json | 8 ++++---- packages/contentstack-branches/package.json | 4 ++-- packages/contentstack-bulk-operations/package.json | 4 ++-- packages/contentstack-bulk-publish/package.json | 6 +++--- packages/contentstack-cli-cm-regex-validate/package.json | 4 ++-- packages/contentstack-cli-tsgen/package.json | 4 ++-- packages/contentstack-clone/package.json | 4 ++-- packages/contentstack-content-type/package.json | 4 ++-- packages/contentstack-export-to-csv/package.json | 4 ++-- packages/contentstack-export/package.json | 8 ++++---- packages/contentstack-external-migrate/package.json | 4 ++-- packages/contentstack-import-setup/package.json | 4 ++-- packages/contentstack-import/package.json | 4 ++-- packages/contentstack-migrate-rte/package.json | 4 ++-- packages/contentstack-migration/package.json | 4 ++-- packages/contentstack-query-export/package.json | 4 ++-- packages/contentstack-seed/package.json | 4 ++-- packages/contentstack-variants/package.json | 2 +- 20 files changed, 44 insertions(+), 44 deletions(-) diff --git a/packages/contentstack-apps-cli/package.json b/packages/contentstack-apps-cli/package.json index cc5250fdf..f40f9a161 100644 --- a/packages/contentstack-apps-cli/package.json +++ b/packages/contentstack-apps-cli/package.json @@ -22,9 +22,9 @@ ], "dependencies": { "@apollo/client": "^3.14.1", - "@contentstack/cli-command": "~1.8.4", + "@contentstack/cli-command": "~1.8.5", "@contentstack/cli-launch": "^1.11.1", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-utilities": "~1.19.0", "adm-zip": "^0.5.17", "chalk": "^4.1.2", "lodash": "^4.18.1", diff --git a/packages/contentstack-audit/package.json b/packages/contentstack-audit/package.json index 92ff766e9..436784c44 100644 --- a/packages/contentstack-audit/package.json +++ b/packages/contentstack-audit/package.json @@ -18,8 +18,8 @@ "/oclif.manifest.json" ], "dependencies": { - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@oclif/core": "^4.11.4", "chalk": "^4.1.2", "fast-csv": "^4.3.6", diff --git a/packages/contentstack-bootstrap/package.json b/packages/contentstack-bootstrap/package.json index 56fcd395e..7399f7157 100644 --- a/packages/contentstack-bootstrap/package.json +++ b/packages/contentstack-bootstrap/package.json @@ -17,10 +17,10 @@ "lint": "eslint \"src/**/*.ts\"" }, "dependencies": { - "@contentstack/cli-cm-seed": "~1.15.7", - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-config": "~1.20.5", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-cm-seed": "~1.15.8", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-config": "~1.21.0", + "@contentstack/cli-utilities": "~1.19.0", "@oclif/core": "^4.11.4", "inquirer": "8.2.7", "mkdirp": "^2.1.6", diff --git a/packages/contentstack-branches/package.json b/packages/contentstack-branches/package.json index 73543a1fc..87fbbf48b 100644 --- a/packages/contentstack-branches/package.json +++ b/packages/contentstack-branches/package.json @@ -5,8 +5,8 @@ "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@oclif/core": "^4.11.4", "chalk": "^4.1.2", "just-diff": "^6.0.2", diff --git a/packages/contentstack-bulk-operations/package.json b/packages/contentstack-bulk-operations/package.json index bc8dd1913..26b7d1394 100644 --- a/packages/contentstack-bulk-operations/package.json +++ b/packages/contentstack-bulk-operations/package.json @@ -20,8 +20,8 @@ "/oclif.manifest.json" ], "dependencies": { - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@contentstack/delivery-sdk": "^5.4.0", "@contentstack/management": "^1.30.3", "lodash": "^4.18.1", diff --git a/packages/contentstack-bulk-publish/package.json b/packages/contentstack-bulk-publish/package.json index 8c656e3d6..4ac614168 100644 --- a/packages/contentstack-bulk-publish/package.json +++ b/packages/contentstack-bulk-publish/package.json @@ -5,9 +5,9 @@ "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-config": "~1.20.5", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-config": "~1.21.0", + "@contentstack/cli-utilities": "~1.19.0", "@oclif/core": "^4.11.4", "chalk": "^4.1.2", "dotenv": "^16.6.1", diff --git a/packages/contentstack-cli-cm-regex-validate/package.json b/packages/contentstack-cli-cm-regex-validate/package.json index c279e4490..261450b68 100644 --- a/packages/contentstack-cli-cm-regex-validate/package.json +++ b/packages/contentstack-cli-cm-regex-validate/package.json @@ -65,8 +65,8 @@ "lint": "eslint \"src/**/*.ts\"" }, "dependencies": { - "@contentstack/cli-command": "^1.8.4", - "@contentstack/cli-utilities": "^1.18.5", + "@contentstack/cli-command": "^1.8.5", + "@contentstack/cli-utilities": "^1.19.0", "@contentstack/management": "^1.30.4", "cli-table3": "^0.6.5", "cli-ux": "^6.0.9", diff --git a/packages/contentstack-cli-tsgen/package.json b/packages/contentstack-cli-tsgen/package.json index dba64ae3c..151896e73 100644 --- a/packages/contentstack-cli-tsgen/package.json +++ b/packages/contentstack-cli-tsgen/package.json @@ -5,8 +5,8 @@ "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@contentstack/types-generator": "^3.10.2" }, "devDependencies": { diff --git a/packages/contentstack-clone/package.json b/packages/contentstack-clone/package.json index 26ab0997e..8378bba79 100644 --- a/packages/contentstack-clone/package.json +++ b/packages/contentstack-clone/package.json @@ -8,8 +8,8 @@ "@colors/colors": "^1.6.0", "@contentstack/cli-cm-export": "~1.25.3", "@contentstack/cli-cm-import": "~1.33.5", - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@oclif/core": "^4.11.4", "chalk": "^4.1.2", "inquirer": "8.2.7", diff --git a/packages/contentstack-content-type/package.json b/packages/contentstack-content-type/package.json index dc29f6898..915991880 100644 --- a/packages/contentstack-content-type/package.json +++ b/packages/contentstack-content-type/package.json @@ -5,8 +5,8 @@ "author": "Contentstack Developer", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-command": "^1.8.4", - "@contentstack/cli-utilities": "^1.18.5", + "@contentstack/cli-command": "^1.8.5", + "@contentstack/cli-utilities": "^1.19.0", "@types/diff2html": "^3.0.3", "@types/git-diff": "^2.0.7", "@types/hogan.js": "^3.0.5", diff --git a/packages/contentstack-export-to-csv/package.json b/packages/contentstack-export-to-csv/package.json index 375606421..a24caf394 100644 --- a/packages/contentstack-export-to-csv/package.json +++ b/packages/contentstack-export-to-csv/package.json @@ -5,8 +5,8 @@ "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@oclif/core": "^4.11.4", "fast-csv": "^4.3.6", "inquirer": "8.2.7", diff --git a/packages/contentstack-export/package.json b/packages/contentstack-export/package.json index def2158fb..36a085043 100644 --- a/packages/contentstack-export/package.json +++ b/packages/contentstack-export/package.json @@ -5,8 +5,8 @@ "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@contentstack/cli-variants": "~1.6.0", "@oclif/core": "^4.11.4", "async": "^3.2.6", @@ -21,8 +21,8 @@ "winston": "^3.19.0" }, "devDependencies": { - "@contentstack/cli-auth": "~1.8.4", - "@contentstack/cli-config": "~1.20.5", + "@contentstack/cli-auth": "~1.8.5", + "@contentstack/cli-config": "~1.21.0", "@contentstack/cli-dev-dependencies": "^1.3.1", "@oclif/plugin-help": "^6.2.28", "@oclif/test": "^4.1.18", diff --git a/packages/contentstack-external-migrate/package.json b/packages/contentstack-external-migrate/package.json index cb2524533..1f0ee2df8 100644 --- a/packages/contentstack-external-migrate/package.json +++ b/packages/contentstack-external-migrate/package.json @@ -22,8 +22,8 @@ "version": "oclif readme && git add README.md" }, "dependencies": { - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@contentstack/json-rte-serializer": "~2.1.0", "@contentstack/marketplace-sdk": "~1.5.3", "@oclif/core": "^4.8.0", diff --git a/packages/contentstack-import-setup/package.json b/packages/contentstack-import-setup/package.json index d139eb746..f3b384d45 100644 --- a/packages/contentstack-import-setup/package.json +++ b/packages/contentstack-import-setup/package.json @@ -5,8 +5,8 @@ "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@oclif/core": "^4.11.4", "big-json": "^3.2.0", "chalk": "^4.1.2", diff --git a/packages/contentstack-import/package.json b/packages/contentstack-import/package.json index 9b72827aa..86a20562e 100644 --- a/packages/contentstack-import/package.json +++ b/packages/contentstack-import/package.json @@ -6,8 +6,8 @@ "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-audit": "~1.19.5", - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@contentstack/cli-variants": "~1.6.0", "@oclif/core": "^4.11.4", "big-json": "^3.2.0", diff --git a/packages/contentstack-migrate-rte/package.json b/packages/contentstack-migrate-rte/package.json index 1f791ad06..7d47817d5 100644 --- a/packages/contentstack-migrate-rte/package.json +++ b/packages/contentstack-migrate-rte/package.json @@ -7,8 +7,8 @@ "url": "https://github.com/contentstack/cli-plugins/issues" }, "dependencies": { - "@contentstack/cli-command": "1.8.4", - "@contentstack/cli-utilities": "1.18.5", + "@contentstack/cli-command": "1.8.5", + "@contentstack/cli-utilities": "1.19.0", "@contentstack/json-rte-serializer": "~2.1.0", "@oclif/core": "^4.12.0", "@oclif/plugin-help": "^6.2.53", diff --git a/packages/contentstack-migration/package.json b/packages/contentstack-migration/package.json index 2c19df8fa..53a60b368 100644 --- a/packages/contentstack-migration/package.json +++ b/packages/contentstack-migration/package.json @@ -4,8 +4,8 @@ "author": "@contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@oclif/core": "^4.11.4", "async": "^3.2.6", "callsites": "^3.1.0", diff --git a/packages/contentstack-query-export/package.json b/packages/contentstack-query-export/package.json index b2191d177..e715d3c81 100644 --- a/packages/contentstack-query-export/package.json +++ b/packages/contentstack-query-export/package.json @@ -6,8 +6,8 @@ "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-cm-export": "~1.25.3", - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "@contentstack/cli-variants": "~1.6.0", "@oclif/core": "^4.11.4", "async": "^3.2.6", diff --git a/packages/contentstack-seed/package.json b/packages/contentstack-seed/package.json index 680e85e43..5327ac556 100644 --- a/packages/contentstack-seed/package.json +++ b/packages/contentstack-seed/package.json @@ -6,8 +6,8 @@ "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-cm-import": "~1.33.5", - "@contentstack/cli-command": "~1.8.4", - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-command": "~1.8.5", + "@contentstack/cli-utilities": "~1.19.0", "inquirer": "8.2.7", "mkdirp": "^1.0.4", "tar": "^7.5.19", diff --git a/packages/contentstack-variants/package.json b/packages/contentstack-variants/package.json index 6a32cb7e7..eb7ab7bc2 100644 --- a/packages/contentstack-variants/package.json +++ b/packages/contentstack-variants/package.json @@ -28,7 +28,7 @@ "typescript": "^5.8.3" }, "dependencies": { - "@contentstack/cli-utilities": "~1.18.5", + "@contentstack/cli-utilities": "~1.19.0", "@oclif/core": "^4.11.4", "lodash": "^4.18.1", "mkdirp": "^1.0.4", From 13b19557ab03e3c23b7330e9417d1b432c1ae6e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 10:23:51 +0000 Subject: [PATCH 14/24] chore(deps): bump adm-zip from 0.5.18 to 0.6.0 Bumps [adm-zip](https://github.com/cthackers/adm-zip) from 0.5.18 to 0.6.0. - [Release notes](https://github.com/cthackers/adm-zip/releases) - [Changelog](https://github.com/cthackers/adm-zip/blob/master/history.md) - [Commits](https://github.com/cthackers/adm-zip/compare/v0.5.18...v0.6.0) --- updated-dependencies: - dependency-name: adm-zip dependency-version: 0.6.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- packages/contentstack-apps-cli/package.json | 2 +- pnpm-lock.yaml | 43 ++++++++++++++++++++- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/packages/contentstack-apps-cli/package.json b/packages/contentstack-apps-cli/package.json index 59b265e12..f2b149371 100644 --- a/packages/contentstack-apps-cli/package.json +++ b/packages/contentstack-apps-cli/package.json @@ -25,7 +25,7 @@ "@contentstack/cli-command": "~1.8.5", "@contentstack/cli-launch": "^1.11.1", "@contentstack/cli-utilities": "~1.19.0", - "adm-zip": "^0.5.17", + "adm-zip": "^0.6.0", "chalk": "^4.1.2", "lodash": "^4.18.1", "shelljs": "^0.10.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c641a7a66..1b94f2cdf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,8 +39,8 @@ importers: specifier: ~1.19.0 version: 1.19.0(@types/node@20.19.43) adm-zip: - specifier: ^0.5.17 - version: 0.5.18 + specifier: ^0.6.0 + version: 0.6.0 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -3063,36 +3063,42 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.1.5': resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] '@rolldown/binding-linux-ppc64-gnu@1.1.5': resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@rolldown/binding-linux-s390x-gnu@1.1.5': resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] + libc: [glibc] '@rolldown/binding-linux-x64-gnu@1.1.5': resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] '@rolldown/binding-linux-x64-musl@1.1.5': resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] '@rolldown/binding-openharmony-arm64@1.1.5': resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} @@ -3203,66 +3209,79 @@ packages: resolution: {integrity: sha512-ggXnsTAEzNQx74XpunRsiZ9aBZDsI7XIa0hm2nzR9f4WzH5/f/d73ZSDaC5ejJ8YLY4NW+V3wr0tjOaeCq8hqA==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.62.3': resolution: {integrity: sha512-2vng+FlzNUhKZxtej3IUqJgbZoQk2M/dwQM20+ULV0R/E/8tr9/P6uEf2iiGIk4HL0zMKh5Jry7mUHdUOvyGgA==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.62.3': resolution: {integrity: sha512-LLLFZKt4/Nraf9rxDkhiU8QVgLF4WmCkfr0L4fj0fPfIZFBib0DeiFk1hhaYKd03LFAFJcxHslhDFlNJLylf5Q==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.62.3': resolution: {integrity: sha512-WJkdQCvS9sWNOUBJZfQRKpZGFBztRzcowI+nndmflKgU4XY+3a420FgTOSKTsVqJbnzSxeT4vaJalpOaPo2YCQ==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.62.3': resolution: {integrity: sha512-PwHXCCS2n64/1Ot6rP1YEYA02MGYBcQlr8CSZZyrUG2O7NH6NklYmvr9v3Jy+5e/eDeNchc/ukmKJi9LuflMIQ==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.62.3': resolution: {integrity: sha512-vUjxINQu3RC8NZS3ykk1gN65gIz8pAopOq2HXuZhiIxHdx7TFvDG+jgrdSgInu1Eza4/Rfi2VzZgyIgEH4WOaw==} cpu: [loong64] os: [linux] + libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.62.3': resolution: {integrity: sha512-wzko4aJ13+0G3kGnviCg5gnXFKd40izKsrf2uOw12US4XqprkDrmwOpeW14aSNa37V8bfPcz5Fkob6LZ3BAPmA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.62.3': resolution: {integrity: sha512-8120ue0JUMSwy11stlwnfdX3pPd+WZYGCDBwEHWtIHi6pOpZmsEF5QKB7a/UN+XFdqvobxz98kv8RTqikyCEBw==} cpu: [ppc64] os: [linux] + libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.62.3': resolution: {integrity: sha512-XLFHnR3tXMjbOCh2vtVJHmxt+995uJsTERQyseFDRA0xxMxyTZPLa3OIUlyFaO4mF/Lu0FjmWHCuPXJT1n/IOg==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.62.3': resolution: {integrity: sha512-se6yXvNGMIl0f+RQzyh7XAmia8/9kplQx424wnG2w0C1oi6XgO6Y8otKhdXFHbHs88Ihavzmvh1NWjuovE76BQ==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.62.3': resolution: {integrity: sha512-gNoxRefktVIiGflpONuxWWXZAzIQG++z9qHO3xKwk4WdDMuQja3JHGfE1u0i3PfPDyvhypdk+WrgIJqLhGG7sg==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.62.3': resolution: {integrity: sha512-V4KtWtQfAFMU7+9/A/VDps/VI8CHd3cYz0L8sgJzz8qK7eY7wI4ruFD82UYIYvW9Z4DtlTfhQcsl4XyPHW5uSg==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.62.3': resolution: {integrity: sha512-LBx9LYXvj2CBkMkjLdNAWLwH0MLMin7do2VcVo9kVPibGLkY0BQQut2fv7NVqkXqZ/CrAu9LqDHVV1xHCMpCPw==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openbsd-x64@4.62.3': resolution: {integrity: sha512-ABVf3Q0RCu7NcyCCOZQI0pJ3GuSdfSl8EXcy88QtdceIMIoCUdfhsJChZ64L9zVM2aJHjde1Bhn5uqSRcX9ySA==} @@ -3879,51 +3898,61 @@ packages: resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} cpu: [arm64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.12.2': resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} cpu: [arm64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} cpu: [loong64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-loong64-musl@1.12.2': resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} cpu: [loong64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} cpu: [ppc64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} cpu: [riscv64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} cpu: [riscv64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} cpu: [s390x] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.12.2': resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} cpu: [x64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.12.2': resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} cpu: [x64] os: [linux] + libc: [musl] '@unrs/resolver-binding-openharmony-arm64@1.12.2': resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} @@ -4027,6 +4056,10 @@ packages: resolution: {integrity: sha512-ufJnssQGbxzLNS1Ho9bCtX4rQKCCvoVuDLHoJyc3F9dOGDB4BkWs2Ci0kv53lqocAEQ/Cbi+I2XCsNYGqVYqng==} engines: {node: '>=12.0'} + adm-zip@0.6.0: + resolution: {integrity: sha512-XleryMhbuksdKtofnWZ9Sk+4CUTbms4Mb/EU32SZwToAyZ5RgVos/ki8n+yr0LWHOGKuakbXTuuYNHLQjhddgg==} + engines: {node: '>=14.0'} + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -6843,24 +6876,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.33.0: resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.33.0: resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.33.0: resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.33.0: resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} @@ -13430,6 +13467,8 @@ snapshots: adm-zip@0.5.18: {} + adm-zip@0.6.0: {} + agent-base@6.0.2: dependencies: debug: 4.4.3(supports-color@8.1.1) From 19c2a36b1e3cf3234082538bf2b123900436f132 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 30 Jul 2026 12:25:07 +0530 Subject: [PATCH 15/24] handled assets in pending or quarantine states export failure --- .../contentstack-export/messages/index.json | 2 + .../src/export/modules/assets.ts | 28 +++++++++- .../src/export/modules/base-class.ts | 56 +++++++++++++++---- .../test/unit/export/modules/assets.test.ts | 27 +++++++++ 4 files changed, 101 insertions(+), 12 deletions(-) diff --git a/packages/contentstack-export/messages/index.json b/packages/contentstack-export/messages/index.json index 21a72c884..73925c5fd 100644 --- a/packages/contentstack-export/messages/index.json +++ b/packages/contentstack-export/messages/index.json @@ -10,6 +10,8 @@ "ASSET_QUERY_FAILED": "Failed to query asset data from the API", "ASSET_VERSIONED_QUERY_FAILED": "Failed to query versioned asset data from the API", "ASSET_COUNT_QUERY_FAILED": "Failed to retrieve total asset count", + "ASSET_SCAN_SKIPPED": "Skipping download of asset '%s' (UID: %s) — scan status: %s", + "ASSET_SCAN_SKIP_SUMMARY": "%s asset(s) skipped due to a non-clean scan status (pending/quarantined). Re-run the export once scanning completes to download them.", "CONTENT_TYPE_EXPORT_COMPLETE": "Content types exported successfully", "CONTENT_TYPE_NO_TYPES": "No content types found", diff --git a/packages/contentstack-export/src/export/modules/assets.ts b/packages/contentstack-export/src/export/modules/assets.ts index 1a95d5f25..eb0b23a02 100644 --- a/packages/contentstack-export/src/export/modules/assets.ts +++ b/packages/contentstack-export/src/export/modules/assets.ts @@ -135,6 +135,7 @@ export default class ExportAssets extends BaseClass { const queryParam = { ...this.commonQueryParam, include_publish_details: true, + include_asset_scan_status: true, except: { BASE: this.assetConfig.invalidKeys }, }; this.applyQueryFilters(queryParam, 'assets'); @@ -168,7 +169,10 @@ export default class ExportAssets extends BaseClass { indexFileName: 'assets.json', basePath: this.assetsRootPath, chunkFileSize: this.assetConfig.chunkFileSize, - metaPickKeys: merge(['uid', 'url', 'filename', 'parent_uid'], this.assetConfig.assetsMetaKeys), + metaPickKeys: merge( + ['uid', 'url', 'filename', 'parent_uid', '_asset_scan_status'], + this.assetConfig.assetsMetaKeys, + ), }); } if (!isEmpty(items)) { @@ -204,6 +208,7 @@ export default class ExportAssets extends BaseClass { const queryParam = { ...this.commonQueryParam, include_publish_details: true, + include_asset_scan_status: true, except: { BASE: this.assetConfig.invalidKeys }, }; @@ -243,7 +248,10 @@ export default class ExportAssets extends BaseClass { indexFileName: 'versioned-assets.json', chunkFileSize: this.assetConfig.chunkFileSize, basePath: pResolve(this.assetsRootPath, 'versions'), - metaPickKeys: merge(['uid', 'url', 'filename', '_version', 'parent_uid'], this.assetConfig.assetsMetaKeys), + metaPickKeys: merge( + ['uid', 'url', 'filename', '_version', 'parent_uid', '_asset_scan_status'], + this.assetConfig.assetsMetaKeys, + ), }); } if (!isEmpty(response)) { @@ -329,6 +337,19 @@ export default class ExportAssets extends BaseClass { listOfAssets = uniqBy(listOfAssets, 'url'); log.debug(`Total unique assets to download: ${listOfAssets.length}`, this.exportConfig.context); + const isNotClean = (asset: any) => asset._asset_scan_status && asset._asset_scan_status !== 'clean'; + const skippedAssets = filter(listOfAssets, isNotClean); + listOfAssets = filter(listOfAssets, (asset: any) => !isNotClean(asset)); + + if (!isEmpty(skippedAssets)) { + for (const asset of skippedAssets) { + log.warn( + messageHandler.parse('ASSET_SCAN_SKIPPED', asset.filename, asset.uid, asset._asset_scan_status), + this.exportConfig.context, + ); + } + } + const apiBatches: Array = chunk(listOfAssets, this.assetConfig.downloadLimit); const downloadedAssetsDirs = await getDirectories(pResolve(this.assetsRootPath, 'files')); @@ -413,6 +434,9 @@ export default class ExportAssets extends BaseClass { promisifyHandler, ).then(() => { log.success(messageHandler.parse('ASSET_DOWNLOAD_COMPLETE'), this.exportConfig.context); + if (!isEmpty(skippedAssets)) { + log.warn(messageHandler.parse('ASSET_SCAN_SKIP_SUMMARY', skippedAssets.length), this.exportConfig.context); + } }); } } diff --git a/packages/contentstack-export/src/export/modules/base-class.ts b/packages/contentstack-export/src/export/modules/base-class.ts index 6379669e1..68fb1adb9 100644 --- a/packages/contentstack-export/src/export/modules/base-class.ts +++ b/packages/contentstack-export/src/export/modules/base-class.ts @@ -5,7 +5,7 @@ import chunk from 'lodash/chunk'; import isEmpty from 'lodash/isEmpty'; import entries from 'lodash/entries'; import isEqual from 'lodash/isEqual'; -import { log } from '@contentstack/cli-utilities'; +import { log, handleAndLogError } from '@contentstack/cli-utilities'; import { ExportConfig, ModuleClassParams } from '../../types'; @@ -115,7 +115,16 @@ export default abstract class BaseClass { } /* eslint-disable no-await-in-loop */ - await Promise.allSettled(allPromise); + const settledResults = await Promise.allSettled(allPromise); + settledResults.forEach((result) => { + if (result.status === 'rejected') { + handleAndLogError( + result.reason, + { ...this.exportConfig.context }, + `Unhandled rejection in '${module}' batch ${batchNo}`, + ); + } + }); /* eslint-disable no-await-in-loop */ await this.logMsgAndWaitIfRequired(module, start, batchNo); @@ -150,6 +159,30 @@ export default abstract class BaseClass { if (exeTime < 1000) await this.delay(1000 - exeTime); } + /** + * Wraps a caller-supplied resolve/reject callback so that if the callback itself throws + * (e.g. a bug while writing/logging the result), the failure is caught right here and + * always recorded via handleAndLogError, instead of turning into a rejected promise that + * a caller further up the chain may or may not notice. + */ + private guardCallback( + callback: (value: any) => void, + moduleName: ApiModuleType, + context: Record, + ): (value: any) => void { + return (value: any) => { + try { + callback(value); + } catch (error) { + handleAndLogError( + error, + { ...this.exportConfig.context, ...context }, + `Unhandled error while processing '${moduleName}' API result`, + ); + } + }; + } + /** * @method makeAPICall * @param {Record} options - Api related params @@ -160,32 +193,35 @@ export default abstract class BaseClass { { module: moduleName, reject, resolve, url = '', uid = '', additionalInfo, queryParam = {} }: ApiOptions, isLastRequest = false, ): Promise { + const safeResolve = this.guardCallback(resolve, moduleName, { uid, additionalInfo }); + const safeReject = this.guardCallback(reject, moduleName, { uid, additionalInfo }); + switch (moduleName) { case 'asset': return this.stack .asset(uid) .fetch(queryParam) - .then((response: any) => resolve({ response, isLastRequest, additionalInfo })) - .catch((error: Error) => reject({ error, isLastRequest, additionalInfo })); + .then((response: any) => safeResolve({ response, isLastRequest, additionalInfo })) + .catch((error: Error) => safeReject({ error, isLastRequest, additionalInfo })); case 'assets': return this.stack .asset() .query(queryParam) .find() - .then((response: any) => resolve({ response, isLastRequest, additionalInfo })) - .catch((error: Error) => reject({ error, isLastRequest, additionalInfo })); + .then((response: any) => safeResolve({ response, isLastRequest, additionalInfo })) + .catch((error: Error) => safeReject({ error, isLastRequest, additionalInfo })); case 'download-asset': return this.stack .asset() .download({ url, responseType: 'stream' }) - .then((response: any) => resolve({ response, isLastRequest, additionalInfo })) - .catch((error: any) => reject({ error, isLastRequest, additionalInfo })); + .then((response: any) => safeResolve({ response, isLastRequest, additionalInfo })) + .catch((error: any) => safeReject({ error, isLastRequest, additionalInfo })); case 'export-taxonomy': return this.stack .taxonomy(uid) .export(queryParam) - .then((response: any) => resolve({ response, uid })) - .catch((error: any) => reject({ error, uid })); + .then((response: any) => safeResolve({ response, uid })) + .catch((error: any) => safeReject({ error, uid })); default: return Promise.resolve(); } diff --git a/packages/contentstack-export/test/unit/export/modules/assets.test.ts b/packages/contentstack-export/test/unit/export/modules/assets.test.ts index 5509682a4..e472ab13f 100644 --- a/packages/contentstack-export/test/unit/export/modules/assets.test.ts +++ b/packages/contentstack-export/test/unit/export/modules/assets.test.ts @@ -564,6 +564,33 @@ describe('ExportAssets', () => { expect(makeConcurrentCallStub.called).to.be.true; }); + + it('should skip assets with a non-clean scan status and download the rest', async () => { + getPlainMetaStub.returns({ + 'file-1': [ + { uid: 'clean-1', url: 'https://test.io/assets/clean-1.jpeg', filename: 'clean-1.jpeg', _asset_scan_status: 'clean' }, + { uid: 'pending-1', url: 'https://test.io/assets/pending-1.zip', filename: 'pending-1.zip', _asset_scan_status: 'pending' }, + { uid: 'quarantined-1', url: 'https://test.io/assets/quarantined-1.zip', filename: 'quarantined-1.zip', _asset_scan_status: 'quarantined' }, + ], + }); + + await exportAssets.downloadAssets(); + + expect(makeConcurrentCallStub.called).to.be.true; + // Only the 'clean' asset should be handed off for download; pending/quarantined are skipped. + expect(makeConcurrentCallStub.firstCall.args[0].totalCount).to.equal(1); + }); + + it('should download assets with no scan status field (stacks without asset scanning enabled)', async () => { + getPlainMetaStub.returns({ + 'file-1': [{ uid: 'legacy-1', url: 'https://test.io/assets/legacy-1.jpeg', filename: 'legacy-1.jpeg' }], + }); + + await exportAssets.downloadAssets(); + + // Missing _asset_scan_status must not be treated as non-clean, or every export would break. + expect(makeConcurrentCallStub.firstCall.args[0].totalCount).to.equal(1); + }); }); describe('Edge Cases', () => { From 601947fc8258e259ec400cb5b3ea212e9a0f6a39 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 30 Jul 2026 13:52:20 +0530 Subject: [PATCH 16/24] added audit check and fix for assets in pending or quarantined state --- .talismanrc | 6 + .../src/audit-base-command.ts | 41 ++- .../contentstack-audit/src/config/index.ts | 5 + .../contentstack-audit/src/messages/index.ts | 4 + .../contentstack-audit/src/modules/assets.ts | 30 ++- .../contentstack-audit/src/modules/entries.ts | 204 ++++++++++++++- .../src/types/content-types.ts | 2 + .../unit/mock/contents/assets/assets.json | 1 + .../mock/contents/assets/chunk1-assets.json | 33 +++ .../test/unit/modules/assets.test.ts | 74 ++++++ .../test/unit/modules/entries.test.ts | 235 ++++++++++++++++++ 11 files changed, 622 insertions(+), 13 deletions(-) create mode 100644 packages/contentstack-audit/test/unit/mock/contents/assets/assets.json create mode 100644 packages/contentstack-audit/test/unit/mock/contents/assets/chunk1-assets.json create mode 100644 packages/contentstack-audit/test/unit/modules/assets.test.ts diff --git a/.talismanrc b/.talismanrc index c61a19cba..ab42eb8cd 100644 --- a/.talismanrc +++ b/.talismanrc @@ -2,4 +2,10 @@ fileignoreconfig: - filename: pnpm-lock.yaml checksum: 31e333d6769adbaae042c92ea0930fab168a0e06fc1bda406d49fd1042a7a9c7 +- filename: packages/contentstack-audit/src/audit-base-command.ts + checksum: 14275f241e4a194cfd1fb33d277df194011eba4458ccaab7e0d0bd3a1c9ccfe7 +- filename: packages/contentstack-audit/src/modules/entries.ts + checksum: b0fa5f7b390ef2d64bd4834a5b848780b902373e2c644833842b42c6b767d54e +- filename: packages/contentstack-audit/test/unit/modules/entries.test.ts + checksum: ff448c79d436d5e8b141efcc76f19892bfe96039ea9a60fae4e995b5ccbc2960 version: '1.0' diff --git a/packages/contentstack-audit/src/audit-base-command.ts b/packages/contentstack-audit/src/audit-base-command.ts index b78650a31..d86efb057 100644 --- a/packages/contentstack-audit/src/audit-base-command.ts +++ b/packages/contentstack-audit/src/audit-base-command.ts @@ -94,6 +94,8 @@ export abstract class AuditBaseCommand extends BaseCommand; missingEnvLocale?: Record; missingMultipleFields?: Record; + missingAssetRefs?: Record; } = {}, missingMandatoryFields, missingTitleFields, @@ -215,6 +228,8 @@ export abstract class AuditBaseCommand extends BaseCommand, ): Promise { log.debug(`Preparing report for module: ${moduleName}`, this.auditContext); @@ -656,7 +682,8 @@ export abstract class AuditBaseCommand extends BaseCommand, ): Promise { if (Object.keys(config.moduleConfig).includes(moduleName) || config.feild_level_modules.includes(moduleName)) { diff --git a/packages/contentstack-audit/src/config/index.ts b/packages/contentstack-audit/src/config/index.ts index e291554fa..eb583c690 100644 --- a/packages/contentstack-audit/src/config/index.ts +++ b/packages/contentstack-audit/src/config/index.ts @@ -110,6 +110,8 @@ const config = { 'publish_locale', 'publish_environment', 'asset_uid', + 'scan_status', + 'mandatory', 'selectedValue', 'ct_uid', 'action', @@ -129,6 +131,7 @@ const config = { Entry_Missing_Locale_and_Env: 'Entry_Missing_Locale_and_Env', Entry_Missing_Locale_and_Env_in_Publish_Details: 'Entry_Missing_Locale_and_Env_in_Publish_Details', Entry_Multiple_Fields: 'Entry_Multiple_Fields', + Entries_Asset_field: 'Entries_Asset_field', }, feild_level_modules: [ 'Entries_Title_field', @@ -137,6 +140,8 @@ const config = { 'Entry_Missing_Locale_and_Env_in_Publish_Details', 'field-rules', 'Entry_Multiple_Fields', + 'Entries_Asset_field', + 'asset-scan-status', 'Summary', ], fixSelectField: false, diff --git a/packages/contentstack-audit/src/messages/index.ts b/packages/contentstack-audit/src/messages/index.ts index a2b654128..dac9136f9 100644 --- a/packages/contentstack-audit/src/messages/index.ts +++ b/packages/contentstack-audit/src/messages/index.ts @@ -49,6 +49,8 @@ const auditMsg = { FIELD_RULE_TARGET_ABSENT: `The target field '{target_field}' is not present in the schema of the content-type {ctUid}`, FIELD_RULE_CONDITION_SCAN_MESSAGE: `Completed Scanning of Field Rule '{num}' condition of Content-type '{ctUid}'`, FIELD_RULE_TARGET_SCAN_MESSAGE: `Completed Scanning of Field Rule '{num}' target of Content-type '{ctUid}'`, + SCAN_ASSET_QUARANTINE_MSG: `Asset with UID '{uid}' has a non-clean scan status ('{status}') and will be excluded from import.`, + ENTRY_ASSET_REF_WARN_MSG: `Entry '{uid}' field '{field}' references asset '{asset_uid}' with scan status '{status}'; it will be removed on fix.`, }; const auditFixMsg = { @@ -63,6 +65,8 @@ const auditFixMsg = { ENTRY_SELECT_FIELD_FIX: `Adding the value '{value}' in the select field of entry UID '{uid}'...`, ASSET_FIX: `Fixed publish detials for Asset with UID '{uid}'`, FIELD_RULE_FIX_MESSAGE: `Fixed Field Rule '{num}' target of Content-type '{ctUid}`, + ASSET_SCAN_STATUS_FIX: `Removed asset with UID '{uid}' (scan status: '{status}') from assets.json.`, + ENTRY_ASSET_REF_FIX: `Removed reference to asset '{asset_uid}' from entry '{uid}' field '{field}'.`, }; const messages: typeof errors & diff --git a/packages/contentstack-audit/src/modules/assets.ts b/packages/contentstack-audit/src/modules/assets.ts index af00aa5bb..14858cc4c 100644 --- a/packages/contentstack-audit/src/modules/assets.ts +++ b/packages/contentstack-audit/src/modules/assets.ts @@ -27,6 +27,7 @@ export default class Assets { public environments: string[] = []; protected schema: ContentTypeStruct[] = []; protected missingEnvLocales: Record = {}; + public missingScanStatusAssets: Record = {}; public moduleName: keyof typeof auditConfig.moduleConfig; constructor({ fix, config, moduleName }: ModuleConstructorParam & CtConstructorParam) { @@ -184,7 +185,24 @@ export default class Assets { for (const assetUid in assets) { log.debug(`Processing asset: ${assetUid}`, this.config.auditContext); - + + const scanStatus = this.assets[assetUid]?._asset_scan_status; + if (scanStatus && scanStatus !== 'clean') { + log.debug(`Asset ${assetUid} has a non-clean scan status: ${scanStatus}`, this.config.auditContext); + cliux.print($t(auditMsg.SCAN_ASSET_QUARANTINE_MSG, { uid: assetUid, status: scanStatus }), { + color: 'yellow', + }); + this.missingScanStatusAssets[assetUid] = [ + { asset_uid: assetUid, filename: this.assets[assetUid].filename, scan_status: scanStatus }, + ]; + + if (this.fix) { + log.info($t(auditFixMsg.ASSET_SCAN_STATUS_FIX, { uid: assetUid, status: scanStatus }), this.config.auditContext); + delete this.assets[assetUid]; + continue; + } + } + if (this.assets[assetUid]?.publish_details && !Array.isArray(this.assets[assetUid].publish_details)) { log.debug(`Asset ${assetUid} has invalid publish_details format`, this.config.auditContext); cliux.print($t(auditMsg.ASSET_NOT_EXIST, { uid: assetUid }), { color: 'red' }); @@ -226,15 +244,19 @@ export default class Assets { const remainingPublishDetails = this.assets[assetUid].publish_details?.length || 0; log.debug(`Asset ${assetUid} now has ${remainingPublishDetails} valid publish details`, this.config.auditContext); - + if (this.fix) { log.debug(`Fixing asset ${assetUid}`, this.config.auditContext); log.info($t(auditFixMsg.ASSET_FIX, { uid: assetUid }), this.config.auditContext); - await this.writeFixContent(`${basePath}/${indexer[fileIndex]}`, this.assets); } } + + if (this.fix) { + log.debug(`Writing fixed assets chunk to: ${basePath}/${indexer[fileIndex]}`, this.config.auditContext); + await this.writeFixContent(`${basePath}/${indexer[fileIndex]}`, this.assets); + } } - + log.debug(`Asset reference validation completed. Processed ${Object.keys(this.missingEnvLocales).length} assets with issues`, this.config.auditContext); } } diff --git a/packages/contentstack-audit/src/modules/entries.ts b/packages/contentstack-audit/src/modules/entries.ts index 02697d50b..e7a1257dd 100644 --- a/packages/contentstack-audit/src/modules/entries.ts +++ b/packages/contentstack-audit/src/modules/entries.ts @@ -58,8 +58,11 @@ export default class Entries { protected missingTitleFields: Record = {}; protected missingEnvLocale: Record = {}; protected missingMultipleField: Record = {}; + protected missingAssetRefs: Record = {}; public environments: string[] = []; public entryMetaData: Record[] = []; + public assetMetaData: Record = {}; + public assetsDataAvailable = false; public moduleName: keyof typeof auditConfig.moduleConfig = 'entries'; constructor({ fix, config, moduleName, ctSchema, gfSchema }: ModuleConstructorParam & CtConstructorParam) { @@ -154,6 +157,10 @@ export default class Entries { await this.prepareEntryMetaData(); log.debug(`Entry metadata prepared: ${this.entryMetaData.length} entries found`, this.config.auditContext); + log.debug('Preparing asset metadata', this.config.auditContext); + await this.prepareAssetMetaData(); + log.debug(`Asset metadata prepared: ${Object.keys(this.assetMetaData).length} assets found`, this.config.auditContext); + log.debug('Fixing prerequisite data', this.config.auditContext); await this.fixPrerequisiteData(); log.debug('Prerequisite data fix completed', this.config.auditContext); @@ -198,6 +205,10 @@ export default class Entries { if (!this.missingMandatoryFields[this.currentUid]) { this.missingMandatoryFields[this.currentUid] = []; } + + if (!this.missingAssetRefs[this.currentUid]) { + this.missingAssetRefs[this.currentUid] = []; + } if (this.fix) { log.debug(`Removing missing keys from entry ${uid}`, this.config.auditContext); this.removeMissingKeysOnEntry(ctSchema.schema as ContentTypeSchemaType[], this.entries[entryUid]); @@ -234,6 +245,14 @@ export default class Entries { }); } + if (this.missingAssetRefs[this.currentUid]?.length) { + log.debug(`Found ${this.missingAssetRefs[this.currentUid].length} missing/quarantined asset references for entry ${uid}`, this.config.auditContext); + this.missingAssetRefs[this.currentUid].forEach((entry: any) => { + entry.ct = ctSchema.uid; + entry.locale = code; + }); + } + const fields = this.missingMandatoryFields[uid]; const isPublished = entry.publish_details?.length > 0; log.debug(`Entry ${uid} published status: ${isPublished}, missing mandatory fields: ${fields?.length || 0}`, this.config.auditContext); @@ -343,6 +362,7 @@ export default class Entries { missingTitleFields: this.missingTitleFields, missingEnvLocale: this.missingEnvLocale, missingMultipleFields: this.missingMultipleField, + missingAssetRefs: this.missingAssetRefs, }; log.debug(`Entries audit completed. Found issues:`, this.config.auditContext); @@ -388,8 +408,17 @@ export default class Entries { removedMandatoryFields++; } } - - log.debug(`Cleanup completed: removed ${removedRefs} empty refs, ${removedSelectFields} empty select fields, ${removedMandatoryFields} empty mandatory fields`, this.config.auditContext); + + let removedAssetRefs = 0; + for (let propName in this.missingAssetRefs) { + if (!this.missingAssetRefs[propName].length) { + log.debug(`Removing empty missing asset references for entry: ${propName}`, this.config.auditContext); + delete this.missingAssetRefs[propName]; + removedAssetRefs++; + } + } + + log.debug(`Cleanup completed: removed ${removedRefs} empty refs, ${removedSelectFields} empty select fields, ${removedMandatoryFields} empty mandatory fields, ${removedAssetRefs} empty asset refs`, this.config.auditContext); } /** @@ -624,6 +653,16 @@ export default class Entries { entry[uid] as EntryGroupFieldDataType[], ); break; + case 'file': + log.debug(`Validating file/asset field: ${display_name}`, this.config.auditContext); + const assetRefResults = this.validateFileField( + [...tree, { uid: child.uid, name: child.display_name, field: uid }], + child, + entry[uid], + ); + this.missingAssetRefs[this.currentUid].push(...assetRefResults); + log.debug(`Found ${assetRefResults.length} quarantined/missing asset references in field: ${display_name}`, this.config.auditContext); + break; case 'text': case 'number': if (child.hasOwnProperty('display_type')) { @@ -888,6 +927,59 @@ export default class Entries { log.debug(`Group field validation completed for: ${fieldStructure.display_name}`); } + /** + * Returns true when the given asset uid should be treated as unusable — either it doesn't + * exist in the exported assets.json at all, or it exists but its scan status is present and + * not 'clean' (e.g. 'pending'/'quarantined'). Returns false (never flag) when asset metadata + * wasn't available at all, since we can't validate what we don't have data for. + */ + isAssetBad(uid?: string): boolean { + if (!this.assetsDataAvailable || !uid) return false; + const assetRecord = this.assetMetaData[uid]; + if (!assetRecord) return true; + const scanStatus = assetRecord._asset_scan_status; + return Boolean(scanStatus) && scanStatus !== 'clean'; + } + + /** + * The function `validateFileField` checks a `data_type: 'file'` (asset reference) field's + * value(s) against the asset metadata index and returns an issue when any referenced asset is + * missing or has a non-clean scan status. + */ + validateFileField( + tree: Record[], + fieldStructure: { uid: string; data_type: string; display_name: string; mandatory?: boolean }, + field: any, + ): EntryRefErrorReturnType[] { + log.debug(`Validating file/asset field: ${fieldStructure.display_name}`, this.config.auditContext); + + const values = Array.isArray(field) ? field : field ? [field] : []; + const missingRefs = values + .filter((ref: any) => this.isAssetBad(ref?.uid)) + .map((ref: any) => ({ asset_uid: ref?.uid, filename: ref?.filename })); + + if (isEmpty(missingRefs)) { + log.debug('File/asset field validation completed: no issues found', this.config.auditContext); + return []; + } + + return [ + { + tree, + missingRefs, + uid: this.currentUid, + name: this.currentTitle, + data_type: fieldStructure.data_type, + display_name: fieldStructure.display_name, + mandatory: fieldStructure.mandatory, + treeStr: tree + .map(({ name }) => name) + .filter((val) => val) + .join(' ➜ '), + } as unknown as EntryRefErrorReturnType, + ]; + } + /** * The function `validateReferenceValues` checks if the references in a given field exist in the * provided tree and returns any missing references. @@ -1125,6 +1217,14 @@ export default class Entries { entry[uid] as EntryGroupFieldDataType[], ) as EntryGroupFieldDataType; break; + case 'file': + log.debug(`Fixing file/asset field: ${uid}`); + this.fixFileFieldReferences( + [...tree, { uid: field.uid, name: field.display_name, data_type: field.data_type }], + field, + entry, + ); + break; case 'text': case 'number': if (field.hasOwnProperty('display_type')) { @@ -1574,6 +1674,65 @@ export default class Entries { return field; } + /** + * The function `fixFileFieldReferences` strips references to missing/quarantined/pending-scan + * assets from a `data_type: 'file'` field. A single-object value with a bad asset uid is deleted + * from the entry entirely; a `multiple: true` array value has its bad entries filtered out, and + * the key itself is deleted if the array becomes empty as a result. + */ + fixFileFieldReferences( + tree: Record[], + field: { uid: string; data_type: string; display_name: string; mandatory?: boolean }, + entry: Record, + ) { + log.debug(`Fixing file/asset field: ${field.display_name}`); + const { uid, display_name, data_type, mandatory } = field; + const value = entry[uid]; + + if (value == null) { + return entry; + } + + const missingRefs: Record[] = []; + + if (Array.isArray(value)) { + entry[uid] = value.filter((ref: any) => { + if (this.isAssetBad(ref?.uid)) { + missingRefs.push({ asset_uid: ref?.uid, filename: ref?.filename }); + return false; + } + return true; + }); + if (!entry[uid].length) { + delete entry[uid]; + } + } else if (this.isAssetBad(value?.uid)) { + missingRefs.push({ asset_uid: value?.uid, filename: value?.filename }); + delete entry[uid]; + } + + if (!isEmpty(missingRefs)) { + log.debug(`Recording asset reference fix for entry: ${this.currentUid}`); + this.missingAssetRefs[this.currentUid].push({ + tree, + data_type, + missingRefs, + display_name, + mandatory, + fixStatus: 'Fixed', + uid: this.currentUid, + name: this.currentTitle, + treeStr: tree + .map(({ name }) => name) + .filter((val) => val) + .join(' ➜ '), + }); + } + + log.debug(`File/asset fix completed for: ${field.display_name}`); + return entry; + } + /** * The function `fixGroupField` takes in a tree, a field, and an entry, and if the field has a * schema, it runs a fix on the schema and returns the updated entry, otherwise it returns the @@ -1991,4 +2150,45 @@ export default class Entries { log.debug(`Entry metadata preparation completed: ${this.entryMetaData.length} entries processed`, this.config.auditContext); log.debug(`Missing title fields found: ${Object.keys(this.missingTitleFields).length}`, this.config.auditContext); } + + /** + * Builds an index of asset uid -> { uid, filename, _asset_scan_status } from the exported + * assets/assets.json, mirroring the FsUtility chunk-read pattern used in the Assets module + * (src/modules/assets.ts). If the assets data isn't present in this export at all, + * `assetsDataAvailable` stays false and `isAssetBad()` never flags anything — absence of data + * must not be treated as every file-field reference being broken. + */ + async prepareAssetMetaData() { + log.debug('Starting asset metadata preparation', this.config.auditContext); + + const assetsBasePath = resolve( + sanitizePath(this.config.basePath), + sanitizePath(this.config.moduleConfig.assets.dirName), + ); + const assetsIndexPath = join(assetsBasePath, this.config.moduleConfig.assets.fileName); + + if (!existsSync(assetsIndexPath)) { + log.debug(`No assets data found at: ${assetsIndexPath}`, this.config.auditContext); + this.assetsDataAvailable = false; + return; + } + + this.assetsDataAvailable = true; + const fsUtility = new FsUtility({ basePath: assetsBasePath, indexFileName: 'assets.json' }); + const indexer = fsUtility.indexFileContent; + log.debug(`Found ${Object.keys(indexer).length} asset files to process`, this.config.auditContext); + + for (const _ in indexer) { + const assets = (await fsUtility.readChunkFiles.next()) as Record; + for (const assetUid in assets) { + this.assetMetaData[assetUid] = { + uid: assetUid, + filename: assets[assetUid]?.filename, + _asset_scan_status: assets[assetUid]?._asset_scan_status, + }; + } + } + + log.debug(`Asset metadata preparation completed: ${Object.keys(this.assetMetaData).length} assets processed`, this.config.auditContext); + } } diff --git a/packages/contentstack-audit/src/types/content-types.ts b/packages/contentstack-audit/src/types/content-types.ts index 2a27e92af..bd723c42e 100644 --- a/packages/contentstack-audit/src/types/content-types.ts +++ b/packages/contentstack-audit/src/types/content-types.ts @@ -162,6 +162,8 @@ enum OutputColumn { 'publish_locale' = 'publish_locale', 'publish_environment' = 'publish_environment', 'asset_uid' = 'asset_uid', + 'scan_status' = 'scan_status', + 'mandatory' = 'mandatory', 'selectedValue' = 'selectedValue', 'fixStatus' = 'fixStatus', 'Content_type_uid' = 'ct_uid', diff --git a/packages/contentstack-audit/test/unit/mock/contents/assets/assets.json b/packages/contentstack-audit/test/unit/mock/contents/assets/assets.json new file mode 100644 index 000000000..825a196ea --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/assets/assets.json @@ -0,0 +1 @@ +{"1":"chunk1-assets.json"} diff --git a/packages/contentstack-audit/test/unit/mock/contents/assets/chunk1-assets.json b/packages/contentstack-audit/test/unit/mock/contents/assets/chunk1-assets.json new file mode 100644 index 000000000..a4fb857d4 --- /dev/null +++ b/packages/contentstack-audit/test/unit/mock/contents/assets/chunk1-assets.json @@ -0,0 +1,33 @@ +{ + "blt-clean-asset": { + "uid": "blt-clean-asset", + "filename": "clean.jpg", + "url": "https://images.contentstack.io/v3/assets/blt/blt-clean-asset/clean.jpg", + "_version": 1, + "_asset_scan_status": "clean", + "publish_details": [] + }, + "blt-pending-asset": { + "uid": "blt-pending-asset", + "filename": "pending.zip", + "url": "https://assets.contentstack.io/v3/assets/blt/blt-pending-asset/pending.zip", + "_version": 1, + "_asset_scan_status": "pending", + "publish_details": [] + }, + "blt-quarantined-asset": { + "uid": "blt-quarantined-asset", + "filename": "quarantined.zip", + "url": "https://assets.contentstack.io/v3/assets/blt/blt-quarantined-asset/quarantined.zip", + "_version": 1, + "_asset_scan_status": "quarantined", + "publish_details": [] + }, + "blt-no-status-asset": { + "uid": "blt-no-status-asset", + "filename": "no-status.png", + "url": "https://images.contentstack.io/v3/assets/blt/blt-no-status-asset/no-status.png", + "_version": 1, + "publish_details": [] + } +} diff --git a/packages/contentstack-audit/test/unit/modules/assets.test.ts b/packages/contentstack-audit/test/unit/modules/assets.test.ts new file mode 100644 index 000000000..f2d26a02c --- /dev/null +++ b/packages/contentstack-audit/test/unit/modules/assets.test.ts @@ -0,0 +1,74 @@ +import fs from 'fs'; +import { resolve } from 'path'; +import { expect } from 'chai'; +import fancy from 'fancy-test'; +import Sinon from 'sinon'; +import config from '../../../src/config'; +import { Assets } from '../../../src/modules'; +import { ModuleConstructorParam, CtConstructorParam } from '../../../src/types'; +import { mockLogger } from '../mock-logger'; + +describe('Assets module', () => { + let constructorParam: ModuleConstructorParam & CtConstructorParam; + + beforeEach(() => { + constructorParam = { + moduleName: 'assets', + ctSchema: [], + gfSchema: [], + config: Object.assign(config, { basePath: resolve(__dirname, '..', 'mock', 'contents'), flags: {} }), + }; + + Sinon.stub(require('@contentstack/cli-utilities'), 'log').value(mockLogger); + }); + + afterEach(() => { + Sinon.restore(); + }); + + describe('lookForReference method (scan status)', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('flags assets with a non-clean scan status and leaves clean/no-status assets alone', async () => { + const assetsInstance = new Assets(constructorParam); + await assetsInstance.prerequisiteData(); + await assetsInstance.lookForReference(); + + expect(Object.keys(assetsInstance.missingScanStatusAssets)).to.have.members([ + 'blt-pending-asset', + 'blt-quarantined-asset', + ]); + expect(assetsInstance.missingScanStatusAssets['blt-pending-asset'][0]).to.deep.include({ + asset_uid: 'blt-pending-asset', + scan_status: 'pending', + }); + expect(assetsInstance.missingScanStatusAssets['blt-quarantined-asset'][0]).to.deep.include({ + asset_uid: 'blt-quarantined-asset', + scan_status: 'quarantined', + }); + expect(assetsInstance.missingScanStatusAssets).to.not.have.property('blt-clean-asset'); + expect(assetsInstance.missingScanStatusAssets).to.not.have.property('blt-no-status-asset'); + }); + + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .stub(fs, 'writeFileSync', () => {}) + .it('removes non-clean assets from the written-back chunk when fix mode is on', async () => { + const writeFileSyncStub = Sinon.spy(fs, 'writeFileSync'); + const assetsInstance = new Assets({ + ...constructorParam, + fix: true, + config: { ...constructorParam.config, flags: { yes: true } }, + }); + await assetsInstance.prerequisiteData(); + await assetsInstance.lookForReference(); + + expect(writeFileSyncStub.called).to.be.true; + const writtenContent = JSON.parse(writeFileSyncStub.firstCall.args[1] as string); + expect(writtenContent).to.not.have.property('blt-pending-asset'); + expect(writtenContent).to.not.have.property('blt-quarantined-asset'); + expect(writtenContent).to.have.property('blt-clean-asset'); + expect(writtenContent).to.have.property('blt-no-status-asset'); + }); + }); +}); diff --git a/packages/contentstack-audit/test/unit/modules/entries.test.ts b/packages/contentstack-audit/test/unit/modules/entries.test.ts index 911ba3316..49de8480a 100644 --- a/packages/contentstack-audit/test/unit/modules/entries.test.ts +++ b/packages/contentstack-audit/test/unit/modules/entries.test.ts @@ -1540,4 +1540,239 @@ describe('Entries module', () => { expect(callHelper('sys_assets', ['ct1'])).to.be.true; }); }); + + describe('prepareAssetMetaData method', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('builds an asset metadata index from assets/assets.json when it exists', async () => { + const ctInstance = new Entries(constructorParam); + await ctInstance.prepareAssetMetaData(); + + expect(ctInstance.assetsDataAvailable).to.be.true; + expect(ctInstance.assetMetaData['blt-clean-asset']).to.deep.include({ + uid: 'blt-clean-asset', + _asset_scan_status: 'clean', + }); + expect(ctInstance.assetMetaData['blt-pending-asset']).to.deep.include({ + uid: 'blt-pending-asset', + _asset_scan_status: 'pending', + }); + }); + + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('leaves assetsDataAvailable false when no assets data exists in this export', async () => { + const ctInstance = new Entries({ + ...constructorParam, + config: { ...constructorParam.config, basePath: resolve(__dirname, '..', 'mock', 'contents-1') }, + }); + await ctInstance.prepareAssetMetaData(); + + expect(ctInstance.assetsDataAvailable).to.be.false; + expect(ctInstance.assetMetaData).to.deep.equal({}); + }); + }); + + describe('isAssetBad method', () => { + fancy.stdout({ print: process.env.PRINT === 'true' || false }).it('returns false when assets data is unavailable', () => { + const ctInstance = new Entries(constructorParam); + (ctInstance as any).assetsDataAvailable = false; + (ctInstance as any).assetMetaData = {}; + expect(ctInstance.isAssetBad('blt-unknown')).to.be.false; + }); + + fancy.stdout({ print: process.env.PRINT === 'true' || false }).it('returns false when uid is falsy', () => { + const ctInstance = new Entries(constructorParam); + (ctInstance as any).assetsDataAvailable = true; + expect(ctInstance.isAssetBad(undefined)).to.be.false; + }); + + fancy.stdout({ print: process.env.PRINT === 'true' || false }).it('returns true when the asset uid is not found in the index', () => { + const ctInstance = new Entries(constructorParam); + (ctInstance as any).assetsDataAvailable = true; + (ctInstance as any).assetMetaData = {}; + expect(ctInstance.isAssetBad('blt-unknown')).to.be.true; + }); + + fancy.stdout({ print: process.env.PRINT === 'true' || false }).it('returns true when the asset scan status is non-clean', () => { + const ctInstance = new Entries(constructorParam); + (ctInstance as any).assetsDataAvailable = true; + (ctInstance as any).assetMetaData = { 'blt-1': { uid: 'blt-1', _asset_scan_status: 'quarantined' } }; + expect(ctInstance.isAssetBad('blt-1')).to.be.true; + }); + + fancy.stdout({ print: process.env.PRINT === 'true' || false }).it('returns false when the asset is clean or has no scan status', () => { + const ctInstance = new Entries(constructorParam); + (ctInstance as any).assetsDataAvailable = true; + (ctInstance as any).assetMetaData = { + 'blt-clean': { uid: 'blt-clean', _asset_scan_status: 'clean' }, + 'blt-legacy': { uid: 'blt-legacy' }, + }; + expect(ctInstance.isAssetBad('blt-clean')).to.be.false; + expect(ctInstance.isAssetBad('blt-legacy')).to.be.false; + }); + }); + + describe('validateFileField method', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('flags a single file-field value that references a quarantined asset', () => { + const ctInstance = new Entries(constructorParam); + (ctInstance as any).currentUid = 'test-entry'; + (ctInstance as any).currentTitle = 'Test Entry'; + (ctInstance as any).assetsDataAvailable = true; + (ctInstance as any).assetMetaData = { + 'blt-quarantined': { uid: 'blt-quarantined', _asset_scan_status: 'quarantined' }, + }; + + const fieldStructure = { uid: 'file_field', display_name: 'File Field', data_type: 'file', mandatory: false }; + const value = { uid: 'blt-quarantined', filename: 'bad.zip' }; + const tree = [{ uid: 'test-entry', name: 'Test Entry' }]; + + const result = ctInstance.validateFileField(tree, fieldStructure, value); + + expect(result).to.have.length(1); + expect(result[0].missingRefs).to.deep.equal([{ asset_uid: 'blt-quarantined', filename: 'bad.zip' }]); + }); + + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('does not flag a single file-field value that references a clean asset', () => { + const ctInstance = new Entries(constructorParam); + (ctInstance as any).currentUid = 'test-entry'; + (ctInstance as any).assetsDataAvailable = true; + (ctInstance as any).assetMetaData = { 'blt-clean': { uid: 'blt-clean', _asset_scan_status: 'clean' } }; + + const fieldStructure = { uid: 'file_field', display_name: 'File Field', data_type: 'file', mandatory: false }; + const value = { uid: 'blt-clean', filename: 'ok.jpg' }; + const tree = [{ uid: 'test-entry', name: 'Test Entry' }]; + + const result = ctInstance.validateFileField(tree, fieldStructure, value); + + expect(result).to.have.length(0); + }); + + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('flags only the bad entries within a multiple:true file-field array', () => { + const ctInstance = new Entries(constructorParam); + (ctInstance as any).currentUid = 'test-entry'; + (ctInstance as any).assetsDataAvailable = true; + (ctInstance as any).assetMetaData = { 'blt-clean': { uid: 'blt-clean', _asset_scan_status: 'clean' } }; + + const fieldStructure = { uid: 'file_field', display_name: 'File Field', data_type: 'file', mandatory: false }; + const value = [ + { uid: 'blt-clean', filename: 'ok.jpg' }, + { uid: 'blt-pending', filename: 'bad.zip' }, + ]; + const tree = [{ uid: 'test-entry', name: 'Test Entry' }]; + + const result = ctInstance.validateFileField(tree, fieldStructure, value); + + expect(result).to.have.length(1); + expect(result[0].missingRefs).to.deep.equal([{ asset_uid: 'blt-pending', filename: 'bad.zip' }]); + }); + + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('does not flag anything when asset metadata is unavailable', () => { + const ctInstance = new Entries(constructorParam); + (ctInstance as any).currentUid = 'test-entry'; + (ctInstance as any).assetsDataAvailable = false; + + const fieldStructure = { uid: 'file_field', display_name: 'File Field', data_type: 'file', mandatory: false }; + const value = { uid: 'blt-unknown', filename: 'unknown.jpg' }; + const tree = [{ uid: 'test-entry', name: 'Test Entry' }]; + + const result = ctInstance.validateFileField(tree, fieldStructure, value); + + expect(result).to.have.length(0); + }); + }); + + describe('fixFileFieldReferences method', () => { + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('deletes the field key when a single file-field value references a bad asset', () => { + const ctInstance = new Entries({ ...constructorParam, fix: true }); + (ctInstance as any).currentUid = 'test-entry'; + (ctInstance as any).currentTitle = 'Test Entry'; + (ctInstance as any).missingAssetRefs = { 'test-entry': [] }; + (ctInstance as any).assetsDataAvailable = true; + (ctInstance as any).assetMetaData = { + 'blt-quarantined': { uid: 'blt-quarantined', _asset_scan_status: 'quarantined' }, + }; + + const field = { uid: 'file_field', display_name: 'File Field', data_type: 'file', mandatory: false }; + const entry: Record = { file_field: { uid: 'blt-quarantined', filename: 'bad.zip' } }; + const tree = [{ uid: 'test-entry', name: 'Test Entry' }]; + + const result = ctInstance.fixFileFieldReferences(tree, field, entry); + + expect(result).to.not.have.property('file_field'); + expect((ctInstance as any).missingAssetRefs['test-entry']).to.have.length(1); + expect((ctInstance as any).missingAssetRefs['test-entry'][0].fixStatus).to.equal('Fixed'); + }); + + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('leaves a single file-field value referencing a clean asset untouched', () => { + const ctInstance = new Entries({ ...constructorParam, fix: true }); + (ctInstance as any).currentUid = 'test-entry'; + (ctInstance as any).missingAssetRefs = { 'test-entry': [] }; + (ctInstance as any).assetsDataAvailable = true; + (ctInstance as any).assetMetaData = { 'blt-clean': { uid: 'blt-clean', _asset_scan_status: 'clean' } }; + + const field = { uid: 'file_field', display_name: 'File Field', data_type: 'file', mandatory: false }; + const entry: Record = { file_field: { uid: 'blt-clean', filename: 'ok.jpg' } }; + const tree = [{ uid: 'test-entry', name: 'Test Entry' }]; + + ctInstance.fixFileFieldReferences(tree, field, entry); + + expect(entry).to.have.property('file_field'); + expect((ctInstance as any).missingAssetRefs['test-entry']).to.have.length(0); + }); + + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('filters bad entries out of a multiple:true array and deletes the key if it empties out', () => { + const ctInstance = new Entries({ ...constructorParam, fix: true }); + (ctInstance as any).currentUid = 'test-entry'; + (ctInstance as any).missingAssetRefs = { 'test-entry': [] }; + (ctInstance as any).assetsDataAvailable = true; + (ctInstance as any).assetMetaData = {}; + + const field = { uid: 'file_field', display_name: 'File Field', data_type: 'file', mandatory: false }; + const entry: Record = { + file_field: [ + { uid: 'blt-1', filename: 'one.zip' }, + { uid: 'blt-2', filename: 'two.zip' }, + ], + }; + const tree = [{ uid: 'test-entry', name: 'Test Entry' }]; + + const result = ctInstance.fixFileFieldReferences(tree, field, entry); + + expect(result).to.not.have.property('file_field'); + expect((ctInstance as any).missingAssetRefs['test-entry'][0].missingRefs).to.have.length(2); + }); + + fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .it('records mandatory:true on the fix issue so a stripped required field stays visible in the report', () => { + const ctInstance = new Entries({ ...constructorParam, fix: true }); + (ctInstance as any).currentUid = 'test-entry'; + (ctInstance as any).missingAssetRefs = { 'test-entry': [] }; + (ctInstance as any).assetsDataAvailable = true; + (ctInstance as any).assetMetaData = {}; + + const field = { uid: 'file_field', display_name: 'File Field', data_type: 'file', mandatory: true }; + const entry: Record = { file_field: { uid: 'blt-missing', filename: 'gone.zip' } }; + const tree = [{ uid: 'test-entry', name: 'Test Entry' }]; + + ctInstance.fixFileFieldReferences(tree, field, entry); + + expect((ctInstance as any).missingAssetRefs['test-entry'][0].mandatory).to.be.true; + }); + }); }); From 18bc7dc4c1c6bca8a1fa3d215124d47fa0dc040e Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Thu, 30 Jul 2026 14:40:44 +0530 Subject: [PATCH 17/24] fix(content-type): replace git-diff with jsdiff to clear Snyk issue git-diff@2.0.7 is unmaintained (last published 2018) and pulls in chalk@2, diff@3, loglevel, shelljs and shelljs.exec. Snyk flagged the only vulnerable path in the monorepo through that tree: Missing Release of Resource after Effective Lifetime [Medium] SNYK-JS-INFLIGHT-6095116 git-diff@2.0.7 > shelljs@0.8.5 > glob@7.2.3 > inflight@1.0.6 Snyk reports no direct upgrade or patch, since git-diff is abandoned. Replace it with diff@^9 (jsdiff): zero runtime dependencies, bundled TypeScript types, dual CJS/ESM. It also removes the dependency on a `git` binary and the temp-file/subprocess round trip git-diff used to shell out through shelljs. buildDiffString now calls createTwoFilesPatch, which emits the `---` and `+++` file headers itself, so the hand-rolled header concatenation is gone. Output was verified equivalent: both patch strings were run through Diff2html.parse and compared on file names, added/deleted line counts, hunk headers and every line type plus content - identical. Identical inputs are also handled better. git-diff returned undefined when both sides matched, which interpolated the literal string "undefined" into the patch; createTwoFilesPatch returns a well-formed patch with no hunks. Drop @types/git-diff, since diff ships its own types. Tests: the existing spec mocked diff2html, so the generated patch was never asserted. Add two cases covering the string handed to Diff2html.parse - one for headers, hunk and changed lines, one for the identical-input case. Both were mutation-checked against a corrupted buildDiffString. Suite: 78 passed, 16 suites, tsc clean, Snyk reports no vulnerable paths across the monorepo. Bump the pinned pnpm-lock.yaml checksum in .talismanrc, which the lockfile change invalidates. The finding is the usual sha512 integrity hashes, not a secret. Note: this commit also carries a pre-existing, uncommitted version bump to 1.5.4 that was already present in package.json. Co-Authored-By: Claude Opus 5 (1M context) --- .talismanrc | 2 +- .../contentstack-content-type/package.json | 5 +- .../skills/code-review/SKILL.md | 6 +- .../contentstack-cli-content-type/SKILL.md | 2 +- .../src/core/content-type/compare.ts | 13 +- .../tests/core/content-type/compare.test.ts | 24 +- pnpm-lock.yaml | 379 ++++-------------- 7 files changed, 117 insertions(+), 314 deletions(-) diff --git a/.talismanrc b/.talismanrc index 58ae8ba6b..3b8b7cf56 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,4 +1,4 @@ fileignoreconfig: - filename: pnpm-lock.yaml - checksum: 31e333d6769adbaae042c92ea0930fab168a0e06fc1bda406d49fd1042a7a9c7 + checksum: 4dc4b2a0693ba40fd503cf52d6d69b577ec87018e4f9ab52415608c65c14f6aa version: '1.0' diff --git a/packages/contentstack-content-type/package.json b/packages/contentstack-content-type/package.json index 14c81f2ff..1f39206cc 100644 --- a/packages/contentstack-content-type/package.json +++ b/packages/contentstack-content-type/package.json @@ -1,21 +1,20 @@ { "name": "contentstack-cli-content-type", "description": "Retrieve information about Content Types in a Stack.", - "version": "1.5.3", + "version": "1.5.4", "author": "Contentstack Developer", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { "@contentstack/cli-command": "^1.8.5", "@contentstack/cli-utilities": "^1.19.0", "@types/diff2html": "^3.0.3", - "@types/git-diff": "^2.0.7", "@types/hogan.js": "^3.0.5", "@types/table": "^6.3.2", "@types/tmp": "^0.2.6", "axios": "^1.18.1", "cli-ux": "^6.0.9", + "diff": "^9.0.0", "diff2html": "^3.4.56", - "git-diff": "^2.0.7", "moment": "^2.30.1", "node-graphviz": "^0.1.1", "table": "^6.9.0", diff --git a/packages/contentstack-content-type/skills/code-review/SKILL.md b/packages/contentstack-content-type/skills/code-review/SKILL.md index 9d0809c5f..e5bc5316f 100644 --- a/packages/contentstack-content-type/skills/code-review/SKILL.md +++ b/packages/contentstack-content-type/skills/code-review/SKILL.md @@ -11,7 +11,7 @@ description: >- ## When to use - Reviewing a PR or diff before merge. -- Auditing dependency upgrades (axios, diff2html, git-diff, node-graphviz, tmp, cli-ux). +- Auditing dependency upgrades (axios, diff2html, diff, node-graphviz, tmp, cli-ux). - Changes touching compare HTML, temp files, diagram output, or `src/core/contentstack/`. ## Instructions @@ -24,7 +24,7 @@ Use **Critical** / **Important** / **Suggestion** when leaving feedback. - **Secrets**: Never approve logging of tokens, `authtoken` / `authorization` values, or raw management tokens. - **Compare / diagram**: Changes to [src/core/content-type/compare.ts](../../src/core/content-type/compare.ts) or [diagram.ts](../../src/core/content-type/diagram.ts) deserve extra scrutiny (temp files, browser open, paths, binary dependency). -- **Dependencies**: axios, diff2html, git-diff, node-graphviz, tmp, cli-ux—review changelog and supply-chain for version bumps. +- **Dependencies**: axios, diff2html, diff, node-graphviz, tmp, cli-ux—review changelog and supply-chain for version bumps. - **Quality**: TypeScript and **eslint-config-oclif-typescript** ([.eslintrc](../../.eslintrc)); behavioral changes should include or update **Jest** tests where appropriate. ### Security and privacy @@ -57,7 +57,7 @@ Use **Critical** / **Important** / **Suggestion** when leaving feedback. | Severity | Item | |----------|------| | Important | **axios**: security advisories; upgrade notes. | -| Important | **diff2html**, **git-diff**, **tmp**, **cli-ux**: behavior changes affecting compare UX. | +| Important | **diff2html**, **diff**, **tmp**, **cli-ux**: behavior changes affecting compare UX. | | Important | **node-graphviz**: compatibility with supported Node and system Graphviz. | | Suggestion | **moment** (if touched): prefer minimal churn; note maintenance status of dependencies. | diff --git a/packages/contentstack-content-type/skills/contentstack-cli-content-type/SKILL.md b/packages/contentstack-content-type/skills/contentstack-cli-content-type/SKILL.md index 4434d876d..aaf02cf86 100644 --- a/packages/contentstack-content-type/skills/contentstack-cli-content-type/SKILL.md +++ b/packages/contentstack-content-type/skills/contentstack-cli-content-type/SKILL.md @@ -100,7 +100,7 @@ Errors: response `data.errors` → `ContentstackError`; optional suffix with sta ### Compare and diagram pipelines -- **Compare**: `core/content-type/compare.ts` builds a unified diff from two JSON snapshots (`git-diff`), parses with **diff2html**, writes a **temporary HTML** file, opens it in the browser (`cli-ux` / `cli.open`). Not a terminal table. +- **Compare**: `core/content-type/compare.ts` builds a unified diff from two JSON snapshots (`diff`), parses with **diff2html**, writes a **temporary HTML** file, opens it in the browser (`cli-ux` / `cli.open`). Not a terminal table. - **Diagram**: `core/content-type/diagram.ts` builds a DOT graph, runs **node-graphviz** (`graphviz` binary must be available on the system for SVG rendering). Output path is sanitized where utilities apply. ### Commands (flags and behavior) diff --git a/packages/contentstack-content-type/src/core/content-type/compare.ts b/packages/contentstack-content-type/src/core/content-type/compare.ts index 696335191..a98028b2b 100644 --- a/packages/contentstack-content-type/src/core/content-type/compare.ts +++ b/packages/contentstack-content-type/src/core/content-type/compare.ts @@ -2,7 +2,7 @@ import cli from 'cli-ux' import * as fs from 'fs' import * as tmp from 'tmp' import * as Diff2html from 'diff2html' -import gitDiff from 'git-diff' +import {createTwoFilesPatch} from 'diff' import {BuildOutput} from '../../types' export default async function buildOutput(contentTypeName: string, previous: any, current: any): Promise { @@ -30,10 +30,13 @@ export default async function buildOutput(contentTypeName: string, previous: any } function buildDiffString(previous: any, current: any) { - return ( - `--- ${previous.uid}\t${current.updated_at}\n` + - `+++ ${current.uid}\t${current.updated_at}\n` + - gitDiff(JSON.stringify(previous, null, 2), JSON.stringify(current, null, 2)) + return createTwoFilesPatch( + previous.uid, + current.uid, + JSON.stringify(previous, null, 2), + JSON.stringify(current, null, 2), + current.updated_at, + current.updated_at, ) } diff --git a/packages/contentstack-content-type/tests/core/content-type/compare.test.ts b/packages/contentstack-content-type/tests/core/content-type/compare.test.ts index d092d9e72..746f4576e 100644 --- a/packages/contentstack-content-type/tests/core/content-type/compare.test.ts +++ b/packages/contentstack-content-type/tests/core/content-type/compare.test.ts @@ -25,11 +25,8 @@ jest.mock('diff2html', () => ({ html: jest.fn(() => '
diff-html
'), })) -jest.mock('git-diff', () => - jest.fn(() => '@@ -1 +1 @@\n+changed') -) - import fs from 'fs' +import * as Diff2html from 'diff2html' import buildOutput from '../../../src/core/content-type/compare' @@ -53,4 +50,23 @@ describe('compare buildOutput', () => { expect(written).toContain('diff-html') expect(written).toContain('diff2html') }) + + it('feeds diff2html a unified patch with file headers and the changed lines', async () => { + await buildOutput('my-ct', prev, curr) + + const patch = (Diff2html.parse as jest.Mock).mock.calls[0][0] as string + expect(patch).toContain(`--- ${prev.uid}\t${curr.updated_at}`) + expect(patch).toContain(`+++ ${curr.uid}\t${curr.updated_at}`) + expect(patch).toMatch(/^@@ .* @@$/m) + expect(patch).toContain('- "updated_at": "2020-01-01"') + expect(patch).toContain('+ "updated_at": "2021-01-01"') + }) + + it('produces a patch with no hunks when both versions are identical', async () => { + await buildOutput('my-ct', prev, prev) + + const patch = (Diff2html.parse as jest.Mock).mock.calls[0][0] as string + expect(patch).not.toContain('@@') + expect(patch).not.toContain('undefined') + }) }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c641a7a66..128246fdf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -335,7 +335,7 @@ importers: version: 5.5.0 '@contentstack/management': specifier: ^1.30.3 - version: 1.31.0 + version: 1.30.4(debug@4.4.3) lodash: specifier: 4.18.1 version: 4.18.1 @@ -487,7 +487,7 @@ importers: version: 1.19.0(@types/node@18.19.130) '@contentstack/management': specifier: ^1.30.4 - version: 1.31.0 + version: 1.30.4(debug@4.4.3) cli-table3: specifier: ^0.6.5 version: 0.6.5 @@ -624,13 +624,13 @@ importers: version: 3.1.14(eslint@10.8.0)(typescript@5.9.3) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) + version: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) oclif: specifier: ^4.23.8 version: 4.23.29(@types/node@22.20.1) ts-jest: specifier: ^29.4.9 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -734,9 +734,6 @@ importers: '@types/diff2html': specifier: ^3.0.3 version: 3.0.3 - '@types/git-diff': - specifier: ^2.0.7 - version: 2.0.7 '@types/hogan.js': specifier: ^3.0.5 version: 3.0.5 @@ -752,12 +749,12 @@ importers: cli-ux: specifier: ^6.0.9 version: 6.0.9 + diff: + specifier: ^9.0.0 + version: 9.0.0 diff2html: specifier: ^3.4.56 version: 3.4.56 - git-diff: - specifier: ^2.0.7 - version: 2.0.7 moment: specifier: ^2.30.1 version: 2.30.1 @@ -1246,10 +1243,10 @@ importers: dependencies: '@contentstack/cli-command': specifier: 1.8.5 - version: 1.8.5(@types/node@18.19.130) + version: 1.8.5(@types/node@22.20.1) '@contentstack/cli-utilities': specifier: 1.19.0 - version: 1.19.0(@types/node@18.19.130) + version: 1.19.0(@types/node@22.20.1) '@contentstack/json-rte-serializer': specifier: ~2.1.0 version: 2.1.0 @@ -1304,7 +1301,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.29 + version: 4.23.29(@types/node@22.20.1) querystring: specifier: ^0.2.1 version: 0.2.1 @@ -2352,10 +2349,6 @@ packages: resolution: {integrity: sha512-wFmHxf2WfPVXD8uvFpaxdY882ELqYhdPu1aQM9VM/UYUtJg+7uCj9k785ujYfgbSKgxfY6APgwI++n59v3Entg==} engines: {node: '>=8.0.0'} - '@contentstack/management@1.31.0': - resolution: {integrity: sha512-Ejk7ozH0lDxa0Ozniii2hsNLr8u0XfBRNHYmLw7DFQZDuRopaIxCb+Udn2O+uP/4ffKSYVv/RVu6/GhACdtWFg==} - engines: {node: '>=8.0.0'} - '@contentstack/marketplace-sdk@1.5.4': resolution: {integrity: sha512-rqsL/FvYTqF1a1MK/AZLdWCGf7WY48f4pT/iLkwt6wxh7apxaAwWSWy9ZWRtDu7EIV9FDDTHZ33iYWKH41fnlw==} @@ -3473,9 +3466,6 @@ packages: '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - '@types/git-diff@2.0.7': - resolution: {integrity: sha512-hipFAUcmf3c+45+Y8+J/xk7gT+0HBuT3O8OTtrnoP6R9gI0r2xESZNdYiA0pj7kQyPCwmkgbnxmfwQ9Ld2lZLQ==} - '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -5013,10 +5003,6 @@ packages: resolution: {integrity: sha512-u9gfn+BlbHcyO7vItCIC4z49LJDUt31tODzOfAuJ5R1E7IdlRL6KjugcB9zOpejD+XiR+dDZbsnHSQ3g6A/u8A==} engines: {node: '>=12'} - diff@3.5.1: - resolution: {integrity: sha512-Z3u54A8qGyqFOSr2pk0ijYs8mOE9Qz8kTvtKeBI+upoG9j04Sq+oI7W8zAJiQybDcESET8/uIdHzs0p3k4fZlw==} - engines: {node: '>=0.3.1'} - diff@4.0.4: resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} engines: {node: '>=0.3.1'} @@ -5808,10 +5794,6 @@ packages: get-tsconfig@4.14.0: resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - git-diff@2.0.7: - resolution: {integrity: sha512-/+vyWaKNUJLcVT+tm5Hsly2xDcIs49EkZstxqW7ap1ZiZ0BECviLK1iv9/f4cGhlKBokeAf61QkTDnL88H+Uhg==} - engines: {node: '>= 4.8.0'} - git-raw-commits@5.0.1: resolution: {integrity: sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==} engines: {node: '>=18'} @@ -7007,10 +6989,6 @@ packages: resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} engines: {node: '>= 12.0.0'} - loglevel@1.9.2: - resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} - engines: {node: '>= 0.6.0'} - loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -7631,8 +7609,8 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.24: - resolution: {integrity: sha512-8RyVklq0owXUTa4xlpzu4l9AaVKIdQvAcOHZWaMh98HgySsUtxRVf/chRe3dsSLqb6i40BzGRzEUddRaI+9TSw==} + postcss@8.5.25: + resolution: {integrity: sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -8124,19 +8102,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shelljs.exec@1.1.8: - resolution: {integrity: sha512-vFILCw+lzUtiwBAHV8/Ex8JsFjelFMdhONIsgKNLgTzeRckp2AOYRQtHJE/9LhNvdMmE27AGtzWx0+DHpwIwSw==} - engines: {node: '>= 4.0.0'} - shelljs@0.10.0: resolution: {integrity: sha512-Jex+xw5Mg2qMZL3qnzXIfaxEtBaC4n7xifqaqtrZDdlheR70OGkydrPJWT0V1cA1k3nanC86x9FwAmQl6w3Klw==} engines: {node: '>=18'} - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - shelljs@0.9.2: resolution: {integrity: sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==} engines: {node: '>=18'} @@ -10518,22 +10487,6 @@ snapshots: - debug - supports-color - '@contentstack/management@1.31.0': - dependencies: - '@contentstack/utils': 1.9.1 - assert: 2.1.0 - axios: 1.18.1(debug@4.4.3) - buffer: 6.0.3 - form-data: 4.0.6 - husky: 9.1.7 - lodash: 4.18.1 - otplib: 12.0.1 - qs: 6.15.3 - stream-browserify: 3.0.0 - transitivePeerDependencies: - - debug - - supports-color - '@contentstack/marketplace-sdk@1.5.4(debug@4.4.3)': dependencies: '@contentstack/utils': 1.9.1 @@ -11113,19 +11066,6 @@ snapshots: optionalDependencies: '@types/node': 22.20.1 - '@inquirer/prompts@7.10.1': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@18.19.130) - '@inquirer/confirm': 5.1.21(@types/node@18.19.130) - '@inquirer/editor': 4.2.23(@types/node@18.19.130) - '@inquirer/expand': 4.0.23(@types/node@18.19.130) - '@inquirer/input': 4.3.1(@types/node@18.19.130) - '@inquirer/number': 3.0.23(@types/node@18.19.130) - '@inquirer/password': 4.0.23(@types/node@18.19.130) - '@inquirer/rawlist': 4.1.11(@types/node@18.19.130) - '@inquirer/search': 3.2.2(@types/node@18.19.130) - '@inquirer/select': 4.4.2(@types/node@18.19.130) - '@inquirer/prompts@7.10.1(@types/node@14.18.63)': dependencies: '@inquirer/checkbox': 4.3.2(@types/node@14.18.63) @@ -11402,41 +11342,6 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.19.43 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - '@jest/core@29.7.0(ts-node@8.10.2(typescript@4.9.5))': dependencies: '@jest/console': 29.7.0 @@ -11916,15 +11821,6 @@ snapshots: dependencies: '@oclif/core': 4.13.2 - '@oclif/plugin-not-found@3.2.90': - dependencies: - '@inquirer/prompts': 7.10.1 - '@oclif/core': 4.13.2 - ansis: 3.17.0 - fast-levenshtein: 3.0.0 - transitivePeerDependencies: - - '@types/node' - '@oclif/plugin-not-found@3.2.90(@types/node@14.18.63)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@14.18.63) @@ -12446,8 +12342,6 @@ snapshots: '@types/jsonfile': 6.1.4 '@types/node': 20.19.43 - '@types/git-diff@2.0.7': {} - '@types/graceful-fs@4.1.9': dependencies: '@types/node': 20.19.43 @@ -14388,21 +14282,6 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - create-require@1.1.1: {} cross-fetch@4.1.0: @@ -14564,8 +14443,6 @@ snapshots: optionalDependencies: highlight.js: 11.11.1 - diff@3.5.1: {} - diff@4.0.4: {} diff@5.2.2: {} @@ -14807,7 +14684,7 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) eslint-config-xo-space: 0.35.0(eslint@10.8.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 15.7.0(eslint@10.8.0) eslint-plugin-perfectionist: 2.11.0(eslint@10.8.0)(typescript@5.9.3) @@ -14863,8 +14740,8 @@ snapshots: '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@4.9.5) eslint-config-xo: 0.49.0(eslint@10.8.0) eslint-config-xo-space: 0.35.0(eslint@10.8.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 17.24.0(eslint@10.8.0)(typescript@4.9.5) @@ -14969,6 +14846,21 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.8.0 + get-tsconfig: 4.14.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.17 + unrs-resolver: 1.12.2 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) + transitivePeerDependencies: + - supports-color + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0): dependencies: '@nolyfill/is-core-module': 1.0.39 @@ -14995,6 +14887,17 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-module-utils@2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) + eslint: 10.8.0 + eslint-import-resolver-node: 0.3.10 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) + transitivePeerDependencies: + - supports-color + eslint-module-utils@2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: debug: 3.2.7 @@ -15006,14 +14909,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@4.9.5) eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0) transitivePeerDependencies: - supports-color @@ -15087,6 +14990,35 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 10.8.0 + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + hasown: 2.0.4 + is-core-module: 2.16.2 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.10 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 @@ -15116,7 +15048,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15127,7 +15059,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15911,14 +15843,6 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - git-diff@2.0.7: - dependencies: - chalk: 2.4.2 - diff: 3.5.1 - loglevel: 1.9.2 - shelljs: 0.8.5 - shelljs.exec: 1.1.8 - git-raw-commits@5.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0): dependencies: '@conventional-changelog/git-client': 2.7.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0) @@ -16746,25 +16670,6 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.3 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jest-cli@30.4.2(@types/node@18.19.130)(ts-node@10.9.2(@types/node@18.19.130)(typescript@5.9.3)): dependencies: '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@18.19.130)(typescript@5.9.3)) @@ -16846,37 +16751,6 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): - dependencies: - '@babel/core': 7.29.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.29.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.19.43 - ts-node: 10.9.2(@types/node@22.20.1)(typescript@5.9.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - jest-config@29.7.0(@types/node@20.19.43)(ts-node@8.10.2(typescript@4.9.5)): dependencies: '@babel/core': 7.29.7 @@ -16939,37 +16813,6 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): - dependencies: - '@babel/core': 7.29.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.29.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.20.1 - ts-node: 10.9.2(@types/node@22.20.1)(typescript@5.9.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - jest-config@30.4.2(@types/node@18.19.130)(ts-node@10.9.2(@types/node@18.19.130)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.7 @@ -17486,7 +17329,7 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)): + jest@29.7.0(@types/node@22.20.1): dependencies: '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) '@jest/types': 29.6.3 @@ -17498,12 +17341,12 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): + jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) + jest-cli: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -17868,8 +17711,6 @@ snapshots: safe-stable-stringify: 2.5.0 triple-beam: 1.4.1 - loglevel@1.9.2: {} - loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -18293,35 +18134,6 @@ snapshots: obug@2.1.4: {} - oclif@4.23.29: - dependencies: - '@aws-sdk/client-cloudfront': 3.1097.0 - '@aws-sdk/client-s3': 3.1097.0 - '@inquirer/confirm': 3.2.0 - '@inquirer/input': 2.3.0 - '@inquirer/select': 2.5.0 - '@oclif/core': 4.13.2 - '@oclif/plugin-help': 6.2.55 - '@oclif/plugin-not-found': 3.2.90 - '@oclif/plugin-warn-if-update-available': 3.1.70 - ansis: 3.17.0 - async-retry: 1.3.3 - change-case: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@8.1.1) - ejs: 3.1.10 - find-yarn-workspace-root: 2.0.0 - fs-extra: 8.1.0 - github-slugger: 2.0.0 - got: 13.0.0 - normalize-package-data: 6.0.2 - semver: 7.8.5 - tiny-jsonc: 1.0.2 - validate-npm-package-name: 5.0.1 - transitivePeerDependencies: - - '@types/node' - - supports-color - oclif@4.23.29(@types/node@14.18.63): dependencies: '@aws-sdk/client-cloudfront': 3.1097.0 @@ -18664,7 +18476,7 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.24: + postcss@8.5.25: dependencies: nanoid: 3.3.16 picocolors: 1.1.1 @@ -19214,19 +19026,11 @@ snapshots: shebang-regex@3.0.0: {} - shelljs.exec@1.1.8: {} - shelljs@0.10.0: dependencies: execa: 5.1.1 fast-glob: 3.3.3 - shelljs@0.8.5: - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - shelljs@0.9.2: dependencies: execa: 1.0.0 @@ -19778,12 +19582,12 @@ snapshots: babel-jest: 30.4.1(@babel/core@7.29.7) jest-util: 30.4.1 - ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)))(typescript@5.9.3): + ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.9 - jest: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) + jest: 29.7.0(@types/node@22.20.1) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -19926,25 +19730,6 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.20.1 - acorn: 8.18.0 - acorn-walk: 8.3.5 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.4 - make-error: 1.3.6 - typescript: 5.9.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optional: true - ts-node@8.10.2(typescript@4.9.5): dependencies: arg: 4.1.3 @@ -20232,7 +20017,7 @@ snapshots: dependencies: lightningcss: 1.33.0 picomatch: 4.0.5 - postcss: 8.5.24 + postcss: 8.5.25 rolldown: 1.1.5 tinyglobby: 0.2.17 optionalDependencies: From c3114a6dae1542f837a4aa70b2585b94058710f4 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Sun, 2 Aug 2026 17:39:38 +0530 Subject: [PATCH 18/24] sca-scan.yml --- .github/workflows/sca-scan.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/sca-scan.yml b/.github/workflows/sca-scan.yml index 2307d4890..79b655754 100644 --- a/.github/workflows/sca-scan.yml +++ b/.github/workflows/sca-scan.yml @@ -5,6 +5,9 @@ on: jobs: security-sca: runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write steps: - uses: actions/checkout@master - name: Run Snyk to check for vulnerabilities From 39dae064f5428add5b6af4a3b2b611f34c17f60a Mon Sep 17 00:00:00 2001 From: raj pandey Date: Tue, 4 Aug 2026 17:58:31 +0530 Subject: [PATCH 19/24] chore: bump dependency overrides and update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps pinned overrides in pnpm-workspace.yaml: - brace-expansion 5.0.8 → 5.0.9 - js-yaml 5.2.2 → 5.2.3 - fast-uri 4.1.1 → 4.1.2 - ws 8.21.1 → 8.21.2 Co-Authored-By: Claude Sonnet 4.6 --- pnpm-lock.yaml | 1709 +++++++++++++++++++++---------------------- pnpm-workspace.yaml | 8 +- 2 files changed, 841 insertions(+), 876 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c641a7a66..42901edad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,10 +8,10 @@ overrides: tmp: 0.2.7 uuid: 14.0.1 lodash: 4.18.1 - brace-expansion: 5.0.8 - js-yaml: 5.2.2 - fast-uri: 4.1.1 - ws: 8.21.1 + brace-expansion: 5.0.9 + js-yaml: 5.2.3 + fast-uri: 4.1.2 + ws: 8.21.2 importers: @@ -59,7 +59,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/adm-zip': specifier: ^0.5.8 version: 0.5.8 @@ -68,7 +68,7 @@ importers: version: 4.3.20 '@types/lodash': specifier: ^4.17.24 - version: 4.17.24 + version: 4.17.25 '@types/mocha': specifier: ^10.0.10 version: 10.0.10 @@ -83,13 +83,13 @@ importers: version: 0.2.6 '@typescript-eslint/eslint-plugin': specifier: ^8.58.2 - version: 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) + version: 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.58.2 - version: 8.65.0(eslint@10.8.0)(typescript@5.9.3) + version: 8.66.0(eslint@10.8.0)(typescript@5.9.3) axios: specifier: ^1.16.1 - version: 1.18.1(debug@4.4.3) + version: 1.19.0(debug@4.4.3) chai: specifier: ^4.5.0 version: 4.5.0 @@ -137,7 +137,7 @@ importers: version: 1.19.0(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -156,7 +156,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/chai': specifier: ^4.3.20 version: 4.3.20 @@ -219,7 +219,7 @@ importers: version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 inquirer: specifier: 8.2.7 version: 8.2.7(@types/node@14.18.63) @@ -232,7 +232,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/inquirer': specifier: ^9.0.8 version: 9.0.10 @@ -277,7 +277,7 @@ importers: version: 1.19.0(@types/node@22.20.1) '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -332,10 +332,10 @@ importers: version: 1.19.0(@types/node@20.19.43) '@contentstack/delivery-sdk': specifier: ^5.4.0 - version: 5.5.0 + version: 5.5.1 '@contentstack/management': specifier: ^1.30.3 - version: 1.31.0 + version: 1.31.1 lodash: specifier: 4.18.1 version: 4.18.1 @@ -351,7 +351,7 @@ importers: version: 5.2.3 '@types/lodash': specifier: ^4.17.24 - version: 4.17.24 + version: 4.17.25 '@types/mocha': specifier: ^10.0.10 version: 10.0.10 @@ -363,10 +363,10 @@ importers: version: 21.0.1 '@typescript-eslint/eslint-plugin': specifier: ^8.59.2 - version: 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@6.0.3))(eslint@10.8.0)(typescript@6.0.3) + version: 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@6.0.3))(eslint@10.8.0)(typescript@6.0.3) '@typescript-eslint/parser': specifier: ^8.59.2 - version: 8.65.0(eslint@10.8.0)(typescript@6.0.3) + version: 8.66.0(eslint@10.8.0)(typescript@6.0.3) chai: specifier: ^6.2.2 version: 6.2.2 @@ -396,10 +396,10 @@ importers: version: 9.1.7 lint-staged: specifier: ^17.0.2 - version: 17.2.0 + version: 17.3.0 mocha: specifier: ^11.7.5 - version: 11.7.6 + version: 11.8.0 nyc: specifier: ^18.0.0 version: 18.0.0 @@ -438,7 +438,7 @@ importers: version: 1.19.0(@types/node@22.20.1) '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -457,7 +457,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) chai: specifier: ^4.5.0 version: 4.5.0 @@ -487,7 +487,7 @@ importers: version: 1.19.0(@types/node@18.19.130) '@contentstack/management': specifier: ^1.30.4 - version: 1.31.0 + version: 1.31.1 cli-table3: specifier: ^0.6.5 version: 0.6.5 @@ -512,7 +512,7 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@oclif/plugin-help': specifier: ^6.2.52 - version: 6.2.55 + version: 6.2.56 '@oclif/test': specifier: ^3.2.15 version: 3.2.15 @@ -536,7 +536,7 @@ importers: version: 1.1.6 '@typescript-eslint/eslint-plugin': specifier: ^8.59.2 - version: 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) + version: 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) chai: specifier: ^4.5.0 version: 4.5.0 @@ -594,10 +594,10 @@ importers: devDependencies: '@oclif/plugin-help': specifier: ^6.2.49 - version: 6.2.55 + version: 6.2.56 '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/jest': specifier: ^29.5.14 version: 29.5.14 @@ -606,10 +606,10 @@ importers: version: 22.20.1 '@typescript-eslint/eslint-plugin': specifier: ^8.59.3 - version: 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) + version: 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.59.3 - version: 8.65.0(eslint@10.8.0)(typescript@5.9.3) + version: 8.66.0(eslint@10.8.0)(typescript@5.9.3) dotenv: specifier: ^16.6.1 version: 16.6.1 @@ -654,7 +654,7 @@ importers: version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -679,7 +679,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/chai': specifier: ^4.3.0 version: 4.3.20 @@ -694,7 +694,7 @@ importers: version: 10.0.20 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5) chai: specifier: ^4.5.0 version: 4.5.0 @@ -748,7 +748,7 @@ importers: version: 0.2.6 axios: specifier: ^1.18.1 - version: 1.18.1(debug@4.4.3) + version: 1.19.0(debug@4.4.3) cli-ux: specifier: ^6.0.9 version: 6.0.9 @@ -779,7 +779,7 @@ importers: devDependencies: '@oclif/plugin-help': specifier: ^6.2.49 - version: 6.2.55 + version: 6.2.56 '@types/jest': specifier: ^29.5.14 version: 29.5.14 @@ -827,7 +827,7 @@ importers: version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 async: specifier: ^3.2.6 version: 3.2.6 @@ -870,10 +870,10 @@ importers: version: 1.3.1 '@oclif/plugin-help': specifier: ^6.2.28 - version: 6.2.55 + version: 6.2.56 '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/big-json': specifier: ^3.2.5 version: 3.2.5 @@ -936,7 +936,7 @@ importers: version: 1.19.0(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 fast-csv: specifier: ^4.3.6 version: 4.3.6 @@ -949,7 +949,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/chai': specifier: ^4.3.20 version: 4.3.20 @@ -1009,10 +1009,10 @@ importers: version: 1.5.4(debug@4.4.3) '@oclif/core': specifier: ^4.8.0 - version: 4.13.2 + version: 4.13.3 axios: specifier: ^1.18.1 - version: 1.18.1(debug@4.4.3) + version: 1.19.0(debug@4.4.3) chalk: specifier: ^4.1.2 version: 4.1.2 @@ -1040,7 +1040,7 @@ importers: version: 21.1.7 '@types/lodash': specifier: ^4.17.0 - version: 4.17.24 + version: 4.17.25 '@types/mkdirp': specifier: ^1.0.2 version: 1.0.2 @@ -1067,7 +1067,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.9 - version: 4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.5(@types/node@20.19.43)(yaml@2.9.0)) + version: 4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.2.0(@types/node@20.19.43)(yaml@2.9.0)) packages/contentstack-import: dependencies: @@ -1085,7 +1085,7 @@ importers: version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 big-json: specifier: ^3.2.0 version: 3.2.0 @@ -1122,7 +1122,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/big-json': specifier: ^3.2.5 version: 3.2.5 @@ -1143,7 +1143,7 @@ importers: version: 14.18.63 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5) eslint: specifier: ^10.5.0 version: 10.8.0 @@ -1176,7 +1176,7 @@ importers: version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 big-json: specifier: ^3.2.0 version: 3.2.0 @@ -1219,7 +1219,7 @@ importers: version: 14.18.63 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5) chai: specifier: ^4.5.0 version: 4.5.0 @@ -1255,10 +1255,10 @@ importers: version: 2.1.0 '@oclif/core': specifier: ^4.12.0 - version: 4.13.2 + version: 4.13.3 '@oclif/plugin-help': specifier: ^6.2.53 - version: 6.2.55 + version: 6.2.56 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -1280,7 +1280,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) chai: specifier: ^4.5.0 version: 4.5.0 @@ -1322,7 +1322,7 @@ importers: version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 async: specifier: ^3.2.6 version: 3.2.6 @@ -1347,7 +1347,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/mocha': specifier: ^8.2.3 version: 8.2.3 @@ -1407,7 +1407,7 @@ importers: version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 async: specifier: ^3.2.6 version: 3.2.6 @@ -1444,10 +1444,10 @@ importers: version: 1.3.1 '@oclif/plugin-help': specifier: ^6.2.44 - version: 6.2.55 + version: 6.2.56 '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/big-json': specifier: ^3.2.5 version: 3.2.5 @@ -1580,7 +1580,7 @@ importers: version: 1.19.0(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 - version: 4.13.2 + version: 4.13.3 lodash: specifier: 4.18.1 version: 4.18.1 @@ -1596,7 +1596,7 @@ importers: version: 1.3.1 '@oclif/test': specifier: ^4.1.18 - version: 4.1.21(@oclif/core@4.13.2) + version: 4.1.21(@oclif/core@4.13.3) '@types/node': specifier: ^20.19.39 version: 20.19.43 @@ -1639,68 +1639,68 @@ packages: '@asamuzakjp/dom-selector@2.0.2': resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==} - '@aws-sdk/checksums@3.1000.22': - resolution: {integrity: sha512-YsSac72lcCOSjk5X4fMc20SjltkGUDjckB2vYZcEd/RpgB+huzeQwVZrOWxUvLVo+5D7X9sURgmAAPmErgCQ7w==} + '@aws-sdk/checksums@3.1000.25': + resolution: {integrity: sha512-zUjEceMw6vhAxMayAlF/vkkKqP9gHbENqvz11t4FbfDlxB/WtW/Az1orJAQ00Pc/yORLQJXKE24w11Ktu/XBcg==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-cloudfront@3.1097.0': - resolution: {integrity: sha512-YZrDIvdLqd53NcodnOQFgLZloA9WB7wj4NHSrf7VAnEaF4VPaw+0iYCLDNwzqk2GuEq4F02Yr+if8I58nukSsA==} + '@aws-sdk/client-cloudfront@3.1102.0': + resolution: {integrity: sha512-CYuujR/3k0Y3+tCG3yscYi49gIGJjl10HyUzIMiIYrTrsJHBgGLzCk+t5sR+uJrvWTHavtM513kgyhmrNKT0kA==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1097.0': - resolution: {integrity: sha512-iCBD95hrynpxiOzD301pUW9H3mxKcEfMErLqdg58WcIZnEqJuOd7JwcARsV3/y6OWj1t6j2tpS9lGt6X4OnPFw==} + '@aws-sdk/client-s3@3.1102.0': + resolution: {integrity: sha512-VQL/oWlt0+Rj2QZcAnp3+hMHW/T01EmkPQXf9ise2gz6d95U82eVE1dPBpMlnv4aDiz99TrMR0DHmceCjCkCmA==} engines: {node: '>=20.0.0'} - '@aws-sdk/core@3.977.2': - resolution: {integrity: sha512-8sT/M5vDcagx5/iM0Bfx7f6i3mfVOQkA34+GTMwp0lIWZb6ma+bjkzDS/r9yqU2yTPBqqMBFPT3+d9kUuuNDJA==} + '@aws-sdk/core@3.977.5': + resolution: {integrity: sha512-O5otOc1c6UZh5HsHAaPdYBcUUR9HL6mtnKqvc8nxN/CKDGUBUpsdh0q8K04Uz/dd1i0TaGyIQuQNqoO7+ad2TQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-env@3.972.63': - resolution: {integrity: sha512-VSS9dftt7r7GiZ4gs8z0PNaMLVAaSj/MXVr6WQBtsrQQB9miJo7I6lQuJND1/ugFwK9x7OHCYZDkLSYh0FIZtA==} + '@aws-sdk/credential-provider-env@3.972.66': + resolution: {integrity: sha512-bOzP2+zdJ0XrghywB4FaJXtGZCx9yS0AGps+VJ5yEgg30wVyHNmVDBwVDXcRypzQY5iLGCS3NSn0nsuISqjFCQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.65': - resolution: {integrity: sha512-SH/ec7p1J0CfC28+ypH38IwGENd7tQEvTpmuRSlinthiGxKlwzJbXGXxIMAhn0/lpxnIxudNmCsw3Cy0PDRoAg==} + '@aws-sdk/credential-provider-http@3.972.68': + resolution: {integrity: sha512-lkunS8X+H6V76WE+t/uGQm/U8v0JXK5mLfNFTUAMlE1kqaCjwlmqKJrgCVtqjK/vqnlrSWsLK4Lr4NANBWlfTQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.973.8': - resolution: {integrity: sha512-alkQpDUHsjHGVXvlV0XFXpPfh9+aTMmN6UYRky0Qky8SbvdxoQdDHftT4uugq8XShP6WtDQW7bo5YQ0SfNSxRQ==} + '@aws-sdk/credential-provider-ini@3.973.11': + resolution: {integrity: sha512-KoDEolYtLHG/8C+IiZpXbJWyBOMkrHV+j66Kb9PBXmLv5euGb7aELvuCmLenoGAV6gBW2wM7TsG/1e5iulH4kA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.70': - resolution: {integrity: sha512-JlUjK6bYJAxN9PkWWCI/TiOYEdvXNKq61x2DTaEKxRMxAOYNk2LX8m4wVtDFxTZwyXx7Tpmxb49dNprkW/uqXQ==} + '@aws-sdk/credential-provider-login@3.972.73': + resolution: {integrity: sha512-tjsxMkTAFkmiV9ycmymapb9nLECWVOwFs0bZMQ9gB9bnbY8/HwfukHZlWbXZZp7qkPU6EXAfOcMm3DioFFEywA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.74': - resolution: {integrity: sha512-V+7pzT0OzROL2uKcQ2+MpnfwKONvozYojmdn8RguAMX9o48gtSVvt+7aCkwWCH2thDXOnUPCN6qn4kiFDelZWA==} + '@aws-sdk/credential-provider-node@3.972.77': + resolution: {integrity: sha512-l4nitYCN/Ls57vtUfdextCjTjW41JD7lQiAnuR0RTbdByFc/6OmEAzwGd+lrp6CUtiXGQL1FCaYiamfHASrwBw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.63': - resolution: {integrity: sha512-lPt2oGMcvP3uPhhxX5EquHrzBI/ZgJce+CHKcOGZl2ZQAXLLSxu7k/Cgo0HIktyi9dmDFljbOkj4XAnXD93YVQ==} + '@aws-sdk/credential-provider-process@3.972.66': + resolution: {integrity: sha512-YOnX6bIhdjx0QfaENu2PB0eFm5MEc9ft8XNGQ+NxMfeLSq9aE+XjWCwDupEnV4UWv5ZFpBLJbTREIx7KNOoqpQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.973.7': - resolution: {integrity: sha512-FR2b+7QNXP/q+eslVzrCjGKvso8Lcr/B18BvFyD2iLNhq42XSo+wnh8FfX6mtqgaVsL1vuB27uGXuY+xUTa7pg==} + '@aws-sdk/credential-provider-sso@3.973.10': + resolution: {integrity: sha512-IsXnQ35j5VE+3ZK6aIhT5ypB+Jim3zRwVz0nYuVwyBKZyu/SYx+O2/LQpng8c2EiuwyqceabsDlYrICHDlJPsA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.69': - resolution: {integrity: sha512-RWNTKGXRkzMJe8bgIAdlz9q0N97m7fThD9KOjBt2CSY+/xnIbrA1/Dnm/ZEz8ZeQ1Of5D+fLaPeoD3lGt6AU4Q==} + '@aws-sdk/credential-provider-web-identity@3.972.72': + resolution: {integrity: sha512-nj9Zlsy7ya+fy+jhWTJwgfr7YdtDM4xHyZvgKuftuny0UgROVx9lxwvsWJSLvpKk4lig0m0tHng3k1fEnt0LeA==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-sdk-s3@3.972.68': - resolution: {integrity: sha512-JA/LRxCSXQAsFHyIZzgncYdcTQTOL3ZS8R7EAeDwoSoWcNG8yxDAacrwFTZIyVSMvkogvlKHRvmrMU68UyQbkw==} + '@aws-sdk/middleware-sdk-s3@3.972.71': + resolution: {integrity: sha512-5fpExT7JOIZSIWExXCgJVbZzbaOlNrS/rE5Eoesnp0ONMbnCtiyYsCkahNIdlXtKrO6XHqXI6ceqssVWMYKmWQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/nested-clients@3.997.37': - resolution: {integrity: sha512-vfDmA6APjX1LWxvt6/zcAmTCgRXCj35M+bC9Ujmy40QxYs9Fa9bE7oblOB3ODZ4mdN9R5osU0hTzoJjJlQqqTg==} + '@aws-sdk/nested-clients@3.997.40': + resolution: {integrity: sha512-hEdHT0PBR4fkGxWhwKG5EtEYKnAM7HKkp0vD10ufk4YcXejH4r4q6G/XhPzjUc6Yxo5kBS2vHg7llj4ViR9VTQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/signature-v4-multi-region@3.996.42': - resolution: {integrity: sha512-DBV4naZP6HYBlAvPpoQzOP12Wvfou/5rN8yJPXjBTBylU5qwCbh/tXr2MddHoIjgoRkEl/eS+IljiUqvmwey1Q==} + '@aws-sdk/signature-v4-multi-region@3.996.43': + resolution: {integrity: sha512-lKekx8bLBXSv4O+cslk9Zfnw2XKSkWBs3uWL5QGhH2ZAQfNS7FE0vcSSN2vD/AhxX54ZTywWxR4STThoeOXlBA==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1097.0': - resolution: {integrity: sha512-EIsdmy/f5IGc5r01RjKWNvrbBra6z0xudQM0D6Wf8DeGuPoRlubkLqr7VgWijFucO4kg0mtev9H3RX/ZOubUhg==} + '@aws-sdk/token-providers@3.1102.0': + resolution: {integrity: sha512-Ua700vVvM1q105yABSUQWkCK6FeTrNfU6ORGetJe5BzkZWY7QhkF7SVTOlmDGWRDNd6jbyY0Dv5e+E4bMBEmLg==} engines: {node: '>=20.0.0'} '@aws-sdk/types@3.974.2': @@ -1734,8 +1734,8 @@ packages: '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - '@babel/generator@7.29.7': - resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.29.7': @@ -1825,8 +1825,8 @@ packages: resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} engines: {node: '>=6.0.0'} hasBin: true @@ -2125,8 +2125,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.29.7': - resolution: {integrity: sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==} + '@babel/plugin-transform-modules-systemjs@7.29.8': + resolution: {integrity: sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2209,8 +2209,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.29.7': - resolution: {integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==} + '@babel/plugin-transform-regenerator@7.29.8': + resolution: {integrity: sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2233,8 +2233,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.29.7': - resolution: {integrity: sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==} + '@babel/plugin-transform-spread@7.29.8': + resolution: {integrity: sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2296,12 +2296,12 @@ packages: resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.7': - resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} engines: {node: '>=6.9.0'} - '@babel/types@7.29.7': - resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -2338,11 +2338,11 @@ packages: '@contentstack/cli-utilities@1.19.0': resolution: {integrity: sha512-QkQ2KakgMLYt2oa7bov1RHb4N1YjJqGqGDkh3oiTfgN+c5FvqoyaRUrngQCjefat3GLd2MY2SOmgILcBCghTpw==} - '@contentstack/core@1.4.1': - resolution: {integrity: sha512-QfLa8WUwquWSwvF8EltLyzQTkeNE2I9b9PBkPe21w0d5PnHOagxFzDNCYN4VO/zuJ52sNtKLFIFUcvLsOPk9ww==} + '@contentstack/core@1.5.0': + resolution: {integrity: sha512-GTNjPYqi49EFpdGp+6UGdY55OoM48Rc7UyCUTYPdzcmrvYlmiL0JKqyozShEVaqrDMdaNBQZu8PRvRA7TpDVNA==} - '@contentstack/delivery-sdk@5.5.0': - resolution: {integrity: sha512-X6inqsDh0Bcz6YO3QhN+H7TPiZ9PNx31DsVOWP+w4T5ohPqM2EYh53rbl6gOXQG9JJ9ihpDzdoQRcM4ld2Vglw==} + '@contentstack/delivery-sdk@5.5.1': + resolution: {integrity: sha512-ZGsv0ibgaeV32uhu86+CdgNIDtXYQxqgL+0EXphyIs0KH0VK7KxCvGjgvrTV2ZVHcwLLUbKlNH8vIHgML/mj6w==} engines: {node: '>=18'} '@contentstack/json-rte-serializer@2.1.0': @@ -2352,8 +2352,8 @@ packages: resolution: {integrity: sha512-wFmHxf2WfPVXD8uvFpaxdY882ELqYhdPu1aQM9VM/UYUtJg+7uCj9k785ujYfgbSKgxfY6APgwI++n59v3Entg==} engines: {node: '>=8.0.0'} - '@contentstack/management@1.31.0': - resolution: {integrity: sha512-Ejk7ozH0lDxa0Ozniii2hsNLr8u0XfBRNHYmLw7DFQZDuRopaIxCb+Udn2O+uP/4ffKSYVv/RVu6/GhACdtWFg==} + '@contentstack/management@1.31.1': + resolution: {integrity: sha512-tl0Egw40B7DC+rpPDpGM4CU79m9lQKDtkHxtqEfwdC86K4b0xOUt2ZYwOlrwyr9ShE/QB8Q33abC1a9+1823uQ==} engines: {node: '>=8.0.0'} '@contentstack/marketplace-sdk@1.5.4': @@ -2415,21 +2415,12 @@ packages: '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - '@emnapi/core@1.11.1': - resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} - '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - '@emnapi/runtime@1.11.1': - resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} - '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - '@emnapi/wasi-threads@1.2.2': - resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} - '@es-joy/jsdoccomment@0.50.2': resolution: {integrity: sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==} engines: {node: '>=18'} @@ -2910,12 +2901,18 @@ packages: resolution: {integrity: sha512-TuB0x50EoAvEX/UEWITd8Mkn3WhiTjSvbTMCLj0BhsQEl5iUzjXdA0bETEVpTk+5TGTLR6QktI9H4hLviVeaAQ==} engines: {node: '>=v12.0.0'} - '@napi-rs/wasm-runtime@1.2.0': - resolution: {integrity: sha512-kDoONqMa+VnZ4vvvu/ZUurpJ4gkZU57e7g69qpNgWhYcZFPUHZM2CEMKm+cG6ufDVALbjMvfmMjFVqaK7uEMnA==} + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + + '@napi-rs/wasm-runtime@1.2.2': + resolution: {integrity: sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} peerDependencies: - '@emnapi/core': ^2.0.0-alpha.3 - '@emnapi/runtime': ^2.0.0-alpha.3 + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.3 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.3 '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} @@ -2944,23 +2941,23 @@ packages: resolution: {integrity: sha512-Fg93aNFvXzBq5L7ztVHFP2nYwWU1oTCq48G0TjF/qC1UN36KWa2H5Hsm72kERd5x/sjy2M2Tn4kDEorUlpXOlw==} engines: {node: '>=18.0.0'} - '@oclif/core@4.13.2': - resolution: {integrity: sha512-YWQs0JvESCliWopKtCZqPLgEB1e3oqR+KYecMReseYWbo7E73Rz2tFwQDFQtAp48VLMiAsiTPKKQaZAo+ghzLw==} + '@oclif/core@4.13.3': + resolution: {integrity: sha512-wBp2igI2KVwq2ZmpnfmGtOROo7aXZIr3OEtAS16g1wHFBqyEuswL+9K50NJWJvlpAmxd+4dVj/ycawXESU3wQQ==} engines: {node: '>=18.0.0'} '@oclif/linewrap@1.0.0': resolution: {integrity: sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==} - '@oclif/plugin-help@6.2.55': - resolution: {integrity: sha512-IamFqLPoD8KTZbGSAu24EFe2kNibMrL/WA8+4EvnbdkYqZGUcizVqeXUIxzns3SES99wgqOtsK3DtLB3V3kIJQ==} + '@oclif/plugin-help@6.2.56': + resolution: {integrity: sha512-0LkCjFGRGY7AaZb5p8gDcSPNkFrn+vNLKvGe1f7j/Z6U9Uy1cV6R2eWVsjuZTGQ3RvBvjquFPwLy1jTgR5l87w==} engines: {node: '>=18.0.0'} - '@oclif/plugin-not-found@3.2.90': - resolution: {integrity: sha512-fkt81o7n2ciXTWxx/rfgO2rbZehHMfs5evLJgSOYF8ziEx+mTOz8Ci/kPfytYOwTbMe57qIbGpPbQeYMjQGEKQ==} + '@oclif/plugin-not-found@3.2.91': + resolution: {integrity: sha512-ICFrUeotKD3gsBOZR5mrgz2y1QDPM/C6hcu1i2tFjfW7AVnKINvsgANFou0ObLJGkslNS+6uX+1qcny37vJcyg==} engines: {node: '>=18.0.0'} - '@oclif/plugin-warn-if-update-available@3.1.70': - resolution: {integrity: sha512-rmgljRATcqu3OFstilpra0DHUbUXO4IsV5l1kC9j3PERn1y9X4EQ+EmI7bK21QVjzQbaIYcUNQ8TYEHGstL5iA==} + '@oclif/plugin-warn-if-update-available@3.1.71': + resolution: {integrity: sha512-oEw6vtA55w82CkSX9PyVC3V7Ac4UAIlMMUcc8ACOTeOTm7wwg+p5+HjiYozNOV+W7UU3VZy4jzOV1ap8Osdnyw==} engines: {node: '>=18.0.0'} '@oclif/screen@1.0.4': @@ -3001,8 +2998,8 @@ packages: '@otplib/preset-v11@12.0.1': resolution: {integrity: sha512-9hSetMI7ECqbFiKICrNa4w70deTUfArtwXykPUvSHWOdzOlfa9ajglu7mNCntlvxycTiOAXkQGwjQCzzDEMRMg==} - '@oxc-project/types@0.139.0': - resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} + '@oxc-project/types@0.142.0': + resolution: {integrity: sha512-7W+2q5AKQVU36fkaryontrHn3YDt1RyUYXatw9i5H8ocYe2sPKSFB6eS8WNPeRKiN1qAWWZUPm7gwFzJGrccqQ==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -3028,91 +3025,86 @@ packages: resolution: {integrity: sha512-pmNVGuooS30Mm7YbZd5T7E5zYVO6D5Ct91sn4T39mUvMUc3sCGridcnhAufL1/Bz2QzAtzEn0agNrdk3+5yWzw==} hasBin: true - '@rolldown/binding-android-arm64@1.1.5': - resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} + '@rolldown/binding-android-arm64@1.2.2': + resolution: {integrity: sha512-l7x215OGvo1s52JWmR8U/DAVzEDWBCIbTm28aeJV/WDTSHgcKXaZTuBT0hJMs5NggilfJTW3clZVvd24yfKJxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.1.5': - resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} + '@rolldown/binding-darwin-arm64@1.2.2': + resolution: {integrity: sha512-9u9Xv6c1AJZT0FfwH5vrMG5Jjcwhc1MlyrPu0XfTqkzsmqfks2M6W/o5XwAJgVVN/jHpqqngC1WevHKKTIUtIA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.5': - resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} + '@rolldown/binding-darwin-x64@1.2.2': + resolution: {integrity: sha512-9W1mbGZAfW3oqd85bhBkmpyHCCzL1TeG/zFFP3vg7b0rlly8cxOcre5nXwz+LHazCwac2MNWgPdPCHndABjpWQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.1.5': - resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} + '@rolldown/binding-freebsd-x64@1.2.2': + resolution: {integrity: sha512-0p1lhiCSCyaerFwtrdZQUx7NqGk6LQnaRKWX7tFQqwQgvX0rjM15cIkm3pax1UpEakK14C4mOxx/jSqCBdBRqQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': - resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.2': + resolution: {integrity: sha512-e+cOJXrJ2L3zx6YzqPg+f6Wbk3V1cKB8bOhbaYdVYN3DdquzNdRAmrbETz1qnt5yp/c7JNlNjmITiA2cVneQ7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.1.5': - resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} + '@rolldown/binding-linux-arm64-gnu@1.2.2': + resolution: {integrity: sha512-JsSMsj6sNat/MuhG5fnBD7QgbtpHKVe30x5/bAVirDHdhoQRXJkF6xc0Jqk8O4fiCUQAzMOoH9wZi3m60c8wtg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.1.5': - resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} + '@rolldown/binding-linux-arm64-musl@1.2.2': + resolution: {integrity: sha512-B5G/zJdHaoJn9vD50eGHWkiWfmq8Uhi3IiLPJTzmZTrAalk1bztUikSXo0qga18ibE0IXboyeMUnhPjhAJ45wQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-ppc64-gnu@1.1.5': - resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} + '@rolldown/binding-linux-ppc64-gnu@1.2.2': + resolution: {integrity: sha512-6mC/awzKka8W6EoekjegpfGkjz8jXWDX63pqu/HYVpyKtZfu65Jsh4QAH3Kej3CAv/c1oGX7psTmFEbr0mDxLA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@rolldown/binding-linux-s390x-gnu@1.1.5': - resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} + '@rolldown/binding-linux-s390x-gnu@1.2.2': + resolution: {integrity: sha512-412MX9fJLdA1IK28EZnc8jYv2HRTleOZgfLQumJ5zy7OeJLZlg/CETwFaXjNmGVxG51cFHpKLqb5LKvBC+HsHA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.1.5': - resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} + '@rolldown/binding-linux-x64-gnu@1.2.2': + resolution: {integrity: sha512-Q/+HI/ToJafZ1iCqGgVQXUEkIjufHCTF0gBQ2a5o3cg7GJ2h0qyq3nvvSmU+bGda2/7ygXpTY4TM6gO9OhQ0ZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.1.5': - resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} + '@rolldown/binding-linux-x64-musl@1.2.2': + resolution: {integrity: sha512-ZKp/w41n6wCvxzxQHtQSbuphfX3Y4cCvbjkKHusrLx4lh+JWLTU7StSltO/DKARISzbj368d+qUaCjI8K2wzXw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.1.5': - resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} + '@rolldown/binding-openharmony-arm64@1.2.2': + resolution: {integrity: sha512-pxE6xD4KS3eAROkKK5yrhB9/3+vhlhVGMvlQLbdpzrBGDbKrnzx3RLwPaHvasLo6jgaiBLn7e04Df9C4tYhjmA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.1.5': - resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.1.5': - resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} + '@rolldown/binding-win32-arm64-msvc@1.2.2': + resolution: {integrity: sha512-4MqEue5re+xIZzAWsB8sj0P1kqZySWqIuN4t6QaIO/YA6SFwySOLruvWQFzfmqk8LBK2P30KCSJwf6mJCZZ5/A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.5': - resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} + '@rolldown/binding-win32-x64-msvc@1.2.2': + resolution: {integrity: sha512-NweNxxD0Nf9t8v7kodun45Ijp3EIwYY+uydPP6qBEYvfBqhIjN6dZMzlQja3tqX/aLs3F3Uz+AxDpKgRhpOZQg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -3169,128 +3161,128 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.62.3': - resolution: {integrity: sha512-c0wdcekXtQvvn5Tsrk/+op/gUArrbWaFduBnTLP2l1cKLSQs4diMWjJw3m6A0DdzT8dAAX95KpkJ3qynCePbmw==} + '@rollup/rollup-android-arm-eabi@4.62.4': + resolution: {integrity: sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.62.3': - resolution: {integrity: sha512-3YjElDdWN+qXAFbJ/CzPV+0wspLqh54k/I6GfdYtEJRqg7buSgc1yPM3B+93j1M4neobtkATHZTmxK2AMVGfnA==} + '@rollup/rollup-android-arm64@4.62.4': + resolution: {integrity: sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.62.3': - resolution: {integrity: sha512-Pch2pFNOxxz1hTjypIdPyRTR6riiwRl84+VcN9djS680fw+Co1nAJINrdpqp7KV0NvyuU8ilZXZCjd7ykJl1GQ==} + '@rollup/rollup-darwin-arm64@4.62.4': + resolution: {integrity: sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.62.3': - resolution: {integrity: sha512-LEuncFUHFiF8t4yZVZvvZA1wk0pjAscRnsrn1EfTEmN4HXotBi2YtcnLRyaK6UbuczW7xZS5ES+81Rdz8Z0T6g==} + '@rollup/rollup-darwin-x64@4.62.4': + resolution: {integrity: sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.62.3': - resolution: {integrity: sha512-zvBUvsQUpOWALdDsk6qbS8bXf2VxmPisuudNDrY7x0p0jBdsoZl8HsHczIOgkQiZldmcacMKtBzpoGVNeIe2bQ==} + '@rollup/rollup-freebsd-arm64@4.62.4': + resolution: {integrity: sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.62.3': - resolution: {integrity: sha512-C2KmNrcSem/AMg984H/dev+si0lieQGdXdR/lYGJnuumXnFb9Y7QdiI62obFdLlxRYLBv4P0eUVIDbD4c1vVvw==} + '@rollup/rollup-freebsd-x64@4.62.4': + resolution: {integrity: sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.62.3': - resolution: {integrity: sha512-ggXnsTAEzNQx74XpunRsiZ9aBZDsI7XIa0hm2nzR9f4WzH5/f/d73ZSDaC5ejJ8YLY4NW+V3wr0tjOaeCq8hqA==} + '@rollup/rollup-linux-arm-gnueabihf@4.62.4': + resolution: {integrity: sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.62.3': - resolution: {integrity: sha512-2vng+FlzNUhKZxtej3IUqJgbZoQk2M/dwQM20+ULV0R/E/8tr9/P6uEf2iiGIk4HL0zMKh5Jry7mUHdUOvyGgA==} + '@rollup/rollup-linux-arm-musleabihf@4.62.4': + resolution: {integrity: sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.62.3': - resolution: {integrity: sha512-LLLFZKt4/Nraf9rxDkhiU8QVgLF4WmCkfr0L4fj0fPfIZFBib0DeiFk1hhaYKd03LFAFJcxHslhDFlNJLylf5Q==} + '@rollup/rollup-linux-arm64-gnu@4.62.4': + resolution: {integrity: sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.62.3': - resolution: {integrity: sha512-WJkdQCvS9sWNOUBJZfQRKpZGFBztRzcowI+nndmflKgU4XY+3a420FgTOSKTsVqJbnzSxeT4vaJalpOaPo2YCQ==} + '@rollup/rollup-linux-arm64-musl@4.62.4': + resolution: {integrity: sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.62.3': - resolution: {integrity: sha512-PwHXCCS2n64/1Ot6rP1YEYA02MGYBcQlr8CSZZyrUG2O7NH6NklYmvr9v3Jy+5e/eDeNchc/ukmKJi9LuflMIQ==} + '@rollup/rollup-linux-loong64-gnu@4.62.4': + resolution: {integrity: sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loong64-musl@4.62.3': - resolution: {integrity: sha512-vUjxINQu3RC8NZS3ykk1gN65gIz8pAopOq2HXuZhiIxHdx7TFvDG+jgrdSgInu1Eza4/Rfi2VzZgyIgEH4WOaw==} + '@rollup/rollup-linux-loong64-musl@4.62.4': + resolution: {integrity: sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.62.3': - resolution: {integrity: sha512-wzko4aJ13+0G3kGnviCg5gnXFKd40izKsrf2uOw12US4XqprkDrmwOpeW14aSNa37V8bfPcz5Fkob6LZ3BAPmA==} + '@rollup/rollup-linux-ppc64-gnu@4.62.4': + resolution: {integrity: sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-musl@4.62.3': - resolution: {integrity: sha512-8120ue0JUMSwy11stlwnfdX3pPd+WZYGCDBwEHWtIHi6pOpZmsEF5QKB7a/UN+XFdqvobxz98kv8RTqikyCEBw==} + '@rollup/rollup-linux-ppc64-musl@4.62.4': + resolution: {integrity: sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.62.3': - resolution: {integrity: sha512-XLFHnR3tXMjbOCh2vtVJHmxt+995uJsTERQyseFDRA0xxMxyTZPLa3OIUlyFaO4mF/Lu0FjmWHCuPXJT1n/IOg==} + '@rollup/rollup-linux-riscv64-gnu@4.62.4': + resolution: {integrity: sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.62.3': - resolution: {integrity: sha512-se6yXvNGMIl0f+RQzyh7XAmia8/9kplQx424wnG2w0C1oi6XgO6Y8otKhdXFHbHs88Ihavzmvh1NWjuovE76BQ==} + '@rollup/rollup-linux-riscv64-musl@4.62.4': + resolution: {integrity: sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.62.3': - resolution: {integrity: sha512-gNoxRefktVIiGflpONuxWWXZAzIQG++z9qHO3xKwk4WdDMuQja3JHGfE1u0i3PfPDyvhypdk+WrgIJqLhGG7sg==} + '@rollup/rollup-linux-s390x-gnu@4.62.4': + resolution: {integrity: sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.62.3': - resolution: {integrity: sha512-V4KtWtQfAFMU7+9/A/VDps/VI8CHd3cYz0L8sgJzz8qK7eY7wI4ruFD82UYIYvW9Z4DtlTfhQcsl4XyPHW5uSg==} + '@rollup/rollup-linux-x64-gnu@4.62.4': + resolution: {integrity: sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.62.3': - resolution: {integrity: sha512-LBx9LYXvj2CBkMkjLdNAWLwH0MLMin7do2VcVo9kVPibGLkY0BQQut2fv7NVqkXqZ/CrAu9LqDHVV1xHCMpCPw==} + '@rollup/rollup-linux-x64-musl@4.62.4': + resolution: {integrity: sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.62.3': - resolution: {integrity: sha512-ABVf3Q0RCu7NcyCCOZQI0pJ3GuSdfSl8EXcy88QtdceIMIoCUdfhsJChZ64L9zVM2aJHjde1Bhn5uqSRcX9ySA==} + '@rollup/rollup-openbsd-x64@4.62.4': + resolution: {integrity: sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.62.3': - resolution: {integrity: sha512-+2Cy/ldweGBLlPIKsQLF8U5N44a0KDdbrk1rAjHOM9M2K+kGdIVjHLmmrZIcx+9Ny3ke/1JomCsDI1ocb11+sg==} + '@rollup/rollup-openharmony-arm64@4.62.4': + resolution: {integrity: sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.62.3': - resolution: {integrity: sha512-dtZvzc8BedpSaFNy75x6uiWwAGTH+aZHDtdrqP6qk+WcLJrfti6sGje1ZJ9UxyzDLF23d/mV+PaMwuC0hL7UVA==} + '@rollup/rollup-win32-arm64-msvc@4.62.4': + resolution: {integrity: sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.62.3': - resolution: {integrity: sha512-Rj8Ra4noo+aYy7sKBggCx0407mws34kAb1ySyWuq5DAtFBQdkSwnsjCgPrhPe9cvgBKZIukpE+CVHvORCS93kQ==} + '@rollup/rollup-win32-ia32-msvc@4.62.4': + resolution: {integrity: sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.62.3': - resolution: {integrity: sha512-vp7N084ew/odXn2gi/mzm9mUkQu9l6AiN6dt4IeUM2Uvm9o+cVmP+YkqbMOteLbiGgqBBlJZjIMYVCfOOIVbVQ==} + '@rollup/rollup-win32-x64-gnu@4.62.4': + resolution: {integrity: sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.62.3': - resolution: {integrity: sha512-MOG/3gTOn4Fwf574RVOaY61I5o6P90legkFADiTyn1hyjNydT+cerU2rLUwPdZkKKyJ+iT+K9p7WXK4LM1Ka6g==} + '@rollup/rollup-win32-x64-msvc@4.62.4': + resolution: {integrity: sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==} cpu: [x64] os: [win32] @@ -3354,24 +3346,24 @@ packages: Deprecated: no longer maintained and no longer used by Sinon packages. See https://github.com/sinonjs/nise/issues/243 for replacement details. - '@smithy/core@3.31.0': - resolution: {integrity: sha512-sylYk2l9d7CmRv8ts8p0SDQUr3VO+HMeS1nrjL6+UtbO8ktJHTOeQ1McX+aAyvGGccp5aZX9eNtdcXrSwzoZaw==} + '@smithy/core@3.31.1': + resolution: {integrity: sha512-CyogUINxvi7C7LDsh8Syo6hVJOT9ckz4rG8dRZfTJ8r91HkMY59PnNooaj7WcHyxEkxPfBAmbgztZU+xTo76lg==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.4.15': - resolution: {integrity: sha512-xYVGrisQqTJWhOnScUhbx8s9H63TMtoxzuUoxG6mP8J+B/YbX3vZxVsgV0xDf43abJnJP0fjP7BkQh7OESwuRA==} + '@smithy/credential-provider-imds@4.4.16': + resolution: {integrity: sha512-QfuLWAkLzptffFW980AFeHZFdqds2B64rpEd3uJ6lgs3xVn9QegGMUgUcj+4d7dRrAsya3r58ZKpku97WcFb4w==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.6.12': - resolution: {integrity: sha512-OpQgP6IGH4j0NJ2zjfYZLjQL85ai+Wi/q51EmZJovXsEwKSvu89qiXUq77Q6EmwZ/hSl7fKpn2Z9mhiDN6OM+Q==} + '@smithy/fetch-http-handler@5.6.13': + resolution: {integrity: sha512-4fW86pEUOMbrD5nkbyl/tTvPHHWJFbuB2odl6ps9lWfHoXf9HWh3Q/Smh59qH1g7+c/BSZghX6bbUk4gsiMs8A==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.9.12': - resolution: {integrity: sha512-dWW5KRt4mnEvjNzbGqGeCuAvgum85Y9ZoyuMQqcTEfapndyVJ1k9BEHK7kdXJZ32enyRmmwcFjMwlB/KgLKI3Q==} + '@smithy/node-http-handler@4.9.13': + resolution: {integrity: sha512-Nmd/Nl35zfYrd+a6OO2cDJb3GPh9bgTjIUhcM+JFfjpp8/osCgboDV5nCT1I01Pv6R13eSKDKLSoVa5ZB6Zsfw==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.6.11': - resolution: {integrity: sha512-7HsspeiNCZvZHEJ22vV5L/QYuJdTyJvPJvMrYD3AgkM3IJB0pkln4jkjPvtpTWRMkHXbO8WKwNjoVdVlBFwHmw==} + '@smithy/signature-v4@5.6.12': + resolution: {integrity: sha512-I6KLtq3H0qqSuV9vLglfi8puHqzygzWHOnI4z/Rdoo+q50vvo18vBRdPAvvEtcaKROz7Zn6qnPa14kRfPH6PcQ==} engines: {node: '>=18.0.0'} '@smithy/types@4.16.1': @@ -3527,8 +3519,8 @@ packages: '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - '@types/lodash@4.17.24': - resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} + '@types/lodash@4.17.25': + resolution: {integrity: sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==} '@types/markdown-it@14.1.2': resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} @@ -3581,8 +3573,8 @@ packages: '@types/safe-regex@1.1.6': resolution: {integrity: sha512-CQ/uPB9fLOPKwDsrTeVbNIkwfUthTWOx0l6uIGwVFjZxv7e68pCW5gtTYFzdJi3EBJp8h8zYhJbTasAbX7gEMQ==} - '@types/semver@7.7.1': - resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/semver@7.8.0': + resolution: {integrity: sha512-1mAINjtQCXXeLkJ9ehXkwOcBpqtLxiVtKhpUf83DdRNdQKV0iXZpaHYqRr7nj+wvxuJzoAmAwXI+sCNMv1CzLQ==} '@types/send@0.17.6': resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} @@ -3667,11 +3659,11 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.65.0': - resolution: {integrity: sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==} + '@typescript-eslint/eslint-plugin@8.66.0': + resolution: {integrity: sha512-p088eaGrzYz1s+7cov0aMOCkNGTJlVxF4jgubf28c8L0Cv9Rloj8YBHnv4hXLq6IIEE1AsjNWavO+k+8kP2Y0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.65.0 + '@typescript-eslint/parser': ^8.66.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' @@ -3685,15 +3677,15 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.65.0': - resolution: {integrity: sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==} + '@typescript-eslint/parser@8.66.0': + resolution: {integrity: sha512-X6ypGChaWYk6PBtUg2BwuTZEFFcHJAtGTVJ9/lCTOufhZ4i9fNolQNnktq+kkMCwMj7V8Svsq7+TxSDslmhE0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.65.0': - resolution: {integrity: sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==} + '@typescript-eslint/project-service@8.66.0': + resolution: {integrity: sha512-7MthGPTt4BP69lSryqpqq8HQqxuzynssckL/jyDyk3+TNMQ3y2jFWkptCrktWvBrP+EH787Nl5N5Qpw7WZg+5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3710,12 +3702,12 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.65.0': - resolution: {integrity: sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==} + '@typescript-eslint/scope-manager@8.66.0': + resolution: {integrity: sha512-8TGcH25j9zqJ/IULB/ppyhRvxA8QYfFEZ7nfbg6/BN9spDgb8fPWQXlE5l8TWBL50EtUx007uZ1o9VOwrq2/9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.65.0': - resolution: {integrity: sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==} + '@typescript-eslint/tsconfig-utils@8.66.0': + resolution: {integrity: sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3740,8 +3732,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.65.0': - resolution: {integrity: sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==} + '@typescript-eslint/type-utils@8.66.0': + resolution: {integrity: sha512-LG2dWfjZQQp0ADtAu/EWJVayefGL2UEZ3CDeI44D9v3rXB/WYUqE/jpO28KrEKul5AySrmI+Zh1v6v+xW2U9+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3759,8 +3751,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.65.0': - resolution: {integrity: sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==} + '@typescript-eslint/types@8.66.0': + resolution: {integrity: sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -3790,8 +3782,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.65.0': - resolution: {integrity: sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==} + '@typescript-eslint/typescript-estree@8.66.0': + resolution: {integrity: sha512-8/x4INiiQb10jGgXYD7116/zQ+OL84ZIFn0za68wwFHCanT/VLbBEroWht8RV8fn0/ZCAoazHLQgwUC0UQcDfg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3814,8 +3806,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.65.0': - resolution: {integrity: sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==} + '@typescript-eslint/utils@8.66.0': + resolution: {integrity: sha512-jasearZPolBw5NJNYGMwxzHMF83niVWmMU1VdHzG1CyfI2VS7f7nZltnKtHcg20hW+7Uo5GfK4MeDPoU3qI8EA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3833,8 +3825,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.65.0': - resolution: {integrity: sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==} + '@typescript-eslint/visitor-keys@8.66.0': + resolution: {integrity: sha512-dkKR8q+lKciskj1Y3vthHktl+3cMLWGyVUP23bRiPZ5O9BRT++4EqDDV+TVeIKBL1VXVEqrJlz8MYbcnvJcAlg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.3': @@ -4267,8 +4259,8 @@ packages: axios@1.18.0: resolution: {integrity: sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw==} - axios@1.18.1: - resolution: {integrity: sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==} + axios@1.19.0: + resolution: {integrity: sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==} babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} @@ -4337,8 +4329,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.11.6: - resolution: {integrity: sha512-69D/imtToCsIcAl8WBS2YaRwA4jO/j0HhU+hELqMEu9f54MoUtI6+XH5mrKU8rEFNEk/Ui1I2MK4/JkWacclGw==} + baseline-browser-mapping@2.11.12: + resolution: {integrity: sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==} engines: {node: '>=6.0.0'} hasBin: true @@ -4368,8 +4360,8 @@ packages: bowser@2.14.1: resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} - brace-expansion@5.0.8: - resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} engines: {node: 20 || >=22} braces@3.0.3: @@ -5087,8 +5079,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.398: - resolution: {integrity: sha512-AsvhAxopJGh6museTDMIjn6JpDYOfgu4RLlygomt87MUwBUqTfd/1EiPtx10/LZE8xpTvkP2E9Gafq7lkLtodQ==} + electron-to-chromium@1.5.400: + resolution: {integrity: sha512-96EWDNjM59SYflgeV5Ylsf4EMiq1a25YjCnJH7cxn/AF2H3pILRweaUnoLax0yKHWdpOzY6JKEu45e8irqZIHA==} elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} @@ -5114,8 +5106,8 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.24.4: - resolution: {integrity: sha512-GVoi+ICHocoOIU7qVVM48wOJziRsqrsyqlI0Ce0LdowRn6v3bcH2zUa9kp85ncx0nwIb9/HOCOLS3fdThDG/XQ==} + enhanced-resolve@5.24.5: + resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -5578,8 +5570,8 @@ packages: fast-levenshtein@3.0.0: resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} - fast-uri@4.1.1: - resolution: {integrity: sha512-YPOs1zD5TG2+EZt+r88LwF6mclA7TPkpwMP7ZN3TO2HiHS8TXvq7QA/17iJsV9dubcLo/f8eEYqMBruyQV21hQ==} + fast-uri@4.1.2: + resolution: {integrity: sha512-TyGmBcbDTZXcb2cj5MV89DrF42DKvb3y5DDUNh95iO+IMeAzMkVSxK1PZRrRIpc9yg8U2GhGdbofNa0LS/a4Bw==} fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} @@ -5678,8 +5670,8 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flatted@3.4.3: - resolution: {integrity: sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==} + flatted@3.4.4: + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} @@ -5805,8 +5797,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + get-tsconfig@4.14.1: + resolution: {integrity: sha512-Dz/6HxkrxgNehhxLVeyv8sad9UzF2xBVeaKBQNDfJ5XiSXmp2gTR0eO0RWiT2NCKS5aGP9jjkOMggTN90qU50A==} git-diff@2.0.7: resolution: {integrity: sha512-/+vyWaKNUJLcVT+tm5Hsly2xDcIs49EkZstxqW7ap1ZiZ0BECviLK1iv9/f4cGhlKBokeAf61QkTDnL88H+Uhg==} @@ -6673,8 +6665,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@5.2.2: - resolution: {integrity: sha512-dayzUzKkJ1MkuUtZglSebU43utNXH0OWQByK9rKOOuYIO8M5TV1y+n8ALMdG0rdzBnfNkOmZEqrURepb0ejqBw==} + js-yaml@5.2.3: + resolution: {integrity: sha512-n+mUVyUX5bVv7G/G2zyIHOhdxfuU1dY2NOFzTQUWiMUbFss8b57NFlgCCaggU78wSw5KVS9cllzeLyzyR+n5nw==} hasBin: true js2xmlparser@4.0.2: @@ -6888,8 +6880,8 @@ packages: linkify-it@5.0.2: resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==} - lint-staged@17.2.0: - resolution: {integrity: sha512-FchGnFe4i4B1C/a35SPU9bNGPEHSC1+1iV0plLjzBmKVe9klZrlRfSgK6Cw4VeHyqOXbJUXP0vON61uRftNQ0A==} + lint-staged@17.3.0: + resolution: {integrity: sha512-woZS3vNe3UKqBaLPvbLOtKRY4tLANpWQhom12MGWqC8Mh1lCOO+WgSwmX2amjJAqTY9BkXYW87fCUH5H9Ph6xw==} engines: {node: '>=22.22.1'} hasBin: true @@ -7202,8 +7194,8 @@ packages: engines: {node: '>= 14.0.0'} hasBin: true - mocha@11.7.6: - resolution: {integrity: sha512-nS9xOGbw2I3cjCpxwZAEJ9xK9lmJ08vEkQvLtz4du9ZrF9UrjRpeJGiIgl2Z+Qs++pmB4ecDe48Fwsh+j+j7xA==} + mocha@11.8.0: + resolution: {integrity: sha512-VyCeUdGN3A9lmCTTgG4yuvY9ixxaDk+xt2R/7/+1AP6EqNG+G9OKkzBwhVtVYoNX8YsxNSgAl8mOv3IAeOpFbw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -7236,8 +7228,8 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} - nanoid@3.3.16: - resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} + nanoid@3.3.17: + resolution: {integrity: sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -7305,8 +7297,8 @@ packages: resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} engines: {node: '>=8'} - node-releases@2.0.51: - resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} + node-releases@2.0.52: + resolution: {integrity: sha512-MRlTqhAfoMx/4mhEbPo3Hi02g9LJZaJkka69V6h67Cb1gjrAG0jsTE4CZX1eptNx+VCAwJmfpnDIF4P0Nh1A7A==} engines: {node: '>=18'} nopt@1.0.10: @@ -7631,8 +7623,8 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.24: - resolution: {integrity: sha512-8RyVklq0owXUTa4xlpzu4l9AaVKIdQvAcOHZWaMh98HgySsUtxRVf/chRe3dsSLqb6i40BzGRzEUddRaI+9TSw==} + postcss@8.5.25: + resolution: {integrity: sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -7991,13 +7983,13 @@ packages: engines: {node: 20 || >=22} hasBin: true - rolldown@1.1.5: - resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} + rolldown@1.2.2: + resolution: {integrity: sha512-opwpo1tQBAcpSUJDt94B7hhLNGOKjCdE//XXjeLrnx9b83bjnw45tXdg1b09yEw/VLFBJGZpwRULMmOZo7ol+A==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.62.3: - resolution: {integrity: sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==} + rollup@4.62.4: + resolution: {integrity: sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -8505,8 +8497,8 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + tinyexec@1.3.0: + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} engines: {node: '>=18'} tinyglobby@0.2.17: @@ -8705,8 +8697,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.65.0: - resolution: {integrity: sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==} + typescript-eslint@8.66.0: + resolution: {integrity: sha512-QlEbBPz/RuJ1XUHj29nm3t0F/O/cSlEnntozqPOYHnnTGAXFamnMBu5i9Vn6vhUPHGAjR+Vl+5J8vPN/BMUrJw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -8855,13 +8847,13 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@8.1.5: - resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} + vite@8.2.0: + resolution: {integrity: sha512-pn+CFpM0lwDeKwmOq1ZaBK/9sjorZcgqxki6MbY/jPEVd9vichIlmlD4HmQ5wdP5EgqQCFRaACBxMC7uEGc6lQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.3.0 + '@vitejs/devtools': ^0.4.0 esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -9085,8 +9077,8 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ws@8.21.1: - resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + ws@8.21.2: + resolution: {integrity: sha512-54dMVAo4WIe6SKy3vBgN+9bJZqqQ8IMRevAkOLQALhi49qkkQDQfWdAZ8KQlXiEabw88ARXXdUrlvtbKQX+aKw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -9215,167 +9207,167 @@ snapshots: css-tree: 2.3.1 is-potential-custom-element-name: 1.0.1 - '@aws-sdk/checksums@3.1000.22': + '@aws-sdk/checksums@3.1000.25': dependencies: - '@aws-sdk/core': 3.977.2 + '@aws-sdk/core': 3.977.5 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/client-cloudfront@3.1097.0': + '@aws-sdk/client-cloudfront@3.1102.0': dependencies: - '@aws-sdk/core': 3.977.2 - '@aws-sdk/credential-provider-node': 3.972.74 + '@aws-sdk/core': 3.977.5 + '@aws-sdk/credential-provider-node': 3.972.77 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 - '@smithy/fetch-http-handler': 5.6.12 - '@smithy/node-http-handler': 4.9.12 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1097.0': + '@aws-sdk/client-s3@3.1102.0': dependencies: - '@aws-sdk/checksums': 3.1000.22 - '@aws-sdk/core': 3.977.2 - '@aws-sdk/credential-provider-node': 3.972.74 - '@aws-sdk/middleware-sdk-s3': 3.972.68 - '@aws-sdk/signature-v4-multi-region': 3.996.42 + '@aws-sdk/checksums': 3.1000.25 + '@aws-sdk/core': 3.977.5 + '@aws-sdk/credential-provider-node': 3.972.77 + '@aws-sdk/middleware-sdk-s3': 3.972.71 + '@aws-sdk/signature-v4-multi-region': 3.996.43 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 - '@smithy/fetch-http-handler': 5.6.12 - '@smithy/node-http-handler': 4.9.12 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/core@3.977.2': + '@aws-sdk/core@3.977.5': dependencies: '@aws-sdk/types': 3.974.2 '@aws-sdk/xml-builder': 3.972.37 '@aws/lambda-invoke-store': 0.3.0 - '@smithy/core': 3.31.0 - '@smithy/signature-v4': 5.6.11 + '@smithy/core': 3.31.1 + '@smithy/signature-v4': 5.6.12 '@smithy/types': 4.16.1 bowser: 2.14.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.63': + '@aws-sdk/credential-provider-env@3.972.66': dependencies: - '@aws-sdk/core': 3.977.2 + '@aws-sdk/core': 3.977.5 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.65': + '@aws-sdk/credential-provider-http@3.972.68': dependencies: - '@aws-sdk/core': 3.977.2 + '@aws-sdk/core': 3.977.5 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 - '@smithy/fetch-http-handler': 5.6.12 - '@smithy/node-http-handler': 4.9.12 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.973.8': + '@aws-sdk/credential-provider-ini@3.973.11': dependencies: - '@aws-sdk/core': 3.977.2 - '@aws-sdk/credential-provider-env': 3.972.63 - '@aws-sdk/credential-provider-http': 3.972.65 - '@aws-sdk/credential-provider-login': 3.972.70 - '@aws-sdk/credential-provider-process': 3.972.63 - '@aws-sdk/credential-provider-sso': 3.973.7 - '@aws-sdk/credential-provider-web-identity': 3.972.69 - '@aws-sdk/nested-clients': 3.997.37 + '@aws-sdk/core': 3.977.5 + '@aws-sdk/credential-provider-env': 3.972.66 + '@aws-sdk/credential-provider-http': 3.972.68 + '@aws-sdk/credential-provider-login': 3.972.73 + '@aws-sdk/credential-provider-process': 3.972.66 + '@aws-sdk/credential-provider-sso': 3.973.10 + '@aws-sdk/credential-provider-web-identity': 3.972.72 + '@aws-sdk/nested-clients': 3.997.40 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 - '@smithy/credential-provider-imds': 4.4.15 + '@smithy/core': 3.31.1 + '@smithy/credential-provider-imds': 4.4.16 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-login@3.972.70': + '@aws-sdk/credential-provider-login@3.972.73': dependencies: - '@aws-sdk/core': 3.977.2 - '@aws-sdk/nested-clients': 3.997.37 + '@aws-sdk/core': 3.977.5 + '@aws-sdk/nested-clients': 3.997.40 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-node@3.972.74': + '@aws-sdk/credential-provider-node@3.972.77': dependencies: - '@aws-sdk/credential-provider-env': 3.972.63 - '@aws-sdk/credential-provider-http': 3.972.65 - '@aws-sdk/credential-provider-ini': 3.973.8 - '@aws-sdk/credential-provider-process': 3.972.63 - '@aws-sdk/credential-provider-sso': 3.973.7 - '@aws-sdk/credential-provider-web-identity': 3.972.69 + '@aws-sdk/credential-provider-env': 3.972.66 + '@aws-sdk/credential-provider-http': 3.972.68 + '@aws-sdk/credential-provider-ini': 3.973.11 + '@aws-sdk/credential-provider-process': 3.972.66 + '@aws-sdk/credential-provider-sso': 3.973.10 + '@aws-sdk/credential-provider-web-identity': 3.972.72 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 - '@smithy/credential-provider-imds': 4.4.15 + '@smithy/core': 3.31.1 + '@smithy/credential-provider-imds': 4.4.16 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-process@3.972.63': + '@aws-sdk/credential-provider-process@3.972.66': dependencies: - '@aws-sdk/core': 3.977.2 + '@aws-sdk/core': 3.977.5 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.973.7': + '@aws-sdk/credential-provider-sso@3.973.10': dependencies: - '@aws-sdk/core': 3.977.2 - '@aws-sdk/nested-clients': 3.997.37 - '@aws-sdk/token-providers': 3.1097.0 + '@aws-sdk/core': 3.977.5 + '@aws-sdk/nested-clients': 3.997.40 + '@aws-sdk/token-providers': 3.1102.0 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-web-identity@3.972.69': + '@aws-sdk/credential-provider-web-identity@3.972.72': dependencies: - '@aws-sdk/core': 3.977.2 - '@aws-sdk/nested-clients': 3.997.37 + '@aws-sdk/core': 3.977.5 + '@aws-sdk/nested-clients': 3.997.40 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.972.68': + '@aws-sdk/middleware-sdk-s3@3.972.71': dependencies: - '@aws-sdk/core': 3.977.2 - '@aws-sdk/signature-v4-multi-region': 3.996.42 + '@aws-sdk/core': 3.977.5 + '@aws-sdk/signature-v4-multi-region': 3.996.43 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.997.37': + '@aws-sdk/nested-clients@3.997.40': dependencies: - '@aws-sdk/core': 3.977.2 - '@aws-sdk/signature-v4-multi-region': 3.996.42 + '@aws-sdk/core': 3.977.5 + '@aws-sdk/signature-v4-multi-region': 3.996.43 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 - '@smithy/fetch-http-handler': 5.6.12 - '@smithy/node-http-handler': 4.9.12 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.42': + '@aws-sdk/signature-v4-multi-region@3.996.43': dependencies: '@aws-sdk/types': 3.974.2 - '@smithy/signature-v4': 5.6.11 + '@smithy/signature-v4': 5.6.12 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1097.0': + '@aws-sdk/token-providers@3.1102.0': dependencies: - '@aws-sdk/core': 3.977.2 - '@aws-sdk/nested-clients': 3.997.37 + '@aws-sdk/core': 3.977.5 + '@aws-sdk/nested-clients': 3.997.40 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -9402,14 +9394,14 @@ snapshots: '@babel/core@7.29.7': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3(supports-color@8.1.1) @@ -9427,17 +9419,17 @@ snapshots: eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/generator@7.29.7': + '@babel/generator@7.29.8': dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.29.7': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/helper-compilation-targets@7.29.7': dependencies: @@ -9455,7 +9447,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -9482,15 +9474,15 @@ snapshots: '@babel/helper-member-expression-to-functions@7.29.7': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.29.7': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -9499,13 +9491,13 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.29.7': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/helper-plugin-utils@7.29.7': {} @@ -9514,7 +9506,7 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-wrap-function': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -9523,14 +9515,14 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-member-expression-to-functions': 7.29.7 '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.29.7': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -9543,25 +9535,25 @@ snapshots: '@babel/helper-wrap-function@7.29.7': dependencies: '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helpers@7.29.7': dependencies: '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 - '@babel/parser@7.29.7': + '@babel/parser@7.29.8': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -9596,7 +9588,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -9710,7 +9702,7 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -9757,7 +9749,7 @@ snapshots: '@babel/helper-globals': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -9771,7 +9763,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -9828,7 +9820,7 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -9868,13 +9860,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.7)': + '@babel/plugin-transform-modules-systemjs@7.29.8(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -9914,7 +9906,7 @@ snapshots: '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -9966,7 +9958,7 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7)': + '@babel/plugin-transform-regenerator@7.29.8(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 @@ -9987,7 +9979,7 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.7)': + '@babel/plugin-transform-spread@7.29.8(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 @@ -10075,7 +10067,7 @@ snapshots: '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-modules-systemjs': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-systemjs': 7.29.8(@babel/core@7.29.7) '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.7) @@ -10089,11 +10081,11 @@ snapshots: '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-regenerator': 7.29.8(@babel/core@7.29.7) '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-spread': 7.29.8(@babel/core@7.29.7) '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.7) @@ -10114,28 +10106,28 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 esutils: 2.0.3 '@babel/template@7.29.7': dependencies: '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 - '@babel/traverse@7.29.7': + '@babel/traverse@7.29.8': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/types@7.29.7': + '@babel/types@7.29.8': dependencies: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 @@ -10150,7 +10142,7 @@ snapshots: dependencies: '@contentstack/cli-command': 1.8.5(@types/node@22.20.1) '@contentstack/cli-utilities': 1.19.0(@types/node@22.20.1) - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 otplib: 12.0.1 transitivePeerDependencies: - '@types/node' @@ -10160,7 +10152,7 @@ snapshots: '@contentstack/cli-command@1.8.5(@types/node@14.18.63)': dependencies: '@contentstack/cli-utilities': 1.19.0(@types/node@14.18.63) - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 contentstack: 3.27.1 transitivePeerDependencies: - '@types/node' @@ -10170,7 +10162,7 @@ snapshots: '@contentstack/cli-command@1.8.5(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-utilities': 1.19.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 contentstack: 3.27.1 transitivePeerDependencies: - '@types/node' @@ -10180,7 +10172,7 @@ snapshots: '@contentstack/cli-command@1.8.5(@types/node@18.19.130)': dependencies: '@contentstack/cli-utilities': 1.19.0(@types/node@18.19.130) - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 contentstack: 3.27.1 transitivePeerDependencies: - '@types/node' @@ -10190,7 +10182,7 @@ snapshots: '@contentstack/cli-command@1.8.5(@types/node@20.19.43)': dependencies: '@contentstack/cli-utilities': 1.19.0(@types/node@20.19.43) - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 contentstack: 3.27.1 transitivePeerDependencies: - '@types/node' @@ -10200,7 +10192,7 @@ snapshots: '@contentstack/cli-command@1.8.5(@types/node@22.20.1)': dependencies: '@contentstack/cli-utilities': 1.19.0(@types/node@22.20.1) - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 contentstack: 3.27.1 transitivePeerDependencies: - '@types/node' @@ -10212,7 +10204,7 @@ snapshots: '@contentstack/cli-command': 1.8.5(@types/node@14.18.63) '@contentstack/cli-utilities': 1.19.0(@types/node@14.18.63) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 transitivePeerDependencies: - '@types/node' - debug @@ -10223,7 +10215,7 @@ snapshots: '@contentstack/cli-command': 1.8.5(@types/node@22.20.1) '@contentstack/cli-utilities': 1.19.0(@types/node@22.20.1) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 transitivePeerDependencies: - '@types/node' - debug @@ -10231,8 +10223,8 @@ snapshots: '@contentstack/cli-dev-dependencies@1.3.1': dependencies: - '@oclif/core': 4.13.2 - '@oclif/test': 4.1.21(@oclif/core@4.13.2) + '@oclif/core': 4.13.3 + '@oclif/test': 4.1.21(@oclif/core@4.13.3) fancy-test: 2.0.42 lodash: 4.18.1 transitivePeerDependencies: @@ -10243,12 +10235,12 @@ snapshots: '@apollo/client': 3.14.1(graphql@16.14.2) '@contentstack/cli-command': 1.8.5(@types/node@20.19.43) '@contentstack/cli-utilities': 1.19.0(@types/node@20.19.43) - '@oclif/core': 4.13.2 - '@oclif/plugin-help': 6.2.55 - '@rollup/plugin-commonjs': 28.0.9(rollup@4.62.3) - '@rollup/plugin-json': 6.1.0(rollup@4.62.3) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.62.3) - '@rollup/plugin-typescript': 12.3.0(rollup@4.62.3)(tslib@2.8.1)(typescript@5.9.3) + '@oclif/core': 4.13.3 + '@oclif/plugin-help': 6.2.56 + '@rollup/plugin-commonjs': 28.0.9(rollup@4.62.4) + '@rollup/plugin-json': 6.1.0(rollup@4.62.4) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.62.4) + '@rollup/plugin-typescript': 12.3.0(rollup@4.62.4)(tslib@2.8.1)(typescript@5.9.3) '@types/express': 4.17.25 '@types/express-serve-static-core': 4.19.9 adm-zip: 0.5.18 @@ -10261,7 +10253,7 @@ snapshots: ini: 3.0.1 lodash: 4.18.1 open: 8.4.2 - rollup: 4.62.3 + rollup: 4.62.4 winston: 3.19.0 transitivePeerDependencies: - '@types/node' @@ -10281,8 +10273,8 @@ snapshots: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.13.2 - axios: 1.18.1(debug@4.4.3) + '@oclif/core': 4.13.3 + axios: 1.19.0(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 cli-progress: 3.12.0 @@ -10293,7 +10285,7 @@ snapshots: inquirer: 8.2.7(@types/node@14.18.63) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 5.2.2 + js-yaml: 5.2.3 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10319,8 +10311,8 @@ snapshots: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.13.2 - axios: 1.18.1(debug@4.4.3) + '@oclif/core': 4.13.3 + axios: 1.19.0(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 cli-progress: 3.12.0 @@ -10331,7 +10323,7 @@ snapshots: inquirer: 8.2.7(@types/node@14.18.63) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 5.2.2 + js-yaml: 5.2.3 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10357,8 +10349,8 @@ snapshots: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.13.2 - axios: 1.18.1(debug@4.4.3) + '@oclif/core': 4.13.3 + axios: 1.19.0(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 cli-progress: 3.12.0 @@ -10369,7 +10361,7 @@ snapshots: inquirer: 8.2.7(@types/node@18.19.130) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 5.2.2 + js-yaml: 5.2.3 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10395,8 +10387,8 @@ snapshots: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.13.2 - axios: 1.18.1(debug@4.4.3) + '@oclif/core': 4.13.3 + axios: 1.19.0(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 cli-progress: 3.12.0 @@ -10407,7 +10399,7 @@ snapshots: inquirer: 8.2.7(@types/node@20.19.43) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 5.2.2 + js-yaml: 5.2.3 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10433,8 +10425,8 @@ snapshots: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.13.2 - axios: 1.18.1(debug@4.4.3) + '@oclif/core': 4.13.3 + axios: 1.19.0(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 cli-progress: 3.12.0 @@ -10445,7 +10437,7 @@ snapshots: inquirer: 8.2.7(@types/node@22.20.1) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 5.2.2 + js-yaml: 5.2.3 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10466,10 +10458,10 @@ snapshots: - debug - supports-color - '@contentstack/core@1.4.1': + '@contentstack/core@1.5.0': dependencies: - axios: 1.18.1(debug@4.4.3) - axios-mock-adapter: 2.1.0(axios@1.18.1) + axios: 1.19.0(debug@4.4.3) + axios-mock-adapter: 2.1.0(axios@1.19.0) lodash: 4.18.1 qs: 6.15.2 tslib: 2.8.1 @@ -10477,11 +10469,11 @@ snapshots: - debug - supports-color - '@contentstack/delivery-sdk@5.5.0': + '@contentstack/delivery-sdk@5.5.1': dependencies: - '@contentstack/core': 1.4.1 + '@contentstack/core': 1.5.0 '@contentstack/utils': 1.9.1 - axios: 1.18.1(debug@4.4.3) + axios: 1.19.0(debug@4.4.3) humps: 2.0.1 transitivePeerDependencies: - debug @@ -10506,7 +10498,7 @@ snapshots: dependencies: '@contentstack/utils': 1.9.1 assert: 2.1.0 - axios: 1.18.1(debug@4.4.3) + axios: 1.19.0(debug@4.4.3) buffer: 6.0.3 form-data: 4.0.6 husky: 9.1.7 @@ -10518,11 +10510,11 @@ snapshots: - debug - supports-color - '@contentstack/management@1.31.0': + '@contentstack/management@1.31.1': dependencies: '@contentstack/utils': 1.9.1 assert: 2.1.0 - axios: 1.18.1(debug@4.4.3) + axios: 1.19.0(debug@4.4.3) buffer: 6.0.3 form-data: 4.0.6 husky: 9.1.7 @@ -10537,14 +10529,14 @@ snapshots: '@contentstack/marketplace-sdk@1.5.4(debug@4.4.3)': dependencies: '@contentstack/utils': 1.9.1 - axios: 1.18.1(debug@4.4.3) + axios: 1.19.0(debug@4.4.3) transitivePeerDependencies: - debug - supports-color '@contentstack/types-generator@3.10.2(graphql@16.14.2)': dependencies: - '@contentstack/delivery-sdk': 5.5.0 + '@contentstack/delivery-sdk': 5.5.1 '@gql2ts/from-schema': 2.0.0-4(graphql@16.14.2) async: 3.2.6 axios: 1.18.0 @@ -10602,36 +10594,20 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/core@1.11.1': - dependencies: - '@emnapi/wasi-threads': 1.2.2 - tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.11.1': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.2.2': - dependencies: - tslib: 2.8.1 - optional: true - '@es-joy/jsdoccomment@0.50.2': dependencies: '@types/estree': 1.0.9 - '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/types': 8.66.0 comment-parser: 1.4.1 esquery: 1.7.0 jsdoc-type-pratt-parser: 4.1.0 @@ -10696,7 +10672,7 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 5.2.2 + js-yaml: 5.2.3 minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -11344,7 +11320,7 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 5.2.2 + js-yaml: 5.2.3 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.6': {} @@ -11795,17 +11771,13 @@ snapshots: dependencies: lodash: 4.18.1 - '@napi-rs/wasm-runtime@1.2.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.3 + '@napi-rs/lzma-linux-x64-gnu@1.5.1': optional: true - '@napi-rs/wasm-runtime@1.2.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.10.3 optional: true @@ -11845,7 +11817,7 @@ snapshots: hyperlinker: 1.0.0 indent-string: 4.0.0 is-wsl: 2.2.0 - js-yaml: 5.2.2 + js-yaml: 5.2.3 natural-orderby: 2.0.3 object-treeify: 1.1.33 password-prompt: 1.1.3 @@ -11875,7 +11847,7 @@ snapshots: hyperlinker: 1.0.0 indent-string: 4.0.0 is-wsl: 2.2.0 - js-yaml: 5.2.2 + js-yaml: 5.2.3 minimatch: 9.0.9 natural-orderby: 2.0.3 object-treeify: 1.1.33 @@ -11889,7 +11861,7 @@ snapshots: wordwrap: 1.0.0 wrap-ansi: 7.0.0 - '@oclif/core@4.13.2': + '@oclif/core@4.13.3': dependencies: ansi-escapes: 4.3.2 ansis: 3.17.0 @@ -11912,58 +11884,58 @@ snapshots: '@oclif/linewrap@1.0.0': {} - '@oclif/plugin-help@6.2.55': + '@oclif/plugin-help@6.2.56': dependencies: - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 - '@oclif/plugin-not-found@3.2.90': + '@oclif/plugin-not-found@3.2.91': dependencies: '@inquirer/prompts': 7.10.1 - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@types/node' - '@oclif/plugin-not-found@3.2.90(@types/node@14.18.63)': + '@oclif/plugin-not-found@3.2.91(@types/node@14.18.63)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@14.18.63) - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@types/node' - '@oclif/plugin-not-found@3.2.90(@types/node@18.19.130)': + '@oclif/plugin-not-found@3.2.91(@types/node@18.19.130)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@18.19.130) - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@types/node' - '@oclif/plugin-not-found@3.2.90(@types/node@20.19.43)': + '@oclif/plugin-not-found@3.2.91(@types/node@20.19.43)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@20.19.43) - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@types/node' - '@oclif/plugin-not-found@3.2.90(@types/node@22.20.1)': + '@oclif/plugin-not-found@3.2.91(@types/node@22.20.1)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@22.20.1) - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@types/node' - '@oclif/plugin-warn-if-update-available@3.1.70': + '@oclif/plugin-warn-if-update-available@3.1.71': dependencies: - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) http-call: 5.3.0 @@ -11984,9 +11956,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@oclif/test@4.1.21(@oclif/core@4.13.2)': + '@oclif/test@4.1.21(@oclif/core@4.13.3)': dependencies: - '@oclif/core': 4.13.2 + '@oclif/core': 4.13.3 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: @@ -12015,7 +11987,7 @@ snapshots: '@otplib/plugin-crypto': 12.0.1 '@otplib/plugin-thirty-two': 12.0.1 - '@oxc-project/types@0.139.0': {} + '@oxc-project/types@0.142.0': {} '@pkgjs/parseargs@0.11.0': optional: true @@ -12038,60 +12010,53 @@ snapshots: dependencies: nopt: 1.0.10 - '@rolldown/binding-android-arm64@1.1.5': + '@rolldown/binding-android-arm64@1.2.2': optional: true - '@rolldown/binding-darwin-arm64@1.1.5': + '@rolldown/binding-darwin-arm64@1.2.2': optional: true - '@rolldown/binding-darwin-x64@1.1.5': + '@rolldown/binding-darwin-x64@1.2.2': optional: true - '@rolldown/binding-freebsd-x64@1.1.5': + '@rolldown/binding-freebsd-x64@1.2.2': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + '@rolldown/binding-linux-arm-gnueabihf@1.2.2': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.5': + '@rolldown/binding-linux-arm64-gnu@1.2.2': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.5': + '@rolldown/binding-linux-arm64-musl@1.2.2': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.5': + '@rolldown/binding-linux-ppc64-gnu@1.2.2': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.5': + '@rolldown/binding-linux-s390x-gnu@1.2.2': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.5': + '@rolldown/binding-linux-x64-gnu@1.2.2': optional: true - '@rolldown/binding-linux-x64-musl@1.1.5': + '@rolldown/binding-linux-x64-musl@1.2.2': optional: true - '@rolldown/binding-openharmony-arm64@1.1.5': - optional: true - - '@rolldown/binding-wasm32-wasi@1.1.5': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.2.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@rolldown/binding-openharmony-arm64@1.2.2': optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.5': + '@rolldown/binding-win32-arm64-msvc@1.2.2': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.5': + '@rolldown/binding-win32-x64-msvc@1.2.2': optional: true '@rolldown/pluginutils@1.0.1': {} - '@rollup/plugin-commonjs@28.0.9(rollup@4.62.3)': + '@rollup/plugin-commonjs@28.0.9(rollup@4.62.4)': dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.3) + '@rollup/pluginutils': 5.4.0(rollup@4.62.4) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.5) @@ -12099,114 +12064,114 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.5 optionalDependencies: - rollup: 4.62.3 + rollup: 4.62.4 - '@rollup/plugin-json@6.1.0(rollup@4.62.3)': + '@rollup/plugin-json@6.1.0(rollup@4.62.4)': dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.3) + '@rollup/pluginutils': 5.4.0(rollup@4.62.4) optionalDependencies: - rollup: 4.62.3 + rollup: 4.62.4 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.62.3)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.62.4)': dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.3) + '@rollup/pluginutils': 5.4.0(rollup@4.62.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.12 optionalDependencies: - rollup: 4.62.3 + rollup: 4.62.4 - '@rollup/plugin-typescript@12.3.0(rollup@4.62.3)(tslib@2.8.1)(typescript@5.9.3)': + '@rollup/plugin-typescript@12.3.0(rollup@4.62.4)(tslib@2.8.1)(typescript@5.9.3)': dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.3) + '@rollup/pluginutils': 5.4.0(rollup@4.62.4) resolve: 1.22.12 typescript: 5.9.3 optionalDependencies: - rollup: 4.62.3 + rollup: 4.62.4 tslib: 2.8.1 - '@rollup/pluginutils@5.4.0(rollup@4.62.3)': + '@rollup/pluginutils@5.4.0(rollup@4.62.4)': dependencies: '@types/estree': 1.0.9 estree-walker: 2.0.2 picomatch: 4.0.5 optionalDependencies: - rollup: 4.62.3 + rollup: 4.62.4 - '@rollup/rollup-android-arm-eabi@4.62.3': + '@rollup/rollup-android-arm-eabi@4.62.4': optional: true - '@rollup/rollup-android-arm64@4.62.3': + '@rollup/rollup-android-arm64@4.62.4': optional: true - '@rollup/rollup-darwin-arm64@4.62.3': + '@rollup/rollup-darwin-arm64@4.62.4': optional: true - '@rollup/rollup-darwin-x64@4.62.3': + '@rollup/rollup-darwin-x64@4.62.4': optional: true - '@rollup/rollup-freebsd-arm64@4.62.3': + '@rollup/rollup-freebsd-arm64@4.62.4': optional: true - '@rollup/rollup-freebsd-x64@4.62.3': + '@rollup/rollup-freebsd-x64@4.62.4': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.62.3': + '@rollup/rollup-linux-arm-gnueabihf@4.62.4': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.62.3': + '@rollup/rollup-linux-arm-musleabihf@4.62.4': optional: true - '@rollup/rollup-linux-arm64-gnu@4.62.3': + '@rollup/rollup-linux-arm64-gnu@4.62.4': optional: true - '@rollup/rollup-linux-arm64-musl@4.62.3': + '@rollup/rollup-linux-arm64-musl@4.62.4': optional: true - '@rollup/rollup-linux-loong64-gnu@4.62.3': + '@rollup/rollup-linux-loong64-gnu@4.62.4': optional: true - '@rollup/rollup-linux-loong64-musl@4.62.3': + '@rollup/rollup-linux-loong64-musl@4.62.4': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.62.3': + '@rollup/rollup-linux-ppc64-gnu@4.62.4': optional: true - '@rollup/rollup-linux-ppc64-musl@4.62.3': + '@rollup/rollup-linux-ppc64-musl@4.62.4': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.62.3': + '@rollup/rollup-linux-riscv64-gnu@4.62.4': optional: true - '@rollup/rollup-linux-riscv64-musl@4.62.3': + '@rollup/rollup-linux-riscv64-musl@4.62.4': optional: true - '@rollup/rollup-linux-s390x-gnu@4.62.3': + '@rollup/rollup-linux-s390x-gnu@4.62.4': optional: true - '@rollup/rollup-linux-x64-gnu@4.62.3': + '@rollup/rollup-linux-x64-gnu@4.62.4': optional: true - '@rollup/rollup-linux-x64-musl@4.62.3': + '@rollup/rollup-linux-x64-musl@4.62.4': optional: true - '@rollup/rollup-openbsd-x64@4.62.3': + '@rollup/rollup-openbsd-x64@4.62.4': optional: true - '@rollup/rollup-openharmony-arm64@4.62.3': + '@rollup/rollup-openharmony-arm64@4.62.4': optional: true - '@rollup/rollup-win32-arm64-msvc@4.62.3': + '@rollup/rollup-win32-arm64-msvc@4.62.4': optional: true - '@rollup/rollup-win32-ia32-msvc@4.62.3': + '@rollup/rollup-win32-ia32-msvc@4.62.4': optional: true - '@rollup/rollup-win32-x64-gnu@4.62.3': + '@rollup/rollup-win32-x64-gnu@4.62.4': optional: true - '@rollup/rollup-win32-x64-msvc@4.62.3': + '@rollup/rollup-win32-x64-msvc@4.62.4': optional: true '@rtsao/scc@1.1.0': {} @@ -12263,32 +12228,32 @@ snapshots: '@sinonjs/text-encoding@0.7.3': {} - '@smithy/core@3.31.0': + '@smithy/core@3.31.1': dependencies: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.4.15': + '@smithy/credential-provider-imds@4.4.16': dependencies: - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.6.12': + '@smithy/fetch-http-handler@5.6.13': dependencies: - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/node-http-handler@4.9.12': + '@smithy/node-http-handler@4.9.13': dependencies: - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/signature-v4@5.6.11': + '@smithy/signature-v4@5.6.12': dependencies: - '@smithy/core': 3.31.0 + '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -12305,7 +12270,7 @@ snapshots: '@stylistic/eslint-plugin@3.1.0(eslint@10.8.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@4.9.5) eslint: 10.8.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12317,7 +12282,7 @@ snapshots: '@stylistic/eslint-plugin@3.1.0(eslint@10.8.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint: 10.8.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12329,7 +12294,7 @@ snapshots: '@stylistic/eslint-plugin@3.1.0(eslint@10.8.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@6.0.3) eslint: 10.8.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12342,7 +12307,7 @@ snapshots: '@stylistic/eslint-plugin@5.10.0(eslint@10.8.0)': dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) - '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/types': 8.66.0 eslint: 10.8.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12372,24 +12337,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@types/big-json@3.2.5': dependencies: @@ -12508,7 +12473,7 @@ snapshots: '@types/linkify-it@5.0.0': {} - '@types/lodash@4.17.24': {} + '@types/lodash@4.17.25': {} '@types/markdown-it@14.1.2': dependencies: @@ -12559,7 +12524,7 @@ snapshots: '@types/safe-regex@1.1.6': {} - '@types/semver@7.7.1': {} + '@types/semver@7.8.0': {} '@types/send@0.17.6': dependencies: @@ -12630,10 +12595,10 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@10.8.0)(typescript@4.9.5) '@typescript-eslint/utils': 5.62.0(eslint@10.8.0)(typescript@4.9.5) @@ -12709,14 +12674,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/type-utils': 8.65.0(eslint@10.8.0)(typescript@4.9.5) - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 8.66.0 + '@typescript-eslint/type-utils': 8.66.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 8.66.0 eslint: 10.8.0 ignore: 7.0.6 natural-compare: 1.4.0 @@ -12725,14 +12690,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/type-utils': 8.65.0(eslint@10.8.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.66.0 + '@typescript-eslint/type-utils': 8.66.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.66.0 eslint: 10.8.0 ignore: 7.0.6 natural-compare: 1.4.0 @@ -12741,14 +12706,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@6.0.3))(eslint@10.8.0)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@6.0.3))(eslint@10.8.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/type-utils': 8.65.0(eslint@10.8.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.66.0 + '@typescript-eslint/type-utils': 8.66.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.66.0 eslint: 10.8.0 ignore: 7.0.6 natural-compare: 1.4.0 @@ -12796,64 +12761,64 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5)': + '@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/scope-manager': 8.66.0 + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/typescript-estree': 8.66.0(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 8.66.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/scope-manager': 8.66.0 + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/typescript-estree': 8.66.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.66.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@6.0.3)': + '@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/scope-manager': 8.66.0 + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/typescript-estree': 8.66.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.66.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.65.0(typescript@4.9.5)': + '@typescript-eslint/project-service@8.66.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@4.9.5) - '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@4.9.5) + '@typescript-eslint/types': 8.66.0 debug: 4.4.3(supports-color@8.1.1) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.65.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.66.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@5.9.3) - '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@5.9.3) + '@typescript-eslint/types': 8.66.0 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.65.0(typescript@6.0.3)': + '@typescript-eslint/project-service@8.66.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@6.0.3) - '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@6.0.3) + '@typescript-eslint/types': 8.66.0 debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: @@ -12874,20 +12839,20 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.65.0': + '@typescript-eslint/scope-manager@8.66.0': dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/visitor-keys': 8.66.0 - '@typescript-eslint/tsconfig-utils@8.65.0(typescript@4.9.5)': + '@typescript-eslint/tsconfig-utils@8.66.0(typescript@4.9.5)': dependencies: typescript: 4.9.5 - '@typescript-eslint/tsconfig-utils@8.65.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.66.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.65.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.66.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 @@ -12939,11 +12904,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.65.0(eslint@10.8.0)(typescript@4.9.5)': + '@typescript-eslint/type-utils@8.66.0(eslint@10.8.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@4.9.5) - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/typescript-estree': 8.66.0(typescript@4.9.5) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.0 ts-api-utils: 2.5.0(typescript@4.9.5) @@ -12951,11 +12916,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.65.0(eslint@10.8.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.66.0(eslint@10.8.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/typescript-estree': 8.66.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -12963,11 +12928,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.65.0(eslint@10.8.0)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.66.0(eslint@10.8.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/typescript-estree': 8.66.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -12981,7 +12946,7 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.65.0': {} + '@typescript-eslint/types@8.66.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': dependencies: @@ -13087,12 +13052,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.65.0(typescript@4.9.5)': + '@typescript-eslint/typescript-estree@8.66.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/project-service': 8.65.0(typescript@4.9.5) - '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@4.9.5) - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/project-service': 8.66.0(typescript@4.9.5) + '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@4.9.5) + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/visitor-keys': 8.66.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.6 semver: 7.8.5 @@ -13102,12 +13067,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.65.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.66.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.65.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@5.9.3) - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/project-service': 8.66.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@5.9.3) + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/visitor-keys': 8.66.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.6 semver: 7.8.5 @@ -13117,12 +13082,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.65.0(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.66.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.65.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@6.0.3) - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/project-service': 8.66.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@6.0.3) + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/visitor-keys': 8.66.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.6 semver: 7.8.5 @@ -13136,7 +13101,7 @@ snapshots: dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.7.1 + '@types/semver': 7.8.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) @@ -13151,7 +13116,7 @@ snapshots: dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.7.1 + '@types/semver': 7.8.0 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5) @@ -13165,7 +13130,7 @@ snapshots: dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.7.1 + '@types/semver': 7.8.0 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) @@ -13179,7 +13144,7 @@ snapshots: dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.7.1 + '@types/semver': 7.8.0 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@6.0.3) @@ -13222,34 +13187,34 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.65.0(eslint@10.8.0)(typescript@4.9.5)': + '@typescript-eslint/utils@8.66.0(eslint@10.8.0)(typescript@4.9.5)': dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@4.9.5) + '@typescript-eslint/scope-manager': 8.66.0 + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/typescript-estree': 8.66.0(typescript@4.9.5) eslint: 10.8.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.65.0(eslint@10.8.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.66.0(eslint@10.8.0)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.66.0 + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/typescript-estree': 8.66.0(typescript@5.9.3) eslint: 10.8.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.65.0(eslint@10.8.0)(typescript@6.0.3)': + '@typescript-eslint/utils@8.66.0(eslint@10.8.0)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.66.0 + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/typescript-estree': 8.66.0(typescript@6.0.3) eslint: 10.8.0 typescript: 6.0.3 transitivePeerDependencies: @@ -13270,9 +13235,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.65.0': + '@typescript-eslint/visitor-keys@8.66.0': dependencies: - '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/types': 8.66.0 eslint-visitor-keys: 5.0.1 '@ungap/structured-clone@1.3.3': {} @@ -13335,7 +13300,7 @@ snapshots: dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.2.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': @@ -13356,13 +13321,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@20.19.43)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@8.2.0(@types/node@20.19.43)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.1.5(@types/node@20.19.43)(yaml@2.9.0) + vite: 8.2.0(@types/node@20.19.43)(yaml@2.9.0) '@vitest/pretty-format@4.1.10': dependencies: @@ -13457,7 +13422,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 4.1.1 + fast-uri: 4.1.2 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -13636,9 +13601,9 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios-mock-adapter@2.1.0(axios@1.18.1): + axios-mock-adapter@2.1.0(axios@1.19.0): dependencies: - axios: 1.18.1(debug@4.4.3) + axios: 1.19.0(debug@4.4.3) fast-deep-equal: 3.1.3 is-buffer: 2.0.5 @@ -13652,7 +13617,7 @@ snapshots: - debug - supports-color - axios@1.18.1(debug@4.4.3): + axios@1.19.0(debug@4.4.3): dependencies: follow-redirects: 1.16.0(debug@4.4.3) form-data: 4.0.6 @@ -13711,7 +13676,7 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 @@ -13778,7 +13743,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.11.6: {} + baseline-browser-mapping@2.11.12: {} bidi-js@1.0.3: dependencies: @@ -13824,7 +13789,7 @@ snapshots: bowser@2.14.1: {} - brace-expansion@5.0.8: + brace-expansion@5.0.9: dependencies: balanced-match: 4.0.4 @@ -13840,10 +13805,10 @@ snapshots: browserslist@4.28.7: dependencies: - baseline-browser-mapping: 2.11.6 + baseline-browser-mapping: 2.11.12 caniuse-lite: 1.0.30001806 - electron-to-chromium: 1.5.398 - node-releases: 2.0.51 + electron-to-chromium: 1.5.400 + node-releases: 2.0.52 update-browserslist-db: 1.2.3(browserslist@4.28.7) bs-logger@0.2.6: @@ -14081,7 +14046,7 @@ snapshots: hyperlinker: 1.0.0 indent-string: 4.0.0 is-wsl: 2.2.0 - js-yaml: 5.2.2 + js-yaml: 5.2.3 lodash: 4.18.1 natural-orderby: 2.0.3 object-treeify: 1.1.33 @@ -14634,7 +14599,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.398: {} + electron-to-chromium@1.5.400: {} elegant-spinner@1.0.1: {} @@ -14652,7 +14617,7 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.24.4: + enhanced-resolve@5.24.5: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -14807,7 +14772,7 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) eslint-config-xo-space: 0.35.0(eslint@10.8.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 15.7.0(eslint@10.8.0) eslint-plugin-perfectionist: 2.11.0(eslint@10.8.0)(typescript@5.9.3) @@ -14859,18 +14824,18 @@ snapshots: '@eslint/eslintrc': 3.3.6 '@eslint/js': 9.39.5 '@stylistic/eslint-plugin': 3.1.0(eslint@10.8.0)(typescript@4.9.5) - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5) - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@4.9.5) eslint-config-xo: 0.49.0(eslint@10.8.0) eslint-config-xo-space: 0.35.0(eslint@10.8.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 17.24.0(eslint@10.8.0)(typescript@4.9.5) eslint-plugin-perfectionist: 4.15.1(eslint@10.8.0)(typescript@4.9.5) eslint-plugin-unicorn: 56.0.1(eslint@10.8.0) - typescript-eslint: 8.65.0(eslint@10.8.0)(typescript@4.9.5) + typescript-eslint: 8.66.0(eslint@10.8.0)(typescript@4.9.5) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -14884,18 +14849,18 @@ snapshots: '@eslint/eslintrc': 3.3.6 '@eslint/js': 9.39.5 '@stylistic/eslint-plugin': 3.1.0(eslint@10.8.0)(typescript@5.9.3) - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint-config-xo: 0.49.0(eslint@10.8.0) eslint-config-xo-space: 0.35.0(eslint@10.8.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 17.24.0(eslint@10.8.0)(typescript@5.9.3) eslint-plugin-perfectionist: 4.15.1(eslint@10.8.0)(typescript@5.9.3) eslint-plugin-unicorn: 56.0.1(eslint@10.8.0) - typescript-eslint: 8.65.0(eslint@10.8.0)(typescript@5.9.3) + typescript-eslint: 8.66.0(eslint@10.8.0)(typescript@5.9.3) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -14909,18 +14874,18 @@ snapshots: '@eslint/eslintrc': 3.3.6 '@eslint/js': 9.39.5 '@stylistic/eslint-plugin': 3.1.0(eslint@10.8.0)(typescript@6.0.3) - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@6.0.3))(eslint@10.8.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@6.0.3))(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@6.0.3) eslint-config-xo: 0.49.0(eslint@10.8.0) eslint-config-xo-space: 0.35.0(eslint@10.8.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 17.24.0(eslint@10.8.0)(typescript@6.0.3) eslint-plugin-perfectionist: 4.15.1(eslint@10.8.0)(typescript@6.0.3) eslint-plugin-unicorn: 56.0.1(eslint@10.8.0) - typescript-eslint: 8.65.0(eslint@10.8.0)(typescript@6.0.3) + typescript-eslint: 8.66.0(eslint@10.8.0)(typescript@6.0.3) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -14974,13 +14939,13 @@ snapshots: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.0 - get-tsconfig: 4.14.0 + get-tsconfig: 4.14.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) transitivePeerDependencies: - supports-color @@ -15006,33 +14971,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@4.9.5) eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@6.0.3) eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) @@ -15116,7 +15081,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15127,7 +15092,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15139,13 +15104,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@4.9.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15156,7 +15121,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15168,13 +15133,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15185,7 +15150,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15197,7 +15162,7 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@6.0.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15247,10 +15212,10 @@ snapshots: eslint-plugin-n@17.24.0(eslint@10.8.0)(typescript@4.9.5): dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) - enhanced-resolve: 5.24.4 + enhanced-resolve: 5.24.5 eslint: 10.8.0 eslint-plugin-es-x: 7.8.0(eslint@10.8.0) - get-tsconfig: 4.14.0 + get-tsconfig: 4.14.1 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 @@ -15262,10 +15227,10 @@ snapshots: eslint-plugin-n@17.24.0(eslint@10.8.0)(typescript@5.9.3): dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) - enhanced-resolve: 5.24.4 + enhanced-resolve: 5.24.5 eslint: 10.8.0 eslint-plugin-es-x: 7.8.0(eslint@10.8.0) - get-tsconfig: 4.14.0 + get-tsconfig: 4.14.1 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 @@ -15277,10 +15242,10 @@ snapshots: eslint-plugin-n@17.24.0(eslint@10.8.0)(typescript@6.0.3): dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0) - enhanced-resolve: 5.24.4 + enhanced-resolve: 5.24.5 eslint: 10.8.0 eslint-plugin-es-x: 7.8.0(eslint@10.8.0) - get-tsconfig: 4.14.0 + get-tsconfig: 4.14.1 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 @@ -15331,8 +15296,8 @@ snapshots: eslint-plugin-perfectionist@4.15.1(eslint@10.8.0)(typescript@4.9.5): dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@4.9.5) eslint: 10.8.0 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -15341,8 +15306,8 @@ snapshots: eslint-plugin-perfectionist@4.15.1(eslint@10.8.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint: 10.8.0 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -15351,8 +15316,8 @@ snapshots: eslint-plugin-perfectionist@4.15.1(eslint@10.8.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@6.0.3) eslint: 10.8.0 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -15632,7 +15597,7 @@ snapshots: fancy-test@2.0.42: dependencies: '@types/chai': 4.3.20 - '@types/lodash': 4.17.24 + '@types/lodash': 4.17.25 '@types/node': 20.19.43 '@types/sinon': 17.0.4 lodash: 4.18.1 @@ -15645,7 +15610,7 @@ snapshots: fancy-test@3.0.16: dependencies: '@types/chai': 4.3.20 - '@types/lodash': 4.17.24 + '@types/lodash': 4.17.25 '@types/node': 20.19.43 '@types/sinon': 17.0.4 lodash: 4.18.1 @@ -15681,7 +15646,7 @@ snapshots: dependencies: fastest-levenshtein: 1.0.16 - fast-uri@4.1.1: {} + fast-uri@4.1.2: {} fastest-levenshtein@1.0.16: {} @@ -15775,12 +15740,12 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.4.3 + flatted: 3.4.4 keyv: 4.5.4 flat@5.0.2: {} - flatted@3.4.3: {} + flatted@3.4.4: {} fn.name@1.1.0: {} @@ -15907,7 +15872,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.14.0: + get-tsconfig@4.14.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -16571,7 +16536,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -16581,7 +16546,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 semver: 7.8.5 @@ -17353,10 +17318,10 @@ snapshots: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -17378,10 +17343,10 @@ snapshots: jest-snapshot@30.4.1: dependencies: '@babel/core': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@jest/expect-utils': 30.4.1 '@jest/get-type': 30.1.0 '@jest/snapshot-utils': 30.4.1 @@ -17525,7 +17490,7 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@5.2.2: + js-yaml@5.2.3: dependencies: argparse: 2.0.1 @@ -17571,7 +17536,7 @@ snapshots: jsdoc@4.0.5: dependencies: - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@jsdoc/salty': 0.2.12 '@types/markdown-it': 14.1.2 bluebird: 3.7.2 @@ -17608,7 +17573,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.21.1 + ws: 8.21.2 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -17743,11 +17708,11 @@ snapshots: dependencies: uc.micro: 2.1.0 - lint-staged@17.2.0: + lint-staged@17.3.0: dependencies: picomatch: 4.0.5 string-argv: 0.3.2 - tinyexec: 1.2.4 + tinyexec: 1.3.0 optionalDependencies: yaml: 2.9.0 @@ -17975,23 +17940,23 @@ snapshots: minimatch@10.2.6: dependencies: - brace-expansion: 5.0.8 + brace-expansion: 5.0.9 minimatch@3.1.5: dependencies: - brace-expansion: 5.0.8 + brace-expansion: 5.0.9 minimatch@5.1.9: dependencies: - brace-expansion: 5.0.8 + brace-expansion: 5.0.9 minimatch@9.0.3: dependencies: - brace-expansion: 5.0.8 + brace-expansion: 5.0.9 minimatch@9.0.9: dependencies: - brace-expansion: 5.0.8 + brace-expansion: 5.0.9 minimist@1.2.8: {} @@ -18022,7 +17987,7 @@ snapshots: find-up: 5.0.0 glob: 8.1.0 he: 1.2.0 - js-yaml: 5.2.2 + js-yaml: 5.2.3 log-symbols: 4.1.0 minimatch: 5.1.9 ms: 2.1.3 @@ -18034,7 +17999,7 @@ snapshots: yargs-parser: 20.2.9 yargs-unparser: 2.0.0 - mocha@11.7.6: + mocha@11.8.0: dependencies: browser-stdout: 1.3.1 chokidar: 4.0.3 @@ -18045,7 +18010,7 @@ snapshots: glob: 10.5.0 he: 1.2.0 is-path-inside: 3.0.3 - js-yaml: 5.2.2 + js-yaml: 5.2.3 log-symbols: 4.1.0 minimatch: 9.0.9 ms: 2.1.3 @@ -18076,7 +18041,7 @@ snapshots: mute-stream@2.0.0: {} - nanoid@3.3.16: {} + nanoid@3.3.17: {} napi-postinstall@0.3.4: {} @@ -18141,7 +18106,7 @@ snapshots: dependencies: process-on-spawn: 1.1.0 - node-releases@2.0.51: {} + node-releases@2.0.52: {} nopt@1.0.10: dependencies: @@ -18295,15 +18260,15 @@ snapshots: oclif@4.23.29: dependencies: - '@aws-sdk/client-cloudfront': 3.1097.0 - '@aws-sdk/client-s3': 3.1097.0 + '@aws-sdk/client-cloudfront': 3.1102.0 + '@aws-sdk/client-s3': 3.1102.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.13.2 - '@oclif/plugin-help': 6.2.55 - '@oclif/plugin-not-found': 3.2.90 - '@oclif/plugin-warn-if-update-available': 3.1.70 + '@oclif/core': 4.13.3 + '@oclif/plugin-help': 6.2.56 + '@oclif/plugin-not-found': 3.2.91 + '@oclif/plugin-warn-if-update-available': 3.1.71 ansis: 3.17.0 async-retry: 1.3.3 change-case: 4.1.2 @@ -18324,15 +18289,15 @@ snapshots: oclif@4.23.29(@types/node@14.18.63): dependencies: - '@aws-sdk/client-cloudfront': 3.1097.0 - '@aws-sdk/client-s3': 3.1097.0 + '@aws-sdk/client-cloudfront': 3.1102.0 + '@aws-sdk/client-s3': 3.1102.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.13.2 - '@oclif/plugin-help': 6.2.55 - '@oclif/plugin-not-found': 3.2.90(@types/node@14.18.63) - '@oclif/plugin-warn-if-update-available': 3.1.70 + '@oclif/core': 4.13.3 + '@oclif/plugin-help': 6.2.56 + '@oclif/plugin-not-found': 3.2.91(@types/node@14.18.63) + '@oclif/plugin-warn-if-update-available': 3.1.71 ansis: 3.17.0 async-retry: 1.3.3 change-case: 4.1.2 @@ -18353,15 +18318,15 @@ snapshots: oclif@4.23.29(@types/node@18.19.130): dependencies: - '@aws-sdk/client-cloudfront': 3.1097.0 - '@aws-sdk/client-s3': 3.1097.0 + '@aws-sdk/client-cloudfront': 3.1102.0 + '@aws-sdk/client-s3': 3.1102.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.13.2 - '@oclif/plugin-help': 6.2.55 - '@oclif/plugin-not-found': 3.2.90(@types/node@18.19.130) - '@oclif/plugin-warn-if-update-available': 3.1.70 + '@oclif/core': 4.13.3 + '@oclif/plugin-help': 6.2.56 + '@oclif/plugin-not-found': 3.2.91(@types/node@18.19.130) + '@oclif/plugin-warn-if-update-available': 3.1.71 ansis: 3.17.0 async-retry: 1.3.3 change-case: 4.1.2 @@ -18382,15 +18347,15 @@ snapshots: oclif@4.23.29(@types/node@20.19.43): dependencies: - '@aws-sdk/client-cloudfront': 3.1097.0 - '@aws-sdk/client-s3': 3.1097.0 + '@aws-sdk/client-cloudfront': 3.1102.0 + '@aws-sdk/client-s3': 3.1102.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.13.2 - '@oclif/plugin-help': 6.2.55 - '@oclif/plugin-not-found': 3.2.90(@types/node@20.19.43) - '@oclif/plugin-warn-if-update-available': 3.1.70 + '@oclif/core': 4.13.3 + '@oclif/plugin-help': 6.2.56 + '@oclif/plugin-not-found': 3.2.91(@types/node@20.19.43) + '@oclif/plugin-warn-if-update-available': 3.1.71 ansis: 3.17.0 async-retry: 1.3.3 change-case: 4.1.2 @@ -18411,15 +18376,15 @@ snapshots: oclif@4.23.29(@types/node@22.20.1): dependencies: - '@aws-sdk/client-cloudfront': 3.1097.0 - '@aws-sdk/client-s3': 3.1097.0 + '@aws-sdk/client-cloudfront': 3.1102.0 + '@aws-sdk/client-s3': 3.1102.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.13.2 - '@oclif/plugin-help': 6.2.55 - '@oclif/plugin-not-found': 3.2.90(@types/node@22.20.1) - '@oclif/plugin-warn-if-update-available': 3.1.70 + '@oclif/core': 4.13.3 + '@oclif/plugin-help': 6.2.56 + '@oclif/plugin-not-found': 3.2.91(@types/node@22.20.1) + '@oclif/plugin-warn-if-update-available': 3.1.71 ansis: 3.17.0 async-retry: 1.3.3 change-case: 4.1.2 @@ -18664,9 +18629,9 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.24: + postcss@8.5.25: dependencies: - nanoid: 3.3.16 + nanoid: 3.3.17 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -19020,56 +18985,56 @@ snapshots: glob: 13.0.6 package-json-from-dist: 1.0.1 - rolldown@1.1.5: + rolldown@1.2.2: dependencies: - '@oxc-project/types': 0.139.0 + '@oxc-project/types': 0.142.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.5 - '@rolldown/binding-darwin-arm64': 1.1.5 - '@rolldown/binding-darwin-x64': 1.1.5 - '@rolldown/binding-freebsd-x64': 1.1.5 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 - '@rolldown/binding-linux-arm64-gnu': 1.1.5 - '@rolldown/binding-linux-arm64-musl': 1.1.5 - '@rolldown/binding-linux-ppc64-gnu': 1.1.5 - '@rolldown/binding-linux-s390x-gnu': 1.1.5 - '@rolldown/binding-linux-x64-gnu': 1.1.5 - '@rolldown/binding-linux-x64-musl': 1.1.5 - '@rolldown/binding-openharmony-arm64': 1.1.5 - '@rolldown/binding-wasm32-wasi': 1.1.5 - '@rolldown/binding-win32-arm64-msvc': 1.1.5 - '@rolldown/binding-win32-x64-msvc': 1.1.5 - - rollup@4.62.3: + '@rolldown/binding-android-arm64': 1.2.2 + '@rolldown/binding-darwin-arm64': 1.2.2 + '@rolldown/binding-darwin-x64': 1.2.2 + '@rolldown/binding-freebsd-x64': 1.2.2 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.2 + '@rolldown/binding-linux-arm64-gnu': 1.2.2 + '@rolldown/binding-linux-arm64-musl': 1.2.2 + '@rolldown/binding-linux-ppc64-gnu': 1.2.2 + '@rolldown/binding-linux-s390x-gnu': 1.2.2 + '@rolldown/binding-linux-x64-gnu': 1.2.2 + '@rolldown/binding-linux-x64-musl': 1.2.2 + '@rolldown/binding-openharmony-arm64': 1.2.2 + '@rolldown/binding-win32-arm64-msvc': 1.2.2 + '@rolldown/binding-win32-x64-msvc': 1.2.2 + + rollup@4.62.4: dependencies: '@types/estree': 1.0.9 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.62.3 - '@rollup/rollup-android-arm64': 4.62.3 - '@rollup/rollup-darwin-arm64': 4.62.3 - '@rollup/rollup-darwin-x64': 4.62.3 - '@rollup/rollup-freebsd-arm64': 4.62.3 - '@rollup/rollup-freebsd-x64': 4.62.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.62.3 - '@rollup/rollup-linux-arm-musleabihf': 4.62.3 - '@rollup/rollup-linux-arm64-gnu': 4.62.3 - '@rollup/rollup-linux-arm64-musl': 4.62.3 - '@rollup/rollup-linux-loong64-gnu': 4.62.3 - '@rollup/rollup-linux-loong64-musl': 4.62.3 - '@rollup/rollup-linux-ppc64-gnu': 4.62.3 - '@rollup/rollup-linux-ppc64-musl': 4.62.3 - '@rollup/rollup-linux-riscv64-gnu': 4.62.3 - '@rollup/rollup-linux-riscv64-musl': 4.62.3 - '@rollup/rollup-linux-s390x-gnu': 4.62.3 - '@rollup/rollup-linux-x64-gnu': 4.62.3 - '@rollup/rollup-linux-x64-musl': 4.62.3 - '@rollup/rollup-openbsd-x64': 4.62.3 - '@rollup/rollup-openharmony-arm64': 4.62.3 - '@rollup/rollup-win32-arm64-msvc': 4.62.3 - '@rollup/rollup-win32-ia32-msvc': 4.62.3 - '@rollup/rollup-win32-x64-gnu': 4.62.3 - '@rollup/rollup-win32-x64-msvc': 4.62.3 + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 4.62.4 + '@rollup/rollup-android-arm64': 4.62.4 + '@rollup/rollup-darwin-arm64': 4.62.4 + '@rollup/rollup-darwin-x64': 4.62.4 + '@rollup/rollup-freebsd-arm64': 4.62.4 + '@rollup/rollup-freebsd-x64': 4.62.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.62.4 + '@rollup/rollup-linux-arm-musleabihf': 4.62.4 + '@rollup/rollup-linux-arm64-gnu': 4.62.4 + '@rollup/rollup-linux-arm64-musl': 4.62.4 + '@rollup/rollup-linux-loong64-gnu': 4.62.4 + '@rollup/rollup-linux-loong64-musl': 4.62.4 + '@rollup/rollup-linux-ppc64-gnu': 4.62.4 + '@rollup/rollup-linux-ppc64-musl': 4.62.4 + '@rollup/rollup-linux-riscv64-gnu': 4.62.4 + '@rollup/rollup-linux-riscv64-musl': 4.62.4 + '@rollup/rollup-linux-s390x-gnu': 4.62.4 + '@rollup/rollup-linux-x64-gnu': 4.62.4 + '@rollup/rollup-linux-x64-musl': 4.62.4 + '@rollup/rollup-openbsd-x64': 4.62.4 + '@rollup/rollup-openharmony-arm64': 4.62.4 + '@rollup/rollup-win32-arm64-msvc': 4.62.4 + '@rollup/rollup-win32-ia32-msvc': 4.62.4 + '@rollup/rollup-win32-x64-gnu': 4.62.4 + '@rollup/rollup-win32-x64-msvc': 4.62.4 fsevents: 2.3.3 rrweb-cssom@0.6.0: {} @@ -19655,7 +19620,7 @@ snapshots: tinybench@2.9.0: {} - tinyexec@1.2.4: {} + tinyexec@1.3.0: {} tinyglobby@0.2.17: dependencies: @@ -20057,34 +20022,34 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.65.0(eslint@10.8.0)(typescript@4.9.5): + typescript-eslint@8.66.0(eslint@10.8.0)(typescript@4.9.5): dependencies: - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5) - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.65.0(typescript@4.9.5) - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.66.0(typescript@4.9.5) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@4.9.5) eslint: 10.8.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - typescript-eslint@8.65.0(eslint@10.8.0)(typescript@5.9.3): + typescript-eslint@8.66.0(eslint@10.8.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.66.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint: 10.8.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript-eslint@8.65.0(eslint@10.8.0)(typescript@6.0.3): + typescript-eslint@8.66.0(eslint@10.8.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@6.0.3))(eslint@10.8.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.65.0(eslint@10.8.0)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.65.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@6.0.3))(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.66.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.66.0(eslint@10.8.0)(typescript@6.0.3) eslint: 10.8.0 typescript: 6.0.3 transitivePeerDependencies: @@ -20228,22 +20193,22 @@ snapshots: vary@1.1.2: {} - vite@8.1.5(@types/node@20.19.43)(yaml@2.9.0): + vite@8.2.0(@types/node@20.19.43)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.5 - postcss: 8.5.24 - rolldown: 1.1.5 + postcss: 8.5.25 + rolldown: 1.2.2 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 20.19.43 fsevents: 2.3.3 yaml: 2.9.0 - vitest@4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.5(@types/node@20.19.43)(yaml@2.9.0)): + vitest@4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.2.0(@types/node@20.19.43)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@20.19.43)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@8.2.0(@types/node@20.19.43)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -20257,10 +20222,10 @@ snapshots: picomatch: 4.0.5 std-env: 4.2.0 tinybench: 2.9.0 - tinyexec: 1.2.4 + tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.1 - vite: 8.1.5(@types/node@20.19.43)(yaml@2.9.0) + vite: 8.2.0(@types/node@20.19.43)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.19.43 @@ -20450,7 +20415,7 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - ws@8.21.1: {} + ws@8.21.2: {} xdg-basedir@4.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5db7677a6..94cd8fe3b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,7 +4,7 @@ overrides: tmp: 0.2.7 uuid: 14.0.1 lodash: 4.18.1 - brace-expansion: 5.0.8 - js-yaml: 5.2.2 - fast-uri: 4.1.1 - ws: 8.21.1 + brace-expansion: 5.0.9 + js-yaml: 5.2.3 + fast-uri: 4.1.2 + ws: 8.21.2 From c30a26026d66ac79ba1a246fceaae0beae2fbbac Mon Sep 17 00:00:00 2001 From: Netraj Patel Date: Wed, 5 Aug 2026 12:07:45 +0530 Subject: [PATCH 20/24] chore: repair pnpm-lock.yaml broken by development merge The merge of development into this branch left pnpm-lock.yaml internally inconsistent: an eslint-import-resolver-typescript@3.10.1 snapshot still referenced get-tsconfig@4.14.0 while the packages section had advanced to 4.14.1, and several peer-dependency snapshots (ts-node, @tsconfig/*, jest, eslint resolver permutations) had been dropped. This made `pnpm install --frozen-lockfile` fail with ERR_PNPM_LOCKFILE_MISSING_DEPENDENCY, breaking the run-tests and tsgen-integration jobs at the install step before any test could run. Regenerated with `pnpm install --no-frozen-lockfile` using pnpm 10.28.0, matching the pinned packageManager. Lockfile-only change: no package.json or dependency versions altered. Refreshed the pnpm-lock.yaml checksum in .talismanrc to match, per existing repo practice. Co-Authored-By: Claude Opus 5 (1M context) --- .talismanrc | 2 +- pnpm-lock.yaml | 219 ++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 192 insertions(+), 29 deletions(-) diff --git a/.talismanrc b/.talismanrc index 3b8b7cf56..cda7f6c2c 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,4 +1,4 @@ fileignoreconfig: - filename: pnpm-lock.yaml - checksum: 4dc4b2a0693ba40fd503cf52d6d69b577ec87018e4f9ab52415608c65c14f6aa + checksum: 94d134f1763796fc51f681977a5e151552b4ad7a441c0b4cfc63e1150881be0e version: '1.0' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2640316ad..528c9afd2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -624,13 +624,13 @@ importers: version: 3.1.14(eslint@10.8.0)(typescript@5.9.3) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) + version: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) oclif: specifier: ^4.23.8 version: 4.23.29(@types/node@22.20.1) ts-jest: specifier: ^29.4.9 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1))(typescript@5.9.3) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1243,10 +1243,10 @@ importers: dependencies: '@contentstack/cli-command': specifier: 1.8.5 - version: 1.8.5(@types/node@22.20.1) + version: 1.8.5(@types/node@18.19.130) '@contentstack/cli-utilities': specifier: 1.19.0 - version: 1.19.0(@types/node@22.20.1) + version: 1.19.0(@types/node@18.19.130) '@contentstack/json-rte-serializer': specifier: ~2.1.0 version: 2.1.0 @@ -1301,7 +1301,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.29(@types/node@22.20.1) + version: 4.23.29 querystring: specifier: ^0.2.1 version: 0.2.1 @@ -11062,6 +11062,19 @@ snapshots: optionalDependencies: '@types/node': 22.20.1 + '@inquirer/prompts@7.10.1': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@18.19.130) + '@inquirer/confirm': 5.1.21(@types/node@18.19.130) + '@inquirer/editor': 4.2.23(@types/node@18.19.130) + '@inquirer/expand': 4.0.23(@types/node@18.19.130) + '@inquirer/input': 4.3.1(@types/node@18.19.130) + '@inquirer/number': 3.0.23(@types/node@18.19.130) + '@inquirer/password': 4.0.23(@types/node@18.19.130) + '@inquirer/rawlist': 4.1.11(@types/node@18.19.130) + '@inquirer/search': 3.2.2(@types/node@18.19.130) + '@inquirer/select': 4.4.2(@types/node@18.19.130) + '@inquirer/prompts@7.10.1(@types/node@14.18.63)': dependencies: '@inquirer/checkbox': 4.3.2(@types/node@14.18.63) @@ -11338,6 +11351,41 @@ snapshots: - supports-color - ts-node + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.43 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + '@jest/core@29.7.0(ts-node@8.10.2(typescript@4.9.5))': dependencies: '@jest/console': 29.7.0 @@ -14276,6 +14324,21 @@ snapshots: - supports-color - ts-node + create-jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + create-require@1.1.1: {} cross-fetch@4.1.0: @@ -14677,8 +14740,8 @@ snapshots: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) eslint-config-xo-space: 0.35.0(eslint@10.8.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 15.7.0(eslint@10.8.0) eslint-plugin-perfectionist: 2.11.0(eslint@10.8.0)(typescript@5.9.3) @@ -14759,8 +14822,8 @@ snapshots: '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint-config-xo: 0.49.0(eslint@10.8.0) eslint-config-xo-space: 0.35.0(eslint@10.8.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 17.24.0(eslint@10.8.0)(typescript@5.9.3) @@ -14840,18 +14903,18 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.0 - get-tsconfig: 4.14.0 + get-tsconfig: 4.14.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) transitivePeerDependencies: - supports-color @@ -14866,7 +14929,7 @@ snapshots: tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) transitivePeerDependencies: - supports-color @@ -14881,14 +14944,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) transitivePeerDependencies: - supports-color @@ -14910,18 +14973,18 @@ snapshots: '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@4.9.5) eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0)(typescript@4.9.5))(eslint@10.8.0))(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) transitivePeerDependencies: - supports-color @@ -14984,7 +15047,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14995,7 +15058,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15071,7 +15134,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15082,7 +15145,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -16664,6 +16727,25 @@ snapshots: - supports-color - ts-node + jest-cli@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.3 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jest-cli@30.4.2(@types/node@18.19.130)(ts-node@10.9.2(@types/node@18.19.130)(typescript@5.9.3)): dependencies: '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@18.19.130)(typescript@5.9.3)) @@ -16745,6 +16827,37 @@ snapshots: - babel-plugin-macros - supports-color + jest-config@29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): + dependencies: + '@babel/core': 7.29.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.29.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.19.43 + ts-node: 10.9.2(@types/node@22.20.1)(typescript@5.9.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-config@29.7.0(@types/node@20.19.43)(ts-node@8.10.2(typescript@4.9.5)): dependencies: '@babel/core': 7.29.7 @@ -16807,6 +16920,37 @@ snapshots: - babel-plugin-macros - supports-color + jest-config@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): + dependencies: + '@babel/core': 7.29.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.29.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.20.1 + ts-node: 10.9.2(@types/node@22.20.1)(typescript@5.9.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-config@30.4.2(@types/node@18.19.130)(ts-node@10.9.2(@types/node@18.19.130)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.7 @@ -17323,7 +17467,7 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@22.20.1): + jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)): dependencies: '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) '@jest/types': 29.6.3 @@ -17335,12 +17479,12 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)): + jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) + jest-cli: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -19605,12 +19749,12 @@ snapshots: babel-jest: 30.4.1(@babel/core@7.29.7) jest-util: 30.4.1 - ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1))(typescript@5.9.3): + ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.9 - jest: 29.7.0(@types/node@22.20.1) + jest: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -19753,6 +19897,25 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.20.1 + acorn: 8.18.0 + acorn-walk: 8.3.5 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.4 + make-error: 1.3.6 + typescript: 5.9.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + ts-node@8.10.2(typescript@4.9.5): dependencies: arg: 4.1.3 From 032819ac8518c9ded7b77497f40a31d9105efdc1 Mon Sep 17 00:00:00 2001 From: Netraj Patel Date: Wed, 5 Aug 2026 12:34:49 +0530 Subject: [PATCH 21/24] chore(content-type): move @types/* to devDependencies, drop unused hogan types Addresses Copilot review feedback on #324. contentstack-content-type was the only package of 20 declaring @types/* under dependencies; the other 19 keep them in devDependencies. Type packages are compile-time only and nothing here re-exports their types publicly, so shipping them as runtime deps only inflated the production install. Moved @types/diff2html, @types/table and @types/tmp to devDependencies. The runtime packages they describe (diff2html, table, tmp) stay in dependencies. Dropped @types/hogan.js entirely rather than moving it: hogan is referenced nowhere in this package's src or tests, and hogan.js is not a runtime dependency of any package in the repo, so the types were dead weight. Verified with `tsc -b --force` (clean, emits lib/) and the package suite (16 suites, 78 tests passing). Talisman checksum for pnpm-lock.yaml refreshed via `talisman --checksum`. Co-Authored-By: Claude Opus 5 (1M context) --- .talismanrc | 2 +- .../contentstack-content-type/package.json | 7 +++-- pnpm-lock.yaml | 26 +++++++------------ 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/.talismanrc b/.talismanrc index cda7f6c2c..3a0a0af19 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,4 +1,4 @@ fileignoreconfig: - filename: pnpm-lock.yaml - checksum: 94d134f1763796fc51f681977a5e151552b4ad7a441c0b4cfc63e1150881be0e + checksum: e189b3ff17c005329a25e849555543e0cbdc5ea326d087e78b0a867b8978b308 version: '1.0' diff --git a/packages/contentstack-content-type/package.json b/packages/contentstack-content-type/package.json index 1f39206cc..13180fcac 100644 --- a/packages/contentstack-content-type/package.json +++ b/packages/contentstack-content-type/package.json @@ -7,10 +7,6 @@ "dependencies": { "@contentstack/cli-command": "^1.8.5", "@contentstack/cli-utilities": "^1.19.0", - "@types/diff2html": "^3.0.3", - "@types/hogan.js": "^3.0.5", - "@types/table": "^6.3.2", - "@types/tmp": "^0.2.6", "axios": "^1.18.1", "cli-ux": "^6.0.9", "diff": "^9.0.0", @@ -24,8 +20,11 @@ }, "devDependencies": { "@oclif/plugin-help": "^6.2.49", + "@types/diff2html": "^3.0.3", "@types/jest": "^29.5.14", "@types/node": "^22.19.19", + "@types/table": "^6.3.2", + "@types/tmp": "^0.2.6", "eslint": "^10.5.0", "eslint-config-oclif": "^6.0.162", "eslint-config-oclif-typescript": "^3.1.14", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 528c9afd2..564879518 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -731,18 +731,6 @@ importers: '@contentstack/cli-utilities': specifier: ^1.19.0 version: 1.19.0(@types/node@22.20.1) - '@types/diff2html': - specifier: ^3.0.3 - version: 3.0.3 - '@types/hogan.js': - specifier: ^3.0.5 - version: 3.0.5 - '@types/table': - specifier: ^6.3.2 - version: 6.3.2 - '@types/tmp': - specifier: ^0.2.6 - version: 0.2.6 axios: specifier: ^1.18.1 version: 1.19.0(debug@4.4.3) @@ -777,12 +765,21 @@ importers: '@oclif/plugin-help': specifier: ^6.2.49 version: 6.2.56 + '@types/diff2html': + specifier: ^3.0.3 + version: 3.0.3 '@types/jest': specifier: ^29.5.14 version: 29.5.14 '@types/node': specifier: ^22.19.19 version: 22.20.1 + '@types/table': + specifier: ^6.3.2 + version: 6.3.2 + '@types/tmp': + specifier: ^0.2.6 + version: 0.2.6 eslint: specifier: ^10.5.0 version: 10.8.0 @@ -3465,9 +3462,6 @@ packages: '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/hogan.js@3.0.5': - resolution: {integrity: sha512-/uRaY3HGPWyLqOyhgvW9Aa43BNnLZrNeQxl2p8wqId4UHMfPKolSB+U7BlZyO1ng7MkLnyEAItsBzCG0SDhqrA==} - '@types/http-cache-semantics@4.2.0': resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} @@ -12388,8 +12382,6 @@ snapshots: dependencies: '@types/node': 20.19.43 - '@types/hogan.js@3.0.5': {} - '@types/http-cache-semantics@4.2.0': {} '@types/http-errors@2.0.5': {} From d4f8e72469c2e34467b35eea5763acdc03d33f6b Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 5 Aug 2026 17:12:53 +0530 Subject: [PATCH 22/24] bumped versions --- packages/contentstack-apps-cli/package.json | 4 +- packages/contentstack-audit/README.md | 2 +- packages/contentstack-audit/package.json | 4 +- packages/contentstack-bootstrap/README.md | 2 +- packages/contentstack-bootstrap/package.json | 8 ++-- packages/contentstack-branches/README.md | 2 +- packages/contentstack-branches/package.json | 4 +- .../contentstack-bulk-operations/package.json | 4 +- packages/contentstack-bulk-publish/README.md | 39 ++++++++++++++----- .../contentstack-bulk-publish/package.json | 6 +-- .../package.json | 4 +- packages/contentstack-cli-tsgen/package.json | 4 +- packages/contentstack-clone/README.md | 2 +- packages/contentstack-clone/package.json | 8 ++-- packages/contentstack-content-type/README.md | 2 +- .../contentstack-content-type/package.json | 2 +- packages/contentstack-export-to-csv/README.md | 2 +- .../contentstack-export-to-csv/package.json | 4 +- packages/contentstack-export/README.md | 2 +- packages/contentstack-export/package.json | 8 ++-- .../package.json | 4 +- packages/contentstack-import-setup/README.md | 2 +- .../contentstack-import-setup/package.json | 4 +- packages/contentstack-import/README.md | 2 +- packages/contentstack-import/package.json | 8 ++-- .../contentstack-migrate-rte/package.json | 4 +- packages/contentstack-migration/README.md | 2 +- packages/contentstack-migration/package.json | 4 +- .../contentstack-query-export/package.json | 8 ++-- packages/contentstack-seed/README.md | 2 +- packages/contentstack-seed/package.json | 6 +-- packages/contentstack-variants/package.json | 4 +- 32 files changed, 92 insertions(+), 71 deletions(-) diff --git a/packages/contentstack-apps-cli/package.json b/packages/contentstack-apps-cli/package.json index 59b265e12..4fb2988b1 100644 --- a/packages/contentstack-apps-cli/package.json +++ b/packages/contentstack-apps-cli/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/apps-cli", - "version": "1.7.3", + "version": "1.7.4", "description": "App ClI", "author": "Contentstack CLI", "homepage": "https://github.com/contentstack/cli-plugins/tree/main/packages/contentstack-apps-cli", @@ -24,7 +24,7 @@ "@apollo/client": "^3.14.1", "@contentstack/cli-command": "~1.8.5", "@contentstack/cli-launch": "^1.11.1", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "adm-zip": "^0.5.17", "chalk": "^4.1.2", "lodash": "^4.18.1", diff --git a/packages/contentstack-audit/README.md b/packages/contentstack-audit/README.md index 0cbcc1f20..43ba0ad3b 100644 --- a/packages/contentstack-audit/README.md +++ b/packages/contentstack-audit/README.md @@ -16,7 +16,7 @@ $ npm install -g @contentstack/cli-audit $ csdx COMMAND running command... $ csdx (--version|-v) -@contentstack/cli-audit/1.19.5 darwin-arm64 node-v22.21.1 +@contentstack/cli-audit/1.21.0 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-audit/package.json b/packages/contentstack-audit/package.json index dbcdf02e5..039441212 100644 --- a/packages/contentstack-audit/package.json +++ b/packages/contentstack-audit/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-audit", - "version": "1.20.0", + "version": "1.21.0", "description": "Contentstack audit plugin", "author": "Contentstack CLI", "homepage": "https://github.com/contentstack/cli", @@ -19,7 +19,7 @@ ], "dependencies": { "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "@oclif/core": "^4.11.4", "chalk": "^4.1.2", "fast-csv": "^4.3.6", diff --git a/packages/contentstack-bootstrap/README.md b/packages/contentstack-bootstrap/README.md index 2aadfdf45..c132a306a 100644 --- a/packages/contentstack-bootstrap/README.md +++ b/packages/contentstack-bootstrap/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-cm-bootstrap $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-bootstrap/1.19.7 darwin-arm64 node-v22.21.1 +@contentstack/cli-cm-bootstrap/1.19.9 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-bootstrap/package.json b/packages/contentstack-bootstrap/package.json index 3e736cf0e..3bbd5fa74 100644 --- a/packages/contentstack-bootstrap/package.json +++ b/packages/contentstack-bootstrap/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-bootstrap", "description": "Bootstrap contentstack apps", - "version": "1.19.8", + "version": "1.19.9", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "scripts": { @@ -17,10 +17,10 @@ "lint": "eslint \"src/**/*.ts\"" }, "dependencies": { - "@contentstack/cli-cm-seed": "~1.15.9", + "@contentstack/cli-cm-seed": "~1.15.10", "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-config": "~1.21.0", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-config": "~1.21.1", + "@contentstack/cli-utilities": "~1.19.1", "@oclif/core": "^4.11.4", "inquirer": "8.2.7", "mkdirp": "^2.1.6", diff --git a/packages/contentstack-branches/README.md b/packages/contentstack-branches/README.md index df8c50b78..087f61cc8 100755 --- a/packages/contentstack-branches/README.md +++ b/packages/contentstack-branches/README.md @@ -23,7 +23,7 @@ $ npm install -g @contentstack/cli-cm-branches $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-branches/1.8.3 darwin-arm64 node-v22.21.1 +@contentstack/cli-cm-branches/1.8.5 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-branches/package.json b/packages/contentstack-branches/package.json index 82ba544a2..0e62e6ac1 100644 --- a/packages/contentstack-branches/package.json +++ b/packages/contentstack-branches/package.json @@ -1,12 +1,12 @@ { "name": "@contentstack/cli-cm-branches", "description": "Contentstack CLI plugin to do branches operations", - "version": "1.8.4", + "version": "1.8.5", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "@oclif/core": "^4.11.4", "chalk": "^4.1.2", "just-diff": "^6.0.2", diff --git a/packages/contentstack-bulk-operations/package.json b/packages/contentstack-bulk-operations/package.json index d38cabe92..54bddf2b3 100644 --- a/packages/contentstack-bulk-operations/package.json +++ b/packages/contentstack-bulk-operations/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-bulk-operations", - "version": "1.2.3", + "version": "1.2.4", "description": "Contentstack CLI plugin for bulk operations", "author": "Contentstack CLI", "homepage": "https://github.com/contentstack/cli-plugins/tree/main/packages/contentstack-bulk-operations", @@ -21,7 +21,7 @@ ], "dependencies": { "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "@contentstack/delivery-sdk": "^5.4.0", "@contentstack/management": "^1.30.3", "lodash": "^4.18.1", diff --git a/packages/contentstack-bulk-publish/README.md b/packages/contentstack-bulk-publish/README.md index 2f1726f24..a0604a625 100644 --- a/packages/contentstack-bulk-publish/README.md +++ b/packages/contentstack-bulk-publish/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-cm-bulk-publish $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-bulk-publish/1.12.1 darwin-arm64 node-v22.21.1 +@contentstack/cli-cm-bulk-publish/1.13.0 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND @@ -29,11 +29,11 @@ USAGE # Commands -* [`csdx cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]`](#csdx-cmassetspublish--a-value---retry-failed-value--e-value---folder-uid-value---bulk-publish-value--c-value--y---locales-value---branch-value---delivery-token-value---source-env-value) +* [`csdx cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--backup-dir ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]`](#csdx-cmassetspublish--a-value---retry-failed-value--e-value---folder-uid-value---backup-dir-value---bulk-publish-value--c-value--y---locales-value---branch-value---delivery-token-value---source-env-value) * [`csdx cm:assets:unpublish`](#csdx-cmassetsunpublish) * [`csdx cm:bulk-publish`](#csdx-cmbulk-publish) * [`csdx cm:entries:update-and-publish [-a ] [--retry-failed ] [--bulk-publish ] [--content-types ] [-t ] [-e ] [-c ] [-y] [--locales ] [--branch ]`](#csdx-cmentriesupdate-and-publish--a-value---retry-failed-value---bulk-publish-value---content-types-value--t-value--e-value--c-value--y---locales-value---branch-value) -* [`csdx cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]`](#csdx-cmassetspublish--a-value---retry-failed-value--e-value---folder-uid-value---bulk-publish-value--c-value--y---locales-value---branch-value---delivery-token-value---source-env-value) +* [`csdx cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--backup-dir ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]`](#csdx-cmassetspublish--a-value---retry-failed-value--e-value---folder-uid-value---backup-dir-value---bulk-publish-value--c-value--y---locales-value---branch-value---delivery-token-value---source-env-value) * [`csdx cm:bulk-publish:clear`](#csdx-cmbulk-publishclear) * [`csdx cm:bulk-publish:configure`](#csdx-cmbulk-publishconfigure) * [`csdx cm:bulk-publish:cross-publish [-a ] [--retry-failed ] [--bulk-publish ] [--content-type ] [--locales ] [--source-env ] [--environments ] [--delivery-token ] [-c ] [-y] [--branch ] [--onlyAssets] [--onlyEntries] [--include-variants]`](#csdx-cmbulk-publishcross-publish--a-value---retry-failed-value---bulk-publish-value---content-type-value---locales-value---source-env-value---environments-value---delivery-token-value--c-value--y---branch-value---onlyassets---onlyentries---include-variants) @@ -55,14 +55,15 @@ USAGE * [`csdx cm:stacks:publish-revert`](#csdx-cmstackspublish-revert) * [`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:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]` +## `csdx cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--backup-dir ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]` Publish assets to the specified environments ``` USAGE - $ csdx cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--bulk-publish - ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ] + $ csdx cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--backup-dir + ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token + ] [--source-env ] FLAGS -B, --branch= [default: main] The name of the branch where you want to perform the bulk publish @@ -80,6 +81,10 @@ FLAGS locales, specify the codes separated by spaces. -y, --yes Set it to true to process the command with the current configuration. --api-version= API version to be used. Values [Default: 3, Nested Reference Publishing: 3.2]. + --backup-dir= (optional) Path to the import backup directory. When set, each imported asset is + published only to the environments and locales it was published to in the source stack + (read from the backup’s publish details and asset UID mapping), with asset-scan gating + applied. Intended for the post-import publish flow. --bulk-publish= [default: true] Set this flag to use Contentstack’s Bulk Publish APIs. It is true, by default. --delivery-token= The delivery token of the source environment. @@ -139,6 +144,12 @@ EXAMPLES Using --stack-api-key flag $ csdx cm:assets:publish --environments [ENVIRONMENT 1] [ENVIRONMENT 2] --locales [LOCALE] --stack-api-key [STACK API KEY] + + + + Using --backup-dir flag (publish imported assets to their original environments after asset scanning) + + $ csdx cm:assets:publish --backup-dir [PATH TO IMPORT BACKUP DIR] --stack-api-key [STACK API KEY] ``` _See code: [src/commands/cm/assets/publish.js](https://github.com/contentstack/cli/blob/main/packages/contentstack-bulk-publish/src/commands/cm/assets/publish.js)_ @@ -311,15 +322,15 @@ EXAMPLES $ csdx cm:entries:update-and-publish --content-types [CONTENT TYPE 1] [CONTENT TYPE 2] -e [ENVIRONMENT 1] [ENVIRONMENT 2] --locales [LOCALE 1] [LOCALE 2] --stack-api-key [STACK API KEY] ``` -## `csdx cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]` +## `csdx cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] [--backup-dir ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] [--source-env ]` Publish assets to the specified environments ``` USAGE $ csdx cm:bulk-publish:assets cm:assets:publish [-a ] [--retry-failed ] [-e ] [--folder-uid ] - [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] [--delivery-token ] - [--source-env ] + [--backup-dir ] [--bulk-publish ] [-c ] [-y] [--locales ] [--branch ] + [--delivery-token ] [--source-env ] FLAGS -B, --branch= [default: main] The name of the branch where you want to perform the bulk publish @@ -337,6 +348,10 @@ FLAGS locales, specify the codes separated by spaces. -y, --yes Set it to true to process the command with the current configuration. --api-version= API version to be used. Values [Default: 3, Nested Reference Publishing: 3.2]. + --backup-dir= (optional) Path to the import backup directory. When set, each imported asset is + published only to the environments and locales it was published to in the source stack + (read from the backup’s publish details and asset UID mapping), with asset-scan gating + applied. Intended for the post-import publish flow. --bulk-publish= [default: true] Set this flag to use Contentstack’s Bulk Publish APIs. It is true, by default. --delivery-token= The delivery token of the source environment. @@ -396,6 +411,12 @@ EXAMPLES Using --stack-api-key flag $ csdx cm:assets:publish --environments [ENVIRONMENT 1] [ENVIRONMENT 2] --locales [LOCALE] --stack-api-key [STACK API KEY] + + + + Using --backup-dir flag (publish imported assets to their original environments after asset scanning) + + $ csdx cm:assets:publish --backup-dir [PATH TO IMPORT BACKUP DIR] --stack-api-key [STACK API KEY] ``` ## `csdx cm:bulk-publish:clear` diff --git a/packages/contentstack-bulk-publish/package.json b/packages/contentstack-bulk-publish/package.json index 6c4f3bdb3..b67c31605 100644 --- a/packages/contentstack-bulk-publish/package.json +++ b/packages/contentstack-bulk-publish/package.json @@ -1,13 +1,13 @@ { "name": "@contentstack/cli-cm-bulk-publish", "description": "Contentstack CLI plugin for bulk publish actions", - "version": "1.12.2", + "version": "1.13.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-config": "~1.21.0", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-config": "~1.21.1", + "@contentstack/cli-utilities": "~1.19.1", "@oclif/core": "^4.11.4", "chalk": "^4.1.2", "dotenv": "^16.6.1", diff --git a/packages/contentstack-cli-cm-regex-validate/package.json b/packages/contentstack-cli-cm-regex-validate/package.json index 9283d45bb..d4d3557d3 100644 --- a/packages/contentstack-cli-cm-regex-validate/package.json +++ b/packages/contentstack-cli-cm-regex-validate/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-regex-validate", "description": "Validate Fields with Regex Property of Content Type and Global Field in a Stack", - "version": "1.0.2", + "version": "1.0.3", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-cm-regex-validate/issues", "devDependencies": { @@ -66,7 +66,7 @@ }, "dependencies": { "@contentstack/cli-command": "^1.8.5", - "@contentstack/cli-utilities": "^1.19.0", + "@contentstack/cli-utilities": "^1.19.1", "@contentstack/management": "^1.30.4", "cli-table3": "^0.6.5", "cli-ux": "^6.0.9", diff --git a/packages/contentstack-cli-tsgen/package.json b/packages/contentstack-cli-tsgen/package.json index 74fa09c8c..311deba2d 100644 --- a/packages/contentstack-cli-tsgen/package.json +++ b/packages/contentstack-cli-tsgen/package.json @@ -1,12 +1,12 @@ { "name": "contentstack-cli-tsgen", "description": "Generate TypeScript typings from a Stack.", - "version": "4.10.2", + "version": "4.10.3", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "@contentstack/types-generator": "^3.10.2" }, "devDependencies": { diff --git a/packages/contentstack-clone/README.md b/packages/contentstack-clone/README.md index a24edc651..665f31bd7 100644 --- a/packages/contentstack-clone/README.md +++ b/packages/contentstack-clone/README.md @@ -16,7 +16,7 @@ $ npm install -g @contentstack/cli-cm-clone $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-clone/1.21.8 darwin-arm64 node-v22.21.1 +@contentstack/cli-cm-clone/1.21.11 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-clone/package.json b/packages/contentstack-clone/package.json index 3f4911dc6..5df132650 100644 --- a/packages/contentstack-clone/package.json +++ b/packages/contentstack-clone/package.json @@ -1,15 +1,15 @@ { "name": "@contentstack/cli-cm-clone", "description": "Contentstack stack clone plugin", - "version": "1.21.10", + "version": "1.21.11", "author": "Contentstack", "bugs": "https://github.com/rohitmishra209/cli-cm-clone/issues", "dependencies": { "@colors/colors": "^1.6.0", - "@contentstack/cli-cm-export": "~1.26.0", - "@contentstack/cli-cm-import": "~1.34.0", + "@contentstack/cli-cm-export": "~1.27.0", + "@contentstack/cli-cm-import": "~1.35.0", "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "@oclif/core": "^4.11.4", "chalk": "^4.1.2", "inquirer": "8.2.7", diff --git a/packages/contentstack-content-type/README.md b/packages/contentstack-content-type/README.md index 454362922..45ee71cf6 100644 --- a/packages/contentstack-content-type/README.md +++ b/packages/contentstack-content-type/README.md @@ -44,7 +44,7 @@ $ npm install -g contentstack-cli-content-type $ csdx COMMAND running command... $ csdx (--version) -contentstack-cli-content-type/1.5.1 darwin-arm64 node-v22.21.1 +contentstack-cli-content-type/1.5.4 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-content-type/package.json b/packages/contentstack-content-type/package.json index 13180fcac..762ec1660 100644 --- a/packages/contentstack-content-type/package.json +++ b/packages/contentstack-content-type/package.json @@ -6,7 +6,7 @@ "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { "@contentstack/cli-command": "^1.8.5", - "@contentstack/cli-utilities": "^1.19.0", + "@contentstack/cli-utilities": "^1.19.1", "axios": "^1.18.1", "cli-ux": "^6.0.9", "diff": "^9.0.0", diff --git a/packages/contentstack-export-to-csv/README.md b/packages/contentstack-export-to-csv/README.md index 675c62160..8d1579a0e 100644 --- a/packages/contentstack-export-to-csv/README.md +++ b/packages/contentstack-export-to-csv/README.md @@ -23,7 +23,7 @@ $ npm install -g @contentstack/cli-cm-export-to-csv $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-export-to-csv/1.12.5 darwin-arm64 node-v22.21.1 +@contentstack/cli-cm-export-to-csv/1.12.8 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-export-to-csv/package.json b/packages/contentstack-export-to-csv/package.json index 77d832d29..73214ab74 100644 --- a/packages/contentstack-export-to-csv/package.json +++ b/packages/contentstack-export-to-csv/package.json @@ -1,12 +1,12 @@ { "name": "@contentstack/cli-cm-export-to-csv", "description": "Export entries, taxonomies, terms, or organization users to CSV", - "version": "1.12.7", + "version": "1.12.8", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "@oclif/core": "^4.11.4", "fast-csv": "^4.3.6", "inquirer": "8.2.7", diff --git a/packages/contentstack-export/README.md b/packages/contentstack-export/README.md index e587ae4e2..53ddf68d3 100755 --- a/packages/contentstack-export/README.md +++ b/packages/contentstack-export/README.md @@ -24,7 +24,7 @@ $ npm install -g @contentstack/cli-cm-export $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-export/1.25.2 darwin-arm64 node-v22.21.1 +@contentstack/cli-cm-export/1.27.0 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-export/package.json b/packages/contentstack-export/package.json index 768acdd66..c3b72d680 100644 --- a/packages/contentstack-export/package.json +++ b/packages/contentstack-export/package.json @@ -1,13 +1,13 @@ { "name": "@contentstack/cli-cm-export", "description": "Contentstack CLI plugin to export content from stack", - "version": "1.26.0", + "version": "1.27.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", - "@contentstack/cli-variants": "~1.6.1", + "@contentstack/cli-utilities": "~1.19.1", + "@contentstack/cli-variants": "~1.6.2", "@oclif/core": "^4.11.4", "async": "^3.2.6", "big-json": "^3.2.0", @@ -22,7 +22,7 @@ }, "devDependencies": { "@contentstack/cli-auth": "~1.8.5", - "@contentstack/cli-config": "~1.21.0", + "@contentstack/cli-config": "~1.21.1", "@contentstack/cli-dev-dependencies": "^1.3.1", "@oclif/plugin-help": "^6.2.28", "@oclif/test": "^4.1.18", diff --git a/packages/contentstack-external-migrate/package.json b/packages/contentstack-external-migrate/package.json index 24c2aff43..e693f0112 100644 --- a/packages/contentstack-external-migrate/package.json +++ b/packages/contentstack-external-migrate/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-external-migrate", - "version": "1.0.0-alpha.6", + "version": "1.0.0-alpha.7", "description": "Migrate from external source to Contentstack", "author": "Contentstack", "license": "MIT", @@ -23,7 +23,7 @@ }, "dependencies": { "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "@contentstack/json-rte-serializer": "~2.1.0", "@contentstack/marketplace-sdk": "~1.5.3", "@oclif/core": "^4.8.0", diff --git a/packages/contentstack-import-setup/README.md b/packages/contentstack-import-setup/README.md index b7f0f9884..7fcf07388 100644 --- a/packages/contentstack-import-setup/README.md +++ b/packages/contentstack-import-setup/README.md @@ -23,7 +23,7 @@ $ npm install -g @contentstack/cli-cm-import-setup $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-import-setup/1.8.5 darwin-arm64 node-v22.21.1 +@contentstack/cli-cm-import-setup/1.8.8 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-import-setup/package.json b/packages/contentstack-import-setup/package.json index 6f3e03a1c..4d3c7d480 100644 --- a/packages/contentstack-import-setup/package.json +++ b/packages/contentstack-import-setup/package.json @@ -1,12 +1,12 @@ { "name": "@contentstack/cli-cm-import-setup", "description": "Contentstack CLI plugin to setup the mappers and configurations for the import command", - "version": "1.8.7", + "version": "1.8.8", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "@oclif/core": "^4.11.4", "big-json": "^3.2.0", "chalk": "^4.1.2", diff --git a/packages/contentstack-import/README.md b/packages/contentstack-import/README.md index eb49bcea3..19c133211 100644 --- a/packages/contentstack-import/README.md +++ b/packages/contentstack-import/README.md @@ -24,7 +24,7 @@ $ npm install -g @contentstack/cli-cm-import $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-import/1.33.4 darwin-arm64 node-v22.21.1 +@contentstack/cli-cm-import/1.35.0 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-import/package.json b/packages/contentstack-import/package.json index 396725b14..5d929524e 100644 --- a/packages/contentstack-import/package.json +++ b/packages/contentstack-import/package.json @@ -1,14 +1,14 @@ { "name": "@contentstack/cli-cm-import", "description": "Contentstack CLI plugin to import content into stack", - "version": "1.34.0", + "version": "1.35.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-audit": "~1.20.0", + "@contentstack/cli-audit": "~1.21.0", "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", - "@contentstack/cli-variants": "~1.6.1", + "@contentstack/cli-utilities": "~1.19.1", + "@contentstack/cli-variants": "~1.6.2", "@oclif/core": "^4.11.4", "big-json": "^3.2.0", "bluebird": "^3.7.2", diff --git a/packages/contentstack-migrate-rte/package.json b/packages/contentstack-migrate-rte/package.json index 5b66a127c..ca9abb13c 100644 --- a/packages/contentstack-migrate-rte/package.json +++ b/packages/contentstack-migrate-rte/package.json @@ -1,14 +1,14 @@ { "name": "@contentstack/cli-cm-migrate-rte", "description": "Contentstack CLI plugin to migrate HTML RTE to JSON RTE", - "version": "1.7.3", + "version": "1.7.4", "author": "contentstack", "bugs": { "url": "https://github.com/contentstack/cli-plugins/issues" }, "dependencies": { "@contentstack/cli-command": "1.8.5", - "@contentstack/cli-utilities": "1.19.0", + "@contentstack/cli-utilities": "1.19.1", "@contentstack/json-rte-serializer": "~2.1.0", "@oclif/core": "^4.12.0", "@oclif/plugin-help": "^6.2.53", diff --git a/packages/contentstack-migration/README.md b/packages/contentstack-migration/README.md index a2ba7d349..caa67d5fb 100644 --- a/packages/contentstack-migration/README.md +++ b/packages/contentstack-migration/README.md @@ -21,7 +21,7 @@ $ npm install -g @contentstack/cli-migration $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-migration/1.12.4 darwin-arm64 node-v22.21.1 +@contentstack/cli-migration/1.12.6 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-migration/package.json b/packages/contentstack-migration/package.json index 31e949af9..eb2b92437 100644 --- a/packages/contentstack-migration/package.json +++ b/packages/contentstack-migration/package.json @@ -1,11 +1,11 @@ { "name": "@contentstack/cli-migration", - "version": "1.12.5", + "version": "1.12.6", "author": "@contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "@oclif/core": "^4.11.4", "async": "^3.2.6", "callsites": "^3.1.0", diff --git a/packages/contentstack-query-export/package.json b/packages/contentstack-query-export/package.json index 8e111e94f..bcfbba299 100644 --- a/packages/contentstack-query-export/package.json +++ b/packages/contentstack-query-export/package.json @@ -1,14 +1,14 @@ { "name": "@contentstack/cli-cm-export-query", "description": "Contentstack CLI plugin to export content from stack", - "version": "1.0.6", + "version": "1.0.7", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-cm-export": "~1.26.0", + "@contentstack/cli-cm-export": "~1.27.0", "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", - "@contentstack/cli-variants": "~1.6.1", + "@contentstack/cli-utilities": "~1.19.1", + "@contentstack/cli-variants": "~1.6.2", "@oclif/core": "^4.11.4", "async": "^3.2.6", "big-json": "^3.2.0", diff --git a/packages/contentstack-seed/README.md b/packages/contentstack-seed/README.md index 6004904c5..48ac38f64 100644 --- a/packages/contentstack-seed/README.md +++ b/packages/contentstack-seed/README.md @@ -15,7 +15,7 @@ $ npm install -g @contentstack/cli-cm-seed $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-seed/1.15.7 darwin-arm64 node-v22.21.1 +@contentstack/cli-cm-seed/1.15.10 darwin-arm64 node-v24.18.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-seed/package.json b/packages/contentstack-seed/package.json index 6caa4768c..2cf29abbb 100644 --- a/packages/contentstack-seed/package.json +++ b/packages/contentstack-seed/package.json @@ -1,13 +1,13 @@ { "name": "@contentstack/cli-cm-seed", "description": "create a Stack from existing content types, entries, assets, etc.", - "version": "1.15.9", + "version": "1.15.10", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-cm-import": "~1.34.0", + "@contentstack/cli-cm-import": "~1.35.0", "@contentstack/cli-command": "~1.8.5", - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "inquirer": "8.2.7", "mkdirp": "^1.0.4", "tar": "^7.5.19", diff --git a/packages/contentstack-variants/package.json b/packages/contentstack-variants/package.json index c3f86bdb4..ea97d776a 100644 --- a/packages/contentstack-variants/package.json +++ b/packages/contentstack-variants/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-variants", - "version": "1.6.1", + "version": "1.6.2", "description": "Variants plugin", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -28,7 +28,7 @@ "typescript": "^5.8.3" }, "dependencies": { - "@contentstack/cli-utilities": "~1.19.0", + "@contentstack/cli-utilities": "~1.19.1", "@oclif/core": "^4.11.4", "lodash": "^4.18.1", "mkdirp": "^1.0.4", From 5b228f229f6d9e7a21a0e77b2e90aead15d45045 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 5 Aug 2026 18:57:24 +0530 Subject: [PATCH 23/24] updated lock file --- pnpm-lock.yaml | 73 +++++++------------------------------------------- 1 file changed, 9 insertions(+), 64 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 564879518..5f04a04ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14732,8 +14732,8 @@ snapshots: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) eslint-config-xo-space: 0.35.0(eslint@10.8.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 15.7.0(eslint@10.8.0) eslint-plugin-perfectionist: 2.11.0(eslint@10.8.0)(typescript@5.9.3) @@ -14814,8 +14814,8 @@ snapshots: '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint-config-xo: 0.49.0(eslint@10.8.0) eslint-config-xo-space: 0.35.0(eslint@10.8.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 17.24.0(eslint@10.8.0)(typescript@5.9.3) @@ -14895,21 +14895,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.3(supports-color@8.1.1) - eslint: 10.8.0 - get-tsconfig: 4.14.1 - is-bun-module: 2.0.0 - stable-hash: 0.0.5 - tinyglobby: 0.2.17 - unrs-resolver: 1.12.2 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) - transitivePeerDependencies: - - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0): dependencies: '@nolyfill/is-core-module': 1.0.39 @@ -14921,7 +14906,7 @@ snapshots: tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) transitivePeerDependencies: - supports-color @@ -14936,17 +14921,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) - eslint: 10.8.0 - eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) - transitivePeerDependencies: - - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: debug: 3.2.7 @@ -14969,14 +14943,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) transitivePeerDependencies: - supports-color @@ -15039,35 +15013,6 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 10.8.0 - eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) - hasown: 2.0.4 - is-core-module: 2.16.2 - is-glob: 4.0.3 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.10 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 @@ -15126,7 +15071,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15137,7 +15082,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 From ab4e9058510c67cd6de4bd84f7b8b9c66afaffa8 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 5 Aug 2026 19:04:48 +0530 Subject: [PATCH 24/24] updated lock file --- .talismanrc | 2 +- pnpm-lock.yaml | 278 ++++++++++++++++++++++++++----------------------- 2 files changed, 151 insertions(+), 129 deletions(-) diff --git a/.talismanrc b/.talismanrc index 5438b59b4..1ecf6680c 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,5 +1,5 @@ fileignoreconfig: - filename: pnpm-lock.yaml - checksum: 3b163065d39a7c186f29077bd7d89ee1dcd159a3e20e58e29273f0b7b22c26a1 + checksum: 90ca97ef1a06fb5b7d8071f1317e079de6a34fce91559f70f80d9d958b5a834e version: '1.0' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0335b9422..ff53ea72f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,8 +36,8 @@ importers: specifier: ^1.11.1 version: 1.11.1(@types/node@20.19.43)(tslib@2.8.1)(typescript@5.9.3) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@20.19.43) + specifier: ~1.19.1 + version: 1.19.1(@types/node@20.19.43) adm-zip: specifier: ^0.6.0 version: 0.6.0 @@ -133,8 +133,8 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@20.19.43) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@20.19.43) + specifier: ~1.19.1 + version: 1.19.1(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 version: 4.13.3 @@ -206,17 +206,17 @@ importers: packages/contentstack-bootstrap: dependencies: '@contentstack/cli-cm-seed': - specifier: ~1.15.9 + specifier: ~1.15.10 version: link:../contentstack-seed '@contentstack/cli-command': specifier: ~1.8.5 version: 1.8.5(@types/node@14.18.63) '@contentstack/cli-config': - specifier: ~1.21.0 - version: 1.21.0(@types/node@14.18.63) + specifier: ~1.21.1 + version: 1.21.1(@types/node@14.18.63) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.19.1 + version: 1.19.1(@types/node@14.18.63) '@oclif/core': specifier: ^4.11.4 version: 4.13.3 @@ -273,8 +273,8 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@22.20.1) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@22.20.1) + specifier: ~1.19.1 + version: 1.19.1(@types/node@22.20.1) '@oclif/core': specifier: ^4.11.4 version: 4.13.3 @@ -328,8 +328,8 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@20.19.43) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@20.19.43) + specifier: ~1.19.1 + version: 1.19.1(@types/node@20.19.43) '@contentstack/delivery-sdk': specifier: ^5.4.0 version: 5.5.1 @@ -431,11 +431,11 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@22.20.1) '@contentstack/cli-config': - specifier: ~1.21.0 - version: 1.21.0(@types/node@22.20.1) + specifier: ~1.21.1 + version: 1.21.1(@types/node@22.20.1) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@22.20.1) + specifier: ~1.19.1 + version: 1.19.1(@types/node@22.20.1) '@oclif/core': specifier: ^4.11.4 version: 4.13.3 @@ -483,8 +483,8 @@ importers: specifier: ^1.8.5 version: 1.8.5(@types/node@18.19.130) '@contentstack/cli-utilities': - specifier: ^1.19.0 - version: 1.19.0(@types/node@18.19.130) + specifier: ^1.19.1 + version: 1.19.1(@types/node@18.19.130) '@contentstack/management': specifier: ^1.30.4 version: 1.31.1 @@ -586,8 +586,8 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@22.20.1) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@22.20.1) + specifier: ~1.19.1 + version: 1.19.1(@types/node@22.20.1) '@contentstack/types-generator': specifier: ^3.10.2 version: 3.10.2(graphql@16.14.2) @@ -641,17 +641,17 @@ importers: specifier: ^1.6.0 version: 1.6.0 '@contentstack/cli-cm-export': - specifier: ~1.26.0 + specifier: ~1.27.0 version: link:../contentstack-export '@contentstack/cli-cm-import': - specifier: ~1.34.0 + specifier: ~1.35.0 version: link:../contentstack-import '@contentstack/cli-command': specifier: ~1.8.5 version: 1.8.5(@types/node@14.18.63) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.19.1 + version: 1.19.1(@types/node@14.18.63) '@oclif/core': specifier: ^4.11.4 version: 4.13.3 @@ -729,8 +729,8 @@ importers: specifier: ^1.8.5 version: 1.8.5(@types/node@22.20.1) '@contentstack/cli-utilities': - specifier: ^1.19.0 - version: 1.19.0(@types/node@22.20.1) + specifier: ^1.19.1 + version: 1.19.1(@types/node@22.20.1) axios: specifier: ^1.18.1 version: 1.19.0(debug@4.4.3) @@ -814,10 +814,10 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@22.20.1) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@22.20.1) + specifier: ~1.19.1 + version: 1.19.1(@types/node@22.20.1) '@contentstack/cli-variants': - specifier: ~1.6.1 + specifier: ~1.6.2 version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 @@ -857,8 +857,8 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@22.20.1) '@contentstack/cli-config': - specifier: ~1.21.0 - version: 1.21.0(@types/node@22.20.1) + specifier: ~1.21.1 + version: 1.21.1(@types/node@22.20.1) '@contentstack/cli-dev-dependencies': specifier: ^1.3.1 version: 1.3.1 @@ -926,8 +926,8 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@20.19.43) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@20.19.43) + specifier: ~1.19.1 + version: 1.19.1(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 version: 4.13.3 @@ -993,8 +993,8 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@20.19.43) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@20.19.43) + specifier: ~1.19.1 + version: 1.19.1(@types/node@20.19.43) '@contentstack/json-rte-serializer': specifier: ~2.1.0 version: 2.1.0 @@ -1066,16 +1066,16 @@ importers: packages/contentstack-import: dependencies: '@contentstack/cli-audit': - specifier: ~1.20.0 + specifier: ~1.21.0 version: link:../contentstack-audit '@contentstack/cli-command': specifier: ~1.8.5 version: 1.8.5(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.19.1 + version: 1.19.1(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-variants': - specifier: ~1.6.1 + specifier: ~1.6.2 version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 @@ -1166,8 +1166,8 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@14.18.63) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.19.1 + version: 1.19.1(@types/node@14.18.63) '@oclif/core': specifier: ^4.11.4 version: 4.13.3 @@ -1240,10 +1240,10 @@ importers: dependencies: '@contentstack/cli-command': specifier: 1.8.5 - version: 1.8.5(@types/node@18.19.130) + version: 1.8.5(@types/node@14.18.63) '@contentstack/cli-utilities': - specifier: 1.19.0 - version: 1.19.0(@types/node@18.19.130) + specifier: 1.19.1 + version: 1.19.1(@types/node@14.18.63) '@contentstack/json-rte-serializer': specifier: ~2.1.0 version: 2.1.0 @@ -1312,8 +1312,8 @@ importers: specifier: ~1.8.5 version: 1.8.5(@types/node@14.18.63) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.19.1 + version: 1.19.1(@types/node@14.18.63) '@oclif/core': specifier: ^4.11.4 version: 4.13.3 @@ -1388,16 +1388,16 @@ importers: packages/contentstack-query-export: dependencies: '@contentstack/cli-cm-export': - specifier: ~1.26.0 + specifier: ~1.27.0 version: link:../contentstack-export '@contentstack/cli-command': specifier: ~1.8.5 version: 1.8.5(@types/node@20.19.43) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@20.19.43) + specifier: ~1.19.1 + version: 1.19.1(@types/node@20.19.43) '@contentstack/cli-variants': - specifier: ~1.6.1 + specifier: ~1.6.2 version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 @@ -1503,14 +1503,14 @@ importers: packages/contentstack-seed: dependencies: '@contentstack/cli-cm-import': - specifier: ~1.34.0 + specifier: ~1.35.0 version: link:../contentstack-import '@contentstack/cli-command': specifier: ~1.8.5 version: 1.8.5(@types/node@14.18.63) '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.19.1 + version: 1.19.1(@types/node@14.18.63) inquirer: specifier: 8.2.7 version: 8.2.7(@types/node@14.18.63) @@ -1570,8 +1570,8 @@ importers: packages/contentstack-variants: dependencies: '@contentstack/cli-utilities': - specifier: ~1.19.0 - version: 1.19.0(@types/node@20.19.43) + specifier: ~1.19.1 + version: 1.19.1(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 version: 4.13.3 @@ -2317,8 +2317,8 @@ packages: resolution: {integrity: sha512-gwg04KOYZUDdr5vgjRfGSdIVIPZ/Qfnyv0tG+9ihpZwVl7JxsJ9Rpg8olAtw1oy+LqjYZzc6cx0uaCFO3c/Skg==} engines: {node: '>=22.0.0'} - '@contentstack/cli-config@1.21.0': - resolution: {integrity: sha512-vxSuMf7qjAzxrAIkdsYX4YGDOxq1dlX0RMFwLbzMuEBINOuxGr6WsryXxeR/5QCkD1kb07qh2puq4FxBjPn4HQ==} + '@contentstack/cli-config@1.21.1': + resolution: {integrity: sha512-T7acgZVgIv2Q7rkSpuYqHHHJJ1RyS4tmaegQFAamQbUfrVOz/eYf3Oo3YXYDQn8lFPdmr5zHAbVykLZIp1PLBQ==} engines: {node: '>=22.0.0'} '@contentstack/cli-dev-dependencies@1.3.1': @@ -2329,8 +2329,8 @@ packages: engines: {node: '>=22.0.0'} hasBin: true - '@contentstack/cli-utilities@1.19.0': - resolution: {integrity: sha512-QkQ2KakgMLYt2oa7bov1RHb4N1YjJqGqGDkh3oiTfgN+c5FvqoyaRUrngQCjefat3GLd2MY2SOmgILcBCghTpw==} + '@contentstack/cli-utilities@1.19.1': + resolution: {integrity: sha512-gf7nWljHzsEIV+sOZra4pY3M5wojad2Iy3gPDFKl/F2VeH6GynGERVyz7hKjQgefBBitV6MGZKNIN+TVtR4gVA==} '@contentstack/core@1.5.0': resolution: {integrity: sha512-GTNjPYqi49EFpdGp+6UGdY55OoM48Rc7UyCUTYPdzcmrvYlmiL0JKqyozShEVaqrDMdaNBQZu8PRvRA7TpDVNA==} @@ -3054,42 +3054,36 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.2.2': resolution: {integrity: sha512-B5G/zJdHaoJn9vD50eGHWkiWfmq8Uhi3IiLPJTzmZTrAalk1bztUikSXo0qga18ibE0IXboyeMUnhPjhAJ45wQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] '@rolldown/binding-linux-ppc64-gnu@1.2.2': resolution: {integrity: sha512-6mC/awzKka8W6EoekjegpfGkjz8jXWDX63pqu/HYVpyKtZfu65Jsh4QAH3Kej3CAv/c1oGX7psTmFEbr0mDxLA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-s390x-gnu@1.2.2': resolution: {integrity: sha512-412MX9fJLdA1IK28EZnc8jYv2HRTleOZgfLQumJ5zy7OeJLZlg/CETwFaXjNmGVxG51cFHpKLqb5LKvBC+HsHA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - libc: [glibc] '@rolldown/binding-linux-x64-gnu@1.2.2': resolution: {integrity: sha512-Q/+HI/ToJafZ1iCqGgVQXUEkIjufHCTF0gBQ2a5o3cg7GJ2h0qyq3nvvSmU+bGda2/7ygXpTY4TM6gO9OhQ0ZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-x64-musl@1.2.2': resolution: {integrity: sha512-ZKp/w41n6wCvxzxQHtQSbuphfX3Y4cCvbjkKHusrLx4lh+JWLTU7StSltO/DKARISzbj368d+qUaCjI8K2wzXw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] '@rolldown/binding-openharmony-arm64@1.2.2': resolution: {integrity: sha512-pxE6xD4KS3eAROkKK5yrhB9/3+vhlhVGMvlQLbdpzrBGDbKrnzx3RLwPaHvasLo6jgaiBLn7e04Df9C4tYhjmA==} @@ -3195,79 +3189,66 @@ packages: resolution: {integrity: sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.62.4': resolution: {integrity: sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.62.4': resolution: {integrity: sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.62.4': resolution: {integrity: sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.62.4': resolution: {integrity: sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==} cpu: [loong64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.62.4': resolution: {integrity: sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==} cpu: [loong64] os: [linux] - libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.62.4': resolution: {integrity: sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.62.4': resolution: {integrity: sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==} cpu: [ppc64] os: [linux] - libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.62.4': resolution: {integrity: sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.62.4': resolution: {integrity: sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==} cpu: [riscv64] os: [linux] - libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.62.4': resolution: {integrity: sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.62.4': resolution: {integrity: sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.62.4': resolution: {integrity: sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-openbsd-x64@4.62.4': resolution: {integrity: sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==} @@ -3878,61 +3859,51 @@ packages: resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} cpu: [arm64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.12.2': resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} cpu: [arm64] os: [linux] - libc: [musl] '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} cpu: [loong64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-loong64-musl@1.12.2': resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} cpu: [loong64] os: [linux] - libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} cpu: [ppc64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} cpu: [riscv64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} cpu: [riscv64] os: [linux] - libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} cpu: [s390x] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.12.2': resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} cpu: [x64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.12.2': resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} cpu: [x64] os: [linux] - libc: [musl] '@unrs/resolver-binding-openharmony-arm64@1.12.2': resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} @@ -6848,28 +6819,24 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] lightningcss-linux-arm64-musl@1.33.0: resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [musl] lightningcss-linux-x64-gnu@1.33.0: resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [glibc] lightningcss-linux-x64-musl@1.33.0: resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [musl] lightningcss-win32-arm64-msvc@1.33.0: resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} @@ -10145,7 +10112,7 @@ snapshots: '@contentstack/cli-auth@1.8.5(@types/node@22.20.1)': dependencies: '@contentstack/cli-command': 1.8.5(@types/node@22.20.1) - '@contentstack/cli-utilities': 1.19.0(@types/node@22.20.1) + '@contentstack/cli-utilities': 1.19.1(@types/node@22.20.1) '@oclif/core': 4.13.3 otplib: 12.0.1 transitivePeerDependencies: @@ -10155,7 +10122,7 @@ snapshots: '@contentstack/cli-command@1.8.5(@types/node@14.18.63)': dependencies: - '@contentstack/cli-utilities': 1.19.0(@types/node@14.18.63) + '@contentstack/cli-utilities': 1.19.1(@types/node@14.18.63) '@oclif/core': 4.13.3 contentstack: 3.27.1 transitivePeerDependencies: @@ -10165,7 +10132,7 @@ snapshots: '@contentstack/cli-command@1.8.5(@types/node@14.18.63)(debug@4.4.3)': dependencies: - '@contentstack/cli-utilities': 1.19.0(@types/node@14.18.63)(debug@4.4.3) + '@contentstack/cli-utilities': 1.19.1(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': 4.13.3 contentstack: 3.27.1 transitivePeerDependencies: @@ -10175,7 +10142,7 @@ snapshots: '@contentstack/cli-command@1.8.5(@types/node@18.19.130)': dependencies: - '@contentstack/cli-utilities': 1.19.0(@types/node@18.19.130) + '@contentstack/cli-utilities': 1.19.1(@types/node@18.19.130) '@oclif/core': 4.13.3 contentstack: 3.27.1 transitivePeerDependencies: @@ -10185,7 +10152,7 @@ snapshots: '@contentstack/cli-command@1.8.5(@types/node@20.19.43)': dependencies: - '@contentstack/cli-utilities': 1.19.0(@types/node@20.19.43) + '@contentstack/cli-utilities': 1.19.1(@types/node@20.19.43) '@oclif/core': 4.13.3 contentstack: 3.27.1 transitivePeerDependencies: @@ -10195,7 +10162,7 @@ snapshots: '@contentstack/cli-command@1.8.5(@types/node@22.20.1)': dependencies: - '@contentstack/cli-utilities': 1.19.0(@types/node@22.20.1) + '@contentstack/cli-utilities': 1.19.1(@types/node@22.20.1) '@oclif/core': 4.13.3 contentstack: 3.27.1 transitivePeerDependencies: @@ -10203,10 +10170,10 @@ snapshots: - debug - supports-color - '@contentstack/cli-config@1.21.0(@types/node@14.18.63)': + '@contentstack/cli-config@1.21.1(@types/node@14.18.63)': dependencies: '@contentstack/cli-command': 1.8.5(@types/node@14.18.63) - '@contentstack/cli-utilities': 1.19.0(@types/node@14.18.63) + '@contentstack/cli-utilities': 1.19.1(@types/node@14.18.63) '@contentstack/utils': 1.9.1 '@oclif/core': 4.13.3 transitivePeerDependencies: @@ -10214,10 +10181,10 @@ snapshots: - debug - supports-color - '@contentstack/cli-config@1.21.0(@types/node@22.20.1)': + '@contentstack/cli-config@1.21.1(@types/node@22.20.1)': dependencies: '@contentstack/cli-command': 1.8.5(@types/node@22.20.1) - '@contentstack/cli-utilities': 1.19.0(@types/node@22.20.1) + '@contentstack/cli-utilities': 1.19.1(@types/node@22.20.1) '@contentstack/utils': 1.9.1 '@oclif/core': 4.13.3 transitivePeerDependencies: @@ -10238,7 +10205,7 @@ snapshots: dependencies: '@apollo/client': 3.14.1(graphql@16.14.2) '@contentstack/cli-command': 1.8.5(@types/node@20.19.43) - '@contentstack/cli-utilities': 1.19.0(@types/node@20.19.43) + '@contentstack/cli-utilities': 1.19.1(@types/node@20.19.43) '@oclif/core': 4.13.3 '@oclif/plugin-help': 6.2.56 '@rollup/plugin-commonjs': 28.0.9(rollup@4.62.4) @@ -10272,7 +10239,7 @@ snapshots: - tslib - typescript - '@contentstack/cli-utilities@1.19.0(@types/node@14.18.63)': + '@contentstack/cli-utilities@1.19.1(@types/node@14.18.63)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -10310,7 +10277,7 @@ snapshots: - debug - supports-color - '@contentstack/cli-utilities@1.19.0(@types/node@14.18.63)(debug@4.4.3)': + '@contentstack/cli-utilities@1.19.1(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -10348,7 +10315,7 @@ snapshots: - debug - supports-color - '@contentstack/cli-utilities@1.19.0(@types/node@18.19.130)': + '@contentstack/cli-utilities@1.19.1(@types/node@18.19.130)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -10386,7 +10353,7 @@ snapshots: - debug - supports-color - '@contentstack/cli-utilities@1.19.0(@types/node@20.19.43)': + '@contentstack/cli-utilities@1.19.1(@types/node@20.19.43)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -10424,7 +10391,7 @@ snapshots: - debug - supports-color - '@contentstack/cli-utilities@1.19.0(@types/node@22.20.1)': + '@contentstack/cli-utilities@1.19.1(@types/node@22.20.1)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -11095,16 +11062,16 @@ snapshots: '@inquirer/prompts@7.10.1': dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@18.19.130) - '@inquirer/confirm': 5.1.21(@types/node@18.19.130) - '@inquirer/editor': 4.2.23(@types/node@18.19.130) - '@inquirer/expand': 4.0.23(@types/node@18.19.130) - '@inquirer/input': 4.3.1(@types/node@18.19.130) - '@inquirer/number': 3.0.23(@types/node@18.19.130) - '@inquirer/password': 4.0.23(@types/node@18.19.130) - '@inquirer/rawlist': 4.1.11(@types/node@18.19.130) - '@inquirer/search': 3.2.2(@types/node@18.19.130) - '@inquirer/select': 4.4.2(@types/node@18.19.130) + '@inquirer/checkbox': 4.3.2(@types/node@14.18.63) + '@inquirer/confirm': 5.1.21(@types/node@14.18.63) + '@inquirer/editor': 4.2.23(@types/node@14.18.63) + '@inquirer/expand': 4.0.23(@types/node@14.18.63) + '@inquirer/input': 4.3.1(@types/node@14.18.63) + '@inquirer/number': 3.0.23(@types/node@14.18.63) + '@inquirer/password': 4.0.23(@types/node@14.18.63) + '@inquirer/rawlist': 4.1.11(@types/node@14.18.63) + '@inquirer/search': 3.2.2(@types/node@14.18.63) + '@inquirer/select': 4.4.2(@types/node@14.18.63) '@inquirer/prompts@7.10.1(@types/node@14.18.63)': dependencies: @@ -14771,8 +14738,8 @@ snapshots: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0)(typescript@5.9.3) '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) eslint-config-xo-space: 0.35.0(eslint@10.8.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 15.7.0(eslint@10.8.0) eslint-plugin-perfectionist: 2.11.0(eslint@10.8.0)(typescript@5.9.3) @@ -14853,8 +14820,8 @@ snapshots: '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint-config-xo: 0.49.0(eslint@10.8.0) eslint-config-xo-space: 0.35.0(eslint@10.8.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.8.0) eslint-plugin-mocha: 10.5.0(eslint@10.8.0) eslint-plugin-n: 17.24.0(eslint@10.8.0)(typescript@5.9.3) @@ -14934,6 +14901,21 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.8.0 + get-tsconfig: 4.14.1 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.17 + unrs-resolver: 1.12.2 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) + transitivePeerDependencies: + - supports-color + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0): dependencies: '@nolyfill/is-core-module': 1.0.39 @@ -14945,7 +14927,7 @@ snapshots: tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) transitivePeerDependencies: - supports-color @@ -14960,6 +14942,17 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-module-utils@2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) + eslint: 10.8.0 + eslint-import-resolver-node: 0.3.10 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) + transitivePeerDependencies: + - supports-color + eslint-module-utils@2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: debug: 3.2.7 @@ -14982,14 +14975,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.66.0(eslint@10.8.0)(typescript@5.9.3) eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.8.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0) transitivePeerDependencies: - supports-color @@ -15052,6 +15045,35 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 10.8.0 + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) + hasown: 2.0.4 + is-core-module: 2.16.2 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.10 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@10.8.0)(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 @@ -15110,7 +15132,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15121,7 +15143,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.8.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.8.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.8.0)(typescript@5.9.3))(eslint@10.8.0))(eslint@10.8.0))(eslint@10.8.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3