From a4d908a3c45e5227875cefe22424687c6dae7374 Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Fri, 5 Jun 2026 14:39:50 +0530 Subject: [PATCH 1/2] 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 2/2] 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 });