contensis-cli 1.3.1-beta.8 → 1.4.0
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/CHANGELOG.md +22 -0
- package/README.md +77 -5
- package/dist/localisation/en-GB.js +8 -2
- package/dist/localisation/en-GB.js.map +2 -2
- package/dist/services/ContensisCliService.js +14 -13
- package/dist/services/ContensisCliService.js.map +2 -2
- package/dist/shell.js +1 -0
- package/dist/shell.js.map +2 -2
- package/dist/util/console.printer.js +3 -1
- package/dist/util/console.printer.js.map +2 -2
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +2 -2
- package/src/localisation/en-GB.ts +11 -2
- package/src/services/ContensisCliService.ts +14 -15
- package/src/shell.ts +1 -0
- package/src/util/console.printer.ts +23 -19
- package/src/version.ts +1 -1
package/dist/shell.js
CHANGED
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 { split } from 'split-cmd';\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 cache!: SessionCache;\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 { cache } = new ContensisCli([]);\n this.cache = cache; // read the cache to pre-load suggestions\n // console.log(`refreshing env w/${currentEnvironment}`);\n this.currentEnvironment = cache.currentEnvironment || '';\n const environments = cache.environments || {};\n this.env = environments[this.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 ...Object.keys(this.cache.environments || {}).map(\n alias => `connect ${alias}`\n ),\n 'list envs',\n 'remove env',\n 'quit',\n ];\n\n if (currentEnvironment)\n availableCommands.push(\n 'login',\n 'list projects',\n 'set project',\n ...(this.env?.projects || []).map(project => `set project ${project}`)\n );\n if (userId)\n availableCommands.push(\n 'copy field',\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 proxy',\n 'get renderer',\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 'update field'\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 split(answers.cmd).map(e => e.replace(/\\\\\"/g, '\"')),\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 }\n return this.contensisPrompt();\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\n// process.env.http_proxy = 'http://127.0.0.1:8888';\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import figlet from 'figlet';\nimport inquirer from 'inquirer';\nimport inquirerPrompt from 'inquirer-command-prompt';\nimport { split } from 'split-cmd';\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 cache!: SessionCache;\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 { cache } = new ContensisCli([]);\n this.cache = cache; // read the cache to pre-load suggestions\n // console.log(`refreshing env w/${currentEnvironment}`);\n this.currentEnvironment = cache.currentEnvironment || '';\n const environments = cache.environments || {};\n this.env = environments[this.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 ...Object.keys(this.cache.environments || {}).map(\n alias => `connect ${alias}`\n ),\n 'list envs',\n 'remove env',\n 'quit',\n ];\n\n if (currentEnvironment)\n availableCommands.push(\n 'login',\n 'list projects',\n 'set project',\n ...(this.env?.projects || []).map(project => `set project ${project}`)\n );\n if (userId)\n availableCommands.push(\n 'copy field',\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 proxy',\n 'get renderer',\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 asset',\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 'update field'\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 split(answers.cmd).map(e => e.replace(/\\\\\"/g, '\"')),\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 }\n return this.contensisPrompt();\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\n// process.env.http_proxy = 'http://127.0.0.1:8888';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ContensisCli", "inquirerPrompt", "figlet", "CredentialProvider", "inquirer", "commands"]
|
|
7
7
|
}
|
|
@@ -182,7 +182,9 @@ const printEntriesMigrateResult = (service, migrateResult, {
|
|
|
182
182
|
migrateResult.entries || {}
|
|
183
183
|
)) {
|
|
184
184
|
log.help(
|
|
185
|
-
|
|
185
|
+
action === "update" ? `update entries in project ${log.boldText(
|
|
186
|
+
log.warningText(currentProject)
|
|
187
|
+
)}` : `${action}${action === "delete" ? ` from project ${log.warningText(currentProject)}` : `${projectId ? ` from project ${log.highlightText(projectId)}` : ""} to ${log.boldText(
|
|
186
188
|
log.warningText(currentProject)
|
|
187
189
|
)}`}`
|
|
188
190
|
);
|
|
@@ -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 CopyFieldResult,\n EntriesMigrationResult,\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 service: ContensisCli,\n migrateResult: EntriesMigrationResult | EntriesResult | CopyFieldResult,\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 const { log, messages, currentProject } = service;\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 `${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)(\n `${status}`\n )} ${originalId}${\n targetGuid !== originalId ? ` -> ${targetGuid}\\n ` : ' '\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.infoText(`diff: ${highlightDiffText(diff)}`)}\\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 if (isTotalCountRow && 'nodes' in migrateResult) {\n printNodesMigrateResult(service, migrateResult, {\n showAll,\n showDiff,\n showChanged,\n isEntriesMigration: true,\n });\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: EntriesMigrationResult | NodesResult,\n {\n action = 'import',\n logLimit = 50,\n showDiff = false,\n showAll = false,\n showChanged = false,\n isEntriesMigration = false,\n }: {\n action?: 'import' | 'delete';\n logLimit?: number;\n showDiff?: boolean;\n showAll?: boolean;\n showChanged?: boolean;\n isEntriesMigration?: boolean;\n } = {}\n) => {\n if (!isEntriesMigration) 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 if (!isEntriesMigration) log.help(importTitle);\n\n const migrateStatusAndCount = migrateResult.nodesToMigrate[\n currentProject\n ] as ProjectNodesToMigrate;\n\n const existingCount = migrateResult.nodes?.[projectId]?.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 if (!isEntriesMigration || migrateStatusAndCount.totalCount > 0)\n console.log(\n ` - ${log.highlightText(\n `${isEntriesMigration ? ' + nodes' : 'totalCount'}: ${\n migrateStatusAndCount.totalCount\n }`\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(\n ` - ${contentTypeId}${\n model.contentTypeId ? ` ${log.helpText(model.contentTypeId)}` : ''\n }`\n );\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 )}]${\n projectDetails.versionNo ? ` v${projectDetails.versionNo}` : ''\n }`\n );\n if (projectDetails.diff)\n diffOutput += ` ${log.highlightText(`diff:`)} ${log.infoText(\n highlightDiffText(projectDetails.diff)\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 | Partial<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: Partial<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 node.status &&\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 && node.status\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(\n fullOutput || isRoot || !node.slug ? node.path : `/${node.slug}`\n )\n : fullOutput || isRoot || !node.slug\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 !('originalId' in node) || 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 !('originalParentId' in node) ||\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 = (\n node: Partial<Node | MigrateNodesTree> | undefined,\n depth = 2\n ) => {\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 CopyFieldResult,\n EntriesMigrationResult,\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 service: ContensisCli,\n migrateResult: EntriesMigrationResult | EntriesResult | CopyFieldResult,\n {\n action = 'import',\n showDiff = false,\n showAll = false,\n showChanged = false,\n }: {\n action?: 'import' | 'update' | 'delete';\n showDiff?: boolean;\n showAll?: boolean;\n showChanged?: boolean;\n } = {}\n) => {\n console.log(``);\n const { log, messages, currentProject } = service;\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 `${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)(\n `${status}`\n )} ${originalId}${\n targetGuid !== originalId ? ` -> ${targetGuid}\\n ` : ' '\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.infoText(`diff: ${highlightDiffText(diff)}`)}\\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 === 'update'\n ? `update entries in project ${log.boldText(\n log.warningText(currentProject)\n )}`\n : `${action}${\n action === 'delete'\n ? ` from project ${log.warningText(currentProject)}`\n : `${projectId ? ` from project ${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 if (isTotalCountRow && 'nodes' in migrateResult) {\n printNodesMigrateResult(service, migrateResult, {\n showAll,\n showDiff,\n showChanged,\n isEntriesMigration: true,\n });\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: EntriesMigrationResult | NodesResult,\n {\n action = 'import',\n logLimit = 50,\n showDiff = false,\n showAll = false,\n showChanged = false,\n isEntriesMigration = false,\n }: {\n action?: 'import' | 'delete';\n logLimit?: number;\n showDiff?: boolean;\n showAll?: boolean;\n showChanged?: boolean;\n isEntriesMigration?: boolean;\n } = {}\n) => {\n if (!isEntriesMigration) 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 if (!isEntriesMigration) log.help(importTitle);\n\n const migrateStatusAndCount = migrateResult.nodesToMigrate[\n currentProject\n ] as ProjectNodesToMigrate;\n\n const existingCount = migrateResult.nodes?.[projectId]?.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 if (!isEntriesMigration || migrateStatusAndCount.totalCount > 0)\n console.log(\n ` - ${log.highlightText(\n `${isEntriesMigration ? ' + nodes' : 'totalCount'}: ${\n migrateStatusAndCount.totalCount\n }`\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(\n ` - ${contentTypeId}${\n model.contentTypeId ? ` ${log.helpText(model.contentTypeId)}` : ''\n }`\n );\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 )}]${\n projectDetails.versionNo ? ` v${projectDetails.versionNo}` : ''\n }`\n );\n if (projectDetails.diff)\n diffOutput += ` ${log.highlightText(`diff:`)} ${log.infoText(\n highlightDiffText(projectDetails.diff)\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 | Partial<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: Partial<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 node.status &&\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 && node.status\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(\n fullOutput || isRoot || !node.slug ? node.path : `/${node.slug}`\n )\n : fullOutput || isRoot || !node.slug\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 !('originalId' in node) || 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 !('originalParentId' in node) ||\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 = (\n node: Partial<Node | MigrateNodesTree> | undefined,\n depth = 2\n ) => {\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
|
}
|
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.
|
|
24
|
+
const LIB_VERSION = "1.4.0";
|
|
25
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
26
|
0 && (module.exports = {
|
|
27
27
|
LIB_VERSION
|
package/dist/version.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/version.ts"],
|
|
4
|
-
"sourcesContent": ["export const LIB_VERSION = \"1.
|
|
4
|
+
"sourcesContent": ["export const LIB_VERSION = \"1.4.0\";\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.
|
|
3
|
+
"version": "1.4.0",
|
|
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",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"inquirer-command-prompt": "^0.1.0",
|
|
40
40
|
"keytar": "^7.9.0",
|
|
41
41
|
"lodash": "^4.17.21",
|
|
42
|
-
"migratortron": "^1.0.0-beta.
|
|
42
|
+
"migratortron": "^1.0.0-beta.71",
|
|
43
43
|
"nanospinner": "^1.2.0",
|
|
44
44
|
"node-fetch": "^2.6.7",
|
|
45
45
|
"parse-git-config": "^3.0.0",
|
|
@@ -115,8 +115,8 @@ export const LogMessages = {
|
|
|
115
115
|
`[${env}] Unable to update project ${Logger.highlightText(id)}`,
|
|
116
116
|
},
|
|
117
117
|
migrate: {
|
|
118
|
-
preview: () => `🔍
|
|
119
|
-
commit: () => `COMMITTING
|
|
118
|
+
preview: (verb = 'IMPORT') => `🔍 ${verb} PREVIEW 🔭`,
|
|
119
|
+
commit: (verb = 'IMPORT') => `COMMITTING ${verb} ✨☄️ `,
|
|
120
120
|
models: {
|
|
121
121
|
result: (
|
|
122
122
|
status: keyof MigrateModelsResult['project']['contentTypes']
|
|
@@ -226,6 +226,15 @@ export const LogMessages = {
|
|
|
226
226
|
nodes > 0 ? ` and ${pl('node', nodes, true)}` : ''
|
|
227
227
|
} into ${env} environment`,
|
|
228
228
|
failedImport: (env: string) => `[${env}] Unable to import entries`,
|
|
229
|
+
update: {
|
|
230
|
+
preview: () => LogMessages.migrate.preview('UPDATE FIELD'),
|
|
231
|
+
commit: () => LogMessages.migrate.preview('FIELD UPDATES'),
|
|
232
|
+
success: (env: string, commit: boolean, entries: number, nodes = 0) =>
|
|
233
|
+
`${commit ? `Updated` : `Will update`} ${pl('entry', entries, true)}${
|
|
234
|
+
nodes > 0 ? ` and ${pl('node', nodes, true)}` : ''
|
|
235
|
+
} in ${env} environment`,
|
|
236
|
+
failed: (env: string) => `[${env}] Unable to update any entries`,
|
|
237
|
+
},
|
|
229
238
|
removed: (env: string, commit: boolean) =>
|
|
230
239
|
`[${env}] ${commit ? `Deleted` : `Will delete`} entries`,
|
|
231
240
|
failedRemove: (env: string) => `[${env}] Unable to delete entries`,
|
|
@@ -200,7 +200,7 @@ class ContensisCli {
|
|
|
200
200
|
PrintEnvironments = async () => {
|
|
201
201
|
const { log, messages } = this;
|
|
202
202
|
const { currentEnvironment, environments = {} } = this.cache;
|
|
203
|
-
const envKeys = Object.keys(environments);
|
|
203
|
+
const envKeys = Object.keys(environments).sort();
|
|
204
204
|
log.success(messages.envs.found(envKeys.length));
|
|
205
205
|
await this.HandleFormattingAndOutput(envKeys, () => {
|
|
206
206
|
// print the envKeys to console
|
|
@@ -627,7 +627,7 @@ class ContensisCli {
|
|
|
627
627
|
if (contensis) {
|
|
628
628
|
// Retrieve token for env
|
|
629
629
|
const [error, token] = await to(
|
|
630
|
-
contensis.content.
|
|
630
|
+
contensis.content.source.repo.BearerToken()
|
|
631
631
|
);
|
|
632
632
|
if (token) {
|
|
633
633
|
// Print bearer token to console
|
|
@@ -1079,7 +1079,7 @@ class ContensisCli {
|
|
|
1079
1079
|
if (contensis) {
|
|
1080
1080
|
// Retrieve workflows list for env
|
|
1081
1081
|
const [workflowsErr, workflows] =
|
|
1082
|
-
await contensis.content.
|
|
1082
|
+
await contensis.content.source.workflows.GetWorkflows();
|
|
1083
1083
|
|
|
1084
1084
|
if (Array.isArray(workflows)) {
|
|
1085
1085
|
log.success(messages.workflows.list(currentEnv));
|
|
@@ -1145,7 +1145,7 @@ class ContensisCli {
|
|
|
1145
1145
|
if (contensis) {
|
|
1146
1146
|
// Retrieve workflows list for env
|
|
1147
1147
|
const [workflowsErr, workflows] =
|
|
1148
|
-
await contensis.content.
|
|
1148
|
+
await contensis.content.source.workflows.GetWorkflows();
|
|
1149
1149
|
|
|
1150
1150
|
if (Array.isArray(workflows)) {
|
|
1151
1151
|
log.success(messages.workflows.list(currentEnv));
|
|
@@ -1564,7 +1564,7 @@ class ContensisCli {
|
|
|
1564
1564
|
contentType.projectId = currentProject;
|
|
1565
1565
|
delete contentType.uuid;
|
|
1566
1566
|
|
|
1567
|
-
const [err, , createStatus] = await contensis.models.
|
|
1567
|
+
const [err, , createStatus] = await contensis.models.targets[
|
|
1568
1568
|
currentProject
|
|
1569
1569
|
].repo.UpsertContentType(false, contentType);
|
|
1570
1570
|
|
|
@@ -1755,7 +1755,7 @@ class ContensisCli {
|
|
|
1755
1755
|
component.projectId = currentProject;
|
|
1756
1756
|
delete component.uuid;
|
|
1757
1757
|
|
|
1758
|
-
const [err, , createStatus] = await contensis.models.
|
|
1758
|
+
const [err, , createStatus] = await contensis.models.targets[
|
|
1759
1759
|
currentProject
|
|
1760
1760
|
].repo.UpsertComponent(false, component);
|
|
1761
1761
|
|
|
@@ -2066,9 +2066,9 @@ class ContensisCli {
|
|
|
2066
2066
|
if (contensis) {
|
|
2067
2067
|
log.line();
|
|
2068
2068
|
if (contensis.isPreview) {
|
|
2069
|
-
log.success(messages.
|
|
2069
|
+
log.success(messages.entries.update.preview());
|
|
2070
2070
|
} else {
|
|
2071
|
-
log.warning(messages.
|
|
2071
|
+
log.warning(messages.entries.update.commit());
|
|
2072
2072
|
}
|
|
2073
2073
|
|
|
2074
2074
|
const [err, result] = await to(
|
|
@@ -2085,6 +2085,7 @@ class ContensisCli {
|
|
|
2085
2085
|
await this.HandleFormattingAndOutput(output, () => {
|
|
2086
2086
|
// print the migrateResult to console
|
|
2087
2087
|
printEntriesMigrateResult(this, result, {
|
|
2088
|
+
action: 'update',
|
|
2088
2089
|
showAll: logOutput === 'all',
|
|
2089
2090
|
showDiff: logOutput === 'all' || logOutput === 'changes',
|
|
2090
2091
|
showChanged: logOutput === 'changes',
|
|
@@ -2101,7 +2102,7 @@ class ContensisCli {
|
|
|
2101
2102
|
(result.migrateResult?.created || result.migrateResult?.updated)))
|
|
2102
2103
|
) {
|
|
2103
2104
|
log.success(
|
|
2104
|
-
messages.entries.
|
|
2105
|
+
messages.entries.update.success(
|
|
2105
2106
|
currentEnv,
|
|
2106
2107
|
commit,
|
|
2107
2108
|
commit
|
|
@@ -2115,7 +2116,7 @@ class ContensisCli {
|
|
|
2115
2116
|
log.help(messages.entries.commitTip());
|
|
2116
2117
|
}
|
|
2117
2118
|
} else {
|
|
2118
|
-
log.error(messages.entries.
|
|
2119
|
+
log.error(messages.entries.update.failed(currentEnv), err);
|
|
2119
2120
|
if (!result?.entriesToMigrate?.[currentProject]?.totalCount)
|
|
2120
2121
|
log.help(messages.entries.notFound(currentEnv));
|
|
2121
2122
|
}
|
|
@@ -2135,7 +2136,7 @@ class ContensisCli {
|
|
|
2135
2136
|
log.error(messages.nodes.failedGet(currentProject), err);
|
|
2136
2137
|
return;
|
|
2137
2138
|
}
|
|
2138
|
-
const root = contensis.nodes.
|
|
2139
|
+
const root = contensis.nodes.source.nodes.tree;
|
|
2139
2140
|
|
|
2140
2141
|
log.success(messages.nodes.get(currentProject, rootPath, depth));
|
|
2141
2142
|
|
|
@@ -2184,8 +2185,7 @@ class ContensisCli {
|
|
|
2184
2185
|
await this.HandleFormattingAndOutput(result, () => {
|
|
2185
2186
|
// print the migrateResult to console
|
|
2186
2187
|
const migrateTree =
|
|
2187
|
-
contensis.nodes.
|
|
2188
|
-
.migrateNodesTreeView;
|
|
2188
|
+
contensis.nodes.targets[currentProject].nodes.migrateNodesTreeView;
|
|
2189
2189
|
printNodeTreeOutput(this, migrateTree, logOutput, logLimit);
|
|
2190
2190
|
printNodesMigrateResult(this, result, {
|
|
2191
2191
|
showAll: logOutput === 'all',
|
|
@@ -2257,8 +2257,7 @@ class ContensisCli {
|
|
|
2257
2257
|
// print the migrateResult to console
|
|
2258
2258
|
printNodeTreeOutput(
|
|
2259
2259
|
this,
|
|
2260
|
-
contensis.nodes.
|
|
2261
|
-
.migrateNodesTreeView
|
|
2260
|
+
contensis.nodes.targets[currentProject].nodes.migrateNodesTreeView
|
|
2262
2261
|
);
|
|
2263
2262
|
// printNodesMigrateResult(this, result, {
|
|
2264
2263
|
// action: 'delete',
|
package/src/shell.ts
CHANGED
|
@@ -125,7 +125,7 @@ export const printEntriesMigrateResult = (
|
|
|
125
125
|
showAll = false,
|
|
126
126
|
showChanged = false,
|
|
127
127
|
}: {
|
|
128
|
-
action?: 'import' | 'delete';
|
|
128
|
+
action?: 'import' | 'update' | 'delete';
|
|
129
129
|
showDiff?: boolean;
|
|
130
130
|
showAll?: boolean;
|
|
131
131
|
showChanged?: boolean;
|
|
@@ -138,7 +138,7 @@ export const printEntriesMigrateResult = (
|
|
|
138
138
|
) as [string, any]) {
|
|
139
139
|
for (const [originalId, entryStatus] of Object.entries(entryRes) as [
|
|
140
140
|
string,
|
|
141
|
-
any
|
|
141
|
+
any,
|
|
142
142
|
][]) {
|
|
143
143
|
if (
|
|
144
144
|
showAll ||
|
|
@@ -191,17 +191,21 @@ export const printEntriesMigrateResult = (
|
|
|
191
191
|
migrateResult.entries || {}
|
|
192
192
|
) as [string, any][]) {
|
|
193
193
|
log.help(
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
194
|
+
action === 'update'
|
|
195
|
+
? `update entries in project ${log.boldText(
|
|
196
|
+
log.warningText(currentProject)
|
|
197
|
+
)}`
|
|
198
|
+
: `${action}${
|
|
199
|
+
action === 'delete'
|
|
200
|
+
? ` from project ${log.warningText(currentProject)}`
|
|
201
|
+
: `${projectId ? ` from project ${log.highlightText(projectId)}` : ''} to ${log.boldText(
|
|
202
|
+
log.warningText(currentProject)
|
|
203
|
+
)}`
|
|
204
|
+
}`
|
|
201
205
|
);
|
|
202
206
|
for (const [contentTypeId, count] of Object.entries(contentTypeCounts) as [
|
|
203
207
|
string,
|
|
204
|
-
number
|
|
208
|
+
number,
|
|
205
209
|
][]) {
|
|
206
210
|
const isTotalCountRow = contentTypeId === 'totalCount';
|
|
207
211
|
const migrateStatusAndCount =
|
|
@@ -227,8 +231,8 @@ export const printEntriesMigrateResult = (
|
|
|
227
231
|
const changedColor = isTotalCountRow
|
|
228
232
|
? log.helpText
|
|
229
233
|
: changedPercentage === '100'
|
|
230
|
-
|
|
231
|
-
|
|
234
|
+
? log.successText
|
|
235
|
+
: log.warningText;
|
|
232
236
|
|
|
233
237
|
if (isTotalCountRow && 'nodes' in migrateResult) {
|
|
234
238
|
printNodesMigrateResult(service, migrateResult, {
|
|
@@ -257,8 +261,8 @@ export const printEntriesMigrateResult = (
|
|
|
257
261
|
isTotalCountRow
|
|
258
262
|
? `[to ${action}: ${noChangeOrTotalEntriesCount}]`
|
|
259
263
|
: changedPercentage === '100'
|
|
260
|
-
|
|
261
|
-
|
|
264
|
+
? 'up to date'
|
|
265
|
+
: `[needs update: ${100 - Number(changedPercentage)}%]`
|
|
262
266
|
}`
|
|
263
267
|
)
|
|
264
268
|
}`
|
|
@@ -391,7 +395,7 @@ export const printModelMigrationAnalysis = (
|
|
|
391
395
|
) => {
|
|
392
396
|
for (const [contentTypeId, model] of Object.entries(result) as [
|
|
393
397
|
string,
|
|
394
|
-
any
|
|
398
|
+
any,
|
|
395
399
|
][]) {
|
|
396
400
|
let mainOutput = log.standardText(
|
|
397
401
|
` - ${contentTypeId}${
|
|
@@ -415,7 +419,7 @@ export const printModelMigrationAnalysis = (
|
|
|
415
419
|
if (key === 'projects') {
|
|
416
420
|
for (const [projectId, projectDetails] of Object.entries(details) as [
|
|
417
421
|
string,
|
|
418
|
-
any
|
|
422
|
+
any,
|
|
419
423
|
][]) {
|
|
420
424
|
mainOutput += log.infoText(
|
|
421
425
|
` [${messages.migrate.status(projectDetails.status)(
|
|
@@ -460,7 +464,7 @@ export const printModelMigrationResult = (
|
|
|
460
464
|
) => {
|
|
461
465
|
for (const [status, ids] of Object.entries(result) as [
|
|
462
466
|
MigrateResultStatus,
|
|
463
|
-
string[]
|
|
467
|
+
string[],
|
|
464
468
|
][]) {
|
|
465
469
|
if (ids?.length) {
|
|
466
470
|
if (status === 'errors') {
|
|
@@ -555,8 +559,8 @@ export const printNodeTreeOutput = (
|
|
|
555
559
|
fullOutput || isRoot || !node.slug ? node.path : `/${node.slug}`
|
|
556
560
|
)
|
|
557
561
|
: fullOutput || isRoot || !node.slug
|
|
558
|
-
|
|
559
|
-
|
|
562
|
+
? node.path
|
|
563
|
+
: `/${node.slug}`
|
|
560
564
|
)}${node.entry ? ` ${log.helpText(node.entry.sys.contentTypeId)}` : ''}${
|
|
561
565
|
node.childCount ? ` +${node.childCount}` : ``
|
|
562
566
|
} ${'displayName' in node ? log.infoText(node.displayName) : ''}${
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const LIB_VERSION = "1.
|
|
1
|
+
export const LIB_VERSION = "1.4.0";
|