Skip to content

Commit d96e20b

Browse files
author
naman-contentstack
committed
Merge branch 'feat/AM2.0' into feat/DX-5418
2 parents 178bbf5 + 41014b1 commit d96e20b

File tree

16 files changed

+597
-598
lines changed

16 files changed

+597
-598
lines changed

.talismanrc

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,4 @@
11
fileignoreconfig:
2-
- filename: packages/contentstack-asset-management/src/types/asset-management-export-flags.ts
3-
checksum: fa2f9e873dd2fdb9170b5526130a855979674c05aca759c5383a432e761b377b
4-
- filename: packages/contentstack-import-setup/src/utils/import-setup-asset-mapper-params.ts
5-
checksum: 947bfd7d7fc071ddbe4310f59056666d373952fd2b40d478e0c6a260c751b132
6-
- filename: packages/contentstack-import-setup/test/unit/import-config-handler.test.ts
7-
checksum: 468fc6a83cbbb8c64debdbeec955ba2fcc4c1ef955f78308ff89e3bddbcf1bbb
8-
- filename: packages/contentstack-import-setup/src/import/modules/assets.ts
9-
checksum: 058d2a93ddaf1922b516781dc5e51e6744b63dd8a7042f64a75428098a3e6215
10-
- filename: packages/contentstack-asset-management/src/utils/detect-asset-management-export.ts
11-
checksum: 6dd65dd6a9d2124ecc9cd124c032fc7b4f51f664a2b64c7e2b79606c04f9dff1
12-
- filename: packages/contentstack-asset-management/test/unit/utils/detect-asset-management-export.test.ts
13-
checksum: 049bfc9dfb1104fb5ef439c0fccd8f36c637e2961f76eec1e1d7093f4c848d89
14-
- filename: packages/contentstack-asset-management/test/unit/import-setup/import-setup-asset-mappers.test.ts
15-
checksum: c8cf31441c637b057bcde9c60e005eb1b23af8125fcff5f28ee733abac4926be
16-
- filename: packages/contentstack-asset-management/src/import-setup/import-setup-asset-mappers.ts
17-
checksum: e7f624db1db13aeef4e7f53d317d5254aabb427616049cebccf6db75dc5ac102
18-
- filename: packages/contentstack-import-setup/test/unit/modules/assets.test.ts
19-
checksum: 02e8a857317c22adfec423b849a6c1454a73195e7c5bf888ba4bb9321cf66c48
20-
- filename: pnpm-lock.yaml
21-
checksum: 848c99284f55d18680d1cf2fe9e0676ffc0ae5a18c7855a8194ce89ac56841ef
2+
- filename: packages/contentstack-asset-management/src/import/spaces.ts
3+
checksum: e972d66f6a889f72d72ba48112a12f9447de39285cfb568d3b99a4969cf9f5f9
224
version: '1.0'

packages/contentstack-asset-management/src/import/spaces.ts

Lines changed: 34 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { resolve as pResolve, join } from 'node:path';
1+
import { join, resolve as pResolve } from 'node:path';
22
import { mkdirSync, readdirSync, statSync } from 'node:fs';
33
import { writeFile } from 'node:fs/promises';
44
import { log, CLIProgressManager, configHandler } from '@contentstack/cli-utilities';
55

66
import type {
77
AssetManagementAPIConfig,
8-
AssetManagementImportOptions,
98
ImportContext,
109
ImportResult,
10+
ImportSpacesOptions,
1111
SpaceMapping,
1212
} from '../types/asset-management-api';
1313
import { AM_MAIN_PROCESS_NAME } from '../constants/index';
@@ -22,11 +22,11 @@ import ImportWorkspace from './workspaces';
2222
* Returns combined uidMap, urlMap, and spaceMappings for the bridge module.
2323
*/
2424
export class ImportSpaces {
25-
private readonly options: AssetManagementImportOptions;
25+
private readonly options: ImportSpacesOptions;
2626
private parentProgressManager: CLIProgressManager | null = null;
2727
private progressManager: CLIProgressManager | null = null;
2828

29-
constructor(options: AssetManagementImportOptions) {
29+
constructor(options: ImportSpacesOptions) {
3030
this.options = options;
3131
}
3232

@@ -35,63 +35,37 @@ export class ImportSpaces {
3535
}
3636

3737
async start(): Promise<ImportResult> {
38-
const {
39-
contentDir,
40-
assetManagementUrl,
41-
org_uid,
42-
apiKey,
43-
host,
44-
sourceApiKey,
45-
context,
46-
apiConcurrency,
47-
uploadAssetsConcurrency,
48-
importFoldersConcurrency,
49-
spacesDirName,
50-
fieldsDir,
51-
assetTypesDir,
52-
fieldsFileName,
53-
assetTypesFileName,
54-
foldersFileName,
55-
assetsFileName,
56-
fieldsImportInvalidKeys,
57-
assetTypesImportInvalidKeys,
58-
mapperRootDir,
59-
mapperAssetsModuleDir,
60-
mapperUidFileName,
61-
mapperUrlFileName,
62-
mapperSpaceUidFileName,
63-
} = this.options;
64-
65-
const spacesRootPath = pResolve(contentDir, spacesDirName ?? 'spaces');
66-
38+
const configOptions = this.options;
39+
const spacesRootPath = pResolve(configOptions.contentDir, 'spaces');
40+
const org_uid = configOptions.org_uid;
41+
const context = configOptions.context;
6742
const importContext: ImportContext = {
6843
spacesRootPath,
69-
sourceApiKey,
70-
apiKey,
71-
host,
44+
sourceApiKey: configOptions.sourceApiKey,
45+
apiKey: configOptions.apiKey,
46+
host: configOptions.host,
7247
org_uid,
7348
context,
74-
apiConcurrency,
75-
uploadAssetsConcurrency,
76-
importFoldersConcurrency,
77-
spacesDirName,
78-
fieldsDir,
79-
assetTypesDir,
80-
fieldsFileName,
81-
assetTypesFileName,
82-
foldersFileName,
83-
assetsFileName,
84-
fieldsImportInvalidKeys,
85-
assetTypesImportInvalidKeys,
86-
mapperRootDir,
87-
mapperAssetsModuleDir,
88-
mapperUidFileName,
89-
mapperUrlFileName,
90-
mapperSpaceUidFileName,
49+
apiConcurrency: configOptions.apiConcurrency,
50+
uploadAssetsConcurrency: configOptions.uploadAssetsConcurrency,
51+
importFoldersConcurrency: configOptions.importFoldersConcurrency,
52+
spacesDirName: configOptions.spacesDirName,
53+
fieldsDir: configOptions.fieldsDir,
54+
assetTypesDir: configOptions.assetTypesDir,
55+
fieldsFileName: configOptions.fieldsFileName,
56+
assetTypesFileName: configOptions.assetTypesFileName,
57+
foldersFileName: configOptions.foldersFileName,
58+
assetsFileName: configOptions.assetsFileName,
59+
fieldsImportInvalidKeys: configOptions.fieldsImportInvalidKeys,
60+
assetTypesImportInvalidKeys: configOptions.assetTypesImportInvalidKeys,
61+
mapperRootDir: configOptions.mapperRootDir,
62+
mapperAssetsModuleDir: configOptions.mapperAssetsModuleDir,
63+
mapperUidFileName: configOptions.mapperUidFileName,
64+
mapperUrlFileName: configOptions.mapperUrlFileName,
65+
mapperSpaceUidFileName: configOptions.mapperSpaceUidFileName,
9166
};
92-
9367
const apiConfig: AssetManagementAPIConfig = {
94-
baseURL: assetManagementUrl,
68+
baseURL: configOptions.assetManagementUrl,
9569
headers: { organization_uid: org_uid },
9670
context,
9771
};
@@ -186,13 +160,13 @@ export class ImportSpaces {
186160
}
187161

188162
if (this.options.backupDir) {
189-
const mapperRoot = this.options.mapperRootDir ?? 'mapper';
190-
const mapperAssetsMod = this.options.mapperAssetsModuleDir ?? 'assets';
163+
const mapperRoot = importContext.mapperRootDir ?? 'mapper';
164+
const mapperAssetsMod = importContext.mapperAssetsModuleDir ?? 'assets';
191165
const mapperDir = join(this.options.backupDir, mapperRoot, mapperAssetsMod);
192166
mkdirSync(mapperDir, { recursive: true });
193-
const uidFile = this.options.mapperUidFileName ?? 'uid-mapping.json';
194-
const urlFile = this.options.mapperUrlFileName ?? 'url-mapping.json';
195-
const spaceUidFile = this.options.mapperSpaceUidFileName ?? 'space-uid-mapping.json';
167+
const uidFile = importContext.mapperUidFileName ?? 'uid-mapping.json';
168+
const urlFile = importContext.mapperUrlFileName ?? 'url-mapping.json';
169+
const spaceUidFile = importContext.mapperSpaceUidFileName ?? 'space-uid-mapping.json';
196170
await writeFile(join(mapperDir, uidFile), JSON.stringify(allUidMap), 'utf8');
197171
await writeFile(join(mapperDir, urlFile), JSON.stringify(allUrlMap), 'utf8');
198172
await writeFile(join(mapperDir, spaceUidFile), JSON.stringify(allSpaceUidMap), 'utf8');

packages/contentstack-asset-management/src/types/asset-management-api.ts

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ export type ImportContext = {
177177
context?: Record<string, unknown>;
178178
/**
179179
* Max parallel AM API calls for import (fields, asset types, and default for folders/uploads).
180-
* Set from `AssetManagementImportOptions.apiConcurrency`.
180+
* Set from `ImportSpacesOptions.apiConcurrency` (or host wiring).
181181
*/
182182
apiConcurrency?: number;
183183
/** Overrides parallel limit for asset uploads when set (import `modules['asset-management'].uploadAssetsConcurrency`). */
@@ -203,28 +203,21 @@ export type ImportContext = {
203203
};
204204

205205
/**
206-
* Options accepted by the top-level `ImportSpaces` class.
206+
* Single options object for `ImportSpaces` (matches the export-side pattern: one flat shape from the host,
207+
* then AM splits API vs context internally like `ExportSpaces`).
207208
*/
208-
export type AssetManagementImportOptions = {
209+
export type ImportSpacesOptions = {
209210
/** Absolute path to the root content / backup directory. */
210211
contentDir: string;
211212
/** AM 2.0 base URL (e.g. "https://am.contentstack.io"). */
212213
assetManagementUrl: string;
213-
/** Target organisation UID. */
214214
org_uid: string;
215-
/** Target stack API key. */
216215
apiKey: string;
217-
/** Target CMA host. */
218216
host: string;
219-
/** Source stack API key — used for old CMA proxy URL reconstruction. */
220217
sourceApiKey?: string;
221-
/** Optional logging context. */
222218
context?: Record<string, unknown>;
223-
/**
224-
* When set, mapper files are written under `{backupDir}/mapper/assets/` after import.
225-
*/
219+
/** When set, mapper JSON is written after import under `{backupDir}/mapper/...`. */
226220
backupDir?: string;
227-
/** Parallel AM API limit; defaults to package constant when omitted. */
228221
apiConcurrency?: number;
229222
uploadAssetsConcurrency?: number;
230223
importFoldersConcurrency?: number;
@@ -257,7 +250,7 @@ export type SpaceMapping = {
257250

258251
/**
259252
* The value returned by `ImportSpaces.start()`.
260-
* When `backupDir` is set on options, the AM package also writes these maps under
253+
* When `ImportSpacesOptions.backupDir` is set, the AM package also writes these maps under
261254
* `mapper/assets/` for `entries.ts` to resolve asset references.
262255
*/
263256
export type ImportResult = {

packages/contentstack-audit/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"chalk": "^5.6.2",
2626
"fast-csv": "^4.3.6",
2727
"fs-extra": "^11.3.0",
28-
"lodash": "^4.17.23",
28+
"lodash": "^4.18.1",
2929
"uuid": "^9.0.1",
3030
"winston": "^3.17.0"
3131
},

packages/contentstack-branches/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"@contentstack/cli-utilities": "~2.0.0-beta.5",
1212
"chalk": "^5.6.2",
1313
"just-diff": "^6.0.2",
14-
"lodash": "^4.17.23"
14+
"lodash": "^4.18.1"
1515
},
1616
"devDependencies": {
1717
"@contentstack/cli-dev-dependencies": "~2.0.0-beta.0",

packages/contentstack-clone/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"@oclif/plugin-help": "^6.2.28",
1515
"chalk": "^5.6.2",
1616
"inquirer": "12.11.1",
17-
"lodash": "^4.17.23",
17+
"lodash": "^4.18.1",
1818
"merge": "^2.1.1",
1919
"ora": "^5.4.1",
2020
"prompt": "^1.3.0",

packages/contentstack-export/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"big-json": "^3.2.0",
1515
"bluebird": "^3.7.2",
1616
"chalk": "^5.6.2",
17-
"lodash": "^4.17.23",
17+
"lodash": "^4.18.1",
1818
"merge": "^2.1.1",
1919
"mkdirp": "^1.0.4",
2020
"progress-stream": "^2.0.0",

packages/contentstack-import-setup/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"big-json": "^3.2.0",
1313
"chalk": "^5.6.2",
1414
"fs-extra": "^11.3.0",
15-
"lodash": "^4.17.23",
15+
"lodash": "^4.18.1",
1616
"merge": "^2.1.1",
1717
"mkdirp": "^1.0.4",
1818
"winston": "^3.17.0"

packages/contentstack-import/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"chalk": "^5.6.2",
1717
"debug": "^4.4.3",
1818
"fs-extra": "^11.3.3",
19-
"lodash": "^4.17.23",
19+
"lodash": "^4.18.1",
2020
"marked": "^4.3.0",
2121
"merge": "^2.1.1",
2222
"mkdirp": "^1.0.4",

packages/contentstack-import/src/commands/cm/stacks/import.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,9 @@ export default class ImportCommand extends Command {
124124
importConfig = await setupImportConfig(flags);
125125
// Prepare the context object
126126
createLogContext(
127-
this.context?.info?.command || 'cm:stacks:export',
127+
this.context?.info?.command || 'cm:stacks:import',
128128
importConfig.apiKey,
129-
importConfig.authenticationMethod
129+
importConfig.authenticationMethod,
130130
);
131131
const context = this.createImportContext(importConfig.apiKey, importConfig.authenticationMethod);
132132
importConfig.context = { ...context };

0 commit comments

Comments
 (0)