contensis-cli 1.0.12-beta.7 → 1.0.12-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/shell.js CHANGED
@@ -191,6 +191,7 @@ class ContensisShell {
191
191
  "remove contenttypes",
192
192
  "remove key",
193
193
  "remove entries",
194
+ "remove nodes",
194
195
  "remove role",
195
196
  "set project name",
196
197
  "set project description",
package/dist/shell.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/shell.ts"],
4
- "sourcesContent": ["import figlet from 'figlet';\nimport inquirer from 'inquirer';\nimport inquirerPrompt from 'inquirer-command-prompt';\nimport commands from './commands';\nimport { LogMessages } from './localisation/en-GB';\nimport CredentialProvider from './providers/CredentialProvider';\nimport { appRootDir } from './providers/file-provider';\nimport ContensisCli, { cliCommand } from './services/ContensisCliService';\nimport { Logging } from './util';\nimport { logError, Logger } from './util/logger';\nimport { LIB_VERSION } from './version';\n\nclass ContensisShell {\n private currentEnvironment!: string;\n private emptyInputCounter: number = 0;\n private env!: EnvironmentCache;\n private firstStart = true;\n private userId: string = '';\n private log = Logger;\n private messages = LogMessages;\n\n private refreshEnvironment = () => {\n // Reload any persisted changes from the disk cache\n const {\n cache: { currentEnvironment = '', environments = {} },\n } = new ContensisCli([]);\n // console.log(`refreshing env w/${currentEnvironment}`);\n this.currentEnvironment = currentEnvironment;\n this.env = environments[currentEnvironment];\n\n // Reload logging here to support changing language\n Logging('en-GB').then(({ messages, Log }) => {\n this.log = Log;\n this.messages = messages;\n });\n };\n\n constructor() {\n this.refreshEnvironment();\n inquirerPrompt.setConfig({\n history: {\n save: true,\n folder: appRootDir,\n limit: 100,\n blacklist: ['quit'],\n },\n });\n\n const { log, messages } = this;\n\n figlet.text(\n messages.app.contensis(),\n {\n font: 'Block',\n horizontalLayout: 'default',\n verticalLayout: 'default',\n width: process.stdout.columns,\n whitespaceBreak: true,\n },\n (err, data) => {\n if (err) {\n log.error(messages.app.unknownError());\n console.dir(err);\n return;\n }\n console.log(log.successText(data));\n console.log(log.infoText(messages.app.startup(LIB_VERSION)));\n console.log(log.helpText(messages.app.help()));\n\n this.start().catch(ex => log.error(ex));\n }\n );\n }\n\n restart = async () => {\n this.firstStart = false;\n this.log.line(); // add a line so we can see where the shell has been restarted\n await this.start();\n };\n\n start = async () => {\n this.refreshEnvironment();\n this.userId = '';\n const { currentEnvironment, env, log, messages } = this;\n\n if (env?.lastUserId) {\n const [credsErr, credentials] = await new CredentialProvider(\n {\n userId: env.lastUserId,\n alias: currentEnvironment,\n },\n env.passwordFallback\n ).Init();\n if (credsErr && !credentials.current) {\n log.error(credsErr.message);\n }\n if (credentials.current) {\n if (this.firstStart) {\n const token = await cliCommand(['login', env.lastUserId]).Login(\n env.lastUserId,\n {\n promptPassword: false,\n silent: true,\n }\n );\n if (token) {\n this.userId = env.lastUserId;\n if (!env.currentProject) log.warning(messages.projects.tip());\n }\n this.firstStart = false;\n this.refreshEnvironment();\n } else {\n this.userId = env.lastUserId;\n }\n }\n }\n await this.contensisPrompt();\n };\n\n contensisPrompt = async (): Promise<any> => {\n const { currentEnvironment, env, log, messages, userId } = this;\n\n const availableCommands = [\n {\n filter: (str: string) => {\n return str.replace(/ \\[.*$/, '');\n },\n },\n 'connect',\n 'list envs',\n 'quit',\n ];\n\n if (currentEnvironment)\n availableCommands.push('login', 'list projects', 'set project');\n if (userId)\n availableCommands.push(\n 'create key',\n 'create project',\n 'create role',\n 'diff models',\n 'execute block action release',\n 'execute block action makelive',\n 'execute block action rollback',\n 'execute block action markasbroken',\n 'get assets',\n 'get block',\n 'get block logs',\n 'get contenttype',\n 'get component',\n 'get entries',\n 'get nodes',\n 'get model',\n 'get project',\n 'get role',\n 'get token',\n 'get version',\n 'get webhook',\n 'get workflow',\n 'import contenttypes',\n 'import components',\n 'import entries',\n 'import models',\n 'import nodes',\n 'list blocks',\n 'list contenttypes',\n 'list components',\n 'list keys',\n 'list models',\n 'list proxies',\n 'list renderers',\n 'list roles',\n 'list webhooks',\n 'list workflows',\n 'push block',\n 'remove components',\n 'remove contenttypes',\n 'remove key',\n 'remove entries',\n 'remove role',\n 'set project name',\n 'set project description',\n 'set role name',\n 'set role description',\n 'set role assignments',\n 'set role enabled',\n 'set role permissions'\n );\n\n const prompt = inquirer.createPromptModule();\n prompt.registerPrompt('command', inquirerPrompt);\n return prompt([\n {\n type: 'command',\n name: 'cmd',\n autoCompletion: availableCommands.sort(),\n autocompletePrompt: log.infoText(messages.app.autocomplete()),\n message: `${userId ? `${userId}@` : ''}${currentEnvironment || ''}>`,\n context: 0,\n validate: (val: string) => {\n if (!val) this.emptyInputCounter++;\n if (this.emptyInputCounter > 1)\n console.log(this.log.infoText(this.messages.app.suggestions()));\n if (val) {\n this.emptyInputCounter = 0;\n return true;\n }\n },\n prefix: `${env?.currentProject || log.infoText('contensis')}`,\n short: true,\n },\n ])\n .then(async (answers: { cmd: string }) => {\n if (answers.cmd === 'quit') {\n this.quit();\n } else {\n try {\n if (answers.cmd) {\n const program = commands();\n await program.parseAsync(\n answers.cmd\n .match(/\"[^\"]+\"|[^\\s]+/g)\n ?.map(e => e.replace(/\"(.+)\"/, '$1')),\n {\n from: 'user',\n }\n );\n }\n } catch (ex: any) {\n const str = ex.toString();\n if (!str.includes('CommanderError'))\n logError(\n ex,\n `Shell ${\n ex instanceof Error\n ? ex.toString()\n : JSON.stringify(ex, null, 2)\n }`\n );\n } finally {\n return this.contensisPrompt();\n }\n }\n })\n .catch((err: Error) => {\n log.error(err.message);\n this.quit();\n });\n };\n\n quit = (error?: Error) => {\n const { log, messages } = this;\n process.removeAllListeners('exit');\n\n if (error) {\n log.error(error.message);\n process.exit(1);\n } else {\n log.success(messages.app.quit());\n process.exitCode = 0;\n process.exit(0);\n }\n };\n}\n\nlet globalShell: ContensisShell;\n\nexport const shell = () => {\n // Return a benign function for shell().restart() when used in cli context\n // as some commands need to restart the shell to show an updated prompt\n // after successful connect / login / set project\n if (typeof process.argv?.[2] !== 'undefined')\n return {\n quit: ContensisCli.quit,\n restart() {},\n } as any;\n if (!globalShell) globalShell = new ContensisShell();\n return globalShell;\n};\n\nprocess.on('uncaughtException', function (err) {\n // Handle the error safely\n console.log(err);\n});\n\nprocess.on('SIGINT', () => {\n Logger.warning('received SIGINT');\n shell().quit();\n // setTimeout(() => {\n // }, 2000);\n});\n\nprocess.on('SIGTERM', () => {\n Logger.warning('received SIGTERM');\n shell().quit();\n});\n\nprocess.stdin.on('data', key => {\n if ((key as any) == '\\u0003') {\n console.log('');\n Logger.info(`[CTRL]+[C] detected, exiting shell...`);\n shell().quit();\n }\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import figlet from 'figlet';\nimport inquirer from 'inquirer';\nimport inquirerPrompt from 'inquirer-command-prompt';\nimport commands from './commands';\nimport { LogMessages } from './localisation/en-GB';\nimport CredentialProvider from './providers/CredentialProvider';\nimport { appRootDir } from './providers/file-provider';\nimport ContensisCli, { cliCommand } from './services/ContensisCliService';\nimport { Logging } from './util';\nimport { logError, Logger } from './util/logger';\nimport { LIB_VERSION } from './version';\n\nclass ContensisShell {\n private currentEnvironment!: string;\n private emptyInputCounter: number = 0;\n private env!: EnvironmentCache;\n private firstStart = true;\n private userId: string = '';\n private log = Logger;\n private messages = LogMessages;\n\n private refreshEnvironment = () => {\n // Reload any persisted changes from the disk cache\n const {\n cache: { currentEnvironment = '', environments = {} },\n } = new ContensisCli([]);\n // console.log(`refreshing env w/${currentEnvironment}`);\n this.currentEnvironment = currentEnvironment;\n this.env = environments[currentEnvironment];\n\n // Reload logging here to support changing language\n Logging('en-GB').then(({ messages, Log }) => {\n this.log = Log;\n this.messages = messages;\n });\n };\n\n constructor() {\n this.refreshEnvironment();\n inquirerPrompt.setConfig({\n history: {\n save: true,\n folder: appRootDir,\n limit: 100,\n blacklist: ['quit'],\n },\n });\n\n const { log, messages } = this;\n\n figlet.text(\n messages.app.contensis(),\n {\n font: 'Block',\n horizontalLayout: 'default',\n verticalLayout: 'default',\n width: process.stdout.columns,\n whitespaceBreak: true,\n },\n (err, data) => {\n if (err) {\n log.error(messages.app.unknownError());\n console.dir(err);\n return;\n }\n console.log(log.successText(data));\n console.log(log.infoText(messages.app.startup(LIB_VERSION)));\n console.log(log.helpText(messages.app.help()));\n\n this.start().catch(ex => log.error(ex));\n }\n );\n }\n\n restart = async () => {\n this.firstStart = false;\n this.log.line(); // add a line so we can see where the shell has been restarted\n await this.start();\n };\n\n start = async () => {\n this.refreshEnvironment();\n this.userId = '';\n const { currentEnvironment, env, log, messages } = this;\n\n if (env?.lastUserId) {\n const [credsErr, credentials] = await new CredentialProvider(\n {\n userId: env.lastUserId,\n alias: currentEnvironment,\n },\n env.passwordFallback\n ).Init();\n if (credsErr && !credentials.current) {\n log.error(credsErr.message);\n }\n if (credentials.current) {\n if (this.firstStart) {\n const token = await cliCommand(['login', env.lastUserId]).Login(\n env.lastUserId,\n {\n promptPassword: false,\n silent: true,\n }\n );\n if (token) {\n this.userId = env.lastUserId;\n if (!env.currentProject) log.warning(messages.projects.tip());\n }\n this.firstStart = false;\n this.refreshEnvironment();\n } else {\n this.userId = env.lastUserId;\n }\n }\n }\n await this.contensisPrompt();\n };\n\n contensisPrompt = async (): Promise<any> => {\n const { currentEnvironment, env, log, messages, userId } = this;\n\n const availableCommands = [\n {\n filter: (str: string) => {\n return str.replace(/ \\[.*$/, '');\n },\n },\n 'connect',\n 'list envs',\n 'quit',\n ];\n\n if (currentEnvironment)\n availableCommands.push('login', 'list projects', 'set project');\n if (userId)\n availableCommands.push(\n 'create key',\n 'create project',\n 'create role',\n 'diff models',\n 'execute block action release',\n 'execute block action makelive',\n 'execute block action rollback',\n 'execute block action markasbroken',\n 'get assets',\n 'get block',\n 'get block logs',\n 'get contenttype',\n 'get component',\n 'get entries',\n 'get nodes',\n 'get model',\n 'get project',\n 'get role',\n 'get token',\n 'get version',\n 'get webhook',\n 'get workflow',\n 'import contenttypes',\n 'import components',\n 'import entries',\n 'import models',\n 'import nodes',\n 'list blocks',\n 'list contenttypes',\n 'list components',\n 'list keys',\n 'list models',\n 'list proxies',\n 'list renderers',\n 'list roles',\n 'list webhooks',\n 'list workflows',\n 'push block',\n 'remove components',\n 'remove contenttypes',\n 'remove key',\n 'remove entries',\n 'remove nodes',\n 'remove role',\n 'set project name',\n 'set project description',\n 'set role name',\n 'set role description',\n 'set role assignments',\n 'set role enabled',\n 'set role permissions'\n );\n\n const prompt = inquirer.createPromptModule();\n prompt.registerPrompt('command', inquirerPrompt);\n return prompt([\n {\n type: 'command',\n name: 'cmd',\n autoCompletion: availableCommands.sort(),\n autocompletePrompt: log.infoText(messages.app.autocomplete()),\n message: `${userId ? `${userId}@` : ''}${currentEnvironment || ''}>`,\n context: 0,\n validate: (val: string) => {\n if (!val) this.emptyInputCounter++;\n if (this.emptyInputCounter > 1)\n console.log(this.log.infoText(this.messages.app.suggestions()));\n if (val) {\n this.emptyInputCounter = 0;\n return true;\n }\n },\n prefix: `${env?.currentProject || log.infoText('contensis')}`,\n short: true,\n },\n ])\n .then(async (answers: { cmd: string }) => {\n if (answers.cmd === 'quit') {\n this.quit();\n } else {\n try {\n if (answers.cmd) {\n const program = commands();\n await program.parseAsync(\n answers.cmd\n .match(/\"[^\"]+\"|[^\\s]+/g)\n ?.map(e => e.replace(/\"(.+)\"/, '$1')),\n {\n from: 'user',\n }\n );\n }\n } catch (ex: any) {\n const str = ex.toString();\n if (!str.includes('CommanderError'))\n logError(\n ex,\n `Shell ${\n ex instanceof Error\n ? ex.toString()\n : JSON.stringify(ex, null, 2)\n }`\n );\n } finally {\n return this.contensisPrompt();\n }\n }\n })\n .catch((err: Error) => {\n log.error(err.message);\n this.quit();\n });\n };\n\n quit = (error?: Error) => {\n const { log, messages } = this;\n process.removeAllListeners('exit');\n\n if (error) {\n log.error(error.message);\n process.exit(1);\n } else {\n log.success(messages.app.quit());\n process.exitCode = 0;\n process.exit(0);\n }\n };\n}\n\nlet globalShell: ContensisShell;\n\nexport const shell = () => {\n // Return a benign function for shell().restart() when used in cli context\n // as some commands need to restart the shell to show an updated prompt\n // after successful connect / login / set project\n if (typeof process.argv?.[2] !== 'undefined')\n return {\n quit: ContensisCli.quit,\n restart() {},\n } as any;\n if (!globalShell) globalShell = new ContensisShell();\n return globalShell;\n};\n\nprocess.on('uncaughtException', function (err) {\n // Handle the error safely\n console.log(err);\n});\n\nprocess.on('SIGINT', () => {\n Logger.warning('received SIGINT');\n shell().quit();\n // setTimeout(() => {\n // }, 2000);\n});\n\nprocess.on('SIGTERM', () => {\n Logger.warning('received SIGTERM');\n shell().quit();\n});\n\nprocess.stdin.on('data', key => {\n if ((key as any) == '\\u0003') {\n console.log('');\n Logger.info(`[CTRL]+[C] detected, exiting shell...`);\n shell().quit();\n }\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["ContensisCli", "inquirerPrompt", "figlet", "CredentialProvider", "inquirer", "commands"]
7
7
  }
@@ -218,6 +218,7 @@ const printNodesMigrateResult = ({ log, currentProject }, migrateResult, {
218
218
  showChanged = false
219
219
  } = {}) => {
220
220
  var _a, _b, _c;
221
+ log.raw(``);
221
222
  for (const [projectId, counts] of Object.entries(migrateResult.nodes || {})) {
222
223
  const importTitle = action === "delete" ? `Delete from project ${log.warningText(currentProject)}` : `Import ${projectId && projectId !== "null" ? `from project ${log.highlightText(projectId)} ` : ""}to ${log.boldText(log.warningText(currentProject))}`;
223
224
  log.help(importTitle);
@@ -352,7 +353,9 @@ const printNodeTreeOutput = ({ log, messages }, root, logDetail = "errors", logL
352
353
  "N"
353
354
  )} [no change]; ${statusColour("create")("C")} [create]; ${statusColour(
354
355
  "update"
355
- )("U")} [update]; ${statusColour("error")("E")} [error];`
356
+ )("U")} [update]; ${statusColour("delete")("D")} [delete]; ${statusColour(
357
+ "error"
358
+ )("E")} [error];`
356
359
  );
357
360
  log.info(
358
361
  `Node properties: ${log.highlightText(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/util/console.printer.ts"],
4
- "sourcesContent": ["import { Node } from 'contensis-delivery-api/lib/models';\nimport dayjs from 'dayjs';\nimport { deconstructApiError } from './error';\nimport { Logger, addNewLines } from './logger';\nimport {\n BlockVersion,\n EntriesResult,\n MigrateModelsResult,\n MigrateNodesTree,\n MigrateStatus,\n NodesResult,\n ProjectNodesToMigrate,\n} from 'migratortron';\nimport ContensisCli from '~/services/ContensisCliService';\n\nconst formatDate = (date: Date | string, format = 'DD/MM/YYYY HH:mm') =>\n dayjs(date).format(format);\n\nexport const printBlockVersion = (\n { log, messages }: ContensisCli,\n block: BlockVersion,\n printOptions = {\n showSource: true,\n showStatus: true,\n showStaticPaths: true,\n showImage: true,\n }\n) => {\n console.log(\n ` ${log.standardText(`v${block.version.versionNo}`)} ${block.id}`\n );\n console.log(\n ` state: ${messages.blocks.runningStatus(\n block.status.broken ? 'broken' : block.status.running.global\n )}`\n );\n console.log(\n ` released: ${log.infoText(\n block.version.released\n ? `[${formatDate(block.version.released)}] ${block.version.releasedBy}`\n : 'no'\n )}`\n );\n if (block.version.madeLive)\n console.log(\n ` live: ${log.infoText(\n `[${formatDate(block.version.madeLive)}] ${block.version.madeLiveBy}`\n )}`\n );\n if (printOptions.showStatus) {\n console.log(` status:`);\n console.log(` deployment: ${log.infoText(block.status.deployment)}`);\n console.log(` workflow: ${log.infoText(block.status.workflow)}`);\n console.log(\n ` running status: ${messages.blocks.runningStatus(\n block.status.running.global\n )}`\n );\n console.log(` datacentres:`);\n console.log(\n ` hq: ${messages.blocks.runningStatus(\n block.status.running.dataCenters.hq\n )}`\n );\n console.log(\n ` london: ${messages.blocks.runningStatus(\n block.status.running.dataCenters.london\n )}`\n );\n console.log(\n ` manchester: ${messages.blocks.runningStatus(\n block.status.running.dataCenters.manchester\n )}`\n );\n }\n if (printOptions.showSource) {\n console.log(` source:`);\n console.log(` commit: ${log.helpText(block.source.commit.id)}`);\n console.log(\n ` message: ${log.infoText(\n block.source.commit.message\n ?.replaceAll('\\n', '\\\\n')\n .replaceAll('\\\\n\\\\n', '\\\\n')\n .replaceAll('\\\\n', '; ')\n )}`\n );\n console.log(\n ` committed: ${log.infoText(\n `[${formatDate(block.source.commit.dateTime)}] ${\n block.source.commit.authorEmail\n }`\n )}`\n );\n console.log(\n ` pushed: ${log.infoText(\n `[${formatDate(block.version.pushed)}] ${block.version.pushedBy}`\n )}`\n );\n console.log(` ${log.infoText(block.source.commit.commitUrl)}`);\n }\n if (printOptions.showImage) {\n console.log(` image:`);\n console.log(` uri: ${log.infoText(block.image.uri)}`);\n console.log(` tag: ${log.helpText(block.image.tag)}`);\n }\n if (printOptions.showStaticPaths) {\n if (block.staticPaths?.length) {\n console.log(` static paths:`);\n for (const path of block.staticPaths) console.log(` - ${path}`);\n }\n }\n if (block.stagingUrl)\n console.log(` staging url: ${log.infoText(block.stagingUrl)}`);\n console.log('');\n};\n\nexport const printEntriesMigrateResult = (\n { log, messages, currentProject }: ContensisCli,\n migrateResult: EntriesResult,\n {\n action = 'import',\n showDiff = false,\n showAll = false,\n showChanged = false,\n }: {\n action?: 'import' | 'delete';\n showDiff?: boolean;\n showAll?: boolean;\n showChanged?: boolean;\n } = {}\n) => {\n console.log(``);\n\n for (const [contentTypeId, entryRes] of Object.entries(\n migrateResult.entriesToMigrate.entryIds\n ) as [string, any]) {\n for (const [originalId, entryStatus] of Object.entries(entryRes) as [\n string,\n any\n ][]) {\n if (\n showAll ||\n (showChanged &&\n (\n Object.entries(\n Object.entries(entryStatus[currentProject])[0]\n )[1][1] as any\n ).status !== 'no change')\n ) {\n console.log(\n log.infoText(\n `${originalId} ${Object.entries(entryStatus || {})\n .filter(x => x[0] !== 'entryTitle')\n .map(([projectId, projectStatus]) => {\n const [targetGuid, { status }] = (Object.entries(\n projectStatus || {}\n )?.[0] as [string, { status: MigrateStatus }]) || [\n '',\n { x: { status: undefined } },\n ];\n return `${messages.migrate.status(status)(`${status}`)}${\n targetGuid !== originalId ? `-> ${targetGuid}` : ''\n }`;\n })}`\n ) + ` ${log.helpText(contentTypeId)} ${entryStatus.entryTitle}`\n );\n\n for (const [projectId, projectStatus] of Object.entries(\n entryStatus\n ).filter(([key]) => key !== 'entryTitle') as [string, any][]) {\n const [targetGuid, { error, diff, status }] = Object.entries(\n projectStatus\n )[0] as [string, any];\n if (error) log.error(error);\n if (diff && showDiff) {\n console.log(\n ` ${log.highlightText(`diff:`)} ${log.infoText(\n highlightDiffText(diff)\n )}\\n`\n );\n }\n }\n }\n }\n }\n if (showAll || showChanged) console.log(``);\n\n for (const [projectId, contentTypeCounts] of Object.entries(\n migrateResult.entries || {}\n ) as [string, any][]) {\n log.help(\n `${action} from project ${\n action === 'delete'\n ? log.warningText(currentProject)\n : `${log.highlightText(projectId)} to ${log.boldText(\n log.warningText(currentProject)\n )}`\n }`\n );\n for (const [contentTypeId, count] of Object.entries(contentTypeCounts) as [\n string,\n number\n ][]) {\n const isTotalCountRow = contentTypeId === 'totalCount';\n const migrateStatusAndCount =\n migrateResult.entriesToMigrate[currentProject][contentTypeId];\n const existingCount =\n migrateResult.existing?.[currentProject]?.[contentTypeId] || 0;\n const existingPercent = ((existingCount / count) * 100).toFixed(0);\n const noChangeOrTotalEntriesCount =\n typeof migrateStatusAndCount !== 'number'\n ? migrateStatusAndCount?.['no change'] || 0\n : migrateStatusAndCount;\n\n const changedPercentage = (\n (noChangeOrTotalEntriesCount / count) *\n 100\n ).toFixed(0);\n\n const existingColor =\n existingPercent === '0' || action === 'delete'\n ? log.warningText\n : log.infoText;\n\n const changedColor = isTotalCountRow\n ? log.helpText\n : changedPercentage === '100'\n ? log.successText\n : log.warningText;\n\n console.log(\n ` - ${\n isTotalCountRow\n ? log.highlightText(\n `${contentTypeId}: ${noChangeOrTotalEntriesCount}`\n )\n : `${contentTypeId}: ${log.helpText(count)}`\n }${\n changedPercentage === '100' || isTotalCountRow\n ? ''\n : existingColor(` [existing: ${`${existingPercent}%`}]`)\n }${\n existingPercent === '0' || (action === 'import' && isTotalCountRow)\n ? ''\n : changedColor(\n ` ${\n isTotalCountRow\n ? `[to ${action}: ${noChangeOrTotalEntriesCount}]`\n : changedPercentage === '100'\n ? 'up to date'\n : `[needs update: ${100 - Number(changedPercentage)}%]`\n }`\n )\n }`\n );\n }\n }\n if (migrateResult.errors?.length) {\n console.log(\n ` - ${log.errorText(`errors: ${migrateResult.errors.length}`)}\\n`\n );\n for (const error of migrateResult.errors)\n log.error(error.message, null, '');\n }\n};\n\nexport const printNodesMigrateResult = (\n { log, currentProject }: ContensisCli,\n migrateResult: NodesResult,\n {\n action = 'import',\n logLimit = 50,\n showDiff = false,\n showAll = false,\n showChanged = false,\n }: {\n action?: 'import' | 'delete';\n logLimit?: number;\n showDiff?: boolean;\n showAll?: boolean;\n showChanged?: boolean;\n } = {}\n) => {\n for (const [projectId, counts] of Object.entries(migrateResult.nodes || {})) {\n const importTitle =\n action === 'delete'\n ? `Delete from project ${log.warningText(currentProject)}`\n : `Import ${\n projectId && projectId !== 'null'\n ? `from project ${log.highlightText(projectId)} `\n : ''\n }to ${log.boldText(log.warningText(currentProject))}`;\n log.help(importTitle);\n\n const migrateStatusAndCount = migrateResult.nodesToMigrate[\n currentProject\n ] as ProjectNodesToMigrate;\n\n const existingCount =\n migrateResult.existing?.[currentProject]?.totalCount || 0;\n\n const totalCount = Object.keys(migrateResult.nodesToMigrate.nodeIds).length;\n const existingPercent = counts.totalCount\n ? ((existingCount / totalCount) * 100).toFixed(0)\n : '0';\n\n const noChangeCount = migrateStatusAndCount?.['no change'] || 0;\n\n const changedPercentage = counts.totalCount\n ? ((noChangeCount / totalCount) * 100).toFixed(0)\n : '0';\n\n const existingColor =\n existingPercent === '0' || action === 'delete'\n ? log.warningText\n : log.infoText;\n\n const changedColor =\n changedPercentage === '100' ? log.successText : log.warningText;\n\n console.log(\n ` - ${log.highlightText(\n `totalCount: ${migrateStatusAndCount.totalCount}`\n )}${\n changedPercentage === '100'\n ? ''\n : existingColor(` [existing: ${`${existingPercent}%`}]`)\n }${\n existingPercent === '0'\n ? ''\n : changedColor(\n ` ${\n changedPercentage === '100'\n ? 'up to date'\n : `[needs update: ${100 - Number(changedPercentage)}%]`\n }`\n )\n }`\n );\n }\n if (migrateResult.errors?.length) {\n console.log(\n ` - ${log.errorText(`errors: ${migrateResult.errors.length}`)}\\n`\n );\n\n log.limits(\n migrateResult.errors\n .map(error => {\n return log.errorText(deconstructApiError(error));\n })\n .join('\\n'),\n logLimit\n );\n }\n};\n\nconst highlightDiffText = (str: string) => {\n const addedRegex = new RegExp(/<<\\+>>(.*?)<<\\/\\+>>/, 'g');\n const removedRegex = new RegExp(/<<->>(.*?)<<\\/->>/, 'g');\n return str\n .replace(addedRegex, match => {\n return Logger.successText(\n match.replace(/<<\\+>>/g, '<+>').replace(/<<\\/\\+>>/g, '</+>')\n );\n })\n .replace(removedRegex, match => {\n return Logger.errorText(\n match.replace(/<<->>/g, '<->').replace(/<<\\/->>/g, '</->')\n );\n });\n};\n\nexport const printModelMigrationAnalysis = (\n { log, messages }: ContensisCli,\n result: any = {}\n) => {\n for (const [contentTypeId, model] of Object.entries(result) as [\n string,\n any\n ][]) {\n let mainOutput = log.standardText(` - ${contentTypeId}`);\n let extraOutput = '';\n let errorOutput = '';\n let diffOutput = '';\n for (const [key, details] of Object.entries(model) as [string, any][]) {\n if (key === 'dependencies') {\n extraOutput += log.infoText(\n ` references: [${details?.join(', ')}]\\n`\n );\n }\n if (key === 'dependencyOf') {\n extraOutput += log.infoText(\n ` required by: [${details?.join(', ')}]\\n`\n );\n }\n if (key === 'projects') {\n for (const [projectId, projectDetails] of Object.entries(details) as [\n string,\n any\n ][]) {\n mainOutput += log.infoText(\n ` [${messages.migrate.status(projectDetails.status)(\n `${projectId}: ${projectDetails.status}`\n )}] v${projectDetails.versionNo}`\n );\n if (projectDetails.diff)\n diffOutput += ` ${log.highlightText(`diff:`)} ${log.infoText(\n highlightDiffText(projectDetails.diff)\n )}\\n`;\n if (projectDetails.error)\n errorOutput += ` ${log.highlightText(\n `error::`\n )} ${log.errorText(projectDetails.error)}`;\n }\n }\n }\n console.log(mainOutput);\n if (extraOutput) {\n const search = '\\n';\n const replace = '';\n console.log(\n extraOutput.replace(\n new RegExp(search + '([^' + search + ']*)$'),\n replace + '$1'\n )\n );\n }\n if (diffOutput) console.log(diffOutput);\n if (errorOutput) console.log(errorOutput);\n }\n};\n\ntype MigrateResultSummary = MigrateModelsResult['']['contentTypes'];\ntype MigrateResultStatus = keyof MigrateResultSummary;\n\nexport const printModelMigrationResult = (\n { log, messages }: ContensisCli,\n result: MigrateResultSummary\n) => {\n for (const [status, ids] of Object.entries(result) as [\n MigrateResultStatus,\n string[]\n ][]) {\n if (ids?.length) {\n if (status === 'errors') {\n const errors: [string, MappedError][] = ids as any;\n log.raw(\n ` - ${status}: [ ${messages.migrate.models.result(status)(\n ids.map(id => id[0]).join(', ')\n )} ]\\n`\n );\n for (const [contentTypeId, error] of errors)\n log.error(\n `${log.highlightText(contentTypeId)}: ${error.message}`,\n error\n );\n } else\n log.raw(\n ` - ${status}: [ ${messages.migrate.models.result(status)(\n ids.join(', ')\n )} ]`\n );\n }\n }\n};\n\nexport const printNodeTreeOutput = (\n { log, messages }: ContensisCli,\n root: Node | MigrateNodesTree | undefined,\n logDetail = 'errors',\n logLimit = 1000\n) => {\n log.raw('');\n const statusColour = messages.migrate.status;\n\n if (root && 'status' in root)\n log.info(\n `Migrate status: ${statusColour('no change')(\n 'N'\n )} [no change]; ${statusColour('create')('C')} [create]; ${statusColour(\n 'update'\n )('U')} [update]; ${statusColour('error')('E')} [error];`\n );\n log.info(\n `Node properties: ${log.highlightText(\n 'e'\n )} = has entry; ${log.highlightText('c')} = canonical; ${log.highlightText(\n 'm'\n )} = include in menu`\n );\n\n log.line();\n\n const outputNode = (\n node: Node | MigrateNodesTree,\n spaces: string,\n isRoot = false\n ) => {\n const errorOutput =\n 'error' in node && node.error && deconstructApiError(node.error);\n const fullOutput = logDetail === 'all';\n const changesOutput =\n logDetail === 'changes' &&\n 'status' in node &&\n ['create', 'update'].includes(node.status);\n\n const diffOutput =\n (fullOutput || changesOutput || errorOutput) &&\n 'diff' in node &&\n node.diff?.replaceAll('\\n', '');\n\n return `${\n 'status' in node\n ? `${statusColour(node.status)(\n node.status.substring(0, 1).toUpperCase()\n )} `\n : ''\n }${node.entry ? log.highlightText('e') : log.infoText('-')}${\n 'isCanonical' in node && node.isCanonical\n ? log.highlightText('c')\n : log.infoText('-')\n }${\n node.includeInMenu ? log.highlightText('m') : log.infoText('-')\n }${spaces}${log[\n 'status' in node && node.status === 'no change'\n ? 'infoText'\n : 'standardText'\n ](\n 'isCanonical' in node && node.isCanonical\n ? log.boldText(fullOutput || isRoot ? node.path : `/${node.slug}`)\n : fullOutput || isRoot\n ? node.path\n : `/${node.slug}`\n )}${node.entry ? ` ${log.helpText(node.entry.sys.contentTypeId)}` : ''}${\n node.childCount ? ` +${node.childCount}` : ``\n } ${'displayName' in node ? log.infoText(node.displayName) : ''}${\n fullOutput || (changesOutput && node.id !== node.originalId)\n ? `~n ${log.infoText(`id:`)} ${\n node.id === node.originalId\n ? node.id\n : `${node.id} ${log.infoText(`<= ${node.originalId}`)}`\n }`\n : ''\n }${\n (fullOutput ||\n (changesOutput && node.parentId !== node.originalParentId)) &&\n node.parentId\n ? `~n ${log.infoText(\n `parentId: ${\n node.parentId === node.originalParentId\n ? node.parentId\n : `${node.parentId} <= ${node.originalParentId}`\n }`\n )}`\n : ''\n }${\n fullOutput && node.entry?.sys.id\n ? `~n ${log.infoText(`entryId: ${node.entry.sys.id}`)}`\n : ''\n }${\n errorOutput\n ? `~n${addNewLines(` ${log.errorText(errorOutput)}`, '~n')}`\n : ''\n }${\n diffOutput\n ? `~n${addNewLines(\n ` ${log.infoText(`diff: ${highlightDiffText(diffOutput)}`)}`,\n '~n'\n )}`\n : ''\n }`;\n };\n\n const outputChildren = (node: Node | undefined, depth = 2) => {\n let str = '';\n for (const child of ((node as any)?.children || []) as Node[]) {\n str += `${outputNode(child, Array(depth + 1).join(' '))}\\n`;\n if ('children' in child) str += outputChildren(child, depth + 1);\n }\n return str;\n };\n\n const children = outputChildren(root);\n log.limits(\n `${outputNode(root || {}, ' ', true)}${children ? `\\n${children}` : ''}`,\n logLimit\n );\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Node } from 'contensis-delivery-api/lib/models';\nimport dayjs from 'dayjs';\nimport { deconstructApiError } from './error';\nimport { Logger, addNewLines } from './logger';\nimport {\n BlockVersion,\n EntriesResult,\n MigrateModelsResult,\n MigrateNodesTree,\n MigrateStatus,\n NodesResult,\n ProjectNodesToMigrate,\n} from 'migratortron';\nimport ContensisCli from '~/services/ContensisCliService';\n\nconst formatDate = (date: Date | string, format = 'DD/MM/YYYY HH:mm') =>\n dayjs(date).format(format);\n\nexport const printBlockVersion = (\n { log, messages }: ContensisCli,\n block: BlockVersion,\n printOptions = {\n showSource: true,\n showStatus: true,\n showStaticPaths: true,\n showImage: true,\n }\n) => {\n console.log(\n ` ${log.standardText(`v${block.version.versionNo}`)} ${block.id}`\n );\n console.log(\n ` state: ${messages.blocks.runningStatus(\n block.status.broken ? 'broken' : block.status.running.global\n )}`\n );\n console.log(\n ` released: ${log.infoText(\n block.version.released\n ? `[${formatDate(block.version.released)}] ${block.version.releasedBy}`\n : 'no'\n )}`\n );\n if (block.version.madeLive)\n console.log(\n ` live: ${log.infoText(\n `[${formatDate(block.version.madeLive)}] ${block.version.madeLiveBy}`\n )}`\n );\n if (printOptions.showStatus) {\n console.log(` status:`);\n console.log(` deployment: ${log.infoText(block.status.deployment)}`);\n console.log(` workflow: ${log.infoText(block.status.workflow)}`);\n console.log(\n ` running status: ${messages.blocks.runningStatus(\n block.status.running.global\n )}`\n );\n console.log(` datacentres:`);\n console.log(\n ` hq: ${messages.blocks.runningStatus(\n block.status.running.dataCenters.hq\n )}`\n );\n console.log(\n ` london: ${messages.blocks.runningStatus(\n block.status.running.dataCenters.london\n )}`\n );\n console.log(\n ` manchester: ${messages.blocks.runningStatus(\n block.status.running.dataCenters.manchester\n )}`\n );\n }\n if (printOptions.showSource) {\n console.log(` source:`);\n console.log(` commit: ${log.helpText(block.source.commit.id)}`);\n console.log(\n ` message: ${log.infoText(\n block.source.commit.message\n ?.replaceAll('\\n', '\\\\n')\n .replaceAll('\\\\n\\\\n', '\\\\n')\n .replaceAll('\\\\n', '; ')\n )}`\n );\n console.log(\n ` committed: ${log.infoText(\n `[${formatDate(block.source.commit.dateTime)}] ${\n block.source.commit.authorEmail\n }`\n )}`\n );\n console.log(\n ` pushed: ${log.infoText(\n `[${formatDate(block.version.pushed)}] ${block.version.pushedBy}`\n )}`\n );\n console.log(` ${log.infoText(block.source.commit.commitUrl)}`);\n }\n if (printOptions.showImage) {\n console.log(` image:`);\n console.log(` uri: ${log.infoText(block.image.uri)}`);\n console.log(` tag: ${log.helpText(block.image.tag)}`);\n }\n if (printOptions.showStaticPaths) {\n if (block.staticPaths?.length) {\n console.log(` static paths:`);\n for (const path of block.staticPaths) console.log(` - ${path}`);\n }\n }\n if (block.stagingUrl)\n console.log(` staging url: ${log.infoText(block.stagingUrl)}`);\n console.log('');\n};\n\nexport const printEntriesMigrateResult = (\n { log, messages, currentProject }: ContensisCli,\n migrateResult: EntriesResult,\n {\n action = 'import',\n showDiff = false,\n showAll = false,\n showChanged = false,\n }: {\n action?: 'import' | 'delete';\n showDiff?: boolean;\n showAll?: boolean;\n showChanged?: boolean;\n } = {}\n) => {\n console.log(``);\n\n for (const [contentTypeId, entryRes] of Object.entries(\n migrateResult.entriesToMigrate.entryIds\n ) as [string, any]) {\n for (const [originalId, entryStatus] of Object.entries(entryRes) as [\n string,\n any\n ][]) {\n if (\n showAll ||\n (showChanged &&\n (\n Object.entries(\n Object.entries(entryStatus[currentProject])[0]\n )[1][1] as any\n ).status !== 'no change')\n ) {\n console.log(\n log.infoText(\n `${originalId} ${Object.entries(entryStatus || {})\n .filter(x => x[0] !== 'entryTitle')\n .map(([projectId, projectStatus]) => {\n const [targetGuid, { status }] = (Object.entries(\n projectStatus || {}\n )?.[0] as [string, { status: MigrateStatus }]) || [\n '',\n { x: { status: undefined } },\n ];\n return `${messages.migrate.status(status)(`${status}`)}${\n targetGuid !== originalId ? `-> ${targetGuid}` : ''\n }`;\n })}`\n ) + ` ${log.helpText(contentTypeId)} ${entryStatus.entryTitle}`\n );\n\n for (const [projectId, projectStatus] of Object.entries(\n entryStatus\n ).filter(([key]) => key !== 'entryTitle') as [string, any][]) {\n const [targetGuid, { error, diff, status }] = Object.entries(\n projectStatus\n )[0] as [string, any];\n if (error) log.error(error);\n if (diff && showDiff) {\n console.log(\n ` ${log.highlightText(`diff:`)} ${log.infoText(\n highlightDiffText(diff)\n )}\\n`\n );\n }\n }\n }\n }\n }\n if (showAll || showChanged) console.log(``);\n\n for (const [projectId, contentTypeCounts] of Object.entries(\n migrateResult.entries || {}\n ) as [string, any][]) {\n log.help(\n `${action} from project ${\n action === 'delete'\n ? log.warningText(currentProject)\n : `${log.highlightText(projectId)} to ${log.boldText(\n log.warningText(currentProject)\n )}`\n }`\n );\n for (const [contentTypeId, count] of Object.entries(contentTypeCounts) as [\n string,\n number\n ][]) {\n const isTotalCountRow = contentTypeId === 'totalCount';\n const migrateStatusAndCount =\n migrateResult.entriesToMigrate[currentProject][contentTypeId];\n const existingCount =\n migrateResult.existing?.[currentProject]?.[contentTypeId] || 0;\n const existingPercent = ((existingCount / count) * 100).toFixed(0);\n const noChangeOrTotalEntriesCount =\n typeof migrateStatusAndCount !== 'number'\n ? migrateStatusAndCount?.['no change'] || 0\n : migrateStatusAndCount;\n\n const changedPercentage = (\n (noChangeOrTotalEntriesCount / count) *\n 100\n ).toFixed(0);\n\n const existingColor =\n existingPercent === '0' || action === 'delete'\n ? log.warningText\n : log.infoText;\n\n const changedColor = isTotalCountRow\n ? log.helpText\n : changedPercentage === '100'\n ? log.successText\n : log.warningText;\n\n console.log(\n ` - ${\n isTotalCountRow\n ? log.highlightText(\n `${contentTypeId}: ${noChangeOrTotalEntriesCount}`\n )\n : `${contentTypeId}: ${log.helpText(count)}`\n }${\n changedPercentage === '100' || isTotalCountRow\n ? ''\n : existingColor(` [existing: ${`${existingPercent}%`}]`)\n }${\n existingPercent === '0' || (action === 'import' && isTotalCountRow)\n ? ''\n : changedColor(\n ` ${\n isTotalCountRow\n ? `[to ${action}: ${noChangeOrTotalEntriesCount}]`\n : changedPercentage === '100'\n ? 'up to date'\n : `[needs update: ${100 - Number(changedPercentage)}%]`\n }`\n )\n }`\n );\n }\n }\n if (migrateResult.errors?.length) {\n console.log(\n ` - ${log.errorText(`errors: ${migrateResult.errors.length}`)}\\n`\n );\n for (const error of migrateResult.errors)\n log.error(error.message, null, '');\n }\n};\n\nexport const printNodesMigrateResult = (\n { log, currentProject }: ContensisCli,\n migrateResult: NodesResult,\n {\n action = 'import',\n logLimit = 50,\n showDiff = false,\n showAll = false,\n showChanged = false,\n }: {\n action?: 'import' | 'delete';\n logLimit?: number;\n showDiff?: boolean;\n showAll?: boolean;\n showChanged?: boolean;\n } = {}\n) => {\n log.raw(``);\n for (const [projectId, counts] of Object.entries(migrateResult.nodes || {})) {\n const importTitle =\n action === 'delete'\n ? `Delete from project ${log.warningText(currentProject)}`\n : `Import ${\n projectId && projectId !== 'null'\n ? `from project ${log.highlightText(projectId)} `\n : ''\n }to ${log.boldText(log.warningText(currentProject))}`;\n log.help(importTitle);\n\n const migrateStatusAndCount = migrateResult.nodesToMigrate[\n currentProject\n ] as ProjectNodesToMigrate;\n\n const existingCount =\n migrateResult.existing?.[currentProject]?.totalCount || 0;\n\n const totalCount = Object.keys(migrateResult.nodesToMigrate.nodeIds).length;\n const existingPercent = counts.totalCount\n ? ((existingCount / totalCount) * 100).toFixed(0)\n : '0';\n\n const noChangeCount = migrateStatusAndCount?.['no change'] || 0;\n\n const changedPercentage = counts.totalCount\n ? ((noChangeCount / totalCount) * 100).toFixed(0)\n : '0';\n\n const existingColor =\n existingPercent === '0' || action === 'delete'\n ? log.warningText\n : log.infoText;\n\n const changedColor =\n changedPercentage === '100' ? log.successText : log.warningText;\n\n console.log(\n ` - ${log.highlightText(\n `totalCount: ${migrateStatusAndCount.totalCount}`\n )}${\n changedPercentage === '100'\n ? ''\n : existingColor(` [existing: ${`${existingPercent}%`}]`)\n }${\n existingPercent === '0'\n ? ''\n : changedColor(\n ` ${\n changedPercentage === '100'\n ? 'up to date'\n : `[needs update: ${100 - Number(changedPercentage)}%]`\n }`\n )\n }`\n );\n }\n if (migrateResult.errors?.length) {\n console.log(\n ` - ${log.errorText(`errors: ${migrateResult.errors.length}`)}\\n`\n );\n\n log.limits(\n migrateResult.errors\n .map(error => {\n return log.errorText(deconstructApiError(error));\n })\n .join('\\n'),\n logLimit\n );\n }\n};\n\nconst highlightDiffText = (str: string) => {\n const addedRegex = new RegExp(/<<\\+>>(.*?)<<\\/\\+>>/, 'g');\n const removedRegex = new RegExp(/<<->>(.*?)<<\\/->>/, 'g');\n return str\n .replace(addedRegex, match => {\n return Logger.successText(\n match.replace(/<<\\+>>/g, '<+>').replace(/<<\\/\\+>>/g, '</+>')\n );\n })\n .replace(removedRegex, match => {\n return Logger.errorText(\n match.replace(/<<->>/g, '<->').replace(/<<\\/->>/g, '</->')\n );\n });\n};\n\nexport const printModelMigrationAnalysis = (\n { log, messages }: ContensisCli,\n result: any = {}\n) => {\n for (const [contentTypeId, model] of Object.entries(result) as [\n string,\n any\n ][]) {\n let mainOutput = log.standardText(` - ${contentTypeId}`);\n let extraOutput = '';\n let errorOutput = '';\n let diffOutput = '';\n for (const [key, details] of Object.entries(model) as [string, any][]) {\n if (key === 'dependencies') {\n extraOutput += log.infoText(\n ` references: [${details?.join(', ')}]\\n`\n );\n }\n if (key === 'dependencyOf') {\n extraOutput += log.infoText(\n ` required by: [${details?.join(', ')}]\\n`\n );\n }\n if (key === 'projects') {\n for (const [projectId, projectDetails] of Object.entries(details) as [\n string,\n any\n ][]) {\n mainOutput += log.infoText(\n ` [${messages.migrate.status(projectDetails.status)(\n `${projectId}: ${projectDetails.status}`\n )}] v${projectDetails.versionNo}`\n );\n if (projectDetails.diff)\n diffOutput += ` ${log.highlightText(`diff:`)} ${log.infoText(\n highlightDiffText(projectDetails.diff)\n )}\\n`;\n if (projectDetails.error)\n errorOutput += ` ${log.highlightText(\n `error::`\n )} ${log.errorText(projectDetails.error)}`;\n }\n }\n }\n console.log(mainOutput);\n if (extraOutput) {\n const search = '\\n';\n const replace = '';\n console.log(\n extraOutput.replace(\n new RegExp(search + '([^' + search + ']*)$'),\n replace + '$1'\n )\n );\n }\n if (diffOutput) console.log(diffOutput);\n if (errorOutput) console.log(errorOutput);\n }\n};\n\ntype MigrateResultSummary = MigrateModelsResult['']['contentTypes'];\ntype MigrateResultStatus = keyof MigrateResultSummary;\n\nexport const printModelMigrationResult = (\n { log, messages }: ContensisCli,\n result: MigrateResultSummary\n) => {\n for (const [status, ids] of Object.entries(result) as [\n MigrateResultStatus,\n string[]\n ][]) {\n if (ids?.length) {\n if (status === 'errors') {\n const errors: [string, MappedError][] = ids as any;\n log.raw(\n ` - ${status}: [ ${messages.migrate.models.result(status)(\n ids.map(id => id[0]).join(', ')\n )} ]\\n`\n );\n for (const [contentTypeId, error] of errors)\n log.error(\n `${log.highlightText(contentTypeId)}: ${error.message}`,\n error\n );\n } else\n log.raw(\n ` - ${status}: [ ${messages.migrate.models.result(status)(\n ids.join(', ')\n )} ]`\n );\n }\n }\n};\n\nexport const printNodeTreeOutput = (\n { log, messages }: ContensisCli,\n root: Node | MigrateNodesTree | undefined,\n logDetail = 'errors',\n logLimit = 1000\n) => {\n log.raw('');\n const statusColour = messages.migrate.status;\n\n if (root && 'status' in root)\n log.info(\n `Migrate status: ${statusColour('no change')(\n 'N'\n )} [no change]; ${statusColour('create')('C')} [create]; ${statusColour(\n 'update'\n )('U')} [update]; ${statusColour('delete')('D')} [delete]; ${statusColour(\n 'error'\n )('E')} [error];`\n );\n log.info(\n `Node properties: ${log.highlightText(\n 'e'\n )} = has entry; ${log.highlightText('c')} = canonical; ${log.highlightText(\n 'm'\n )} = include in menu`\n );\n\n log.line();\n\n const outputNode = (\n node: Node | MigrateNodesTree,\n spaces: string,\n isRoot = false\n ) => {\n const errorOutput =\n 'error' in node && node.error && deconstructApiError(node.error);\n const fullOutput = logDetail === 'all';\n const changesOutput =\n logDetail === 'changes' &&\n 'status' in node &&\n ['create', 'update'].includes(node.status);\n\n const diffOutput =\n (fullOutput || changesOutput || errorOutput) &&\n 'diff' in node &&\n node.diff?.replaceAll('\\n', '');\n\n return `${\n 'status' in node\n ? `${statusColour(node.status)(\n node.status.substring(0, 1).toUpperCase()\n )} `\n : ''\n }${node.entry ? log.highlightText('e') : log.infoText('-')}${\n 'isCanonical' in node && node.isCanonical\n ? log.highlightText('c')\n : log.infoText('-')\n }${\n node.includeInMenu ? log.highlightText('m') : log.infoText('-')\n }${spaces}${log[\n 'status' in node && node.status === 'no change'\n ? 'infoText'\n : 'standardText'\n ](\n 'isCanonical' in node && node.isCanonical\n ? log.boldText(fullOutput || isRoot ? node.path : `/${node.slug}`)\n : fullOutput || isRoot\n ? node.path\n : `/${node.slug}`\n )}${node.entry ? ` ${log.helpText(node.entry.sys.contentTypeId)}` : ''}${\n node.childCount ? ` +${node.childCount}` : ``\n } ${'displayName' in node ? log.infoText(node.displayName) : ''}${\n fullOutput || (changesOutput && node.id !== node.originalId)\n ? `~n ${log.infoText(`id:`)} ${\n node.id === node.originalId\n ? node.id\n : `${node.id} ${log.infoText(`<= ${node.originalId}`)}`\n }`\n : ''\n }${\n (fullOutput ||\n (changesOutput && node.parentId !== node.originalParentId)) &&\n node.parentId\n ? `~n ${log.infoText(\n `parentId: ${\n node.parentId === node.originalParentId\n ? node.parentId\n : `${node.parentId} <= ${node.originalParentId}`\n }`\n )}`\n : ''\n }${\n fullOutput && node.entry?.sys.id\n ? `~n ${log.infoText(`entryId: ${node.entry.sys.id}`)}`\n : ''\n }${\n errorOutput\n ? `~n${addNewLines(` ${log.errorText(errorOutput)}`, '~n')}`\n : ''\n }${\n diffOutput\n ? `~n${addNewLines(\n ` ${log.infoText(`diff: ${highlightDiffText(diffOutput)}`)}`,\n '~n'\n )}`\n : ''\n }`;\n };\n\n const outputChildren = (node: Node | undefined, depth = 2) => {\n let str = '';\n for (const child of ((node as any)?.children || []) as Node[]) {\n str += `${outputNode(child, Array(depth + 1).join(' '))}\\n`;\n if ('children' in child) str += outputChildren(child, depth + 1);\n }\n return str;\n };\n\n const children = outputChildren(root);\n log.limits(\n `${outputNode(root || {}, ' ', true)}${children ? `\\n${children}` : ''}`,\n logLimit\n );\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["dayjs", "_a"]
7
7
  }
@@ -203,15 +203,19 @@ ${Logger.standardText(content)}`;
203
203
  };
204
204
  static limits = (content, displayLength = 30, consoleWidth = process.stdout.columns, logMethod = console.info) => {
205
205
  if (consoleWidth) {
206
- content.split("\n").slice(0, consoleWidth ? displayLength : void 0).map(
207
- (line) => logMethod(
206
+ const contentArray = content.endsWith("\n") ? content.split("\n").slice(0, -1) : content.split("\n");
207
+ const contentLines = contentArray.slice(
208
+ 0,
209
+ consoleWidth ? displayLength : void 0
210
+ );
211
+ for (const line of contentLines)
212
+ logMethod(
208
213
  line.split("~n").map(
209
214
  (l) => consoleWidth && (0, import_printable_characters.strlen)(l) > consoleWidth ? (0, import_printable_characters.first)(l, consoleWidth) : l
210
215
  ).join("\n")
211
- )
212
- ).join("\n");
216
+ );
213
217
  } else {
214
- logMethod(content.replace(import_printable_characters.ansiEscapeCodes, ""));
218
+ logMethod(content.replace(import_printable_characters.ansiEscapeCodes, "").replaceAll("~n", "\n"));
215
219
  }
216
220
  const tableArray = content.split("\n");
217
221
  if (consoleWidth && tableArray.length > displayLength)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/util/logger.ts"],
4
- "sourcesContent": ["/* eslint-disable no-console */\nimport chalk from 'chalk';\nimport dateFormat from 'dateformat';\nimport deepCleaner from 'deep-cleaner';\nimport {\n ansiEscapeCodes,\n first,\n partition,\n strlen,\n} from 'printable-characters';\n// import ProgressBar from 'progress';\nimport { isSysError, tryStringify } from '.';\n\ntype LogMethod = (content: string) => void;\ntype LogErrorMethod = (content: string, err?: any, newline?: string) => void;\ntype LogJsonMethod = (content: any, depth?: number, indent?: string) => void;\ntype LogJsonDepthMethod = (content: any, depth?: number) => void;\ntype LogArrayMethod = (contentArray: string[]) => void;\ntype LogErrorFunc = (\n err: any,\n msg?: string,\n level?: 'error' | 'critical'\n) => void;\n\nexport class Logger {\n static isUserTerminal = !!process.stdout.columns;\n static getPrefix = () => {\n return Logger.isUserTerminal\n ? Logger.infoText(`[cli]`)\n : `[${dateFormat(new Date(), 'dd/mm HH:MM:ss')}]`;\n };\n static errorText = chalk.bold.red;\n static warningText = chalk.keyword('orange');\n static successText = chalk.keyword('green');\n static helpText = chalk.blue;\n static highlightText = chalk.yellow;\n static infoText = chalk.keyword('grey');\n static standardText = chalk.keyword('white');\n static boldText = chalk.bold;\n static critical: LogMethod = content => {\n const message = `${Logger.getPrefix()} ${Logger.errorText(\n '[CRITICAL]'\n )} ${content}`;\n console.log(message);\n };\n static error: LogErrorMethod = (content, err, newline = '\\n') => {\n const message = `${Logger.getPrefix()} ${Logger.errorText(\n `${Logger.isUserTerminal ? '\u274C' : '[ERROR]'} ${content}${\n err\n ? `\\n\\n${Logger.infoText(\n isSysError(err) ? err.toString() : JSON.stringify(err, null, 2)\n )}`\n : ''\n }`\n )}${newline}`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n };\n static warning: LogMethod = content => {\n // if (process.env.DEBUG === 'true') {\n const message = `${Logger.getPrefix()} ${Logger.warningText(\n `${Logger.isUserTerminal ? '\u26A0\uFE0F ' : '[WARN]'} ${content}`\n )}\\n`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n // }\n };\n static success: LogMethod = content => {\n const message = `${Logger.getPrefix()} ${Logger.successText(\n `${Logger.isUserTerminal ? '\u2705' : '[OK]'} ${content}`\n )}`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n };\n static info: LogMethod = content => {\n const message = `${Logger.getPrefix()} ${\n Logger.isUserTerminal ? chalk.bgCyan(' \u2139 ') : '[INFO]'\n } ${Logger.infoText(content)}`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n };\n static help: LogMethod = content => {\n const message = `${Logger.getPrefix()} ${chalk.blue(\n `${Logger.isUserTerminal ? '\u23E9' : '[HELP]'} ${content}`\n )}\\n`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n };\n static standard: LogMethod = content => {\n const message = `${Logger.getPrefix()} ${\n Logger.isUserTerminal ? '\u25FB\uFE0F' : '[STD]'\n } \\n${Logger.standardText(content)}`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n progress.current.interrupt(message);\n };\n static debug: LogMethod = content => {\n if (['true', '1'].includes(process.env.debug || '')) {\n const message = `${Logger.getPrefix()} ${\n Logger.isUserTerminal ? chalk.bgGrey(' \u2699 ') : '[DEBUG]'\n } ${Logger.infoText(content)}`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n }\n };\n static json: LogJsonDepthMethod = (content, depth = 9) =>\n console.dir(deepCleaner(content), { colors: true, depth });\n static mixed: LogArrayMethod = contentArray =>\n console.log(`${Logger.getPrefix()} ${contentArray.join(' ')}`);\n static line = () =>\n Logger.raw(` ${Logger.infoText(`-------------------------------------`)}`);\n\n static object: LogJsonMethod = content => {\n for (const [key, value] of Object.entries(content || {})) {\n if (value && typeof value === 'object') {\n Logger.raw(` ${chalk.bold.grey(key)}:`);\n if (key === 'fields' && Array.isArray(value)) {\n for (const field of value || []) {\n Logger.raw(\n ` ${chalk.bold(field.id)}${\n field.id === content.entryTitleField\n ? '**'\n : field.validations.minCount?.value ||\n typeof field.validations.required?.message !== 'undefined'\n ? '*'\n : ''\n }: ${chalk.grey(\n `${field.dataType}${\n field.dataFormat\n ? `<${\n Array.isArray(\n field.validations.allowedFieldTypes?.fields\n )\n ? `composer[${field.validations.allowedFieldTypes.fields\n .map((f: any) => f.id)\n .join(' | ')}]`\n : field.dataFormat\n }${\n field.dataFormat === 'entry'\n ? `, ${field.validations.allowedContentTypes.contentTypes.join(\n ' | '\n )}`\n : ''\n }>`\n : ''\n }${\n field.validations.maxLength?.value\n ? `(${field.validations.maxLength.value})`\n : ''\n }`\n )}`\n );\n }\n } else if (key === 'groups' && Array.isArray(value)) {\n for (const group of value || []) {\n const description =\n Object.keys(group.description).length &&\n Object.values(group.description)?.[0];\n Logger.raw(\n ` ${chalk.bold(group.id)}${\n description\n ? `: ${chalk.grey(Object.values(group.description)?.[0])}`\n : ''\n }`\n );\n }\n } else {\n Logger.objectRecurse(value, 3, ' ');\n // for (const [innerkey, innervalue] of Object.entries(value)) {\n // if (innervalue && typeof innervalue === 'object') {\n // Logger.raw(` ${chalk.bold.grey(innerkey)}:`);\n // console.table(innervalue);\n // } else if (\n // typeof innervalue !== 'undefined' &&\n // innervalue !== null\n // ) {\n // Logger.raw(` ${chalk.bold.grey(innerkey)}: ${innervalue}`);\n // }\n // }\n }\n } else if (typeof value !== 'undefined' && value !== null) {\n const valueText =\n key === 'id' && typeof value === 'string'\n ? Logger.highlightText(value)\n : value;\n Logger.raw(` ${chalk.bold.grey(key)}: ${valueText}`);\n }\n }\n };\n\n static objectRecurse: LogJsonMethod = (content, depth = 3, indent = '') => {\n if (Array.isArray(content)) {\n for (const item of content) {\n if (item && typeof item === 'object') {\n if (Array.isArray(item) && depth > 3)\n Logger.raw(chalk.grey(`${indent} [${item.join(', ')}]`));\n else Logger.objectRecurse(item, depth + 1, `${indent} `);\n } else Logger.raw(`${indent}${item}`);\n }\n } else {\n let pos = 0;\n for (const [key, value] of Object.entries(content)) {\n const thisIndent =\n pos === 0 ? `${indent.substring(0, indent.length - 2)}- ` : indent;\n if (Array.isArray(value)) {\n if (value.length) Logger.raw(`${thisIndent}${chalk.bold.grey(key)}:`);\n for (const item of value) {\n if (item && typeof item === 'object') {\n if (Array.isArray(item) && depth > 3)\n Logger.raw(chalk.grey(`${indent} [${item.join(', ')}]`));\n else Logger.objectRecurse(item, depth + 1, `${indent} `);\n } else {\n Logger.raw(`${indent} ${item}`);\n }\n }\n } else if (value && typeof value === 'object') {\n Logger.raw(`${indent}${chalk.bold.grey(key)}:`);\n\n Logger.objectRecurse(value, depth + 1, `${indent} `);\n // console.table(value);\n } else if (typeof value !== 'undefined' && value !== null) {\n Logger.raw(`${thisIndent}${chalk.bold.grey(key)}: ${value}`);\n }\n pos++;\n }\n }\n };\n static raw: LogMethod = (content: string) => {\n if (progress.active) progress.current.interrupt(content);\n else console.log(content);\n };\n\n static limits = (\n content: string,\n displayLength = 30,\n consoleWidth = process.stdout.columns,\n logMethod: Function = console.info\n ) => {\n if (consoleWidth) {\n content\n .split('\\n')\n .slice(0, consoleWidth ? displayLength : undefined)\n .map((line: string) =>\n logMethod(\n line\n .split('~n')\n .map(l =>\n consoleWidth && strlen(l) > consoleWidth\n ? first(l, consoleWidth)\n : l\n )\n .join('\\n')\n )\n )\n .join('\\n');\n } else {\n logMethod(content.replace(ansiEscapeCodes, ''));\n }\n\n const tableArray = content.split('\\n');\n if (consoleWidth && tableArray.length > displayLength)\n console.info(\n `\\n`,\n `- and ${tableArray.length - displayLength} more...\\n`\n );\n };\n}\n\nexport const logError: LogErrorFunc = (\n err = new Error('Undefined error'),\n msg,\n level = 'error'\n) => {\n Logger[level](msg || err.message || err?.data?.message || err.Message);\n (Array.isArray(err) ? err : [err]).map((error: AppError) => {\n if (typeof error === 'string') {\n Logger.raw(`${Logger.infoText(error)}\\n`);\n return;\n }\n if ('stack' in error) Logger.raw(` ${Logger.infoText(error.stack)}\\n`);\n if ('data' in error)\n Logger.raw(` ${Logger.infoText(tryStringify(error.data))}\\n`);\n });\n //Logger.line();\n return null;\n};\n\nexport const addNewLines = (\n message = '',\n newLineSeparater = '\\n',\n atPosition = process.stdout.columns\n) => {\n if (message === '' || atPosition === 0) {\n return '';\n }\n\n let result = '';\n let lengthCounter = 0;\n\n // Partition the message string into an array of\n // [nonPrintable, printable][]\n const partitioned = partition(message);\n const addSeparater = () => {\n // If line length counter has exceeded the console width\n // add a new line separater and reset the line length counter\n if (lengthCounter >= atPosition) {\n result += newLineSeparater;\n lengthCounter = 0;\n }\n };\n\n // Loop through the partitioned message parts\n for (const [nonPrintable, printable] of partitioned) {\n // Convert string to array as this will provide accurate\n // lengths and splicing methods with all unicode chars\n const textParts = Array.from(printable);\n // Splice the remaining allowable line length from the text parts array\n const text = textParts.splice(0, atPosition - lengthCounter);\n // In the first iteration append the non printable unicode chars\n // to the beginning of the spliced text\n result += nonPrintable + text.join('');\n // Keep a count of the current line length\n // as one line of output could span multiple \"partitions\"\n lengthCounter += text.length;\n addSeparater();\n\n // Handle any remaining text in this \"partition\"\n while (textParts.length) {\n // Splice the remaining allowable line length from the text parts array\n const text = textParts.splice(0, atPosition - lengthCounter);\n // Append the spliced text to the result\n result += text.join('');\n // Increase line length counter\n lengthCounter += text.length;\n addSeparater();\n }\n }\n return result;\n};\n\nexport const progress = {\n current: { interrupt: (x: string) => {} },\n active: false,\n // done: () => new ProgressBar('', 0),\n // colours: { green: '\\u001b[42m \\u001b[0m', red: '\\u001b[41m \\u001b[0m' },\n // current: new ProgressBar(`:bar`, {\n // complete: '=',\n // incomplete: ' ',\n // width: 20,\n // total: 100,\n // }),\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable no-console */\nimport chalk from 'chalk';\nimport dateFormat from 'dateformat';\nimport deepCleaner from 'deep-cleaner';\nimport {\n ansiEscapeCodes,\n first,\n partition,\n strlen,\n} from 'printable-characters';\n// import ProgressBar from 'progress';\nimport { isSysError, tryStringify } from '.';\n\ntype LogMethod = (content: string) => void;\ntype LogErrorMethod = (content: string, err?: any, newline?: string) => void;\ntype LogJsonMethod = (content: any, depth?: number, indent?: string) => void;\ntype LogJsonDepthMethod = (content: any, depth?: number) => void;\ntype LogArrayMethod = (contentArray: string[]) => void;\ntype LogErrorFunc = (\n err: any,\n msg?: string,\n level?: 'error' | 'critical'\n) => void;\n\nexport class Logger {\n static isUserTerminal = !!process.stdout.columns;\n static getPrefix = () => {\n return Logger.isUserTerminal\n ? Logger.infoText(`[cli]`)\n : `[${dateFormat(new Date(), 'dd/mm HH:MM:ss')}]`;\n };\n static errorText = chalk.bold.red;\n static warningText = chalk.keyword('orange');\n static successText = chalk.keyword('green');\n static helpText = chalk.blue;\n static highlightText = chalk.yellow;\n static infoText = chalk.keyword('grey');\n static standardText = chalk.keyword('white');\n static boldText = chalk.bold;\n static critical: LogMethod = content => {\n const message = `${Logger.getPrefix()} ${Logger.errorText(\n '[CRITICAL]'\n )} ${content}`;\n console.log(message);\n };\n static error: LogErrorMethod = (content, err, newline = '\\n') => {\n const message = `${Logger.getPrefix()} ${Logger.errorText(\n `${Logger.isUserTerminal ? '\u274C' : '[ERROR]'} ${content}${\n err\n ? `\\n\\n${Logger.infoText(\n isSysError(err) ? err.toString() : JSON.stringify(err, null, 2)\n )}`\n : ''\n }`\n )}${newline}`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n };\n static warning: LogMethod = content => {\n // if (process.env.DEBUG === 'true') {\n const message = `${Logger.getPrefix()} ${Logger.warningText(\n `${Logger.isUserTerminal ? '\u26A0\uFE0F ' : '[WARN]'} ${content}`\n )}\\n`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n // }\n };\n static success: LogMethod = content => {\n const message = `${Logger.getPrefix()} ${Logger.successText(\n `${Logger.isUserTerminal ? '\u2705' : '[OK]'} ${content}`\n )}`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n };\n static info: LogMethod = content => {\n const message = `${Logger.getPrefix()} ${\n Logger.isUserTerminal ? chalk.bgCyan(' \u2139 ') : '[INFO]'\n } ${Logger.infoText(content)}`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n };\n static help: LogMethod = content => {\n const message = `${Logger.getPrefix()} ${chalk.blue(\n `${Logger.isUserTerminal ? '\u23E9' : '[HELP]'} ${content}`\n )}\\n`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n };\n static standard: LogMethod = content => {\n const message = `${Logger.getPrefix()} ${\n Logger.isUserTerminal ? '\u25FB\uFE0F' : '[STD]'\n } \\n${Logger.standardText(content)}`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n progress.current.interrupt(message);\n };\n static debug: LogMethod = content => {\n if (['true', '1'].includes(process.env.debug || '')) {\n const message = `${Logger.getPrefix()} ${\n Logger.isUserTerminal ? chalk.bgGrey(' \u2699 ') : '[DEBUG]'\n } ${Logger.infoText(content)}`;\n if (progress.active) progress.current.interrupt(message);\n else console.log(message);\n }\n };\n static json: LogJsonDepthMethod = (content, depth = 9) =>\n console.dir(deepCleaner(content), { colors: true, depth });\n static mixed: LogArrayMethod = contentArray =>\n console.log(`${Logger.getPrefix()} ${contentArray.join(' ')}`);\n static line = () =>\n Logger.raw(` ${Logger.infoText(`-------------------------------------`)}`);\n\n static object: LogJsonMethod = content => {\n for (const [key, value] of Object.entries(content || {})) {\n if (value && typeof value === 'object') {\n Logger.raw(` ${chalk.bold.grey(key)}:`);\n if (key === 'fields' && Array.isArray(value)) {\n for (const field of value || []) {\n Logger.raw(\n ` ${chalk.bold(field.id)}${\n field.id === content.entryTitleField\n ? '**'\n : field.validations.minCount?.value ||\n typeof field.validations.required?.message !== 'undefined'\n ? '*'\n : ''\n }: ${chalk.grey(\n `${field.dataType}${\n field.dataFormat\n ? `<${\n Array.isArray(\n field.validations.allowedFieldTypes?.fields\n )\n ? `composer[${field.validations.allowedFieldTypes.fields\n .map((f: any) => f.id)\n .join(' | ')}]`\n : field.dataFormat\n }${\n field.dataFormat === 'entry'\n ? `, ${field.validations.allowedContentTypes.contentTypes.join(\n ' | '\n )}`\n : ''\n }>`\n : ''\n }${\n field.validations.maxLength?.value\n ? `(${field.validations.maxLength.value})`\n : ''\n }`\n )}`\n );\n }\n } else if (key === 'groups' && Array.isArray(value)) {\n for (const group of value || []) {\n const description =\n Object.keys(group.description).length &&\n Object.values(group.description)?.[0];\n Logger.raw(\n ` ${chalk.bold(group.id)}${\n description\n ? `: ${chalk.grey(Object.values(group.description)?.[0])}`\n : ''\n }`\n );\n }\n } else {\n Logger.objectRecurse(value, 3, ' ');\n // for (const [innerkey, innervalue] of Object.entries(value)) {\n // if (innervalue && typeof innervalue === 'object') {\n // Logger.raw(` ${chalk.bold.grey(innerkey)}:`);\n // console.table(innervalue);\n // } else if (\n // typeof innervalue !== 'undefined' &&\n // innervalue !== null\n // ) {\n // Logger.raw(` ${chalk.bold.grey(innerkey)}: ${innervalue}`);\n // }\n // }\n }\n } else if (typeof value !== 'undefined' && value !== null) {\n const valueText =\n key === 'id' && typeof value === 'string'\n ? Logger.highlightText(value)\n : value;\n Logger.raw(` ${chalk.bold.grey(key)}: ${valueText}`);\n }\n }\n };\n\n static objectRecurse: LogJsonMethod = (content, depth = 3, indent = '') => {\n if (Array.isArray(content)) {\n for (const item of content) {\n if (item && typeof item === 'object') {\n if (Array.isArray(item) && depth > 3)\n Logger.raw(chalk.grey(`${indent} [${item.join(', ')}]`));\n else Logger.objectRecurse(item, depth + 1, `${indent} `);\n } else Logger.raw(`${indent}${item}`);\n }\n } else {\n let pos = 0;\n for (const [key, value] of Object.entries(content)) {\n const thisIndent =\n pos === 0 ? `${indent.substring(0, indent.length - 2)}- ` : indent;\n if (Array.isArray(value)) {\n if (value.length) Logger.raw(`${thisIndent}${chalk.bold.grey(key)}:`);\n for (const item of value) {\n if (item && typeof item === 'object') {\n if (Array.isArray(item) && depth > 3)\n Logger.raw(chalk.grey(`${indent} [${item.join(', ')}]`));\n else Logger.objectRecurse(item, depth + 1, `${indent} `);\n } else {\n Logger.raw(`${indent} ${item}`);\n }\n }\n } else if (value && typeof value === 'object') {\n Logger.raw(`${indent}${chalk.bold.grey(key)}:`);\n\n Logger.objectRecurse(value, depth + 1, `${indent} `);\n // console.table(value);\n } else if (typeof value !== 'undefined' && value !== null) {\n Logger.raw(`${thisIndent}${chalk.bold.grey(key)}: ${value}`);\n }\n pos++;\n }\n }\n };\n static raw: LogMethod = (content: string) => {\n if (progress.active) progress.current.interrupt(content);\n else console.log(content);\n };\n\n static limits = (\n content: string,\n displayLength = 30,\n consoleWidth = process.stdout.columns,\n logMethod: Function = console.info\n ) => {\n if (consoleWidth) {\n const contentArray = content.endsWith('\\n')\n ? content.split('\\n').slice(0, -1)\n : content.split('\\n');\n const contentLines = contentArray.slice(\n 0,\n consoleWidth ? displayLength : undefined\n );\n for (const line of contentLines)\n logMethod(\n line\n .split('~n')\n .map(l =>\n consoleWidth && strlen(l) > consoleWidth\n ? first(l, consoleWidth)\n : l\n )\n .join('\\n')\n );\n } else {\n logMethod(content.replace(ansiEscapeCodes, '').replaceAll('~n', '\\n'));\n }\n\n const tableArray = content.split('\\n');\n if (consoleWidth && tableArray.length > displayLength)\n console.info(\n `\\n`,\n `- and ${tableArray.length - displayLength} more...\\n`\n );\n };\n}\n\nexport const logError: LogErrorFunc = (\n err = new Error('Undefined error'),\n msg,\n level = 'error'\n) => {\n Logger[level](msg || err.message || err?.data?.message || err.Message);\n (Array.isArray(err) ? err : [err]).map((error: AppError) => {\n if (typeof error === 'string') {\n Logger.raw(`${Logger.infoText(error)}\\n`);\n return;\n }\n if ('stack' in error) Logger.raw(` ${Logger.infoText(error.stack)}\\n`);\n if ('data' in error)\n Logger.raw(` ${Logger.infoText(tryStringify(error.data))}\\n`);\n });\n //Logger.line();\n return null;\n};\n\nexport const addNewLines = (\n message = '',\n newLineSeparater = '\\n',\n atPosition = process.stdout.columns\n) => {\n if (message === '' || atPosition === 0) {\n return '';\n }\n\n let result = '';\n let lengthCounter = 0;\n\n // Partition the message string into an array of\n // [nonPrintable, printable][]\n const partitioned = partition(message);\n const addSeparater = () => {\n // If line length counter has exceeded the console width\n // add a new line separater and reset the line length counter\n if (lengthCounter >= atPosition) {\n result += newLineSeparater;\n lengthCounter = 0;\n }\n };\n\n // Loop through the partitioned message parts\n for (const [nonPrintable, printable] of partitioned) {\n // Convert string to array as this will provide accurate\n // lengths and splicing methods with all unicode chars\n const textParts = Array.from(printable);\n // Splice the remaining allowable line length from the text parts array\n const text = textParts.splice(0, atPosition - lengthCounter);\n // In the first iteration append the non printable unicode chars\n // to the beginning of the spliced text\n result += nonPrintable + text.join('');\n // Keep a count of the current line length\n // as one line of output could span multiple \"partitions\"\n lengthCounter += text.length;\n addSeparater();\n\n // Handle any remaining text in this \"partition\"\n while (textParts.length) {\n // Splice the remaining allowable line length from the text parts array\n const text = textParts.splice(0, atPosition - lengthCounter);\n // Append the spliced text to the result\n result += text.join('');\n // Increase line length counter\n lengthCounter += text.length;\n addSeparater();\n }\n }\n return result;\n};\n\nexport const progress = {\n current: { interrupt: (x: string) => {} },\n active: false,\n // done: () => new ProgressBar('', 0),\n // colours: { green: '\\u001b[42m \\u001b[0m', red: '\\u001b[41m \\u001b[0m' },\n // current: new ProgressBar(`:bar`, {\n // complete: '=',\n // incomplete: ' ',\n // width: 20,\n // total: 100,\n // }),\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["dateFormat", "chalk", "deepCleaner", "text"]
7
7
  }
package/dist/version.js CHANGED
@@ -21,7 +21,7 @@ __export(version_exports, {
21
21
  LIB_VERSION: () => LIB_VERSION
22
22
  });
23
23
  module.exports = __toCommonJS(version_exports);
24
- const LIB_VERSION = "1.0.12-beta.7";
24
+ const LIB_VERSION = "1.0.12-beta.8";
25
25
  // Annotate the CommonJS export names for ESM import in node:
26
26
  0 && (module.exports = {
27
27
  LIB_VERSION
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/version.ts"],
4
- "sourcesContent": ["export const LIB_VERSION = \"1.0.12-beta.7\";\n"],
4
+ "sourcesContent": ["export const LIB_VERSION = \"1.0.12-beta.8\";\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,cAAc;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "contensis-cli",
3
- "version": "1.0.12-beta.7",
3
+ "version": "1.0.12-beta.8",
4
4
  "description": "A fully featured Contensis command line interface with a shell UI provides simple and intuitive ways to manage or profile your content in any NodeJS terminal.",
5
5
  "repository": "https://github.com/contensis/cli",
6
6
  "homepage": "https://github.com/contensis/cli/tree/main/packages/contensis-cli#readme",
@@ -40,7 +40,7 @@
40
40
  "jsonpath-mapper": "^1.1.0",
41
41
  "keytar": "^7.9.0",
42
42
  "lodash": "^4.17.21",
43
- "migratortron": "^1.0.0-beta.37",
43
+ "migratortron": "^1.0.0-beta.38",
44
44
  "nanospinner": "^1.1.0",
45
45
  "node-fetch": "^2.6.7",
46
46
  "parse-git-config": "^3.0.0",
@@ -169,8 +169,8 @@ Example call:
169
169
  'after',
170
170
  `
171
171
  Example call:
172
- > import nodes --from-file site-backup.json
173
- > import nodes --source-alias example-alias --source-project-id example-project
172
+ > import nodes /blog --source-alias example-alias --source-project-id example-project
173
+ > import nodes --from-file site-backup.json --preserve-guids
174
174
  `
175
175
  )
176
176
  .action(async (root: string, opts) => {
@@ -135,5 +135,25 @@ Example call:
135
135
  }
136
136
  });
137
137
 
138
+ remove
139
+ .command('nodes')
140
+ .description('delete nodes from the site view tree')
141
+ .argument('<root>', 'remove nodes from the specified path e.g. /blog or /')
142
+ .addOption(commit)
143
+ .addHelpText(
144
+ 'after',
145
+ `
146
+ Example call:
147
+ > remove nodes /blog
148
+ `
149
+ )
150
+ .action(async (root: string, opts) => {
151
+ await cliCommand(
152
+ ['remove', 'nodes', root],
153
+ opts,
154
+ mapContensisOpts({ paths: root.split(' '), ...opts })
155
+ ).RemoveNodes(opts.commit);
156
+ });
157
+
138
158
  return remove;
139
159
  };
@@ -158,8 +158,8 @@ export const LogMessages = {
158
158
  imported: (env: string, commit: boolean, count: number) =>
159
159
  `[${env}] ${commit ? `Imported` : `Will import`} ${count} nodes`,
160
160
  failedImport: (env: string) => `[${env}] Unable to import nodes`,
161
- removed: (env: string, commit: boolean) =>
162
- `[${env}] ${commit ? `Deleted` : `Will delete`} nodes`,
161
+ removed: (env: string, commit: boolean, root: string) =>
162
+ `[${env}] ${commit ? `Deleted` : `Will delete`} nodes at ${root}`,
163
163
  failedRemove: (env: string) => `[${env}] Unable to delete nodes`,
164
164
  notFound: (env: string) => `[${env}] Nodes were not found `,
165
165
  commitTip: () => `Add --commit flag to commit the previewed changes`,
@@ -1392,7 +1392,7 @@ class ContensisCli {
1392
1392
  const { currentProject, log, messages } = this;
1393
1393
  const contensis = await this.ConnectContensisImport({
1394
1394
  commit,
1395
- importDataType: 'user-input',
1395
+ importDataType: 'user-input', // 'user-input' import type does not require a source cms
1396
1396
  });
1397
1397
  if (contensis) {
1398
1398
  const [err, result] = await contensis.DeleteContentTypes(contentTypeIds);
@@ -1569,7 +1569,7 @@ class ContensisCli {
1569
1569
  const { currentProject, log, messages } = this;
1570
1570
  const contensis = await this.ConnectContensisImport({
1571
1571
  commit,
1572
- importDataType: 'user-input',
1572
+ importDataType: 'user-input', // 'user-input' import type does not require a source cms
1573
1573
  });
1574
1574
  if (contensis) {
1575
1575
  const [err, result] = await contensis.DeleteContentTypes(
@@ -1655,7 +1655,7 @@ class ContensisCli {
1655
1655
  const { currentEnv, currentProject, log, messages } = this;
1656
1656
  const contensis = await this.ConnectContensisImport({
1657
1657
  commit,
1658
- importDataType: 'user-input',
1658
+ importDataType: 'user-input', // 'user-input' import type does not require a source cms
1659
1659
  });
1660
1660
 
1661
1661
  if (contensis) {
@@ -1857,7 +1857,7 @@ class ContensisCli {
1857
1857
  result?.nodesToMigrate?.[currentProject].totalCount;
1858
1858
  const nodesCreated = result?.nodesResult?.['created'] || 0;
1859
1859
  const nodesUpdated = result?.nodesResult?.['updated'] || 0;
1860
- const nodesErrored = result?.nodesResult?.['errored'] || 0;
1860
+ const nodesErrored = result?.nodesResult?.['errors'] || 0;
1861
1861
  const noChanges =
1862
1862
  result?.nodesToMigrate?.[currentProject]['no change'] &&
1863
1863
  nodesMigrateCount === 0;
@@ -1898,6 +1898,54 @@ class ContensisCli {
1898
1898
  }
1899
1899
  };
1900
1900
 
1901
+ RemoveNodes = async (commit = false) => {
1902
+ const { currentEnv, currentProject, log, messages } = this;
1903
+ const contensis = await this.ConnectContensisImport({
1904
+ commit,
1905
+ importDataType: 'user-input', // 'user-input' import type does not require a source cms
1906
+ });
1907
+
1908
+ if (contensis) {
1909
+ if (contensis.isPreview) {
1910
+ console.log(log.successText(` -- PREVIEW -- `));
1911
+ } else {
1912
+ console.log(log.warningText(` *** COMMITTING DELETE *** `));
1913
+ }
1914
+ const [err, result] = await contensis.DeleteNodes();
1915
+ if (result) {
1916
+ this.HandleFormattingAndOutput(result, () => {
1917
+ // print the migrateResult to console
1918
+ printNodeTreeOutput(
1919
+ this,
1920
+ contensis.nodes.targetRepos[currentProject].nodes
1921
+ .migrateNodesTreeView
1922
+ );
1923
+ // printNodesMigrateResult(this, result, {
1924
+ // action: 'delete',
1925
+ // showAll: true,
1926
+ // });
1927
+ });
1928
+ }
1929
+ if (
1930
+ !err &&
1931
+ ((!commit && result.nodesToMigrate[currentProject].totalCount) ||
1932
+ (commit && result.nodesResult?.deleted))
1933
+ ) {
1934
+ log.success(
1935
+ messages.nodes.removed(currentEnv, commit, contensis.nodes.rootPath)
1936
+ );
1937
+ log.raw(``);
1938
+ if (!commit) {
1939
+ log.help(messages.nodes.commitTip());
1940
+ }
1941
+ } else {
1942
+ log.error(messages.nodes.failedRemove(currentEnv), err);
1943
+ if (!result?.nodesToMigrate?.[currentProject]?.totalCount)
1944
+ log.help(messages.nodes.notFound(currentEnv));
1945
+ }
1946
+ }
1947
+ };
1948
+
1901
1949
  PrintWebhookSubscriptions = async (subscriptionIdsOrNames?: string[]) => {
1902
1950
  const { currentEnv, log, messages } = this;
1903
1951
  const contensis = await this.ConnectContensis();
package/src/shell.ts CHANGED
@@ -177,6 +177,7 @@ class ContensisShell {
177
177
  'remove contenttypes',
178
178
  'remove key',
179
179
  'remove entries',
180
+ 'remove nodes',
180
181
  'remove role',
181
182
  'set project name',
182
183
  'set project description',
@@ -281,6 +281,7 @@ export const printNodesMigrateResult = (
281
281
  showChanged?: boolean;
282
282
  } = {}
283
283
  ) => {
284
+ log.raw(``);
284
285
  for (const [projectId, counts] of Object.entries(migrateResult.nodes || {})) {
285
286
  const importTitle =
286
287
  action === 'delete'
@@ -479,7 +480,9 @@ export const printNodeTreeOutput = (
479
480
  'N'
480
481
  )} [no change]; ${statusColour('create')('C')} [create]; ${statusColour(
481
482
  'update'
482
- )('U')} [update]; ${statusColour('error')('E')} [error];`
483
+ )('U')} [update]; ${statusColour('delete')('D')} [delete]; ${statusColour(
484
+ 'error'
485
+ )('E')} [error];`
483
486
  );
484
487
  log.info(
485
488
  `Node properties: ${log.highlightText(