diff --git a/CHANGELOG.md b/CHANGELOG.md index 0763cd94d1..3897772b83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ Please refer to the Contentstack Command-line Interface release notes [here](https://www.contentstack.com/docs/developers/cli/cli-changelog). +## @contentstack/cli-cm-export +### Version: 1.22.3 +#### Date: January-12-2026 +##### Fix: + - Fixed error handling when empty Stack API key is provided. Now shows a clear error message instead of "tempAPIClient.stack(...).fetch is not a function" + +## @contentstack/cli-cm-import +### Version: 1.30.3 +#### Date: January-12-2026 +##### Fix: + - Fixed error handling when empty Stack API key is provided. Now shows a clear error message instead of SDK-related errors + +## @contentstack/cli-cm-import-setup +### Version: 1.7.3 +#### Date: January-12-2026 +##### Fix: + - Fixed error handling when empty Stack API key is provided. Now shows a clear error message instead of SDK-related errors ## @contentstack/cli-cm-clone ### Version: 1.8.2 #### Date: June-30-2025 diff --git a/package-lock.json b/package-lock.json index c8f990623e..341cc36aa5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26714,10 +26714,10 @@ "@contentstack/cli-cm-branches": "~1.6.2", "@contentstack/cli-cm-bulk-publish": "~1.10.4", "@contentstack/cli-cm-clone": "~1.18.1", - "@contentstack/cli-cm-export": "~1.22.2", + "@contentstack/cli-cm-export": "~1.22.3", "@contentstack/cli-cm-export-to-csv": "~1.10.2", - "@contentstack/cli-cm-import": "~1.30.2", - "@contentstack/cli-cm-import-setup": "~1.7.2", + "@contentstack/cli-cm-import": "~1.30.3", + "@contentstack/cli-cm-import-setup": "~1.7.3", "@contentstack/cli-cm-migrate-rte": "~1.6.3", "@contentstack/cli-cm-seed": "~1.13.2", "@contentstack/cli-command": "~1.7.1", @@ -27139,8 +27139,8 @@ "license": "MIT", "dependencies": { "@colors/colors": "^1.6.0", - "@contentstack/cli-cm-export": "~1.22.2", - "@contentstack/cli-cm-import": "~1.30.2", + "@contentstack/cli-cm-export": "~1.22.3", + "@contentstack/cli-cm-import": "~1.30.3", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@oclif/core": "^4.3.0", @@ -27626,7 +27626,7 @@ }, "packages/contentstack-export": { "name": "@contentstack/cli-cm-export", - "version": "1.22.2", + "version": "1.22.3", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.7.1", @@ -28090,7 +28090,7 @@ }, "packages/contentstack-import": { "name": "@contentstack/cli-cm-import", - "version": "1.30.2", + "version": "1.30.3", "license": "MIT", "dependencies": { "@contentstack/cli-audit": "~1.16.2", @@ -28139,7 +28139,7 @@ }, "packages/contentstack-import-setup": { "name": "@contentstack/cli-cm-import-setup", - "version": "1.7.2", + "version": "1.7.3", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.7.1", @@ -28248,7 +28248,7 @@ "version": "1.13.2", "license": "MIT", "dependencies": { - "@contentstack/cli-cm-import": "1.30.2", + "@contentstack/cli-cm-import": "1.30.3", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@contentstack/management": "~1.22.0", diff --git a/packages/contentstack-clone/package.json b/packages/contentstack-clone/package.json index a89f54e59b..6412e8d244 100644 --- a/packages/contentstack-clone/package.json +++ b/packages/contentstack-clone/package.json @@ -6,8 +6,8 @@ "bugs": "https://github.com/rohitmishra209/cli-cm-clone/issues", "dependencies": { "@colors/colors": "^1.6.0", - "@contentstack/cli-cm-export": "~1.22.2", - "@contentstack/cli-cm-import": "~1.30.2", + "@contentstack/cli-cm-export": "~1.22.3", + "@contentstack/cli-cm-import": "~1.30.3", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@oclif/core": "^4.3.0", diff --git a/packages/contentstack-export/package.json b/packages/contentstack-export/package.json index 4cc2956b2e..030b411a7c 100644 --- a/packages/contentstack-export/package.json +++ b/packages/contentstack-export/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-export", "description": "Contentstack CLI plugin to export content from stack", - "version": "1.22.2", + "version": "1.22.3", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { diff --git a/packages/contentstack-export/src/utils/export-config-handler.ts b/packages/contentstack-export/src/utils/export-config-handler.ts index c67b6c12bb..d574bcaa9b 100644 --- a/packages/contentstack-export/src/utils/export-config-handler.ts +++ b/packages/contentstack-export/src/utils/export-config-handler.ts @@ -81,9 +81,9 @@ const setupConfig = async (exportCmdFlags: any): Promise => { config.apiKey = exportCmdFlags['stack-uid'] || exportCmdFlags['stack-api-key'] || config.source_stack || (await askAPIKey()); - if (typeof config.apiKey !== 'string') { - log.debug('Invalid API key received!', { apiKey: config.apiKey }); - throw new Error('Invalid API key received'); + if (typeof config.apiKey !== 'string' || !config.apiKey || !config.apiKey.trim()) { + log.debug('Invalid or empty API key received!', { apiKey: config.apiKey }); + throw new Error('Invalid or empty API key received. Please provide a valid stack API key.'); } } } diff --git a/packages/contentstack-export/src/utils/interactive.ts b/packages/contentstack-export/src/utils/interactive.ts index 141ec1f6e3..45087f5720 100644 --- a/packages/contentstack-export/src/utils/interactive.ts +++ b/packages/contentstack-export/src/utils/interactive.ts @@ -64,5 +64,11 @@ export const askAPIKey = async (): Promise => { type: 'input', message: 'Enter the stack api key', name: 'apiKey', + validate: (input: string) => { + if (!input || !input.trim()) { + return 'Stack API key cannot be empty. Please enter a valid stack API key.'; + } + return true; + }, }); }; diff --git a/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts b/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts index 0cfde9f478..841beb9611 100644 --- a/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts +++ b/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts @@ -339,7 +339,7 @@ describe('Export Config Handler', () => { await setupConfig(flags); expect.fail('Should have thrown an error'); } catch (error: any) { - expect(error.message).to.include('Invalid API key received'); + expect(error.message).to.include('Invalid or empty API key received. Please provide a valid stack API key.'); } }); }); diff --git a/packages/contentstack-import-setup/package.json b/packages/contentstack-import-setup/package.json index 586c721b1d..64ba1009b7 100644 --- a/packages/contentstack-import-setup/package.json +++ b/packages/contentstack-import-setup/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-import-setup", "description": "Contentstack CLI plugin to setup the mappers and configurations for the import command", - "version": "1.7.2", + "version": "1.7.3", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { diff --git a/packages/contentstack-import-setup/src/utils/import-config-handler.ts b/packages/contentstack-import-setup/src/utils/import-config-handler.ts index 9cc6fca36d..f742ed40e2 100644 --- a/packages/contentstack-import-setup/src/utils/import-config-handler.ts +++ b/packages/contentstack-import-setup/src/utils/import-config-handler.ts @@ -60,8 +60,8 @@ const setupConfig = async (importCmdFlags: any): Promise => { } else { config.apiKey = importCmdFlags['stack-uid'] || importCmdFlags['stack-api-key'] || config.target_stack || (await askAPIKey()); - if (typeof config.apiKey !== 'string') { - throw new Error('Invalid API key received'); + if (typeof config.apiKey !== 'string' || !config.apiKey || !config.apiKey.trim()) { + throw new Error('Invalid or empty API key received. Please provide a valid stack API key.'); } } } diff --git a/packages/contentstack-import-setup/src/utils/interactive.ts b/packages/contentstack-import-setup/src/utils/interactive.ts index 899eeb577b..1048ed491c 100644 --- a/packages/contentstack-import-setup/src/utils/interactive.ts +++ b/packages/contentstack-import-setup/src/utils/interactive.ts @@ -32,5 +32,11 @@ export const askAPIKey = async (): Promise => { type: 'input', message: 'Enter the stack api key', name: 'apiKey', + validate: (input: string) => { + if (!input || !input.trim()) { + return 'Stack API key cannot be empty. Please enter a valid stack API key.'; + } + return true; + }, }); }; diff --git a/packages/contentstack-import/package.json b/packages/contentstack-import/package.json index 1294bd1d70..87ed152690 100644 --- a/packages/contentstack-import/package.json +++ b/packages/contentstack-import/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-import", "description": "Contentstack CLI plugin to import content into stack", - "version": "1.30.2", + "version": "1.30.3", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { diff --git a/packages/contentstack-import/src/utils/import-config-handler.ts b/packages/contentstack-import/src/utils/import-config-handler.ts index 9df8a1bbd0..09f19da9bf 100644 --- a/packages/contentstack-import/src/utils/import-config-handler.ts +++ b/packages/contentstack-import/src/utils/import-config-handler.ts @@ -81,8 +81,9 @@ const setupConfig = async (importCmdFlags: any): Promise => { } config.apiKey = importCmdFlags['stack-uid'] || importCmdFlags['stack-api-key'] || config.target_stack || (await askAPIKey()); - if (typeof config.apiKey !== 'string') { - throw new Error('Invalid API key received'); + if (typeof config.apiKey !== 'string' || !config.apiKey || !config.apiKey.trim()) { + log.debug('Invalid or empty API key received!', { apiKey: config.apiKey }); + throw new Error('Invalid or empty API key received. Please provide a valid stack API key.'); } } } diff --git a/packages/contentstack-import/src/utils/interactive.ts b/packages/contentstack-import/src/utils/interactive.ts index 02eec4001e..81519e2ca4 100644 --- a/packages/contentstack-import/src/utils/interactive.ts +++ b/packages/contentstack-import/src/utils/interactive.ts @@ -19,6 +19,12 @@ export const askAPIKey = async (): Promise => { type: 'input', message: 'Enter the stack api key', name: 'apiKey', + validate: (input: string) => { + if (!input || !input.trim()) { + return 'Stack API key cannot be empty. Please enter a valid stack API key.'; + } + return true; + }, }); }; diff --git a/packages/contentstack-seed/package.json b/packages/contentstack-seed/package.json index 49f221aef4..2b3684b207 100644 --- a/packages/contentstack-seed/package.json +++ b/packages/contentstack-seed/package.json @@ -5,7 +5,7 @@ "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-cm-import": "1.30.2", + "@contentstack/cli-cm-import": "1.30.3", "@contentstack/cli-command": "~1.7.1", "@contentstack/cli-utilities": "~1.16.0", "@contentstack/management": "~1.22.0", diff --git a/packages/contentstack/package.json b/packages/contentstack/package.json index a3da5c8e17..95e411a337 100755 --- a/packages/contentstack/package.json +++ b/packages/contentstack/package.json @@ -23,15 +23,15 @@ }, "dependencies": { "@contentstack/cli-audit": "~1.16.2", - "@contentstack/cli-cm-export": "~1.22.2", - "@contentstack/cli-cm-import": "~1.30.2", + "@contentstack/cli-cm-export": "~1.22.3", + "@contentstack/cli-cm-import": "~1.30.3", "@contentstack/cli-auth": "~1.6.3", "@contentstack/cli-cm-bootstrap": "~1.17.2", "@contentstack/cli-cm-branches": "~1.6.2", "@contentstack/cli-cm-bulk-publish": "~1.10.4", "@contentstack/cli-cm-clone": "~1.18.1", "@contentstack/cli-cm-export-to-csv": "~1.10.2", - "@contentstack/cli-cm-import-setup": "~1.7.2", + "@contentstack/cli-cm-import-setup": "~1.7.3", "@contentstack/cli-cm-migrate-rte": "~1.6.3", "@contentstack/cli-cm-seed": "~1.13.2", "@contentstack/cli-command": "~1.7.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b96a879f1d..d390ab6525 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,10 +18,10 @@ importers: '@contentstack/cli-cm-branches': ~1.6.2 '@contentstack/cli-cm-bulk-publish': ~1.10.4 '@contentstack/cli-cm-clone': ~1.18.1 - '@contentstack/cli-cm-export': ~1.22.2 + '@contentstack/cli-cm-export': ~1.22.3 '@contentstack/cli-cm-export-to-csv': ~1.10.2 - '@contentstack/cli-cm-import': ~1.30.2 - '@contentstack/cli-cm-import-setup': ~1.7.2 + '@contentstack/cli-cm-import': ~1.30.3 + '@contentstack/cli-cm-import-setup': ~1.7.3 '@contentstack/cli-cm-migrate-rte': ~1.6.3 '@contentstack/cli-cm-seed': ~1.13.2 '@contentstack/cli-command': ~1.7.1 @@ -379,8 +379,8 @@ importers: packages/contentstack-clone: specifiers: '@colors/colors': ^1.6.0 - '@contentstack/cli-cm-export': ~1.22.2 - '@contentstack/cli-cm-import': ~1.30.2 + '@contentstack/cli-cm-export': ~1.22.3 + '@contentstack/cli-cm-import': ~1.30.3 '@contentstack/cli-command': ~1.7.1 '@contentstack/cli-utilities': ~1.16.0 '@oclif/core': ^4.3.0 @@ -886,7 +886,7 @@ importers: packages/contentstack-seed: specifiers: - '@contentstack/cli-cm-import': 1.30.2 + '@contentstack/cli-cm-import': 1.30.3 '@contentstack/cli-command': ~1.7.1 '@contentstack/cli-utilities': ~1.16.0 '@contentstack/management': ~1.22.0