diff --git a/.talismanrc b/.talismanrc index dfcb2f2b9..35c456dd9 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,6 +1,6 @@ fileignoreconfig: - filename: pnpm-lock.yaml - checksum: a90a8f0dbfa98da53ecb9e63f021ae8a1ac44c03cfe5dccd52a539c948d1625a + checksum: 8566e316dd7026214e8863568c72dcf946ba10648ac5c076a7c55215b5ab3422 - filename: packages/contentstack-export/src/utils/export-config-handler.ts checksum: 3ff8e8ea60f92311f8224bce457f7aaab026194de61e13eebdc6ca5a39f66bc9 - filename: packages/contentstack-asset-management/src/utils/export-helpers.ts @@ -9,4 +9,10 @@ fileignoreconfig: checksum: bc4a53f96be6a10786e00133245c7bdc43c965c8a98b753e3879e1110cf9c601 - filename: packages/contentstack-asset-management/test/unit/utils/cs-assets-api-adapter.test.ts checksum: 63c6bff4d51842d8fa3cce88545259d0a2c3cfe71df95d303d993f692cee883b +- filename: packages/contentstack-migration/src/commands/cm/stacks/migration.ts + checksum: 529431473623cf6bbefb35bc898be2a60dcb453e0c9273ecb97923de658769b3 +- filename: packages/contentstack-seed/src/commands/cm/stacks/seed.ts + checksum: 9a3fd45a57c6ebf63d6c154657f2ebf799befbbacb9a255944c2d89ae89b22ed +- filename: packages/contentstack-seed/test/commands/cm/stacks/seed.test.ts + checksum: b54f572a614e5d80f7fa27a51e679147cb537fd76ac922eed981d1156a261e50 version: '1.0' diff --git a/packages/contentstack-audit/src/commands/cm/stacks/audit/fix.ts b/packages/contentstack-audit/src/commands/cm/stacks/audit/fix.ts index 5d19d570d..30f0400df 100644 --- a/packages/contentstack-audit/src/commands/cm/stacks/audit/fix.ts +++ b/packages/contentstack-audit/src/commands/cm/stacks/audit/fix.ts @@ -24,10 +24,6 @@ export default class AuditFix extends AuditBaseCommand { 'report-path': Flags.string({ description: auditMsg.REPORT_PATH, }), - 'reference-only': Flags.boolean({ - hidden: true, - description: auditMsg.REFERENCE_ONLY, - }), modules: Flags.string({ multiple: true, options: config.modules, diff --git a/packages/contentstack-audit/src/commands/cm/stacks/audit/index.ts b/packages/contentstack-audit/src/commands/cm/stacks/audit/index.ts index 291bdf5da..37eedc618 100644 --- a/packages/contentstack-audit/src/commands/cm/stacks/audit/index.ts +++ b/packages/contentstack-audit/src/commands/cm/stacks/audit/index.ts @@ -20,10 +20,6 @@ export default class Audit extends AuditBaseCommand { 'report-path': Flags.string({ description: auditMsg.REPORT_PATH, }), - 'reference-only': Flags.boolean({ - hidden: true, - description: auditMsg.REFERENCE_ONLY, - }), modules: Flags.string({ multiple: true, options: config.modules, diff --git a/packages/contentstack-bootstrap/src/commands/cm/bootstrap.ts b/packages/contentstack-bootstrap/src/commands/cm/bootstrap.ts index 39fd9994f..98606d512 100644 --- a/packages/contentstack-bootstrap/src/commands/cm/bootstrap.ts +++ b/packages/contentstack-bootstrap/src/commands/cm/bootstrap.ts @@ -4,7 +4,6 @@ import Bootstrap, { BootstrapOptions, SeedParams } from '../../bootstrap'; import { inquireCloneDirectory, inquireApp, - inquireAppType, inquireLivePreviewSupport, inquireRunDevServer, } from '../../bootstrap/interactive'; @@ -40,12 +39,6 @@ export default class BootstrapCommand extends Command { multiple: false, required: false, }), - 'app-type': flags.string({ - description: 'Sample or Starter app', - multiple: false, - required: false, - hidden: true, - }), 'stack-api-key': flags.string({ char: 'k', description: 'Provide stack API key to seed content', @@ -98,23 +91,13 @@ export default class BootstrapCommand extends Command { }); // inquire user inputs - let appType = - (bootstrapCommandFlags.appType as string) || (bootstrapCommandFlags['app-type'] as string) || 'starterapp'; - if (!appType) { - appType = await inquireAppType(); - } + const appType = 'starterapp'; const selectedAppName = (bootstrapCommandFlags.appName as string) || (bootstrapCommandFlags['app-name'] as string); let selectedApp; if (!selectedAppName) { - if (appType === 'sampleapp') { - selectedApp = await inquireApp(config.sampleApps); - } else if (appType === 'starterapp') { - selectedApp = await inquireApp(config.starterApps); - } else { - this.error('Invalid app type provided: ' + appType, { exit: 1 }); - } + selectedApp = await inquireApp(config.starterApps); } if (!selectedAppName && !selectedApp) { diff --git a/packages/contentstack-bootstrap/test/bootstrap-integration.test.js b/packages/contentstack-bootstrap/test/bootstrap-integration.test.js index 5d8df954b..080203e00 100644 --- a/packages/contentstack-bootstrap/test/bootstrap-integration.test.js +++ b/packages/contentstack-bootstrap/test/bootstrap-integration.test.js @@ -26,7 +26,6 @@ describe('Bootstrap Integration Tests', () => { expect(BootstrapCommand.flags).to.have.property('stack-name'); expect(BootstrapCommand.flags).to.have.property('yes'); expect(BootstrapCommand.flags).to.have.property('alias'); - expect(BootstrapCommand.flags).to.have.property('app-type'); }); it('should validate alias flag properties', () => { diff --git a/packages/contentstack-bootstrap/test/bootstrap.test.js b/packages/contentstack-bootstrap/test/bootstrap.test.js index 34d3bf6ab..496bdc045 100644 --- a/packages/contentstack-bootstrap/test/bootstrap.test.js +++ b/packages/contentstack-bootstrap/test/bootstrap.test.js @@ -152,7 +152,7 @@ describe('Bootstrapping an app', () => { 'app-name': 'kickstart-next', org: 'org-uid', 'stack-name': 'test-bootstrap-cmd', - 'app-type': 'kickstart-next', + yes: true, }; return Promise.resolve(responses[question.name] || {}); @@ -171,16 +171,6 @@ describe('Bootstrapping an app', () => { delete process.env.CONTENTSTACK_AUTH_TOKEN; }); - it('should handle invalid app type gracefully', async () => { - try { - await runCommand(['cm:bootstrap', '--app-type', 'invalidtype']); - } catch (error) { - expect(error).to.exist; - expect(error?.oclif?.exit).to.equal(1); - expect(error.message).to.contain('Invalid app type provided invalidtype'); - } - }); - it('should bootstrap a Contentstack app with the correct flags', async () => { // Mock the BootstrapCommand class const MockBootstrapCommand = class extends Command { @@ -351,7 +341,7 @@ describe('Bootstrapping an app', () => { flags: { alias: testAlias, 'app-name': undefined, - 'app-type': undefined, + 'project-dir': undefined, 'stack-api-key': undefined, org: undefined, @@ -428,7 +418,7 @@ describe('Bootstrapping an app', () => { flags: { alias: undefined, 'app-name': undefined, - 'app-type': undefined, + 'project-dir': undefined, 'stack-api-key': undefined, org: undefined, @@ -485,7 +475,7 @@ describe('Bootstrapping an app', () => { flags: { alias: undefined, 'app-name': undefined, - 'app-type': undefined, + 'project-dir': undefined, 'stack-api-key': undefined, org: undefined, @@ -542,7 +532,7 @@ describe('Bootstrapping an app', () => { flags: { alias: undefined, 'app-name': undefined, - 'app-type': undefined, + 'project-dir': undefined, 'stack-api-key': undefined, org: undefined, @@ -598,7 +588,6 @@ describe('Bootstrapping an app', () => { flags: { alias: undefined, 'app-name': undefined, - 'app-type': 'sampleapp', 'project-dir': undefined, 'stack-api-key': undefined, org: undefined, @@ -613,11 +602,11 @@ describe('Bootstrapping an app', () => { command.cmaHost = mock.region.cma; await command.run(); - // Verify that appType is set correctly + // Verify that appType is hardcoded to 'starterapp' expect(bootstrapOptions).to.not.be.null; - expect(bootstrapOptions.appType).to.equal('sampleapp'); - // Verify that inquireApp was called with sampleApps (config.default in compiled CJS) - expect(interactive.inquireApp.calledWith(config.default.sampleApps)).to.be.true; + expect(bootstrapOptions.appType).to.equal('starterapp'); + // Verify that inquireApp was called with starterApps + expect(interactive.inquireApp.calledWith(config.default.starterApps)).to.be.true; }); it('should handle app-name flag correctly', async () => { @@ -655,7 +644,7 @@ describe('Bootstrapping an app', () => { flags: { alias: undefined, 'app-name': 'kickstart-next', - 'app-type': undefined, + 'project-dir': undefined, 'stack-api-key': undefined, org: undefined, diff --git a/packages/contentstack-migration/src/commands/cm/stacks/migration.ts b/packages/contentstack-migration/src/commands/cm/stacks/migration.ts index 12a29e368..ae1a0a323 100644 --- a/packages/contentstack-migration/src/commands/cm/stacks/migration.ts +++ b/packages/contentstack-migration/src/commands/cm/stacks/migration.ts @@ -41,12 +41,12 @@ export default class MigrationCommand extends Command { static description = 'Contentstack migration script.'; static examples: string[] = [ - '$ csdx cm:migration --file-path -k ', - '$ csdx cm:migration --file-path -k --branch ', - '$ csdx cm:migration --config : : ... --file-path ', - '$ csdx cm:migration --config-file --file-path ', - '$ csdx cm:migration --multiple --file-path ', - '$ csdx cm:migration --alias --file-path ', + '$ csdx cm:stacks:migration --file-path -k ', + '$ csdx cm:stacks:migration --file-path -k --branch ', + '$ csdx cm:stacks:migration --config : : ... --file-path ', + '$ csdx cm:stacks:migration --config-file --file-path ', + '$ csdx cm:stacks:migration --multiple --file-path ', + '$ csdx cm:stacks:migration --alias --file-path ', ]; static flags: FlagInput = { @@ -79,37 +79,9 @@ export default class MigrationCommand extends Command { description: 'This flag helps you to migrate multiple content files in a single instance. Mention the folder path where your migration script files are stored.', }), - - // To be deprecated - 'api-key': flags.string({ - description: 'With this flag add the API key of your stack.', - // dependsOn: ['authtoken'], - exclusive: ['alias'], - hidden: true, - }), - authtoken: flags.boolean({ - description: - 'Use this flag to use the auth token of the current session. After logging in CLI, an auth token is generated for each new session.', - dependsOn: ['api-key'], - exclusive: ['alias'], - hidden: true, - }), - 'management-token-alias': flags.string({ - description: 'Alias of the management token.', - exclusive: ['authtoken'], - hidden: true, - }), - filePath: flags.string({ - description: 'Use this flag to provide the path of the file of the migration script provided by the user.', - hidden: true, - }), - multi: flags.boolean({ - description: 'This flag helps you to migrate multiple content files in a single instance.', - hidden: true, - }), }; - static aliases: string[] = ['cm:migration']; + static aliases: string[] = []; static usage: string = 'cm:stacks:migration [-k ] [-a ] [--file-path ] [--branch ] [--config-file ] [--config ] [--multiple]'; @@ -118,11 +90,11 @@ export default class MigrationCommand extends Command { // TODO: filePath validation required. const { flags: migrationCommandFlags } = (await this.parse(MigrationCommand)) as any; const branch = (migrationCommandFlags as any).branch; - const filePath = (migrationCommandFlags as any)['file-path'] || (migrationCommandFlags as any).filePath; - const multi = (migrationCommandFlags as any).multiple || (migrationCommandFlags as any).multi; + const filePath = (migrationCommandFlags as any)['file-path']; + const multi = (migrationCommandFlags as any).multiple; const authtoken = isAuthenticated(); - const apiKey = (migrationCommandFlags as any)['api-key'] || (migrationCommandFlags as any)['stack-api-key']; - const alias = (migrationCommandFlags as any)['alias'] || (migrationCommandFlags as any)['management-token-alias']; + const apiKey = (migrationCommandFlags as any)['stack-api-key']; + const alias = (migrationCommandFlags as any)['alias']; const config = (migrationCommandFlags as any)['config']; if (!authtoken && !alias) { diff --git a/packages/contentstack-migration/test/unit/commands/cm/stacks/migration.test.ts b/packages/contentstack-migration/test/unit/commands/cm/stacks/migration.test.ts index 9e4eed8fb..0c78ddc4c 100644 --- a/packages/contentstack-migration/test/unit/commands/cm/stacks/migration.test.ts +++ b/packages/contentstack-migration/test/unit/commands/cm/stacks/migration.test.ts @@ -122,9 +122,9 @@ describe('Migration Command', () => { expect(MigrationCommand.usage).to.include('migration'); }); - it('should have aliases including cm:migration', () => { + it('should have empty aliases array (cm:migration alias removed)', () => { expect(MigrationCommand.aliases).to.be.an('array'); - expect(MigrationCommand.aliases).to.include('cm:migration'); + expect(MigrationCommand.aliases).to.be.empty; }); }); diff --git a/packages/contentstack-seed/src/commands/cm/stacks/seed.ts b/packages/contentstack-seed/src/commands/cm/stacks/seed.ts index 6fcf7707d..8e1ea2c1d 100644 --- a/packages/contentstack-seed/src/commands/cm/stacks/seed.ts +++ b/packages/contentstack-seed/src/commands/cm/stacks/seed.ts @@ -14,7 +14,7 @@ export default class SeedCommand extends Command { ]; static usage = - 'cm:stacks:seed [--repo ] [--org ] [--stack-api-key ] [--stack-name ] [-y] [--alias ] [--locale ]'; + 'cm:stacks:seed [--repo ] [--org ] [--stack-api-key ] [--stack-name ] [-y] [--alias ]'; static flags: FlagInput = { repo: flags.string({ @@ -42,12 +42,6 @@ export default class SeedCommand extends Command { required: false, exclusive: ['stack-api-key'], }), - 'fetch-limit': flags.string({ - description: 'Limit for number of organizations or stacks to be fetched.', - multiple: false, - required: false, - hidden: true, - }), yes: flags.boolean({ char: 'y', required: false, @@ -58,9 +52,8 @@ export default class SeedCommand extends Command { description: 'Alias of the management token', }), locale: flags.string({ - description: 'Master Locale of the stack', - default: 'en-us', hidden: true, + description: 'Master locale for stack creation', }), }; @@ -83,11 +76,10 @@ export default class SeedCommand extends Command { orgUid: seedFlags.org, stackUid: seedFlags['stack-api-key'], stackName: seedFlags['stack-name'], - fetchLimit: seedFlags['fetch-limit'], skipStackConfirmation: seedFlags.yes, isAuthenticated: isAuthenticated(), alias: managementTokenAlias, - master_locale: seedFlags['locale'], + master_locale: seedFlags.locale, }; const listOfTokens = configHandler.get('tokens'); diff --git a/packages/contentstack-seed/src/seed/index.ts b/packages/contentstack-seed/src/seed/index.ts index 9ae937e20..5ba9b072f 100644 --- a/packages/contentstack-seed/src/seed/index.ts +++ b/packages/contentstack-seed/src/seed/index.ts @@ -26,7 +26,7 @@ export interface ContentModelSeederOptions { orgUid: string | undefined; stackUid: string | undefined; stackName: string | undefined; - fetchLimit: string | undefined; + fetchLimit?: string | undefined; skipStackConfirmation: boolean | undefined; isAuthenticated: boolean | false; managementToken?: string | undefined; diff --git a/packages/contentstack-seed/src/seed/seed-stacks.ts b/packages/contentstack-seed/src/seed/seed-stacks.ts index 399bccff2..ec26b702e 100644 --- a/packages/contentstack-seed/src/seed/seed-stacks.ts +++ b/packages/contentstack-seed/src/seed/seed-stacks.ts @@ -22,9 +22,4 @@ export const OFFICIAL_SEED_STACKS: OfficialSeedStack[] = [ owner: OFFICIAL_SEED_OWNER, repo: 'compass-starter-stack', }, - { - displayName: 'Starter app', - owner: OFFICIAL_SEED_OWNER, - repo: 'stack-starter-app', - }, ]; diff --git a/packages/contentstack-seed/test/commands/cm/stacks/seed.test.ts b/packages/contentstack-seed/test/commands/cm/stacks/seed.test.ts index 9cf2e1512..cae0899d6 100644 --- a/packages/contentstack-seed/test/commands/cm/stacks/seed.test.ts +++ b/packages/contentstack-seed/test/commands/cm/stacks/seed.test.ts @@ -4,6 +4,7 @@ import { isAuthenticated, configHandler, cliux } from '@contentstack/cli-utiliti // Mock dependencies jest.mock('../../../../src/seed/index'); +jest.mock('@contentstack/cli-cm-import', () => ({ __esModule: true, default: { run: jest.fn() } })); jest.mock('@contentstack/cli-utilities', () => { const { Flags, Command } = require('@oclif/core'); return { @@ -67,10 +68,8 @@ describe('SeedCommand', () => { org: 'org-123', 'stack-api-key': undefined, 'stack-name': 'New Stack', - 'fetch-limit': '50', yes: undefined, alias: undefined, - locale: 'en-us', }; jest.spyOn(command as any, 'parse').mockResolvedValue({ @@ -90,11 +89,9 @@ describe('SeedCommand', () => { orgUid: 'org-123', stackUid: undefined, stackName: 'New Stack', - fetchLimit: '50', skipStackConfirmation: undefined, isAuthenticated: true, alias: undefined, - master_locale: 'en-us', }); expect(mockSeeder.run).toHaveBeenCalled(); }); @@ -105,10 +102,8 @@ describe('SeedCommand', () => { org: undefined, 'stack-api-key': 'api-key-123', 'stack-name': undefined, - 'fetch-limit': undefined, yes: undefined, alias: undefined, - locale: undefined, }; jest.spyOn(command as any, 'parse').mockResolvedValue({ @@ -135,10 +130,8 @@ describe('SeedCommand', () => { org: undefined, 'stack-api-key': undefined, 'stack-name': undefined, - 'fetch-limit': undefined, yes: undefined, alias: 'my-alias', - locale: undefined, }; const mockTokens = { @@ -176,10 +169,8 @@ describe('SeedCommand', () => { org: undefined, 'stack-api-key': undefined, 'stack-name': undefined, - 'fetch-limit': undefined, yes: undefined, alias: undefined, - locale: undefined, }; jest.spyOn(command as any, 'parse').mockResolvedValue({ @@ -206,10 +197,8 @@ describe('SeedCommand', () => { org: undefined, 'stack-api-key': undefined, 'stack-name': undefined, - 'fetch-limit': undefined, yes: undefined, alias: undefined, - locale: undefined, }; jest.spyOn(command as any, 'parse').mockResolvedValue({ @@ -237,10 +226,8 @@ describe('SeedCommand', () => { org: undefined, 'stack-api-key': undefined, 'stack-name': undefined, - 'fetch-limit': undefined, yes: true, alias: undefined, - locale: undefined, }; jest.spyOn(command as any, 'parse').mockResolvedValue({ @@ -265,10 +252,8 @@ describe('SeedCommand', () => { org: 'org-123', 'stack-api-key': undefined, 'stack-name': 'My Stack', - 'fetch-limit': '100', yes: true, alias: 'my-alias', - locale: 'fr-fr', }; jest.spyOn(command as any, 'parse').mockResolvedValue({ @@ -288,11 +273,9 @@ describe('SeedCommand', () => { orgUid: 'org-123', stackUid: undefined, stackName: 'My Stack', - fetchLimit: '100', skipStackConfirmation: true, isAuthenticated: true, alias: 'my-alias', - master_locale: 'fr-fr', }); }); @@ -302,10 +285,8 @@ describe('SeedCommand', () => { org: undefined, 'stack-api-key': undefined, 'stack-name': undefined, - 'fetch-limit': undefined, yes: undefined, alias: undefined, - locale: undefined, }; jest.spyOn(command as any, 'parse').mockResolvedValue({ @@ -327,10 +308,8 @@ describe('SeedCommand', () => { org: undefined, 'stack-api-key': undefined, 'stack-name': undefined, - 'fetch-limit': undefined, yes: undefined, alias: undefined, - locale: undefined, }; jest.spyOn(command as any, 'parse').mockResolvedValue({ @@ -367,7 +346,7 @@ describe('SeedCommand', () => { it('should have correct usage', () => { expect(SeedCommand.usage).toBe( - 'cm:stacks:seed [--repo ] [--org ] [--stack-api-key ] [--stack-name ] [-y] [--alias ] [--locale ]', + 'cm:stacks:seed [--repo ] [--org ] [--stack-api-key ] [--stack-name ] [-y] [--alias ]', ); }); @@ -379,7 +358,6 @@ describe('SeedCommand', () => { expect(SeedCommand.flags['stack-name']).toBeDefined(); expect(SeedCommand.flags.yes).toBeDefined(); expect(SeedCommand.flags.alias).toBeDefined(); - expect(SeedCommand.flags.locale).toBeDefined(); }); }); }); diff --git a/packages/contentstack-seed/test/seed/seed-stacks.test.ts b/packages/contentstack-seed/test/seed/seed-stacks.test.ts index 62e0240ce..23ca3b8cd 100644 --- a/packages/contentstack-seed/test/seed/seed-stacks.test.ts +++ b/packages/contentstack-seed/test/seed/seed-stacks.test.ts @@ -8,12 +8,11 @@ describe('seed-stacks', () => { 'kickstart-stack-seed', 'kickstart-veda-seed', 'compass-starter-stack', - 'stack-starter-app', ]; - it('exports a catalog of four stacks', () => { + it('exports a catalog of three stacks', () => { expect(Array.isArray(OFFICIAL_SEED_STACKS)).toBe(true); - expect(OFFICIAL_SEED_STACKS).toHaveLength(4); + expect(OFFICIAL_SEED_STACKS).toHaveLength(3); }); it('has exact repo slugs under contentstack', () => { @@ -35,7 +34,7 @@ describe('seed-stacks', () => { it('has no duplicate repo slugs', () => { const repos = OFFICIAL_SEED_STACKS.map((s) => s.repo); - expect(new Set(repos).size).toBe(4); + expect(new Set(repos).size).toBe(3); }); it('has stable display names', () => { @@ -43,7 +42,6 @@ describe('seed-stacks', () => { 'Kickstart stack seed', 'Kickstart Veda', 'Compass starter stack', - 'Starter app', ]); }); });