diff --git a/package-lock.json b/package-lock.json index 9f83039711..a713d41083 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7625,9 +7625,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.107", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.107.tgz", - "integrity": "sha512-dJr1o6yCntRkXElnhsHh1bAV19bo/hKyFf7tCcWgpXbuFIF0Lakjgqv5LRfSDaNzAII8Fnxg2tqgHkgCvxdbxw==", + "version": "1.5.109", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.109.tgz", + "integrity": "sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ==", "license": "ISC" }, "node_modules/elegant-spinner": { @@ -26756,23 +26756,23 @@ }, "packages/contentstack": { "name": "@contentstack/cli", - "version": "1.35.4", + "version": "1.36.0", "license": "MIT", "dependencies": { "@contentstack/cli-audit": "~1.7.5", "@contentstack/cli-auth": "~1.3.24", - "@contentstack/cli-cm-bootstrap": "~1.13.1", - "@contentstack/cli-cm-branches": "~1.2.1", + "@contentstack/cli-cm-bootstrap": "~1.13.2", + "@contentstack/cli-cm-branches": "~1.3.0", "@contentstack/cli-cm-bulk-publish": "~1.7.2", - "@contentstack/cli-cm-clone": "~1.13.1", - "@contentstack/cli-cm-export": "~1.14.2", + "@contentstack/cli-cm-clone": "~1.13.2", + "@contentstack/cli-cm-export": "~1.15.0", "@contentstack/cli-cm-export-to-csv": "~1.7.3", - "@contentstack/cli-cm-import": "~1.19.5", - "@contentstack/cli-cm-import-setup": "1.0.1", + "@contentstack/cli-cm-import": "~1.20.0", + "@contentstack/cli-cm-import-setup": "1.1.0", "@contentstack/cli-cm-migrate-rte": "~1.4.21", - "@contentstack/cli-cm-seed": "~1.10.1", + "@contentstack/cli-cm-seed": "~1.10.2", "@contentstack/cli-command": "~1.3.3", - "@contentstack/cli-config": "~1.9.1", + "@contentstack/cli-config": "~1.10.0", "@contentstack/cli-launch": "^1.5.1", "@contentstack/cli-migration": "~1.6.5", "@contentstack/cli-utilities": "~1.8.2", @@ -27047,10 +27047,10 @@ }, "packages/contentstack-bootstrap": { "name": "@contentstack/cli-cm-bootstrap", - "version": "1.13.1", + "version": "1.13.2", "license": "MIT", "dependencies": { - "@contentstack/cli-cm-seed": "~1.10.1", + "@contentstack/cli-cm-seed": "~1.10.2", "@contentstack/cli-command": "~1.3.3", "@contentstack/cli-utilities": "~1.8.2", "inquirer": "8.2.6", @@ -27127,7 +27127,7 @@ }, "packages/contentstack-branches": { "name": "@contentstack/cli-cm-branches", - "version": "1.2.1", + "version": "1.3.0", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.3.3", @@ -27185,12 +27185,12 @@ }, "packages/contentstack-clone": { "name": "@contentstack/cli-cm-clone", - "version": "1.13.1", + "version": "1.13.2", "license": "MIT", "dependencies": { "@colors/colors": "^1.6.0", - "@contentstack/cli-cm-export": "~1.14.2", - "@contentstack/cli-cm-import": "~1.19.5", + "@contentstack/cli-cm-export": "~1.15.0", + "@contentstack/cli-cm-import": "~1.20.0", "@contentstack/cli-command": "~1.3.3", "@contentstack/cli-utilities": "~1.8.2", "chalk": "^4.1.2", @@ -27362,7 +27362,7 @@ }, "packages/contentstack-config": { "name": "@contentstack/cli-config", - "version": "1.9.1", + "version": "1.10.0", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.3.3", @@ -27670,7 +27670,7 @@ }, "packages/contentstack-export": { "name": "@contentstack/cli-cm-export", - "version": "1.14.2", + "version": "1.15.0", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.3.3", @@ -27690,7 +27690,7 @@ }, "devDependencies": { "@contentstack/cli-auth": "~1.3.24", - "@contentstack/cli-config": "~1.9.1", + "@contentstack/cli-config": "~1.10.0", "@contentstack/cli-dev-dependencies": "~1.2.4", "@oclif/plugin-help": "^5.2.20", "@oclif/test": "^4.1.6", @@ -28022,7 +28022,7 @@ }, "packages/contentstack-import": { "name": "@contentstack/cli-cm-import", - "version": "1.19.5", + "version": "1.20.0", "license": "MIT", "dependencies": { "@contentstack/cli-audit": "~1.7.5", @@ -28069,7 +28069,7 @@ }, "packages/contentstack-import-setup": { "name": "@contentstack/cli-cm-import-setup", - "version": "1.0.1", + "version": "1.1.0", "license": "MIT", "dependencies": { "@contentstack/cli-command": "~1.3.3", @@ -28167,10 +28167,10 @@ }, "packages/contentstack-seed": { "name": "@contentstack/cli-cm-seed", - "version": "1.10.1", + "version": "1.10.2", "license": "MIT", "dependencies": { - "@contentstack/cli-cm-import": "~1.19.5", + "@contentstack/cli-cm-import": "~1.20.0", "@contentstack/cli-command": "~1.3.3", "@contentstack/cli-utilities": "~1.8.2", "@contentstack/management": "~1.18.4", diff --git a/packages/contentstack-bootstrap/README.md b/packages/contentstack-bootstrap/README.md index 7dd59f0985..4287876fb6 100644 --- a/packages/contentstack-bootstrap/README.md +++ b/packages/contentstack-bootstrap/README.md @@ -15,7 +15,7 @@ $ npm install -g @contentstack/cli-cm-bootstrap $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-bootstrap/1.13.1 darwin-arm64 node-v22.14.0 +@contentstack/cli-cm-bootstrap/1.13.2 darwin-x64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-bootstrap/package.json b/packages/contentstack-bootstrap/package.json index bab7665175..a525a2548f 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.13.1", + "version": "1.13.2", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "scripts": { @@ -17,7 +17,7 @@ "test:report": "nyc --reporter=lcov mocha \"test/**/*.test.js\"" }, "dependencies": { - "@contentstack/cli-cm-seed": "~1.10.1", + "@contentstack/cli-cm-seed": "~1.10.2", "@contentstack/cli-command": "~1.3.3", "@contentstack/cli-utilities": "~1.8.2", "inquirer": "8.2.6", diff --git a/packages/contentstack-branches/README.md b/packages/contentstack-branches/README.md index b9a5460d66..3da34db135 100755 --- a/packages/contentstack-branches/README.md +++ b/packages/contentstack-branches/README.md @@ -37,7 +37,7 @@ $ npm install -g @contentstack/cli-cm-branches $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-branches/1.2.1 darwin-arm64 node-v22.14.0 +@contentstack/cli-cm-branches/1.3.0 darwin-x64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-branches/package.json b/packages/contentstack-branches/package.json index 199536e70f..6b63888f43 100644 --- a/packages/contentstack-branches/package.json +++ b/packages/contentstack-branches/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-branches", "description": "Contentstack CLI plugin to do branches operations", - "version": "1.2.1", + "version": "1.3.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { diff --git a/packages/contentstack-branches/src/utils/entry-create-script.ts b/packages/contentstack-branches/src/utils/entry-create-script.ts index ca5d06038d..bfda436afc 100644 --- a/packages/contentstack-branches/src/utils/entry-create-script.ts +++ b/packages/contentstack-branches/src/utils/entry-create-script.ts @@ -44,7 +44,7 @@ export function entryCreateScript(contentType) { function getValueByPath(obj, path) { return path.split('[').reduce((o, key) => o && o[key.replace(/\]$/, '')], obj); } - + function updateValueByPath(obj, path, newValue) { path.split('[').reduce((o, key, index, arr) => { if (index === arr.length - 1) { @@ -54,10 +54,10 @@ export function entryCreateScript(contentType) { } }, obj); } - + const findReference = function (schema, path, flag) { let references = []; - + for (const i in schema) { const currentPath = path ? path + '[' + schema[i].uid : schema[i].uid; if (schema[i].data_type === 'group' || schema[i].data_type === 'global_field') { @@ -77,7 +77,7 @@ export function entryCreateScript(contentType) { references.push(currentPath); } } - + return references; }; @@ -169,7 +169,7 @@ export function entryCreateScript(contentType) { } parent.pop(); } - + function findAssetIdsFromHtmlRte(entryObj, ctSchema) { const regex = / { if (element.type) { @@ -297,7 +297,7 @@ export function entryCreateScript(contentType) { } }); } - + const updateAssetDetailsInEntries = function (entry) { let updatedEntry = Object.assign({},entry); entry = updateFileFields(updatedEntry, entry, null) @@ -310,7 +310,7 @@ export function entryCreateScript(contentType) { entry = entry.replace(assetUrl, mappedAssetUrl); } }); - + assetUIDs.forEach(function (assetUid) { let uid = assetUIDMapper[assetUid]; if (typeof uid !== 'undefined') { @@ -335,11 +335,11 @@ export function entryCreateScript(contentType) { parent[pos] = ''; } }; - + if (parent.uid && assetUIDMapper[parent.uid]) { parent.uid = assetUIDMapper[parent.uid]; } - + if ( object && isObject(parent[pos]) && @@ -356,7 +356,7 @@ export function entryCreateScript(contentType) { ) { parent = omit(parent, ['asset']); } - + if (object.uid && assetUIDMapper[object.uid]) { object.uid = assetUIDMapper[object.uid]; } @@ -373,12 +373,12 @@ export function entryCreateScript(contentType) { } else if (isArray(object) && object.length) { for (let i = 0; i <= object.length; i++){ updateFileFields(object[i], object, i); - } + } parent[pos] = compact(object); } return object; } - + const checkAndDownloadAsset = async function (cAsset) { const assetUID = cAsset?.uid; if (cAsset && assetUID) { @@ -431,24 +431,24 @@ export function entryCreateScript(contentType) { } return cAsset; }; - + const uploadAssets = async function () { const assetFolderMap = JSON.parse(fs.readFileSync(path.resolve(filePath, 'folder-mapper.json'), 'utf8')); const stackAPIClient = managementAPIClient.stack({ api_key: stackSDKInstance.api_key, branch_uid: branch }); for (let i = 0; i < downloadedAssets?.length; i++) { const asset = downloadedAssets[i]; let requestOption = {}; - + requestOption.parent_uid = assetFolderMap[asset.parent_uid] || asset.parent_uid; - + if (asset.hasOwnProperty('description') && typeof asset.description === 'string') { requestOption.description = asset.description; } - + if (asset.hasOwnProperty('tags') && Array.isArray(asset.tags)) { requestOption.tags = asset.tags; } - + if (asset.hasOwnProperty('title') && typeof asset.title === 'string') { requestOption.title = asset.title; } @@ -464,7 +464,7 @@ export function entryCreateScript(contentType) { assetUrlMapper[asset.url] = res && res.url; } }; - + function handleErrorMsg(err) { if (err?.errorMessage) { console.log(err.errorMessage); @@ -479,14 +479,14 @@ export function entryCreateScript(contentType) { limit, include_count: true, }; - + const entriesSearchResponse = await managementAPIClient .stack({ api_key: stackSDKInstance.api_key, branch_uid: branchName }) .contentType(contentType) .entry() .query(requestObject) .find(); - + if (entriesSearchResponse?.items?.length > 0) { skip += limit || 100; entries = [...entries, ...entriesSearchResponse.items]; @@ -507,12 +507,12 @@ export function entryCreateScript(contentType) { task: async () => { const compareBranchEntries = await getEntries(compareBranch, '${contentType}') - + const compareFilteredProperties = compareBranchEntries.map((entry) => { keysToRemove.map((key) => delete entry[key]); return entry; }); - + let contentType = await managementAPIClient .stack({ api_key: stackSDKInstance.api_key, branch_uid: compareBranch }) .contentType('${contentType}') @@ -553,7 +553,7 @@ export function entryCreateScript(contentType) { for (let i in references) { let compareEntryRef = getValueByPath(entryDetails, references[i]); let baseEntryRef = getValueByPath(baseEntry, references[i]); - + if (compareEntryRef && compareEntryRef.length > 0 && baseEntryRef && baseEntryRef.length >= 0) { let compareRefEntry = await managementAPIClient .stack({ api_key: stackSDKInstance.api_key, branch_uid: compareBranch }) @@ -565,7 +565,7 @@ export function entryCreateScript(contentType) { .entry() .query({ query: { title: compareRefEntry.title } }) .find(); - + if(baseRefEntry?.items?.length > 0 && baseRefEntry.items[0]?.uid){ updateValueByPath(entryDetails, references[i], baseRefEntry.items[0].uid); } diff --git a/packages/contentstack-branches/src/utils/entry-create-update-script.ts b/packages/contentstack-branches/src/utils/entry-create-update-script.ts index 284024595e..a47fcdb9b1 100644 --- a/packages/contentstack-branches/src/utils/entry-create-update-script.ts +++ b/packages/contentstack-branches/src/utils/entry-create-update-script.ts @@ -30,7 +30,7 @@ export function entryCreateUpdateScript(contentType) { 'setWorkflowStage', 'import', ]; - + let compareBranch = config['compare-branch']; let filePath = config['file-path'] || process.cwd(); let assetDirPath = path.resolve(filePath, 'assets'); @@ -41,7 +41,7 @@ export function entryCreateUpdateScript(contentType) { let assetUrlMapper = {}; let assetRefPath = {}; let parent=[]; - + function converter(data) { let arr = []; for (const elm of data) { @@ -50,23 +50,23 @@ export function entryCreateUpdateScript(contentType) { } return arr; } - + function deleteUnwantedKeysFromObject(obj, keysToRemove) { if(obj){ keysToRemove.map((key) => delete obj[key]); return obj; } } - + function uniquelyConcatenateArrays(compareArr, baseArr) { let uniqueArray = compareArr.concat(baseArr.filter((item) => compareArr.indexOf(item) < 0)); return uniqueArray; } - + function getValueByPath(obj, path) { return path.split('[').reduce((o, key) => o && o[key.replace(/\]$/, '')], obj); } - + function updateValueByPath(obj, path, newValue) { path.split('[').reduce((o, key, index, arr) => { if (index === arr.length - 1) { @@ -79,7 +79,7 @@ export function entryCreateUpdateScript(contentType) { const findReference = function (schema, path, flag) { let references = []; - + for (const i in schema) { const currentPath = path ? path + '[' + schema[i].uid : schema[i].uid; if (schema[i].data_type === 'group' || schema[i].data_type === 'global_field') { @@ -99,7 +99,7 @@ export function entryCreateUpdateScript(contentType) { references.push(currentPath); } } - + return references; }; @@ -156,7 +156,7 @@ export function entryCreateUpdateScript(contentType) { } } }; - + function fetchAssetFromFileFields (parent, schema, entry) { parent.push(schema.uid); let updatedEntry = entry; @@ -202,7 +202,7 @@ export function entryCreateUpdateScript(contentType) { assetDetails.push({uid: match[1]}); } } - + function findFileUrls(schema, _entry) { let markdownRegEx; let markdownMatch; @@ -214,7 +214,7 @@ export function entryCreateUpdateScript(contentType) { text = JSON.stringify(_entry); } markdownRegEx = new RegExp( - '(https://(assets|(eu-|azure-na-|azure-eu-|gcp-na-)?images).contentstack.(io|com)/v3/assets/(.*?)/(.*?)/(.*?)/(.*?)(?="))', + '(https://(assets|(eu-|azure-na-|azure-eu-|gcp-na-|gcp-eu-)?images).contentstack.(io|com)/v3/assets/(.*?)/(.*?)/(.*?)/(.*?)(?="))', 'g', ); while ((markdownMatch = markdownRegEx.exec(text)) !== null) { @@ -230,7 +230,7 @@ export function entryCreateUpdateScript(contentType) { } } } - + function findAssetIdsFromJsonRte(entryObj, ctSchema) { if(ctSchema !== undefined){ for (const element of ctSchema) { @@ -276,7 +276,7 @@ export function entryCreateUpdateScript(contentType) { } } } - + function gatherJsonRteAssetIds(jsonRteData) { jsonRteData.children.forEach((element) => { if (element.type) { @@ -320,7 +320,7 @@ export function entryCreateUpdateScript(contentType) { } }); } - + const updateAssetDetailsInEntries = function (entry) { let updatedEntry = Object.assign({},entry); entry = updateFileFields(updatedEntry, entry, null) @@ -333,7 +333,7 @@ export function entryCreateUpdateScript(contentType) { entry = entry.replace(assetUrl, mappedAssetUrl); } }); - + assetUIDs.forEach(function (assetUid) { let uid = assetUIDMapper[assetUid]; if (typeof uid !== 'undefined') { @@ -358,11 +358,11 @@ export function entryCreateUpdateScript(contentType) { parent[pos] = ''; } }; - + if (parent.uid && assetUIDMapper[parent.uid]) { parent.uid = assetUIDMapper[parent.uid]; } - + if ( object && isObject(parent[pos]) && @@ -379,7 +379,7 @@ export function entryCreateUpdateScript(contentType) { ) { parent = omit(parent, ['asset']); } - + if (object.uid && assetUIDMapper[object.uid]) { object.uid = assetUIDMapper[object.uid]; } @@ -396,12 +396,12 @@ export function entryCreateUpdateScript(contentType) { } else if (isArray(object) && object.length) { for (let i = 0; i <= object.length; i++){ updateFileFields(object[i], object, i); - } + } parent[pos] = compact(object); } return object; } - + const checkAndDownloadAsset = async function (cAsset) { if (cAsset) { const assetUID = cAsset.uid; @@ -454,24 +454,24 @@ export function entryCreateUpdateScript(contentType) { } return cAsset; }; - + const uploadAssets = async function () { const assetFolderMap = JSON.parse(fs.readFileSync(path.resolve(filePath, 'folder-mapper.json'), 'utf8')); const stackAPIClient = managementAPIClient.stack({ api_key: stackSDKInstance.api_key, branch_uid: branch }); for (let i = 0; i < downloadedAssets?.length; i++) { const asset = downloadedAssets[i]; let requestOption = {}; - + requestOption.parent_uid = assetFolderMap[asset.parent_uid] || asset.parent_uid; - + if (asset.hasOwnProperty('description') && typeof asset.description === 'string') { requestOption.description = asset.description; } - + if (asset.hasOwnProperty('tags') && Array.isArray(asset.tags)) { requestOption.tags = asset.tags; } - + if (asset.hasOwnProperty('title') && typeof asset.title === 'string') { requestOption.title = asset.title; } @@ -494,14 +494,14 @@ export function entryCreateUpdateScript(contentType) { limit, include_count: true, }; - + const entriesSearchResponse = await managementAPIClient .stack({ api_key: stackSDKInstance.api_key, branch_uid: branchName }) .contentType(contentType) .entry() .query(requestObject) .find(); - + if (entriesSearchResponse?.items?.length > 0) { skip += limit || 100; entries = [...entries, ...entriesSearchResponse.items]; @@ -520,14 +520,14 @@ export function entryCreateUpdateScript(contentType) { failedMessage: 'Failed to update entries', task: async () => { let compareBranchEntries = await getEntries(compareBranch, '${contentType}') - + let baseBranchEntries = await getEntries(branch, '${contentType}'); - + let contentType = await managementAPIClient .stack({ api_key: stackSDKInstance.api_key, branch_uid: compareBranch }) .contentType('${contentType}') .fetch(); - + for (let i = 0; i < compareBranchEntries?.length; i++) { assetRefPath[compareBranchEntries[i].uid] = [] findAssets(contentType.schema, compareBranchEntries[i], assetRefPath[compareBranchEntries[i].uid]); @@ -554,13 +554,13 @@ export function entryCreateUpdateScript(contentType) { } if (downloadedAssets?.length) await uploadAssets(); } - + let flag = { references: false }; - + const references = await findReference(contentType.schema, '', flag); - + async function updateEntry(entry, entryDetails) { if (entry) { Object.assign(entry, { ...entryDetails }); @@ -572,7 +572,7 @@ export function entryCreateUpdateScript(contentType) { for (let i in references) { let compareEntryRef = getValueByPath(entryDetails, references[i]); let baseEntryRef = getValueByPath(baseEntry, references[i]); - + if (compareEntryRef && compareEntryRef.length > 0 && baseEntryRef && baseEntryRef.length >= 0) { let compareRefEntry = await managementAPIClient .stack({ api_key: stackSDKInstance.api_key, branch_uid: compareBranch }) @@ -584,7 +584,7 @@ export function entryCreateUpdateScript(contentType) { .entry() .query({ query: { title: compareRefEntry.title } }) .find(); - + if(baseRefEntry?.items?.length > 0 && baseRefEntry.items[0]?.uid){ updateValueByPath(entryDetails, references[i], baseRefEntry.items[0].uid); } @@ -598,23 +598,23 @@ export function entryCreateUpdateScript(contentType) { let entryDetails = deleteUnwantedKeysFromObject(el, keysToRemove); if(entryDetails !== undefined){ entryDetails = updateAssetDetailsInEntries(entryDetails); - + if (baseBranchEntries && baseBranchEntries.length) { let baseEntryUid = baseBranchEntries[0].uid; let entry = await stackSDKInstance.contentType('${contentType}').entry(baseEntryUid); - + if (flag.references) { await updateReferences(entryDetails, baseBranchEntries[0], references); } - + await updateEntry(entry, entryDetails); } else { let createdEntry = await stackSDKInstance.contentType('${contentType}').entry().create({ entry: entryDetails }); - + if (flag.references) { await updateReferences(entryDetails, createdEntry, references); } - + await updateEntry(createdEntry, entryDetails); } } @@ -627,7 +627,7 @@ export function entryCreateUpdateScript(contentType) { //TODO: Need to discuss this approach and replace it with uid condition let arr = uniquelyConcatenateArrays(Array.from(compareMap.keys()), Array.from(baseMap.keys())); - // Change + // Change for(let i = 0; i < arr.length ; i++){ let entryDetails = deleteUnwantedKeysFromObject(compareMap.get(arr[i]), keysToRemove); //NOTE: In the compare branch, entry must exist. Condition of deleted entry not handled @@ -642,17 +642,17 @@ export function entryCreateUpdateScript(contentType) { if(createdEntry){ if (flag.references) { await updateReferences(entryDetails, createdEntry, references); - } + } await updateEntry(createdEntry, entryDetails); } } else if (compareMap.get(arr[i]) && baseMap.get(arr[i])) { let baseEntry = baseMap.get(arr[i]); let entry = await stackSDKInstance.contentType('${contentType}').entry(baseEntry.uid); - + if (flag.references) { await updateReferences(entryDetails, baseEntry, references); } - + await updateEntry(entry, entryDetails); } } @@ -664,7 +664,7 @@ export function entryCreateUpdateScript(contentType) { }, }; }; - + if (compareBranch && branch.length !== 0 && apiKey.length !== 0) { migration.addTask(updateEntryTask()); } else { diff --git a/packages/contentstack-branches/src/utils/entry-update-script.ts b/packages/contentstack-branches/src/utils/entry-update-script.ts index d5fac3dc13..88ea7eb77c 100644 --- a/packages/contentstack-branches/src/utils/entry-update-script.ts +++ b/packages/contentstack-branches/src/utils/entry-update-script.ts @@ -30,7 +30,7 @@ export function entryUpdateScript(contentType) { 'setWorkflowStage', 'import', ]; - + let compareBranch = config['compare-branch']; let filePath = config['file-path'] || process.cwd(); let assetDirPath = path.resolve(filePath, 'assets'); @@ -41,7 +41,7 @@ export function entryUpdateScript(contentType) { let assetUrlMapper = {}; let assetRefPath = {}; let parent=[]; - + function converter(data) { let arr = []; for (const elm of data) { @@ -50,23 +50,23 @@ export function entryUpdateScript(contentType) { } return arr; } - + function deleteUnwantedKeysFromObject(obj, keysToRemove) { if(obj){ keysToRemove.map((key) => delete obj[key]); return obj; } } - + function uniquelyConcatenateArrays(compareArr, baseArr) { let uniqueArray = compareArr.concat(baseArr.filter((item) => compareArr.indexOf(item) < 0)); return uniqueArray; } - + function getValueByPath(obj, path) { return path.split('[').reduce((o, key) => o && o[key.replace(/\]$/, '')], obj); } - + function updateValueByPath(obj, path, newValue) { path.split('[').reduce((o, key, index, arr) => { if (index === arr.length - 1) { @@ -79,7 +79,7 @@ export function entryUpdateScript(contentType) { const findReference = function (schema, path, flag) { let references = []; - + for (const i in schema) { const currentPath = path ? path + '[' + schema[i].uid : schema[i].uid; if (schema[i].data_type === 'group' || schema[i].data_type === 'global_field') { @@ -99,7 +99,7 @@ export function entryUpdateScript(contentType) { references.push(currentPath); } } - + return references; }; @@ -191,7 +191,7 @@ export function entryUpdateScript(contentType) { } parent.pop(); } - + function findAssetIdsFromHtmlRte(entryObj, ctSchema) { const regex = / { if (element.type) { @@ -319,7 +319,7 @@ export function entryUpdateScript(contentType) { } }); } - + const updateAssetDetailsInEntries = function (entry) { let updatedEntry = Object.assign({},entry); entry = updateFileFields(updatedEntry, entry, null) @@ -332,7 +332,7 @@ export function entryUpdateScript(contentType) { entry = entry.replace(assetUrl, mappedAssetUrl); } }); - + assetUIDs.forEach(function (assetUid) { let uid = assetUIDMapper[assetUid]; if (typeof uid !== 'undefined') { @@ -357,11 +357,11 @@ export function entryUpdateScript(contentType) { parent[pos] = ''; } }; - + if (parent.uid && assetUIDMapper[parent.uid]) { parent.uid = assetUIDMapper[parent.uid]; } - + if ( object && isObject(parent[pos]) && @@ -378,7 +378,7 @@ export function entryUpdateScript(contentType) { ) { parent = omit(parent, ['asset']); } - + if (object.uid && assetUIDMapper[object.uid]) { object.uid = assetUIDMapper[object.uid]; } @@ -395,12 +395,12 @@ export function entryUpdateScript(contentType) { } else if (isArray(object) && object.length) { for (let i = 0; i <= object.length; i++){ updateFileFields(object[i], object, i); - } + } parent[pos] = compact(object); } return object; } - + const checkAndDownloadAsset = async function (cAsset) { if (cAsset) { const assetUID = cAsset.uid; @@ -453,24 +453,24 @@ export function entryUpdateScript(contentType) { } return cAsset; }; - + const uploadAssets = async function () { const assetFolderMap = JSON.parse(fs.readFileSync(path.resolve(filePath, 'folder-mapper.json'), 'utf8')); const stackAPIClient = managementAPIClient.stack({ api_key: stackSDKInstance.api_key, branch_uid: branch }); for (let i = 0; i < downloadedAssets?.length; i++) { const asset = downloadedAssets[i]; let requestOption = {}; - + requestOption.parent_uid = assetFolderMap[asset.parent_uid] || asset.parent_uid; - + if (asset.hasOwnProperty('description') && typeof asset.description === 'string') { requestOption.description = asset.description; } - + if (asset.hasOwnProperty('tags') && Array.isArray(asset.tags)) { requestOption.tags = asset.tags; } - + if (asset.hasOwnProperty('title') && typeof asset.title === 'string') { requestOption.title = asset.title; } @@ -493,14 +493,14 @@ export function entryUpdateScript(contentType) { limit, include_count: true, }; - + const entriesSearchResponse = await managementAPIClient .stack({ api_key: stackSDKInstance.api_key, branch_uid: branchName }) .contentType(contentType) .entry() .query(requestObject) .find(); - + if (entriesSearchResponse?.items?.length > 0) { skip += limit || 100; entries = [...entries, ...entriesSearchResponse.items]; @@ -511,18 +511,18 @@ export function entryUpdateScript(contentType) { } return entries; }; - + const updateEntryTask = () => { return { title: 'Update Entries', successMessage: 'Entries Updated Successfully', failedMessage: 'Failed to update entries', task: async () => { - + let compareBranchEntries = await getEntries(compareBranch, '${contentType}'); - + let baseBranchEntries = await getEntries(branch, '${contentType}'); - + let contentType = await managementAPIClient .stack({ api_key: stackSDKInstance.api_key, branch_uid: compareBranch }) .contentType('${contentType}') @@ -558,9 +558,9 @@ export function entryUpdateScript(contentType) { let flag = { references: false }; - + const references = await findReference(contentType.schema, '', flag); - + async function updateEntry(entry, entryDetails) { Object.assign(entry, { ...entryDetails }); await entry.update(); @@ -570,7 +570,7 @@ export function entryUpdateScript(contentType) { for (let i in references) { let compareEntryRef = getValueByPath(entryDetails, references[i]); let baseEntryRef = getValueByPath(baseEntry, references[i]); - + if (compareEntryRef && compareEntryRef.length > 0 && baseEntryRef && baseEntryRef.length >= 0) { let compareRefEntry = await managementAPIClient .stack({ api_key: stackSDKInstance.api_key, branch_uid: compareBranch }) @@ -582,7 +582,7 @@ export function entryUpdateScript(contentType) { .entry() .query({ query: { title: compareRefEntry.title } }) .find(); - + if(baseRefEntry?.items?.length > 0 && baseRefEntry.items[0]?.uid){ updateValueByPath(entryDetails, references[i], baseRefEntry.items[0].uid); } @@ -599,19 +599,19 @@ export function entryUpdateScript(contentType) { if (baseBranchEntries && baseBranchEntries.length) { let baseEntryUid = baseBranchEntries[0].uid; let entry = await stackSDKInstance.contentType('${contentType}').entry(baseEntryUid); - + if (flag.references) { await updateReferences(entryDetails, baseBranchEntries[0], references); } - + await updateEntry(entry, entryDetails); } else { let createdEntry = await stackSDKInstance.contentType('${contentType}').entry().create({ entry: entryDetails }); - + if (flag.references) { await updateReferences(entryDetails, createdEntry, references); } - + await updateEntry(createdEntry, entryDetails); } } @@ -623,7 +623,7 @@ export function entryUpdateScript(contentType) { //NOTE: Filter distinct entries from the base and compare branches according to their titles. //TODO: Need to discuss this approach and replace it with uid approach let arr = uniquelyConcatenateArrays(Array.from(compareMap.keys()), Array.from(baseMap.keys())); - + arr.map(async (el) => { let entryDetails = deleteUnwantedKeysFromObject(compareMap.get(el), keysToRemove); //NOTE: In the compare branch, entry must exist. Condition of deleted entry not handled @@ -634,22 +634,22 @@ export function entryUpdateScript(contentType) { .contentType('${contentType}') .entry() .create({ entry: entryDetails }) - + if(createdEntry){ if (flag.references) { await updateReferences(entryDetails, createdEntry, references); } - + await updateEntry(createdEntry, entryDetails); } } else if (compareMap.get(el) && baseMap.get(el)) { let baseEntry = baseMap.get(el); let entry = await stackSDKInstance.contentType('${contentType}').entry(baseEntry.uid); - + if (flag.references) { await updateReferences(entryDetails, baseEntry, references); } - + await updateEntry(entry, entryDetails); } } @@ -661,7 +661,7 @@ export function entryUpdateScript(contentType) { }, }; }; - + if (compareBranch && branch.length !== 0 && apiKey.length !== 0) { migration.addTask(updateEntryTask()); } else { diff --git a/packages/contentstack-clone/README.md b/packages/contentstack-clone/README.md index d7f671a178..686896ee40 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.13.1 darwin-arm64 node-v22.14.0 +@contentstack/cli-cm-clone/1.13.2 darwin-x64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-clone/package.json b/packages/contentstack-clone/package.json index a9eabd3cdf..8c532ffa53 100644 --- a/packages/contentstack-clone/package.json +++ b/packages/contentstack-clone/package.json @@ -1,13 +1,13 @@ { "name": "@contentstack/cli-cm-clone", "description": "Contentstack stack clone plugin", - "version": "1.13.1", + "version": "1.13.2", "author": "Contentstack", "bugs": "https://github.com/rohitmishra209/cli-cm-clone/issues", "dependencies": { "@colors/colors": "^1.6.0", - "@contentstack/cli-cm-export": "~1.14.2", - "@contentstack/cli-cm-import": "~1.19.5", + "@contentstack/cli-cm-export": "~1.15.0", + "@contentstack/cli-cm-import": "~1.20.0", "@contentstack/cli-command": "~1.3.3", "@contentstack/cli-utilities": "~1.8.2", "chalk": "^4.1.2", diff --git a/packages/contentstack-config/README.md b/packages/contentstack-config/README.md index ca11a8962c..3198786fef 100644 --- a/packages/contentstack-config/README.md +++ b/packages/contentstack-config/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-config $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-config/1.9.1 darwin-arm64 node-v22.14.0 +@contentstack/cli-config/1.10.0 darwin-x64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND @@ -368,6 +368,8 @@ EXAMPLES $ csdx config:set:region GCP-NA + $ csdx config:set:region GCP-EU + $ csdx config:set:region --cma --cda --ui-host --name "India" $ csdx config:set:region --cma --cda --ui-host --name "India" --developer-hub diff --git a/packages/contentstack-config/package.json b/packages/contentstack-config/package.json index 56232b8332..48f9bb9fb8 100644 --- a/packages/contentstack-config/package.json +++ b/packages/contentstack-config/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-config", "description": "Contentstack CLI plugin for configuration", - "version": "1.9.1", + "version": "1.10.0", "author": "Contentstack", "scripts": { "build": "npm run clean && npm run compile", diff --git a/packages/contentstack-config/src/commands/config/set/region.ts b/packages/contentstack-config/src/commands/config/set/region.ts index 3e2ae47684..bd478dbd2a 100644 --- a/packages/contentstack-config/src/commands/config/set/region.ts +++ b/packages/contentstack-config/src/commands/config/set/region.ts @@ -42,10 +42,10 @@ export default class RegionSetCommand extends BaseCommand --cda --ui-host --name "India"', '$ csdx config:set:region --cma --cda --ui-host --name "India" --developer-hub ', '$ csdx config:set:region --cma --cda --ui-host --name "India" --personalize ', '$ csdx config:set:region --cma --cda --ui-host --name "India" --launch ', - '$ csdx config:set:region --cda --cma --ui-host --name "India" --developer-hub --launch --personalize ', + '$ csdx config:set:region --cda --cma --ui-host --name "India" --developer-hub --launch --personalize ', ]; static args: ArgInput = { @@ -117,7 +118,7 @@ export default class RegionSetCommand extends BaseCommand => { { name: 'AZURE-NA', value: 'AZURE-NA' }, { name: 'AZURE-EU', value: 'AZURE-EU' }, { name: 'GCP-NA', value: 'GCP-NA' }, + { name: 'GCP-EU', value: 'GCP-EU' }, { name: 'Custom', value: 'custom' }, { name: 'exit', value: 'exit' }, ], diff --git a/packages/contentstack-config/src/utils/region-handler.ts b/packages/contentstack-config/src/utils/region-handler.ts index 58ff346d1c..b1d4b167bc 100644 --- a/packages/contentstack-config/src/utils/region-handler.ts +++ b/packages/contentstack-config/src/utils/region-handler.ts @@ -3,12 +3,12 @@ import { configHandler } from '@contentstack/cli-utilities'; function validURL(str) { const pattern = new RegExp( '^(https?:\\/\\/)?' + // protocol (http or https) - '([a-zA-Z0-9.-]+|' + // domain name - '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))' + // IP address - '(:\\d+)?' + // port - '(/[-a-zA-Z0-9_.~+-]*)*' + // path - '(\\?[;&a-zA-Z0-9_.~+=-]*)?' + // query string - '(\\#[-a-zA-Z0-9_]*)?$', // fragment + '([a-zA-Z0-9.-]+|' + // domain name + '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))' + // IP address + '(:\\d+)?' + // port + '(/[-a-zA-Z0-9_.~+-]*)*' + // path + '(\\?[;&a-zA-Z0-9_.~+=-]*)?' + // query string + '(\\#[-a-zA-Z0-9_]*)?$', // fragment 'i', ); @@ -18,49 +18,58 @@ function validURL(str) { // Available region list const regions = { NA: { + name: 'NA', cma: 'https://api.contentstack.io', cda: 'https://cdn.contentstack.io', uiHost: 'https://app.contentstack.com', - name: 'NA', - 'developerHubUrl': 'https://developerhub-api.contentstack.com', - 'launchHubUrl': 'https://launch-api.contentstack.com', - 'personalizeUrl': 'https://personalize-api.contentstack.com', + developerHubUrl: 'https://developerhub-api.contentstack.com', + launchHubUrl: 'https://launch-api.contentstack.com', + personalizeUrl: 'https://personalize-api.contentstack.com', }, EU: { + name: 'EU', cma: 'https://eu-api.contentstack.com', cda: 'https://eu-cdn.contentstack.com', uiHost: 'https://eu-app.contentstack.com', - name: 'EU', - 'developerHubUrl': 'https://eu-developerhub-api.contentstack.com', - 'launchHubUrl': 'https://eu-launch-api.contentstack.com', - 'personalizeUrl': 'https://eu-personalize-api.contentstack.com', + developerHubUrl: 'https://eu-developerhub-api.contentstack.com', + launchHubUrl: 'https://eu-launch-api.contentstack.com', + personalizeUrl: 'https://eu-personalize-api.contentstack.com', }, 'AZURE-NA': { + name: 'AZURE-NA', cma: 'https://azure-na-api.contentstack.com', cda: 'https://azure-na-cdn.contentstack.com', uiHost: 'https://azure-na-app.contentstack.com', - name: 'AZURE-NA', - 'developerHubUrl': 'https://azure-na-developerhub-api.contentstack.com', - 'launchHubUrl': 'https://azure-na-launch-api.contentstack.com', - 'personalizeUrl': 'https://azure-na-personalize-api.contentstack.com', + developerHubUrl: 'https://azure-na-developerhub-api.contentstack.com', + launchHubUrl: 'https://azure-na-launch-api.contentstack.com', + personalizeUrl: 'https://azure-na-personalize-api.contentstack.com', }, 'AZURE-EU': { + name: 'AZURE-EU', cma: 'https://azure-eu-api.contentstack.com', cda: 'https://azure-eu-cdn.contentstack.com', uiHost: 'https://azure-eu-app.contentstack.com', - name: 'AZURE-EU', - 'developerHubUrl': 'https://azure-eu-developerhub-api.contentstack.com', - 'launchHubUrl': 'https://azure-eu-launch-api.contentstack.com', - 'personalizeUrl': 'https://azure-eu-personalize-api.contentstack.com', + developerHubUrl: 'https://azure-eu-developerhub-api.contentstack.com', + launchHubUrl: 'https://azure-eu-launch-api.contentstack.com', + personalizeUrl: 'https://azure-eu-personalize-api.contentstack.com', }, 'GCP-NA': { + name: 'GCP-NA', cma: 'https://gcp-na-api.contentstack.com', cda: 'https://gcp-na-cdn.contentstack.com', uiHost: 'https://gcp-na-app.contentstack.com', - name: 'GCP-NA', - 'developerHubUrl': 'https://gcp-na-developerhub-api.contentstack.com', - 'launchHubUrl': 'https://gcp-na-launch-api.contentstack.com', - 'personalizeUrl': 'https://gcp-na-personalize-api.contentstack.com', + developerHubUrl: 'https://gcp-na-developerhub-api.contentstack.com', + launchHubUrl: 'https://gcp-na-launch-api.contentstack.com', + personalizeUrl: 'https://gcp-na-personalize-api.contentstack.com', + }, + 'GCP-EU': { + name: 'GCP-EU', + cma: 'https://gcp-eu-api.contentstack.com', + cda: 'https://gcp-eu-cdn.contentstack.com', + uiHost: 'https://gcp-eu-app.contentstack.com', + developerHubUrl: 'https://gcp-eu-developerhub-api.contentstack.com', + launchHubUrl: 'https://gcp-eu-launch-api.contentstack.com', + personalizeUrl: 'https://gcp-eu-personalize-api.contentstack.com', }, }; diff --git a/packages/contentstack-export/README.md b/packages/contentstack-export/README.md index 1c8fd668e0..6063bf8919 100755 --- a/packages/contentstack-export/README.md +++ b/packages/contentstack-export/README.md @@ -48,7 +48,7 @@ $ npm install -g @contentstack/cli-cm-export $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-export/1.14.2 darwin-arm64 node-v22.14.0 +@contentstack/cli-cm-export/1.15.0 darwin-x64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-export/package.json b/packages/contentstack-export/package.json index b4387ab87c..33b3ec6409 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.14.2", + "version": "1.15.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { @@ -22,7 +22,7 @@ }, "devDependencies": { "@contentstack/cli-auth": "~1.3.24", - "@contentstack/cli-config": "~1.9.1", + "@contentstack/cli-config": "~1.10.0", "@contentstack/cli-dev-dependencies": "~1.2.4", "@oclif/plugin-help": "^5.2.20", "@oclif/test": "^4.1.6", diff --git a/packages/contentstack-export/src/config/index.ts b/packages/contentstack-export/src/config/index.ts index e83d09215f..4d3de25571 100644 --- a/packages/contentstack-export/src/config/index.ts +++ b/packages/contentstack-export/src/config/index.ts @@ -11,6 +11,7 @@ const config: DefaultConfig = { 'https://azure-na-api.contentstack.com': 'https://azure-na-developerhub-api.contentstack.com', 'https://azure-eu-api.contentstack.com': 'https://azure-eu-developerhub-api.contentstack.com', 'https://gcp-na-api.contentstack.com': 'https://gcp-na-developerhub-api.contentstack.com', + 'https://gcp-eu-api.contentstack.com': 'https://gcp-eu-developerhub-api.contentstack.com', }, // use below hosts for eu region // host:'https://eu-api.contentstack.com/v3', @@ -20,6 +21,8 @@ const config: DefaultConfig = { // host:'https://azure-eu-api.contentstack.com/v3', // use below hosts for gcp-na region // host: 'https://gcp-na-api.contentstack.com' + // use below hosts for gcp-eu region + // host: 'https://gcp-eu-api.contentstack.com' modules: { types: [ 'stack', diff --git a/packages/contentstack-export/src/types/default-config.ts b/packages/contentstack-export/src/types/default-config.ts index eb6c5c0474..a2f7fd8701 100644 --- a/packages/contentstack-export/src/types/default-config.ts +++ b/packages/contentstack-export/src/types/default-config.ts @@ -16,6 +16,8 @@ export default interface DefaultConfig { // host:'https://azure-na-api.contentstack.com/v3', // use below hosts for gcp-na region // host: 'https://gcp-na-api.contentstack.com' + // use below hosts for gcp-eu region + // host: 'https://gcp-eu-api.contentstack.com' modules: { types: Modules[]; locales: { diff --git a/packages/contentstack-import-setup/README.md b/packages/contentstack-import-setup/README.md index 93a6e6023d..ceecf39bbe 100644 --- a/packages/contentstack-import-setup/README.md +++ b/packages/contentstack-import-setup/README.md @@ -47,7 +47,7 @@ $ npm install -g @contentstack/cli-cm-import-setup $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-import-setup/1.0.1 darwin-arm64 node-v22.14.0 +@contentstack/cli-cm-import-setup/1.1.0 darwin-x64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-import-setup/package.json b/packages/contentstack-import-setup/package.json index 5ab1cfd801..1dc92a974d 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.0.1", + "version": "1.1.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { diff --git a/packages/contentstack-import-setup/src/config/index.ts b/packages/contentstack-import-setup/src/config/index.ts index 7dc87c9022..d72f8bd230 100644 --- a/packages/contentstack-import-setup/src/config/index.ts +++ b/packages/contentstack-import-setup/src/config/index.ts @@ -10,6 +10,8 @@ const config: DefaultConfig = { // host:'https://azure-eu-api.contentstack.com/v3', // use below hosts for gcp-na region // host:'https://gcp-na-api.contentstack.com', + // use below hosts for gcp-eu region + // host:'https://gcp-eu-api.contentstack.com', // pass locale, only to migrate entries from that locale // not passing `locale` will migrate all the locales present // locales: ['fr-fr'], diff --git a/packages/contentstack-import/README.md b/packages/contentstack-import/README.md index 04802faceb..6e48d0b38c 100644 --- a/packages/contentstack-import/README.md +++ b/packages/contentstack-import/README.md @@ -47,7 +47,7 @@ $ npm install -g @contentstack/cli-cm-import $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-import/1.19.5 darwin-arm64 node-v22.14.0 +@contentstack/cli-cm-import/1.20.0 darwin-x64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-import/package.json b/packages/contentstack-import/package.json index 38f9ba35a2..8031e6f647 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.19.5", + "version": "1.20.0", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { diff --git a/packages/contentstack-import/src/config/index.ts b/packages/contentstack-import/src/config/index.ts index 2489e60075..16ce4f7038 100644 --- a/packages/contentstack-import/src/config/index.ts +++ b/packages/contentstack-import/src/config/index.ts @@ -10,6 +10,8 @@ const config: DefaultConfig = { // host:'https://azure-eu-api.contentstack.com/v3', // use below hosts for gcp-na region // host:'https://gcp-na-api.contentstack.com', + // use below hosts for gcp-eu region + // host:'https://gcp-eu-api.contentstack.com', // pass locale, only to migrate entries from that locale // not passing `locale` will migrate all the locales present // locales: ['fr-fr'], @@ -21,6 +23,7 @@ const config: DefaultConfig = { 'https://azure-na-api.contentstack.com': 'https://azure-na-developerhub-api.contentstack.com', 'https://azure-eu-api.contentstack.com': 'https://azure-eu-developerhub-api.contentstack.com', 'https://gcp-na-api.contentstack.com': 'https://gcp-na-developerhub-api.contentstack.com', + 'https://gcp-eu-api.contentstack.com': 'https://gcp-eu-developerhub-api.contentstack.com', }, modules: { apiConcurrency: 5, diff --git a/packages/contentstack-import/src/utils/asset-helper.ts b/packages/contentstack-import/src/utils/asset-helper.ts index 0d6e169669..d4561ec37b 100644 --- a/packages/contentstack-import/src/utils/asset-helper.ts +++ b/packages/contentstack-import/src/utils/asset-helper.ts @@ -359,7 +359,7 @@ function findFileUrls(schema: any, _entry: any, assetUrls: any) { text = JSON.stringify(_entry); } markdownRegEx = new RegExp( - '(https://(assets|(eu-|azure-na-|azure-eu-|gcp-na-)?images).contentstack.(io|com)/v3/assets/(.*?)/(.*?)/(.*?)/(.*?)(?="))', + '(https://(assets|(eu-|azure-na-|azure-eu-|gcp-na-|gcp-eu-)?images).contentstack.(io|com)/v3/assets/(.*?)/(.*?)/(.*?)/(.*?)(?="))', 'g', ); while ((markdownMatch = markdownRegEx.exec(text)) !== null) { diff --git a/packages/contentstack-seed/package.json b/packages/contentstack-seed/package.json index 5b922cb964..8b22c7953b 100644 --- a/packages/contentstack-seed/package.json +++ b/packages/contentstack-seed/package.json @@ -1,11 +1,11 @@ { "name": "@contentstack/cli-cm-seed", "description": "create a Stack from existing content types, entries, assets, etc.", - "version": "1.10.1", + "version": "1.10.2", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-cm-import": "~1.19.5", + "@contentstack/cli-cm-import": "~1.20.0", "@contentstack/cli-command": "~1.3.3", "@contentstack/cli-utilities": "~1.8.2", "@contentstack/management": "~1.18.4", diff --git a/packages/contentstack/README.md b/packages/contentstack/README.md index 5b90aaa9bd..e201cbbbbb 100644 --- a/packages/contentstack/README.md +++ b/packages/contentstack/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli $ csdx COMMAND running command... $ csdx (--version|-v) -@contentstack/cli/1.35.4 darwin-arm64 node-v22.14.0 +@contentstack/cli/1.36.0 darwin-x64 node-v22.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND @@ -3560,6 +3560,8 @@ EXAMPLES $ csdx config:set:region GCP-NA + $ csdx config:set:region GCP-EU + $ csdx config:set:region --cma --cda --ui-host --name "India" $ csdx config:set:region --cma --cda --ui-host --name "India" --developer-hub diff --git a/packages/contentstack/package.json b/packages/contentstack/package.json index c0fa86856f..1a9a583cc9 100755 --- a/packages/contentstack/package.json +++ b/packages/contentstack/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli", "description": "Command-line tool (CLI) to interact with Contentstack", - "version": "1.35.4", + "version": "1.36.0", "author": "Contentstack", "bin": { "csdx": "./bin/run.js" @@ -24,18 +24,18 @@ "dependencies": { "@contentstack/cli-audit": "~1.7.5", "@contentstack/cli-auth": "~1.3.24", - "@contentstack/cli-cm-bootstrap": "~1.13.1", - "@contentstack/cli-cm-branches": "~1.2.1", + "@contentstack/cli-cm-bootstrap": "~1.13.2", + "@contentstack/cli-cm-branches": "~1.3.0", "@contentstack/cli-cm-bulk-publish": "~1.7.2", - "@contentstack/cli-cm-clone": "~1.13.1", - "@contentstack/cli-cm-export": "~1.14.2", + "@contentstack/cli-cm-clone": "~1.13.2", + "@contentstack/cli-cm-export": "~1.15.0", "@contentstack/cli-cm-export-to-csv": "~1.7.3", - "@contentstack/cli-cm-import": "~1.19.5", - "@contentstack/cli-cm-import-setup": "1.0.1", + "@contentstack/cli-cm-import": "~1.20.0", + "@contentstack/cli-cm-import-setup": "1.1.0", "@contentstack/cli-cm-migrate-rte": "~1.4.21", - "@contentstack/cli-cm-seed": "~1.10.1", + "@contentstack/cli-cm-seed": "~1.10.2", "@contentstack/cli-command": "~1.3.3", - "@contentstack/cli-config": "~1.9.1", + "@contentstack/cli-config": "~1.10.0", "@contentstack/cli-launch": "^1.5.1", "@contentstack/cli-migration": "~1.6.5", "@contentstack/cli-utilities": "~1.8.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49f8cdc08f..d5dc6b46e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,18 +12,18 @@ importers: specifiers: '@contentstack/cli-audit': ~1.7.5 '@contentstack/cli-auth': ~1.3.24 - '@contentstack/cli-cm-bootstrap': ~1.13.1 - '@contentstack/cli-cm-branches': ~1.2.1 + '@contentstack/cli-cm-bootstrap': ~1.13.2 + '@contentstack/cli-cm-branches': ~1.3.0 '@contentstack/cli-cm-bulk-publish': ~1.7.2 - '@contentstack/cli-cm-clone': ~1.13.1 - '@contentstack/cli-cm-export': ~1.14.2 + '@contentstack/cli-cm-clone': ~1.13.2 + '@contentstack/cli-cm-export': ~1.15.0 '@contentstack/cli-cm-export-to-csv': ~1.7.3 - '@contentstack/cli-cm-import': ~1.19.5 - '@contentstack/cli-cm-import-setup': 1.0.1 + '@contentstack/cli-cm-import': ~1.20.0 + '@contentstack/cli-cm-import-setup': 1.1.0 '@contentstack/cli-cm-migrate-rte': ~1.4.21 - '@contentstack/cli-cm-seed': ~1.10.1 + '@contentstack/cli-cm-seed': ~1.10.2 '@contentstack/cli-command': ~1.3.3 - '@contentstack/cli-config': ~1.9.1 + '@contentstack/cli-config': ~1.10.0 '@contentstack/cli-launch': ^1.5.1 '@contentstack/cli-migration': ~1.6.5 '@contentstack/cli-utilities': ~1.8.2 @@ -237,7 +237,7 @@ importers: packages/contentstack-bootstrap: specifiers: - '@contentstack/cli-cm-seed': ~1.10.1 + '@contentstack/cli-cm-seed': ~1.10.2 '@contentstack/cli-command': ~1.3.3 '@contentstack/cli-utilities': ~1.8.2 '@oclif/test': ^4.1.6 @@ -363,8 +363,8 @@ importers: packages/contentstack-clone: specifiers: '@colors/colors': ^1.6.0 - '@contentstack/cli-cm-export': ~1.14.2 - '@contentstack/cli-cm-import': ~1.19.5 + '@contentstack/cli-cm-export': ~1.15.0 + '@contentstack/cli-cm-import': ~1.20.0 '@contentstack/cli-command': ~1.3.3 '@contentstack/cli-utilities': ~1.8.2 '@oclif/test': ^4.1.6 @@ -508,7 +508,7 @@ importers: specifiers: '@contentstack/cli-auth': ~1.3.24 '@contentstack/cli-command': ~1.3.3 - '@contentstack/cli-config': ~1.9.1 + '@contentstack/cli-config': ~1.10.0 '@contentstack/cli-dev-dependencies': ~1.2.4 '@contentstack/cli-utilities': ~1.8.2 '@contentstack/cli-variants': ~1.1.5 @@ -824,7 +824,7 @@ importers: packages/contentstack-seed: specifiers: - '@contentstack/cli-cm-import': ~1.19.5 + '@contentstack/cli-cm-import': ~1.20.0 '@contentstack/cli-command': ~1.3.3 '@contentstack/cli-utilities': ~1.8.2 '@contentstack/management': ~1.18.4 @@ -1414,7 +1414,7 @@ packages: resolution: {integrity: sha512-DJ6gU8teAScWw6uZo+MBRrlEHfXfvtuVzoHiS5VCIAA6wVftGHQak7K+ch60PKZDW562VQ1u4Ky9HWjsIfZ7+Q==} engines: {node: '>=14.0.0'} dependencies: - '@contentstack/cli-utilities': 1.8.1_debug@4.4.0 + '@contentstack/cli-utilities': 1.8.2_debug@4.4.0 contentstack: 3.24.2 transitivePeerDependencies: - '@jest/globals' @@ -1429,7 +1429,7 @@ packages: dependencies: '@apollo/client': 3.13.1_graphql@16.10.0 '@contentstack/cli-command': 1.3.3_debug@4.4.0 - '@contentstack/cli-utilities': 1.8.1_debug@4.4.0 + '@contentstack/cli-utilities': 1.8.2_debug@4.4.0 '@oclif/core': 3.27.0 '@oclif/plugin-help': 5.2.20_ogreqof3k35xezedraj6pnd45y '@oclif/plugin-plugins': 5.4.34 @@ -1469,8 +1469,8 @@ packages: - typescript dev: false - /@contentstack/cli-utilities/1.8.1_debug@4.4.0: - resolution: {integrity: sha512-fBj9t9xGux9jGXlQ6MymPJ2MOqXqcIny3N6MwG5J6ppW86Ps4tBfgrnRuODSBTc0GGjup4Jg84Q3zyJyF3pJfg==} + /@contentstack/cli-utilities/1.8.2_debug@4.4.0: + resolution: {integrity: sha512-5d2tL8Fnztrf3dDMTyecxlje1HiojY0cppq+eY3t/xrSHIKyjXLr8hjE9g7iSFdyuqrylUbnYdWJFo9KMf6g+w==} dependencies: '@contentstack/management': 1.18.4_debug@4.4.0 '@contentstack/marketplace-sdk': 1.2.5_debug@4.4.0 @@ -5556,7 +5556,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: '@contentstack/cli-command': 1.3.3_debug@4.4.0 - '@contentstack/cli-utilities': 1.8.1_debug@4.4.0 + '@contentstack/cli-utilities': 1.8.2_debug@4.4.0 '@contentstack/types-generator': 2.2.0_zav7a7arc4aduyoecinlry72ui async: 3.2.6 dotenv: 16.4.7