contensis-cli 1.3.1-beta.0 → 1.3.1-beta.10

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.
Files changed (112) hide show
  1. package/README.md +78 -6
  2. package/dist/commands/copy.js +2 -2
  3. package/dist/commands/copy.js.map +2 -2
  4. package/dist/commands/create.js +1 -2
  5. package/dist/commands/create.js.map +1 -1
  6. package/dist/commands/globalOptions.js +16 -4
  7. package/dist/commands/globalOptions.js.map +2 -2
  8. package/dist/commands/import.js +1 -1
  9. package/dist/commands/import.js.map +2 -2
  10. package/dist/commands/index.js +4 -2
  11. package/dist/commands/index.js.map +2 -2
  12. package/dist/commands/list.js.map +1 -1
  13. package/dist/commands/login.js +1 -2
  14. package/dist/commands/login.js.map +1 -1
  15. package/dist/commands/push.js +102 -10
  16. package/dist/commands/push.js.map +3 -3
  17. package/dist/commands/remove.js +15 -4
  18. package/dist/commands/remove.js.map +2 -2
  19. package/dist/commands/set.js +2 -4
  20. package/dist/commands/set.js.map +1 -1
  21. package/dist/commands/update.js +70 -0
  22. package/dist/commands/update.js.map +7 -0
  23. package/dist/factories/RequestHandlerFactory.js +12 -5
  24. package/dist/factories/RequestHandlerFactory.js.map +2 -2
  25. package/dist/index.js +4 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/localisation/en-GB.js +19 -2
  28. package/dist/localisation/en-GB.js.map +2 -2
  29. package/dist/mappers/ContensisCliService-to-RequestHanderSiteConfigYaml.js.map +1 -1
  30. package/dist/mappers/DevInit-to-CIWorkflow.js +11 -6
  31. package/dist/mappers/DevInit-to-CIWorkflow.js.map +1 -1
  32. package/dist/mappers/DevRequests-to-RequestHanderCliArgs.js +4 -2
  33. package/dist/mappers/DevRequests-to-RequestHanderCliArgs.js.map +1 -1
  34. package/dist/models/CliService.d.js.map +1 -1
  35. package/dist/providers/CredentialProvider.js +11 -4
  36. package/dist/providers/CredentialProvider.js.map +2 -2
  37. package/dist/providers/GitHubCliModuleProvider.js +8 -10
  38. package/dist/providers/GitHubCliModuleProvider.js.map +1 -1
  39. package/dist/providers/HttpProvider.js +5 -4
  40. package/dist/providers/HttpProvider.js.map +1 -1
  41. package/dist/providers/ManifestProvider.js +1 -4
  42. package/dist/providers/ManifestProvider.js.map +1 -1
  43. package/dist/providers/SessionCacheProvider.js +26 -8
  44. package/dist/providers/SessionCacheProvider.js.map +2 -2
  45. package/dist/providers/file-provider.js +13 -11
  46. package/dist/providers/file-provider.js.map +1 -1
  47. package/dist/services/ContensisAuthService.js +1 -2
  48. package/dist/services/ContensisAuthService.js.map +1 -1
  49. package/dist/services/ContensisCliService.js +194 -127
  50. package/dist/services/ContensisCliService.js.map +3 -3
  51. package/dist/services/ContensisDevService.js +15 -18
  52. package/dist/services/ContensisDevService.js.map +2 -2
  53. package/dist/services/ContensisRoleService.js +8 -10
  54. package/dist/services/ContensisRoleService.js.map +1 -1
  55. package/dist/shell.js +31 -15
  56. package/dist/shell.js.map +2 -2
  57. package/dist/util/api-ids.js.map +1 -1
  58. package/dist/util/console.printer.js +15 -17
  59. package/dist/util/console.printer.js.map +2 -2
  60. package/dist/util/csv.formatter.js +8 -15
  61. package/dist/util/csv.formatter.js.map +2 -2
  62. package/dist/util/diff.js +6 -4
  63. package/dist/util/diff.js.map +1 -1
  64. package/dist/util/dotenv.js +1 -2
  65. package/dist/util/dotenv.js.map +1 -1
  66. package/dist/util/error.js.map +1 -1
  67. package/dist/util/fetch.js +4 -0
  68. package/dist/util/fetch.js.map +1 -1
  69. package/dist/util/git.js +8 -8
  70. package/dist/util/git.js.map +1 -1
  71. package/dist/util/gitignore.js +4 -0
  72. package/dist/util/gitignore.js.map +1 -1
  73. package/dist/util/html.formatter.js +70 -0
  74. package/dist/util/html.formatter.js.map +7 -0
  75. package/dist/util/index.js +5 -1
  76. package/dist/util/index.js.map +2 -2
  77. package/dist/util/json.formatter.js +6 -4
  78. package/dist/util/json.formatter.js.map +1 -1
  79. package/dist/util/logger.js +47 -53
  80. package/dist/util/logger.js.map +2 -2
  81. package/dist/util/os.js +4 -0
  82. package/dist/util/os.js.map +1 -1
  83. package/dist/util/xml.formatter.js +4 -0
  84. package/dist/util/xml.formatter.js.map +1 -1
  85. package/dist/util/yaml.js +1 -2
  86. package/dist/util/yaml.js.map +1 -1
  87. package/dist/version.js +1 -1
  88. package/dist/version.js.map +1 -1
  89. package/esbuild.config.js +12 -16
  90. package/package.json +31 -32
  91. package/src/commands/copy.ts +3 -1
  92. package/src/commands/globalOptions.ts +10 -3
  93. package/src/commands/import.ts +2 -0
  94. package/src/commands/index.ts +4 -0
  95. package/src/commands/push.ts +125 -1
  96. package/src/commands/remove.ts +20 -0
  97. package/src/commands/update.ts +84 -0
  98. package/src/factories/RequestHandlerFactory.ts +1 -1
  99. package/src/localisation/en-GB.ts +16 -1
  100. package/src/models/CliService.d.ts +1 -1
  101. package/src/providers/CredentialProvider.ts +2 -2
  102. package/src/providers/SessionCacheProvider.ts +26 -2
  103. package/src/services/ContensisCliService.ts +187 -49
  104. package/src/services/ContensisDevService.ts +2 -2
  105. package/src/shell.ts +20 -9
  106. package/src/util/console.printer.ts +23 -19
  107. package/src/util/csv.formatter.ts +1 -1
  108. package/src/util/html.formatter.ts +52 -0
  109. package/src/util/index.ts +1 -1
  110. package/src/util/logger.ts +17 -16
  111. package/src/version.ts +1 -1
  112. package/tsconfig.json +1 -1
@@ -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": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAkB;AAClB,mBAAoC;AACpC,oBAAoC;AAcpC,MAAM,aAAa,CAAC,MAAqB,SAAS,2BAChD,aAAAA,SAAM,IAAI,EAAE,OAAO,MAAM;AAEpB,MAAM,oBAAoB,CAC/B,EAAE,KAAK,SAAS,GAChB,OACA,eAAe;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,WAAW;AACb,MACG;AA7BL;AA8BE,UAAQ;AAAA,IACN,KAAK,IAAI,aAAa,IAAI,MAAM,QAAQ,WAAW,KAAK,MAAM;AAAA,EAChE;AACA,UAAQ;AAAA,IACN,cAAc,SAAS,OAAO;AAAA,MAC5B,MAAM,OAAO,SAAS,WAAW,MAAM,OAAO,QAAQ;AAAA,IACxD;AAAA,EACF;AACA,UAAQ;AAAA,IACN,iBAAiB,IAAI;AAAA,MACnB,MAAM,QAAQ,WACV,IAAI,WAAW,MAAM,QAAQ,QAAQ,MAAM,MAAM,QAAQ,eACzD;AAAA,IACN;AAAA,EACF;AACA,MAAI,MAAM,QAAQ;AAChB,YAAQ;AAAA,MACN,aAAa,IAAI;AAAA,QACf,IAAI,WAAW,MAAM,QAAQ,QAAQ,MAAM,MAAM,QAAQ;AAAA,MAC3D;AAAA,IACF;AACF,MAAI,aAAa,YAAY;AAC3B,YAAQ,IAAI,aAAa;AACzB,YAAQ,IAAI,qBAAqB,IAAI,SAAS,MAAM,OAAO,UAAU,GAAG;AACxE,YAAQ,IAAI,mBAAmB,IAAI,SAAS,MAAM,OAAO,QAAQ,GAAG;AACpE,YAAQ;AAAA,MACN,yBAAyB,SAAS,OAAO;AAAA,QACvC,MAAM,OAAO,QAAQ;AAAA,MACvB;AAAA,IACF;AACA,YAAQ,IAAI,oBAAoB;AAChC,YAAQ;AAAA,MACN,eAAe,SAAS,OAAO;AAAA,QAC7B,MAAM,OAAO,QAAQ,YAAY;AAAA,MACnC;AAAA,IACF;AACA,YAAQ;AAAA,MACN,mBAAmB,SAAS,OAAO;AAAA,QACjC,MAAM,OAAO,QAAQ,YAAY;AAAA,MACnC;AAAA,IACF;AACA,YAAQ;AAAA,MACN,uBAAuB,SAAS,OAAO;AAAA,QACrC,MAAM,OAAO,QAAQ,YAAY;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AACA,MAAI,aAAa,YAAY;AAC3B,YAAQ,IAAI,aAAa;AACzB,YAAQ,IAAI,iBAAiB,IAAI,SAAS,MAAM,OAAO,OAAO,EAAE,GAAG;AACnE,YAAQ;AAAA,MACN,kBAAkB,IAAI;AAAA,SACpB,WAAM,OAAO,OAAO,YAApB,mBACI,WAAW,MAAM,OAClB,WAAW,UAAU,OACrB,WAAW,OAAO;AAAA,MACvB;AAAA,IACF;AACA,YAAQ;AAAA,MACN,oBAAoB,IAAI;AAAA,QACtB,IAAI,WAAW,MAAM,OAAO,OAAO,QAAQ,MACzC,MAAM,OAAO,OAAO;AAAA,MAExB;AAAA,IACF;AACA,YAAQ;AAAA,MACN,iBAAiB,IAAI;AAAA,QACnB,IAAI,WAAW,MAAM,QAAQ,MAAM,MAAM,MAAM,QAAQ;AAAA,MACzD;AAAA,IACF;AACA,YAAQ,IAAI,SAAS,IAAI,SAAS,MAAM,OAAO,OAAO,SAAS,GAAG;AAAA,EACpE;AACA,MAAI,aAAa,WAAW;AAC1B,YAAQ,IAAI,YAAY;AACxB,YAAQ,IAAI,cAAc,IAAI,SAAS,MAAM,MAAM,GAAG,GAAG;AACzD,YAAQ,IAAI,cAAc,IAAI,SAAS,MAAM,MAAM,GAAG,GAAG;AAAA,EAC3D;AACA,MAAI,aAAa,iBAAiB;AAChC,SAAI,WAAM,gBAAN,mBAAmB,QAAQ;AAC7B,cAAQ,IAAI,mBAAmB;AAC/B,iBAAW,QAAQ,MAAM;AAAa,gBAAQ,IAAI,WAAW,MAAM;AAAA,IACrE;AAAA,EACF;AACA,MAAI,MAAM;AACR,YAAQ,IAAI,oBAAoB,IAAI,SAAS,MAAM,UAAU,GAAG;AAClE,UAAQ,IAAI,EAAE;AAChB;AAEO,MAAM,4BAA4B,CACvC,SACA,eACA;AAAA,EACE,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,cAAc;AAChB,IAKI,CAAC,MACF;AApIL;AAqIE,UAAQ,IAAI,EAAE;AACd,QAAM,EAAE,KAAK,UAAU,eAAe,IAAI;AAC1C,aAAW,CAAC,eAAe,QAAQ,KAAK,OAAO;AAAA,IAC7C,cAAc,iBAAiB;AAAA,EACjC,GAAoB;AAClB,eAAW,CAAC,YAAY,WAAW,KAAK,OAAO,QAAQ,QAAQ,GAG1D;AACH,UACE,WACC,eAEG,OAAO;AAAA,QACL,OAAO,QAAQ,YAAY,eAAe,EAAE;AAAA,MAC9C,EAAE,GAAG,GACL,WAAW,aACf;AACA,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,GAAG,OAAO,QAAQ,eAAe,CAAC,CAAC,EAChC,OAAO,OAAK,EAAE,OAAO,YAAY,EACjC,IAAI,CAAC,CAAC,WAAW,aAAa,MAAM;AA3JnD,kBAAAC;AA4JgB,oBAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAAKA,MAAA,OAAO;AAAA,gBACvC,iBAAiB,CAAC;AAAA,cACpB,MAFkC,gBAAAA,IAE9B,OAA8C;AAAA,gBAChD;AAAA,gBACA,EAAE,GAAG,EAAE,QAAQ,OAAU,EAAE;AAAA,cAC7B;AACA,qBAAO,GAAG,SAAS,QAAQ,OAAO,MAAM;AAAA,gBACtC,GAAG;AAAA,cACL,KAAK,aACH,eAAe,aAAa,OAAO;AAAA,MAAmB;AAAA,YAE1D,CAAC;AAAA,UACL,IAAI,GAAG,IAAI,SAAS,aAAa,KAAK,YAAY;AAAA,QACpD;AAEA,mBAAW,CAAC,WAAW,aAAa,KAAK,OAAO;AAAA,UAC9C;AAAA,QACF,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,QAAQ,YAAY,GAAsB;AAC5D,gBAAM,CAAC,YAAY,EAAE,OAAO,MAAM,OAAO,CAAC,IAAI,OAAO;AAAA,YACnD;AAAA,UACF,EAAE;AACF,cAAI;AAAO,gBAAI,MAAM,KAAK;AAC1B,cAAI,QAAQ,UAAU;AACpB,oBAAQ;AAAA,cACN,KAAK,IAAI,SAAS,SAAS,kBAAkB,IAAI,GAAG;AAAA;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW;AAAa,YAAQ,IAAI,EAAE;AAE1C,aAAW,CAAC,WAAW,iBAAiB,KAAK,OAAO;AAAA,IAClD,cAAc,WAAW,CAAC;AAAA,EAC5B,GAAsB;AACpB,QAAI;AAAA,MACF,GAAG,uBACD,WAAW,WACP,IAAI,YAAY,cAAc,IAC9B,GAAG,IAAI,cAAc,SAAS,QAAQ,IAAI;AAAA,QACxC,IAAI,YAAY,cAAc;AAAA,MAChC;AAAA,IAER;AACA,eAAW,CAAC,eAAe,KAAK,KAAK,OAAO,QAAQ,iBAAiB,GAGhE;AACH,YAAM,kBAAkB,kBAAkB;AAC1C,YAAM,wBACJ,cAAc,iBAAiB,gBAAgB;AACjD,YAAM,kBACJ,yBAAc,aAAd,mBAAyB,oBAAzB,mBAA2C,mBAAkB;AAC/D,YAAM,mBAAoB,gBAAgB,QAAS,KAAK,QAAQ,CAAC;AACjE,YAAM,8BACJ,OAAO,0BAA0B,YAC7B,+DAAwB,iBAAgB,IACxC;AAEN,YAAM,qBACH,8BAA8B,QAC/B,KACA,QAAQ,CAAC;AAEX,YAAM,gBACJ,oBAAoB,OAAO,WAAW,WAClC,IAAI,cACJ,IAAI;AAEV,YAAM,eAAe,kBACjB,IAAI,WACJ,sBAAsB,QACtB,IAAI,cACJ,IAAI;AAER,UAAI,mBAAmB,WAAW,eAAe;AAC/C,gCAAwB,SAAS,eAAe;AAAA,UAC9C;AAAA,UACA;AAAA,UACA;AAAA,UACA,oBAAoB;AAAA,QACtB,CAAC;AAAA,MACH;AACA,cAAQ;AAAA,QACN,OACE,kBACI,IAAI;AAAA,UACF,GAAG,kBAAkB;AAAA,QACvB,IACA,GAAG,kBAAkB,IAAI,SAAS,KAAK,MAE3C,sBAAsB,SAAS,kBAC3B,KACA,cAAc,eAAe,GAAG,qBAAqB,IAEzD,oBAAoB,OAAQ,WAAW,YAAY,kBAC/C,KACA;AAAA,UACE,IACE,kBACI,OAAO,WAAW,iCAClB,sBAAsB,QACtB,eACA,kBAAkB,MAAM,OAAO,iBAAiB;AAAA,QAExD;AAAA,MAER;AAAA,IACF;AAAA,EACF;AACA,OAAI,mBAAc,WAAd,mBAAsB,QAAQ;AAChC,YAAQ;AAAA,MACN,OAAO,IAAI,UAAU,WAAW,cAAc,OAAO,QAAQ;AAAA;AAAA,IAC/D;AACA,eAAW,SAAS,cAAc;AAChC,UAAI,MAAM,MAAM,SAAS,MAAM,EAAE;AAAA,EACrC;AACF;AAEO,MAAM,0BAA0B,CACrC,EAAE,KAAK,eAAe,GACtB,eACA;AAAA,EACE,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,cAAc;AAAA,EACd,qBAAqB;AACvB,IAOI,CAAC,MACF;AAtSL;AAuSE,MAAI,CAAC;AAAoB,QAAI,IAAI,EAAE;AACnC,aAAW,CAAC,WAAW,MAAM,KAAK,OAAO,QAAQ,cAAc,SAAS,CAAC,CAAC,GAAG;AAC3E,UAAM,cACJ,WAAW,WACP,uBAAuB,IAAI,YAAY,cAAc,MACrD,UACE,aAAa,cAAc,SACvB,gBAAgB,IAAI,cAAc,SAAS,OAC3C,QACA,IAAI,SAAS,IAAI,YAAY,cAAc,CAAC;AACxD,QAAI,CAAC;AAAoB,UAAI,KAAK,WAAW;AAE7C,UAAM,wBAAwB,cAAc,eAC1C;AAGF,UAAM,kBAAgB,yBAAc,UAAd,mBAAsB,eAAtB,mBAAkC,eAAc;AAEtE,UAAM,aAAa,OAAO,KAAK,cAAc,eAAe,OAAO,EAAE;AACrE,UAAM,kBAAkB,OAAO,cACzB,gBAAgB,aAAc,KAAK,QAAQ,CAAC,IAC9C;AAEJ,UAAM,iBAAgB,+DAAwB,iBAAgB;AAE9D,UAAM,oBAAoB,OAAO,cAC3B,gBAAgB,aAAc,KAAK,QAAQ,CAAC,IAC9C;AAEJ,UAAM,gBACJ,oBAAoB,OAAO,WAAW,WAClC,IAAI,cACJ,IAAI;AAEV,UAAM,eACJ,sBAAsB,QAAQ,IAAI,cAAc,IAAI;AAEtD,QAAI,CAAC,sBAAsB,sBAAsB,aAAa;AAC5D,cAAQ;AAAA,QACN,OAAO,IAAI;AAAA,UACT,GAAG,qBAAqB,cAAc,iBACpC,sBAAsB;AAAA,QAE1B,IACE,sBAAsB,QAClB,KACA,cAAc,eAAe,GAAG,qBAAqB,IAEzD,oBAAoB,MAChB,KACA;AAAA,UACE,IACE,sBAAsB,QAClB,eACA,kBAAkB,MAAM,OAAO,iBAAiB;AAAA,QAExD;AAAA,MAER;AAAA,EACJ;AACA,OAAI,mBAAc,WAAd,mBAAsB,QAAQ;AAChC,YAAQ;AAAA,MACN,OAAO,IAAI,UAAU,WAAW,cAAc,OAAO,QAAQ;AAAA;AAAA,IAC/D;AAEA,QAAI;AAAA,MACF,cAAc,OACX,IAAI,WAAS;AACZ,eAAO,IAAI,cAAU,kCAAoB,KAAK,CAAC;AAAA,MACjD,CAAC,EACA,KAAK,IAAI;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACF;AAEA,MAAM,oBAAoB,CAAC,QAAgB;AACzC,QAAM,aAAa,IAAI,OAAO,uBAAuB,GAAG;AACxD,QAAM,eAAe,IAAI,OAAO,qBAAqB,GAAG;AACxD,SAAO,IACJ,QAAQ,YAAY,WAAS;AAC5B,WAAO,qBAAO;AAAA,MACZ,MAAM,QAAQ,WAAW,KAAK,EAAE,QAAQ,aAAa,MAAM;AAAA,IAC7D;AAAA,EACF,CAAC,EACA,QAAQ,cAAc,WAAS;AAC9B,WAAO,qBAAO;AAAA,MACZ,MAAM,QAAQ,UAAU,KAAK,EAAE,QAAQ,YAAY,MAAM;AAAA,IAC3D;AAAA,EACF,CAAC;AACL;AAEO,MAAM,8BAA8B,CACzC,EAAE,KAAK,SAAS,GAChB,SAAc,CAAC,MACZ;AACH,aAAW,CAAC,eAAe,KAAK,KAAK,OAAO,QAAQ,MAAM,GAGrD;AACH,QAAI,aAAa,IAAI;AAAA,MACnB,OAAO,gBACL,MAAM,gBAAgB,IAAI,IAAI,SAAS,MAAM,aAAa,MAAM;AAAA,IAEpE;AACA,QAAI,cAAc;AAClB,QAAI,cAAc;AAClB,QAAI,aAAa;AACjB,eAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,KAAK,GAAsB;AACrE,UAAI,QAAQ,gBAAgB;AAC1B,uBAAe,IAAI;AAAA,UACjB,sBAAsB,mCAAS,KAAK;AAAA;AAAA,QACtC;AAAA,MACF;AACA,UAAI,QAAQ,gBAAgB;AAC1B,uBAAe,IAAI;AAAA,UACjB,uBAAuB,mCAAS,KAAK;AAAA;AAAA,QACvC;AAAA,MACF;AACA,UAAI,QAAQ,YAAY;AACtB,mBAAW,CAAC,WAAW,cAAc,KAAK,OAAO,QAAQ,OAAO,GAG3D;AACH,wBAAc,IAAI;AAAA,YAChB,KAAK,SAAS,QAAQ,OAAO,eAAe,MAAM;AAAA,cAChD,GAAG,cAAc,eAAe;AAAA,YAClC,KACE,eAAe,YAAY,KAAK,eAAe,cAAc;AAAA,UAEjE;AACA,cAAI,eAAe;AACjB,0BAAc,SAAS,IAAI,cAAc,OAAO,KAAK,IAAI;AAAA,cACvD,kBAAkB,eAAe,IAAI;AAAA,YACvC;AACF,cAAI,eAAe;AACjB,2BAAe,SAAS,IAAI;AAAA,cAC1B;AAAA,YACF,KAAK,IAAI,UAAU,eAAe,KAAK;AAAA,QAC3C;AAAA,MACF;AAAA,IACF;AACA,YAAQ,IAAI,UAAU;AACtB,QAAI,aAAa;AACf,YAAM,SAAS;AACf,YAAM,UAAU;AAChB,cAAQ;AAAA,QACN,YAAY;AAAA,UACV,IAAI,OAAO,SAAS,QAAQ,SAAS,MAAM;AAAA,UAC3C,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AACA,QAAI;AAAY,cAAQ,IAAI,UAAU;AACtC,QAAI;AAAa,cAAQ,IAAI,WAAW;AAAA,EAC1C;AACF;AAKO,MAAM,4BAA4B,CACvC,EAAE,KAAK,SAAS,GAChB,WACG;AACH,aAAW,CAAC,QAAQ,GAAG,KAAK,OAAO,QAAQ,MAAM,GAG5C;AACH,QAAI,2BAAK,QAAQ;AACf,UAAI,WAAW,UAAU;AACvB,cAAM,SAAkC;AACxC,YAAI;AAAA,UACF,OAAO,aAAa,SAAS,QAAQ,OAAO,OAAO,MAAM;AAAA,YACvD,IAAI,IAAI,QAAM,GAAG,EAAE,EAAE,KAAK,IAAI;AAAA,UAChC;AAAA;AAAA,QACF;AACA,mBAAW,CAAC,eAAe,KAAK,KAAK;AACnC,cAAI;AAAA,YACF,GAAG,IAAI,cAAc,aAAa,MAAM,MAAM;AAAA,YAC9C;AAAA,UACF;AAAA,MACJ;AACE,YAAI;AAAA,UACF,OAAO,aAAa,SAAS,QAAQ,OAAO,OAAO,MAAM;AAAA,YACvD,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF;AAAA,IACJ;AAAA,EACF;AACF;AAEO,MAAM,sBAAsB,CACjC,EAAE,KAAK,SAAS,GAChB,MACA,YAAY,UACZ,WAAW,QACR;AACH,MAAI,IAAI,EAAE;AACV,QAAM,eAAe,SAAS,QAAQ;AAEtC,MAAI,QAAQ,YAAY;AACtB,QAAI;AAAA,MACF,mBAAmB,aAAa,WAAW;AAAA,QACzC;AAAA,MACF,kBAAkB,aAAa,QAAQ,EAAE,GAAG,eAAe;AAAA,QACzD;AAAA,MACF,EAAE,GAAG,eAAe,aAAa,QAAQ,EAAE,GAAG,eAAe;AAAA,QAC3D;AAAA,MACF,EAAE,GAAG;AAAA,IACP;AACF,MAAI;AAAA,IACF,oBAAoB,IAAI;AAAA,MACtB;AAAA,IACF,kBAAkB,IAAI,cAAc,GAAG,kBAAkB,IAAI;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AAEA,MAAI,KAAK;AAET,QAAM,aAAa,CACjB,MACA,QACA,SAAS,UACN;AAxgBP;AAygBI,UAAM,cACJ,WAAW,QAAQ,KAAK,aAAS,kCAAoB,KAAK,KAAK;AACjE,UAAM,aAAa,cAAc;AACjC,UAAM,gBACJ,cAAc,aACd,YAAY,QACZ,KAAK,UACL,CAAC,UAAU,QAAQ,EAAE,SAAS,KAAK,MAAM;AAE3C,UAAM,cACH,cAAc,iBAAiB,gBAChC,UAAU,UACV,UAAK,SAAL,mBAAW,WAAW,MAAM;AAE9B,WAAO,GACL,YAAY,QAAQ,KAAK,SACrB,GAAG,aAAa,KAAK,MAAM;AAAA,MACzB,KAAK,OAAO,UAAU,GAAG,CAAC,EAAE,YAAY;AAAA,IAC1C,OACA,KACH,KAAK,QAAQ,IAAI,cAAc,GAAG,IAAI,IAAI,SAAS,GAAG,IACvD,iBAAiB,QAAQ,KAAK,cAC1B,IAAI,cAAc,GAAG,IACrB,IAAI,SAAS,GAAG,IAEpB,KAAK,gBAAgB,IAAI,cAAc,GAAG,IAAI,IAAI,SAAS,GAAG,IAC7D,SAAS,IACV,YAAY,QAAQ,KAAK,WAAW,cAChC,aACA;AAAA,MAEJ,iBAAiB,QAAQ,KAAK,cAC1B,IAAI;AAAA,QACF,cAAc,UAAU,CAAC,KAAK,OAAO,KAAK,OAAO,IAAI,KAAK;AAAA,MAC5D,IACA,cAAc,UAAU,CAAC,KAAK,OAC9B,KAAK,OACL,IAAI,KAAK;AAAA,IACf,IAAI,KAAK,QAAQ,IAAI,IAAI,SAAS,KAAK,MAAM,IAAI,aAAa,MAAM,KAClE,KAAK,aAAa,KAAK,KAAK,eAAe,MACzC,iBAAiB,OAAO,IAAI,SAAS,KAAK,WAAW,IAAI,KAC3D,cAAe,iBAAiB,KAAK,OAAO,KAAK,aAC7C,OAAO,IAAI,SAAS,KAAK,KACvB,EAAE,gBAAgB,SAAS,KAAK,OAAO,KAAK,aACxC,KAAK,KACL,GAAG,KAAK,MAAM,IAAI,SAAS,MAAM,KAAK,YAAY,QAExD,MAEH,cACE,iBAAiB,KAAK,aAAa,KAAK,qBAC3C,KAAK,WACD,OAAO,IAAI;AAAA,MACT,aACE,EAAE,sBAAsB,SACxB,KAAK,aAAa,KAAK,mBACnB,KAAK,WACL,GAAG,KAAK,eAAe,KAAK;AAAA,IAEpC,MACA,KAEJ,gBAAc,UAAK,UAAL,mBAAY,IAAI,MAC1B,OAAO,IAAI,SAAS,YAAY,KAAK,MAAM,IAAI,IAAI,MACnD,KAEJ,cACI,SAAK,2BAAY,KAAK,IAAI,UAAU,WAAW,KAAK,IAAI,MACxD,KAEJ,aACI,SAAK;AAAA,MACH,KAAK,IAAI,SAAS,SAAS,kBAAkB,UAAU,GAAG;AAAA,MAC1D;AAAA,IACF,MACA;AAAA,EAER;AAEA,QAAM,iBAAiB,CACrB,MACA,QAAQ,MACL;AACH,QAAI,MAAM;AACV,eAAW,UAAW,6BAAc,aAAY,CAAC,GAAc;AAC7D,aAAO,GAAG,WAAW,OAAO,MAAM,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA;AACvD,UAAI,cAAc;AAAO,eAAO,eAAe,OAAO,QAAQ,CAAC;AAAA,IACjE;AACA,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,eAAe,IAAI;AACpC,MAAI;AAAA,IACF,GAAG,WAAW,QAAQ,CAAC,GAAG,KAAK,IAAI,IAAI,WAAW;AAAA,EAAK,aAAa;AAAA,IACpE;AAAA,EACF;AACF;",
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
  }
@@ -31,8 +31,7 @@ const csvFormatter = async (entries) => {
31
31
  for (const entry of entries) {
32
32
  flatEntries.push((0, import_json.flattenObject)(entry));
33
33
  }
34
- else
35
- flatEntries.push((0, import_json.flattenObject)(entries));
34
+ else flatEntries.push((0, import_json.flattenObject)(entries));
36
35
  const columns = new Set(flatEntries.map((e) => Object.keys(e)).flat());
37
36
  const csv = await new Promise((resolve, reject) => {
38
37
  (0, import_csv.stringify)(
@@ -43,8 +42,7 @@ const csvFormatter = async (entries) => {
43
42
  columns: [...columns]
44
43
  },
45
44
  (err, data) => {
46
- if (err)
47
- reject(err);
45
+ if (err) reject(err);
48
46
  resolve(data);
49
47
  }
50
48
  );
@@ -61,8 +59,7 @@ const csvToJson = async (data) => {
61
59
  cast: (value, context) => {
62
60
  if (context.header || context.column === "sys.version.versionNo")
63
61
  return value;
64
- if (value === "")
65
- return void 0;
62
+ if (value === "") return void 0;
66
63
  try {
67
64
  return JSON.parse(value);
68
65
  } catch (e) {
@@ -71,8 +68,7 @@ const csvToJson = async (data) => {
71
68
  }
72
69
  },
73
70
  (err, records) => {
74
- if (err)
75
- reject(err);
71
+ if (err) reject(err);
76
72
  resolve(records);
77
73
  }
78
74
  );
@@ -80,15 +76,13 @@ const csvToJson = async (data) => {
80
76
  };
81
77
  const detectCsv = (chunk, opts) => {
82
78
  opts = opts || {};
83
- if (Buffer.isBuffer(chunk))
84
- chunk = chunk + "";
79
+ if (Buffer.isBuffer(chunk)) chunk = chunk + "";
85
80
  const delimiters = opts.delimiters || [",", ";", " ", "|"];
86
81
  const newlines = opts.newlines || ["\n", "\r"];
87
82
  const lines = chunk.split(/[\n\r]+/g);
88
83
  const delimiter = determineMost(lines[0], delimiters);
89
84
  const newline = determineMost(chunk, newlines);
90
- if (!delimiter)
91
- return null;
85
+ if (!delimiter) return null;
92
86
  return {
93
87
  delimiter,
94
88
  newline
@@ -103,9 +97,8 @@ const determineMost = (chunk, items) => {
103
97
  items.forEach((item) => {
104
98
  itemCount[item] = 0;
105
99
  });
106
- for (var i = 0; i < chunk.length; i++) {
107
- if (chunk[i] === '"')
108
- ignoreString = !ignoreString;
100
+ for (let i = 0; i < chunk.length; i++) {
101
+ if (chunk[i] === '"') ignoreString = !ignoreString;
109
102
  else if (!ignoreString && chunk[i] in itemCount) {
110
103
  currValue = ++itemCount[chunk[i]];
111
104
  if (currValue > maxValue) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/util/csv.formatter.ts"],
4
- "sourcesContent": ["import { parse, stringify } from 'csv';\n// import { parse, stringify } from 'csv/sync';\nimport { flattenObject } from './json.formatter';\n\nexport const csvFormatter = async <T>(entries: T | T[]) => {\n // Flatten the passed in object\n const flatEntries = [] as any[];\n if (Array.isArray(entries))\n for (const entry of entries) {\n flatEntries.push(flattenObject(entry));\n }\n else flatEntries.push(flattenObject(entries));\n\n // Parse the flattened object to csv\n // const csv = stringify(flatEntries, { header: true });\n // Create an exhaustive list of columns from the entries array\n const columns = new Set<string>(flatEntries.map(e => Object.keys(e)).flat());\n const csv = await new Promise<string>((resolve, reject) => {\n stringify(\n flatEntries,\n {\n header: true,\n cast: { boolean: (value, context) => `${value}` },\n columns: [...columns],\n },\n (err, data) => {\n if (err) reject(err);\n resolve(data);\n }\n );\n });\n return csv;\n};\n\nexport const csvToJson = async <T = any>(data: string): Promise<T[]> => {\n return new Promise((resolve, reject) => {\n parse(\n data,\n {\n columns: true,\n skip_empty_lines: true,\n cast: (value, context) => {\n if (context.header || context.column === 'sys.version.versionNo')\n return value;\n if (value === '') return undefined;\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n },\n },\n (err, records) => {\n if (err) reject(err);\n resolve(records);\n }\n );\n });\n};\n\nexport const detectCsv = (\n chunk: string,\n opts?: { delimiters?: string[]; newlines?: string[] }\n) => {\n opts = opts || {};\n if (Buffer.isBuffer(chunk)) chunk = chunk + '';\n const delimiters = opts.delimiters || [',', ';', '\\t', '|'];\n const newlines = opts.newlines || ['\\n', '\\r'];\n\n const lines = chunk.split(/[\\n\\r]+/g);\n\n const delimiter = determineMost(lines[0], delimiters);\n const newline = determineMost(chunk, newlines);\n\n if (!delimiter) return null;\n\n return {\n delimiter: delimiter,\n newline: newline,\n };\n};\n\nconst determineMost = (chunk: string, items: string[]) => {\n const itemCount = {} as any;\n let ignoreString = false;\n let maxValue = 0;\n let maxChar;\n let currValue;\n items.forEach(item => {\n itemCount[item] = 0;\n });\n for (var i = 0; i < chunk.length; i++) {\n if (chunk[i] === '\"') ignoreString = !ignoreString;\n else if (!ignoreString && chunk[i] in itemCount) {\n currValue = ++itemCount[chunk[i]];\n if (currValue > maxValue) {\n maxValue = currValue;\n maxChar = chunk[i];\n }\n }\n }\n return maxChar;\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiC;AAEjC,kBAA8B;AAEvB,MAAM,eAAe,OAAU,YAAqB;AAEzD,QAAM,cAAc,CAAC;AACrB,MAAI,MAAM,QAAQ,OAAO;AACvB,eAAW,SAAS,SAAS;AAC3B,kBAAY,SAAK,2BAAc,KAAK,CAAC;AAAA,IACvC;AAAA;AACG,gBAAY,SAAK,2BAAc,OAAO,CAAC;AAK5C,QAAM,UAAU,IAAI,IAAY,YAAY,IAAI,OAAK,OAAO,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AAC3E,QAAM,MAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACzD;AAAA,MACE;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,MAAM,EAAE,SAAS,CAAC,OAAO,YAAY,GAAG,QAAQ;AAAA,QAChD,SAAS,CAAC,GAAG,OAAO;AAAA,MACtB;AAAA,MACA,CAAC,KAAK,SAAS;AACb,YAAI;AAAK,iBAAO,GAAG;AACnB,gBAAQ,IAAI;AAAA,MACd;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAEO,MAAM,YAAY,OAAgB,SAA+B;AACtE,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC;AAAA,MACE;AAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB,MAAM,CAAC,OAAO,YAAY;AACxB,cAAI,QAAQ,UAAU,QAAQ,WAAW;AACvC,mBAAO;AACT,cAAI,UAAU;AAAI,mBAAO;AACzB,cAAI;AACF,mBAAO,KAAK,MAAM,KAAK;AAAA,UACzB,SAAS,GAAP;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,CAAC,KAAK,YAAY;AAChB,YAAI;AAAK,iBAAO,GAAG;AACnB,gBAAQ,OAAO;AAAA,MACjB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,MAAM,YAAY,CACvB,OACA,SACG;AACH,SAAO,QAAQ,CAAC;AAChB,MAAI,OAAO,SAAS,KAAK;AAAG,YAAQ,QAAQ;AAC5C,QAAM,aAAa,KAAK,cAAc,CAAC,KAAK,KAAK,KAAM,GAAG;AAC1D,QAAM,WAAW,KAAK,YAAY,CAAC,MAAM,IAAI;AAE7C,QAAM,QAAQ,MAAM,MAAM,UAAU;AAEpC,QAAM,YAAY,cAAc,MAAM,IAAI,UAAU;AACpD,QAAM,UAAU,cAAc,OAAO,QAAQ;AAE7C,MAAI,CAAC;AAAW,WAAO;AAEvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,MAAM,gBAAgB,CAAC,OAAe,UAAoB;AACxD,QAAM,YAAY,CAAC;AACnB,MAAI,eAAe;AACnB,MAAI,WAAW;AACf,MAAI;AACJ,MAAI;AACJ,QAAM,QAAQ,UAAQ;AACpB,cAAU,QAAQ;AAAA,EACpB,CAAC;AACD,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QAAI,MAAM,OAAO;AAAK,qBAAe,CAAC;AAAA,aAC7B,CAAC,gBAAgB,MAAM,MAAM,WAAW;AAC/C,kBAAY,EAAE,UAAU,MAAM;AAC9B,UAAI,YAAY,UAAU;AACxB,mBAAW;AACX,kBAAU,MAAM;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;",
4
+ "sourcesContent": ["import { parse, stringify } from 'csv';\n// import { parse, stringify } from 'csv/sync';\nimport { flattenObject } from './json.formatter';\n\nexport const csvFormatter = async <T>(entries: T | T[]) => {\n // Flatten the passed in object\n const flatEntries = [] as any[];\n if (Array.isArray(entries))\n for (const entry of entries) {\n flatEntries.push(flattenObject(entry));\n }\n else flatEntries.push(flattenObject(entries));\n\n // Parse the flattened object to csv\n // const csv = stringify(flatEntries, { header: true });\n // Create an exhaustive list of columns from the entries array\n const columns = new Set<string>(flatEntries.map(e => Object.keys(e)).flat());\n const csv = await new Promise<string>((resolve, reject) => {\n stringify(\n flatEntries,\n {\n header: true,\n cast: { boolean: (value, context) => `${value}` },\n columns: [...columns],\n },\n (err, data) => {\n if (err) reject(err);\n resolve(data);\n }\n );\n });\n return csv;\n};\n\nexport const csvToJson = async <T = any>(data: string): Promise<T[]> => {\n return new Promise((resolve, reject) => {\n parse(\n data,\n {\n columns: true,\n skip_empty_lines: true,\n cast: (value, context) => {\n if (context.header || context.column === 'sys.version.versionNo')\n return value;\n if (value === '') return undefined;\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n },\n },\n (err, records) => {\n if (err) reject(err);\n resolve(records);\n }\n );\n });\n};\n\nexport const detectCsv = (\n chunk: string,\n opts?: { delimiters?: string[]; newlines?: string[] }\n) => {\n opts = opts || {};\n if (Buffer.isBuffer(chunk)) chunk = chunk + '';\n const delimiters = opts.delimiters || [',', ';', '\\t', '|'];\n const newlines = opts.newlines || ['\\n', '\\r'];\n\n const lines = chunk.split(/[\\n\\r]+/g);\n\n const delimiter = determineMost(lines[0], delimiters);\n const newline = determineMost(chunk, newlines);\n\n if (!delimiter) return null;\n\n return {\n delimiter: delimiter,\n newline: newline,\n };\n};\n\nconst determineMost = (chunk: string, items: string[]) => {\n const itemCount = {} as any;\n let ignoreString = false;\n let maxValue = 0;\n let maxChar;\n let currValue;\n items.forEach(item => {\n itemCount[item] = 0;\n });\n for (let i = 0; i < chunk.length; i++) {\n if (chunk[i] === '\"') ignoreString = !ignoreString;\n else if (!ignoreString && chunk[i] in itemCount) {\n currValue = ++itemCount[chunk[i]];\n if (currValue > maxValue) {\n maxValue = currValue;\n maxChar = chunk[i];\n }\n }\n }\n return maxChar;\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiC;AAEjC,kBAA8B;AAEvB,MAAM,eAAe,OAAU,YAAqB;AAEzD,QAAM,cAAc,CAAC;AACrB,MAAI,MAAM,QAAQ,OAAO;AACvB,eAAW,SAAS,SAAS;AAC3B,kBAAY,SAAK,2BAAc,KAAK,CAAC;AAAA,IACvC;AAAA,MACG,aAAY,SAAK,2BAAc,OAAO,CAAC;AAK5C,QAAM,UAAU,IAAI,IAAY,YAAY,IAAI,OAAK,OAAO,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AAC3E,QAAM,MAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACzD;AAAA,MACE;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,MAAM,EAAE,SAAS,CAAC,OAAO,YAAY,GAAG,KAAK,GAAG;AAAA,QAChD,SAAS,CAAC,GAAG,OAAO;AAAA,MACtB;AAAA,MACA,CAAC,KAAK,SAAS;AACb,YAAI,IAAK,QAAO,GAAG;AACnB,gBAAQ,IAAI;AAAA,MACd;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAEO,MAAM,YAAY,OAAgB,SAA+B;AACtE,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC;AAAA,MACE;AAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB,MAAM,CAAC,OAAO,YAAY;AACxB,cAAI,QAAQ,UAAU,QAAQ,WAAW;AACvC,mBAAO;AACT,cAAI,UAAU,GAAI,QAAO;AACzB,cAAI;AACF,mBAAO,KAAK,MAAM,KAAK;AAAA,UACzB,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,CAAC,KAAK,YAAY;AAChB,YAAI,IAAK,QAAO,GAAG;AACnB,gBAAQ,OAAO;AAAA,MACjB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,MAAM,YAAY,CACvB,OACA,SACG;AACH,SAAO,QAAQ,CAAC;AAChB,MAAI,OAAO,SAAS,KAAK,EAAG,SAAQ,QAAQ;AAC5C,QAAM,aAAa,KAAK,cAAc,CAAC,KAAK,KAAK,KAAM,GAAG;AAC1D,QAAM,WAAW,KAAK,YAAY,CAAC,MAAM,IAAI;AAE7C,QAAM,QAAQ,MAAM,MAAM,UAAU;AAEpC,QAAM,YAAY,cAAc,MAAM,CAAC,GAAG,UAAU;AACpD,QAAM,UAAU,cAAc,OAAO,QAAQ;AAE7C,MAAI,CAAC,UAAW,QAAO;AAEvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,MAAM,gBAAgB,CAAC,OAAe,UAAoB;AACxD,QAAM,YAAY,CAAC;AACnB,MAAI,eAAe;AACnB,MAAI,WAAW;AACf,MAAI;AACJ,MAAI;AACJ,QAAM,QAAQ,UAAQ;AACpB,cAAU,IAAI,IAAI;AAAA,EACpB,CAAC;AACD,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QAAI,MAAM,CAAC,MAAM,IAAK,gBAAe,CAAC;AAAA,aAC7B,CAAC,gBAAgB,MAAM,CAAC,KAAK,WAAW;AAC/C,kBAAY,EAAE,UAAU,MAAM,CAAC,CAAC;AAChC,UAAI,YAAY,UAAU;AACxB,mBAAW;AACX,kBAAU,MAAM,CAAC;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
package/dist/util/diff.js CHANGED
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -71,10 +75,8 @@ ${part.value.split("\n").map(
71
75
  (ln, idx) => ln.trim() !== "" ? `${part.startLineNumber ? part.startLineNumber + idx : lnSpaces}${part.added ? "+" : part.removed ? "-" : " "} ${import_chalk.default[colour](`${ln}`)}` : ln
72
76
  ).join("\n")}`
73
77
  );
74
- } else
75
- needsNewLine = true;
76
- } else
77
- needsNewLine = true;
78
+ } else needsNewLine = true;
79
+ } else needsNewLine = true;
78
80
  }
79
81
  return output.join("").replaceAll("\n\n\n", "\n\n");
80
82
  };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/util/diff.ts"],
4
4
  "sourcesContent": ["import chalk from 'chalk';\nimport { Change, diffLines } from 'diff';\nimport { normaliseLineEndings } from './os';\n\nexport const diffLogStrings = (updates: string, previous: string) => {\n const lastFewLines = previous.split('\\n').slice(-10);\n const incomingLines = updates.split('\\n');\n\n // Find the line indices in the incoming lines\n // of the last few lines previously rendered\n const incomingLineIndices = [];\n for (const lastRenderedLine of lastFewLines) {\n if (lastRenderedLine.length > 10)\n incomingLineIndices.push(incomingLines.lastIndexOf(lastRenderedLine));\n }\n\n // Get the new lines from the next position on from the last of the already shown lines\n const differentFromPos = Math.max(...incomingLineIndices, 0) + 1;\n // Return just the incoming lines from the position we matched\n return incomingLines.slice(differentFromPos).join('\\n');\n};\n\nexport const diffFileContent = (\n existingContent: string,\n newContent: string\n) => {\n const existingContentNormalised = normaliseLineEndings(existingContent, '\\n');\n const newContentNormalised = normaliseLineEndings(newContent, '\\n');\n\n const diff = diffLines(existingContentNormalised, newContentNormalised, {\n newlineIsToken: true,\n });\n const diffRanges = addDiffPositionInfo(diff);\n\n // Create formatted output for console\n const output: string[] = [];\n const lnSpaceLength = Math.max(\n ...diffRanges.map(d => d.startLineNumber.toString().length),\n 0\n );\n\n const lnSpaces = Array(lnSpaceLength).join(' ');\n\n let needsNewLine = false;\n for (let i = 0; i < diffRanges.length; i++) {\n const part = diffRanges[i];\n if (part.added || part.removed) {\n const colour = part.added ? 'green' : part.removed ? 'red' : 'grey';\n\n if (part.value !== '\\n') {\n if (needsNewLine) {\n output.push('\\n### --');\n needsNewLine = false;\n }\n output.push(\n `\\n${part.value\n .split('\\n')\n .map((ln, idx) =>\n ln.trim() !== ''\n ? `${\n part.startLineNumber ? part.startLineNumber + idx : lnSpaces\n }${part.added ? '+' : part.removed ? '-' : ' '} ${chalk[\n colour\n ](`${ln}`)}`\n : ln\n )\n .join('\\n')}`\n );\n } else needsNewLine = true;\n } else needsNewLine = true;\n }\n\n return output.join('').replaceAll('\\n\\n\\n', '\\n\\n');\n};\n\nconst addDiffPositionInfo = (diff: Change[]) => {\n const diffRanges: (Change & {\n startLineNumber: number;\n startColumn: number;\n endLineNumber: number;\n endColumn: number;\n })[] = [];\n\n let lineNumber = 0;\n let column = 0;\n for (let partIndex = 0; partIndex < diff.length; partIndex++) {\n const part = diff[partIndex];\n\n // // Skip any parts that aren't in `after`\n // if (part.removed === true) {\n // continue;\n // }\n\n const startLineNumber = lineNumber;\n const startColumn = column;\n\n // Split the part into lines. Loop throug these lines to find\n // the line no. and column at the end of this part.\n const substring = part.value;\n const lines = substring.split('\\n');\n lines.forEach((line, lineIndex) => {\n // The first `line` is actually just a continuation of the last line\n if (lineIndex === 0) {\n column += line.length;\n // All other lines come after a line break.\n } else if (lineIndex > 0) {\n lineNumber += 1;\n column = line.length;\n }\n });\n\n // Save a range for all of the parts with position info added\n if (part.added === true || part.removed === true) {\n diffRanges.push({\n startLineNumber: startLineNumber + 1,\n startColumn: startColumn,\n endLineNumber: lineNumber,\n endColumn: column,\n ...part,\n });\n }\n }\n return diffRanges;\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,kBAAkC;AAClC,gBAAqC;AAE9B,MAAM,iBAAiB,CAAC,SAAiB,aAAqB;AACnE,QAAM,eAAe,SAAS,MAAM,IAAI,EAAE,MAAM,GAAG;AACnD,QAAM,gBAAgB,QAAQ,MAAM,IAAI;AAIxC,QAAM,sBAAsB,CAAC;AAC7B,aAAW,oBAAoB,cAAc;AAC3C,QAAI,iBAAiB,SAAS;AAC5B,0BAAoB,KAAK,cAAc,YAAY,gBAAgB,CAAC;AAAA,EACxE;AAGA,QAAM,mBAAmB,KAAK,IAAI,GAAG,qBAAqB,CAAC,IAAI;AAE/D,SAAO,cAAc,MAAM,gBAAgB,EAAE,KAAK,IAAI;AACxD;AAEO,MAAM,kBAAkB,CAC7B,iBACA,eACG;AACH,QAAM,gCAA4B,gCAAqB,iBAAiB,IAAI;AAC5E,QAAM,2BAAuB,gCAAqB,YAAY,IAAI;AAElE,QAAM,WAAO,uBAAU,2BAA2B,sBAAsB;AAAA,IACtE,gBAAgB;AAAA,EAClB,CAAC;AACD,QAAM,aAAa,oBAAoB,IAAI;AAG3C,QAAM,SAAmB,CAAC;AAC1B,QAAM,gBAAgB,KAAK;AAAA,IACzB,GAAG,WAAW,IAAI,OAAK,EAAE,gBAAgB,SAAS,EAAE,MAAM;AAAA,IAC1D;AAAA,EACF;AAEA,QAAM,WAAW,MAAM,aAAa,EAAE,KAAK,GAAG;AAE9C,MAAI,eAAe;AACnB,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,UAAM,OAAO,WAAW;AACxB,QAAI,KAAK,SAAS,KAAK,SAAS;AAC9B,YAAM,SAAS,KAAK,QAAQ,UAAU,KAAK,UAAU,QAAQ;AAE7D,UAAI,KAAK,UAAU,MAAM;AACvB,YAAI,cAAc;AAChB,iBAAO,KAAK,UAAU;AACtB,yBAAe;AAAA,QACjB;AACA,eAAO;AAAA,UACL;AAAA,EAAK,KAAK,MACP,MAAM,IAAI,EACV;AAAA,YAAI,CAAC,IAAI,QACR,GAAG,KAAK,MAAM,KACV,GACE,KAAK,kBAAkB,KAAK,kBAAkB,MAAM,WACnD,KAAK,QAAQ,MAAM,KAAK,UAAU,MAAM,OAAO,aAAAA,QAChD,QACA,GAAG,IAAI,MACT;AAAA,UACN,EACC,KAAK,IAAI;AAAA,QACd;AAAA,MACF;AAAO,uBAAe;AAAA,IACxB;AAAO,qBAAe;AAAA,EACxB;AAEA,SAAO,OAAO,KAAK,EAAE,EAAE,WAAW,UAAU,MAAM;AACpD;AAEA,MAAM,sBAAsB,CAAC,SAAmB;AAC9C,QAAM,aAKC,CAAC;AAER,MAAI,aAAa;AACjB,MAAI,SAAS;AACb,WAAS,YAAY,GAAG,YAAY,KAAK,QAAQ,aAAa;AAC5D,UAAM,OAAO,KAAK;AAOlB,UAAM,kBAAkB;AACxB,UAAM,cAAc;AAIpB,UAAM,YAAY,KAAK;AACvB,UAAM,QAAQ,UAAU,MAAM,IAAI;AAClC,UAAM,QAAQ,CAAC,MAAM,cAAc;AAEjC,UAAI,cAAc,GAAG;AACnB,kBAAU,KAAK;AAAA,MAEjB,WAAW,YAAY,GAAG;AACxB,sBAAc;AACd,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AAGD,QAAI,KAAK,UAAU,QAAQ,KAAK,YAAY,MAAM;AAChD,iBAAW,KAAK;AAAA,QACd,iBAAiB,kBAAkB;AAAA,QACnC;AAAA,QACA,eAAe;AAAA,QACf,WAAW;AAAA,QACX,GAAG;AAAA,MACL,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,kBAAkC;AAClC,gBAAqC;AAE9B,MAAM,iBAAiB,CAAC,SAAiB,aAAqB;AACnE,QAAM,eAAe,SAAS,MAAM,IAAI,EAAE,MAAM,GAAG;AACnD,QAAM,gBAAgB,QAAQ,MAAM,IAAI;AAIxC,QAAM,sBAAsB,CAAC;AAC7B,aAAW,oBAAoB,cAAc;AAC3C,QAAI,iBAAiB,SAAS;AAC5B,0BAAoB,KAAK,cAAc,YAAY,gBAAgB,CAAC;AAAA,EACxE;AAGA,QAAM,mBAAmB,KAAK,IAAI,GAAG,qBAAqB,CAAC,IAAI;AAE/D,SAAO,cAAc,MAAM,gBAAgB,EAAE,KAAK,IAAI;AACxD;AAEO,MAAM,kBAAkB,CAC7B,iBACA,eACG;AACH,QAAM,gCAA4B,gCAAqB,iBAAiB,IAAI;AAC5E,QAAM,2BAAuB,gCAAqB,YAAY,IAAI;AAElE,QAAM,WAAO,uBAAU,2BAA2B,sBAAsB;AAAA,IACtE,gBAAgB;AAAA,EAClB,CAAC;AACD,QAAM,aAAa,oBAAoB,IAAI;AAG3C,QAAM,SAAmB,CAAC;AAC1B,QAAM,gBAAgB,KAAK;AAAA,IACzB,GAAG,WAAW,IAAI,OAAK,EAAE,gBAAgB,SAAS,EAAE,MAAM;AAAA,IAC1D;AAAA,EACF;AAEA,QAAM,WAAW,MAAM,aAAa,EAAE,KAAK,GAAG;AAE9C,MAAI,eAAe;AACnB,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,UAAM,OAAO,WAAW,CAAC;AACzB,QAAI,KAAK,SAAS,KAAK,SAAS;AAC9B,YAAM,SAAS,KAAK,QAAQ,UAAU,KAAK,UAAU,QAAQ;AAE7D,UAAI,KAAK,UAAU,MAAM;AACvB,YAAI,cAAc;AAChB,iBAAO,KAAK,UAAU;AACtB,yBAAe;AAAA,QACjB;AACA,eAAO;AAAA,UACL;AAAA,EAAK,KAAK,MACP,MAAM,IAAI,EACV;AAAA,YAAI,CAAC,IAAI,QACR,GAAG,KAAK,MAAM,KACV,GACE,KAAK,kBAAkB,KAAK,kBAAkB,MAAM,QACtD,GAAG,KAAK,QAAQ,MAAM,KAAK,UAAU,MAAM,GAAG,IAAI,aAAAA,QAChD,MACF,EAAE,GAAG,EAAE,EAAE,CAAC,KACV;AAAA,UACN,EACC,KAAK,IAAI,CAAC;AAAA,QACf;AAAA,MACF,MAAO,gBAAe;AAAA,IACxB,MAAO,gBAAe;AAAA,EACxB;AAEA,SAAO,OAAO,KAAK,EAAE,EAAE,WAAW,UAAU,MAAM;AACpD;AAEA,MAAM,sBAAsB,CAAC,SAAmB;AAC9C,QAAM,aAKC,CAAC;AAER,MAAI,aAAa;AACjB,MAAI,SAAS;AACb,WAAS,YAAY,GAAG,YAAY,KAAK,QAAQ,aAAa;AAC5D,UAAM,OAAO,KAAK,SAAS;AAO3B,UAAM,kBAAkB;AACxB,UAAM,cAAc;AAIpB,UAAM,YAAY,KAAK;AACvB,UAAM,QAAQ,UAAU,MAAM,IAAI;AAClC,UAAM,QAAQ,CAAC,MAAM,cAAc;AAEjC,UAAI,cAAc,GAAG;AACnB,kBAAU,KAAK;AAAA,MAEjB,WAAW,YAAY,GAAG;AACxB,sBAAc;AACd,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AAGD,QAAI,KAAK,UAAU,QAAQ,KAAK,YAAY,MAAM;AAChD,iBAAW,KAAK;AAAA,QACd,iBAAiB,kBAAkB;AAAA,QACnC;AAAA,QACA,eAAe;AAAA,QACf,WAAW;AAAA,QACX,GAAG;AAAA,MACL,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;",
6
6
  "names": ["chalk"]
7
7
  }
@@ -36,8 +36,7 @@ const mergeDotEnvFileContents = (existingFileLines, envContentsToAdd) => {
36
36
  newline = `${k}=${v}`;
37
37
  updatedEnvKeys.push(k);
38
38
  }
39
- if (newline || ln)
40
- envFileLines.push(newline || ln);
39
+ if (newline || ln) envFileLines.push(newline || ln);
41
40
  }
42
41
  for (const addKey of Object.keys(envContentsToAdd).filter(
43
42
  (efl) => !updatedEnvKeys.find((uek) => {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/util/dotenv.ts"],
4
4
  "sourcesContent": ["import { EnvContentsToAdd } from \"~/models/DevService\";\n\nexport const mergeDotEnvFileContents = (\n existingFileLines: string[],\n envContentsToAdd: EnvContentsToAdd\n): string[] => {\n const envFileLines: string[] = []; // the new .env file\n if (existingFileLines.length === 0) {\n // There is no env file, just create one from envContentsToAdd\n envFileLines.push(\n ...Object.entries(envContentsToAdd).map(([k, v]) => `${k}=${v}`)\n );\n } else {\n const updatedEnvKeys: string[] = [];\n // Find lines in env that already exist for the keys in envContentsToAdd\n // update them if they exist and add them to envFileLines\n for (const ln of existingFileLines) {\n let newline = '';\n for (const [k, v] of Object.entries(envContentsToAdd))\n if (ln.startsWith(`${k}=`)) {\n newline = `${k}=${v}`;\n updatedEnvKeys.push(k);\n }\n // Ensure an updated line or other lines from the existing env file are re-added\n if (newline || ln) envFileLines.push(newline || ln);\n }\n\n // Add the envContentsToAdd lines to the file that did not previously exist or had an update\n for (const addKey of Object.keys(envContentsToAdd).filter(\n efl =>\n !updatedEnvKeys.find(uek => uek.startsWith(`${efl.split('=')?.[0]}`))\n ) as (keyof typeof envContentsToAdd)[]) {\n envFileLines.push(`${addKey}=${envContentsToAdd[addKey]}`);\n }\n }\n return envFileLines;\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,0BAA0B,CACrC,mBACA,qBACa;AACb,QAAM,eAAyB,CAAC;AAChC,MAAI,kBAAkB,WAAW,GAAG;AAElC,iBAAa;AAAA,MACX,GAAG,OAAO,QAAQ,gBAAgB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG;AAAA,IACjE;AAAA,EACF,OAAO;AACL,UAAM,iBAA2B,CAAC;AAGlC,eAAW,MAAM,mBAAmB;AAClC,UAAI,UAAU;AACd,iBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,gBAAgB;AAClD,YAAI,GAAG,WAAW,GAAG,IAAI,GAAG;AAC1B,oBAAU,GAAG,KAAK;AAClB,yBAAe,KAAK,CAAC;AAAA,QACvB;AAEF,UAAI,WAAW;AAAI,qBAAa,KAAK,WAAW,EAAE;AAAA,IACpD;AAGA,eAAW,UAAU,OAAO,KAAK,gBAAgB,EAAE;AAAA,MACjD,SACE,CAAC,eAAe,KAAK,SAAI;AA9BjC;AA8BoC,mBAAI,WAAW,IAAG,SAAI,MAAM,GAAG,MAAb,mBAAiB,IAAI;AAAA,OAAC;AAAA,IACxE,GAAwC;AACtC,mBAAa,KAAK,GAAG,UAAU,iBAAiB,SAAS;AAAA,IAC3D;AAAA,EACF;AACA,SAAO;AACT;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,0BAA0B,CACrC,mBACA,qBACa;AACb,QAAM,eAAyB,CAAC;AAChC,MAAI,kBAAkB,WAAW,GAAG;AAElC,iBAAa;AAAA,MACX,GAAG,OAAO,QAAQ,gBAAgB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE;AAAA,IACjE;AAAA,EACF,OAAO;AACL,UAAM,iBAA2B,CAAC;AAGlC,eAAW,MAAM,mBAAmB;AAClC,UAAI,UAAU;AACd,iBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,gBAAgB;AAClD,YAAI,GAAG,WAAW,GAAG,CAAC,GAAG,GAAG;AAC1B,oBAAU,GAAG,CAAC,IAAI,CAAC;AACnB,yBAAe,KAAK,CAAC;AAAA,QACvB;AAEF,UAAI,WAAW,GAAI,cAAa,KAAK,WAAW,EAAE;AAAA,IACpD;AAGA,eAAW,UAAU,OAAO,KAAK,gBAAgB,EAAE;AAAA,MACjD,SACE,CAAC,eAAe,KAAK,SAAI;AA9BjC;AA8BoC,mBAAI,WAAW,IAAG,SAAI,MAAM,GAAG,MAAb,mBAAiB,EAAE,EAAE;AAAA,OAAC;AAAA,IACxE,GAAwC;AACtC,mBAAa,KAAK,GAAG,MAAM,IAAI,iBAAiB,MAAM,CAAC,EAAE;AAAA,IAC3D;AAAA,EACF;AACA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/util/error.ts"],
4
4
  "sourcesContent": ["export const deconstructApiError = (error: MappedError) => {\n let inner = '';\n if (error.data?.[0]) {\n inner = `${error.data?.[0].Field}: ${error.data?.[0].Message}`;\n }\n return `${error.message} ${inner}`;\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,sBAAsB,CAAC,UAAuB;AAA3D;AACE,MAAI,QAAQ;AACZ,OAAI,WAAM,SAAN,mBAAa,IAAI;AACnB,YAAQ,IAAG,WAAM,SAAN,mBAAa,GAAG,WAAU,WAAM,SAAN,mBAAa,GAAG;AAAA,EACvD;AACA,SAAO,GAAG,MAAM,WAAW;AAC7B;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,sBAAsB,CAAC,UAAuB;AAA3D;AACE,MAAI,QAAQ;AACZ,OAAI,WAAM,SAAN,mBAAa,IAAI;AACnB,YAAQ,IAAG,WAAM,SAAN,mBAAa,GAAG,KAAK,MAAK,WAAM,SAAN,mBAAa,GAAG,OAAO;AAAA,EAC9D;AACA,SAAO,GAAG,MAAM,OAAO,IAAI,KAAK;AAClC;",
6
6
  "names": []
7
7
  }
@@ -52,8 +52,12 @@ const doRetry = ({ silent = false } = {}) => {
52
52
  return fn;
53
53
  };
54
54
  const fetchDefaults = {
55
+ // The timeout to apply to requests that do not supply a timeout option
55
56
  timeout: applyTimeout(60),
57
+ // Retry policy for all fetch requests
56
58
  retry: retryPolicy,
59
+ // Do retry function to examine failures and apply custom retry logic
60
+ // return true to retry the fetch call
57
61
  doRetry: doRetry()
58
62
  };
59
63
  const enhancedFetch = (0, import_enterprise_fetch.fetchWithDefaults)(fetchDefaults);
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/util/fetch.ts"],
4
4
  "sourcesContent": ["import { DoRetry, FetchInit, fetchWithDefaults } from 'enterprise-fetch';\nimport { Logger } from './logger';\n\nconst retryPolicy = {\n retries: 2,\n minTimeout: 400,\n factor: 2,\n};\n\nconst applyTimeout = (s: number) =>\n process.env.NODE_ENV === 'test' ? 2 * 1000 : s * 1000;\n\nexport const doRetry = ({ silent = false } = {}) => {\n const fn: DoRetry = async (\n attempt: number,\n res: Response | AppError,\n { url, options } = { url: '', options: {} }\n ) => {\n // Get the retry policy from options or fetchDefaults\n const { retry = retryPolicy } = options || ({} as any);\n let shouldRetry = false;\n\n // Retry request on any network error, or 4xx or 5xx status codes\n if (\n !res.status ||\n (res.status >= 400 && ![400, 404, 409, 422, 500].includes(res.status))\n )\n if (\n !('message' in res) ||\n ('message' in res &&\n !(res.message as string).includes('Nock: No match'))\n )\n shouldRetry = true;\n\n if (attempt <= retry.retries) {\n // If a res has a status it is a HTTP error\n // With no status it could be a fetch error or app error\n const errorMessage = !res.status\n ? `${('name' in res && res.name) || ('type' in res && res.type)}: ${\n 'message' in res && res.message\n }`\n : `${res.status}: ${res.statusText}`;\n\n if (!silent)\n Logger.warning(\n `[fetch] ${\n shouldRetry\n ? `attempt ${attempt}/${retry.retries}`\n : 'non-retriable'\n } ${errorMessage} ${url || ''}`\n );\n } else {\n shouldRetry = false;\n }\n return await Promise.resolve(shouldRetry);\n };\n return fn;\n};\n\nconst fetchDefaults = {\n // The timeout to apply to requests that do not supply a timeout option\n timeout: applyTimeout(60),\n // Retry policy for all fetch requests\n retry: retryPolicy,\n // Do retry function to examine failures and apply custom retry logic\n // return true to retry the fetch call\n doRetry: doRetry(),\n} as FetchInit;\n\nexport const enhancedFetch = fetchWithDefaults(fetchDefaults);\n// export const assetFetch = fetchWithDefaults({\n// ...fetchDefaults,\n// timeout: applyTimeout(1200),\n// });\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAsD;AACtD,oBAAuB;AAEvB,MAAM,cAAc;AAAA,EAClB,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,QAAQ;AACV;AAEA,MAAM,eAAe,CAAC,MACpB,QAAQ,IAAI,aAAa,SAAS,IAAI,MAAO,IAAI;AAE5C,MAAM,UAAU,CAAC,EAAE,SAAS,MAAM,IAAI,CAAC,MAAM;AAClD,QAAM,KAAc,OAClB,SACA,KACA,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,SAAS,CAAC,EAAE,MACvC;AAEH,UAAM,EAAE,QAAQ,YAAY,IAAI,WAAY,CAAC;AAC7C,QAAI,cAAc;AAGlB,QACE,CAAC,IAAI,UACJ,IAAI,UAAU,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,SAAS,IAAI,MAAM;AAEpE,UACE,EAAE,aAAa,QACd,aAAa,OACZ,CAAE,IAAI,QAAmB,SAAS,gBAAgB;AAEpD,sBAAc;AAAA;AAElB,QAAI,WAAW,MAAM,SAAS;AAG5B,YAAM,eAAe,CAAC,IAAI,SACtB,GAAI,UAAU,OAAO,IAAI,QAAU,UAAU,OAAO,IAAI,SACtD,aAAa,OAAO,IAAI,YAE1B,GAAG,IAAI,WAAW,IAAI;AAE1B,UAAI,CAAC;AACH,6BAAO;AAAA,UACL,WACE,cACI,WAAW,WAAW,MAAM,YAC5B,mBACF,gBAAgB,OAAO;AAAA,QAC7B;AAAA,IACJ,OAAO;AACL,oBAAc;AAAA,IAChB;AACA,WAAO,MAAM,QAAQ,QAAQ,WAAW;AAAA,EAC1C;AACA,SAAO;AACT;AAEA,MAAM,gBAAgB;AAAA,EAEpB,SAAS,aAAa,EAAE;AAAA,EAExB,OAAO;AAAA,EAGP,SAAS,QAAQ;AACnB;AAEO,MAAM,oBAAgB,2CAAkB,aAAa;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAsD;AACtD,oBAAuB;AAEvB,MAAM,cAAc;AAAA,EAClB,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,QAAQ;AACV;AAEA,MAAM,eAAe,CAAC,MACpB,QAAQ,IAAI,aAAa,SAAS,IAAI,MAAO,IAAI;AAE5C,MAAM,UAAU,CAAC,EAAE,SAAS,MAAM,IAAI,CAAC,MAAM;AAClD,QAAM,KAAc,OAClB,SACA,KACA,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,SAAS,CAAC,EAAE,MACvC;AAEH,UAAM,EAAE,QAAQ,YAAY,IAAI,WAAY,CAAC;AAC7C,QAAI,cAAc;AAGlB,QACE,CAAC,IAAI,UACJ,IAAI,UAAU,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,SAAS,IAAI,MAAM;AAEpE,UACE,EAAE,aAAa,QACd,aAAa,OACZ,CAAE,IAAI,QAAmB,SAAS,gBAAgB;AAEpD,sBAAc;AAAA;AAElB,QAAI,WAAW,MAAM,SAAS;AAG5B,YAAM,eAAe,CAAC,IAAI,SACtB,GAAI,UAAU,OAAO,IAAI,QAAU,UAAU,OAAO,IAAI,IAAK,KAC3D,aAAa,OAAO,IAAI,OAC1B,KACA,GAAG,IAAI,MAAM,KAAK,IAAI,UAAU;AAEpC,UAAI,CAAC;AACH,6BAAO;AAAA,UACL,WACE,cACI,WAAW,OAAO,IAAI,MAAM,OAAO,KACnC,eACN,IAAI,YAAY,IAAI,OAAO,EAAE;AAAA,QAC/B;AAAA,IACJ,OAAO;AACL,oBAAc;AAAA,IAChB;AACA,WAAO,MAAM,QAAQ,QAAQ,WAAW;AAAA,EAC1C;AACA,SAAO;AACT;AAEA,MAAM,gBAAgB;AAAA;AAAA,EAEpB,SAAS,aAAa,EAAE;AAAA;AAAA,EAExB,OAAO;AAAA;AAAA;AAAA,EAGP,SAAS,QAAQ;AACnB;AAEO,MAAM,oBAAgB,2CAAkB,aAAa;",
6
6
  "names": []
7
7
  }
package/dist/util/git.js CHANGED
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -58,8 +62,7 @@ class GitHelper {
58
62
  get originUrl() {
59
63
  var _a, _b, _c;
60
64
  const originUrl = (_c = (_b = (_a = this == null ? void 0 : this.config) == null ? void 0 : _a.remote) == null ? void 0 : _b.origin) == null ? void 0 : _c.url;
61
- if (originUrl)
62
- return originUrl;
65
+ if (originUrl) return originUrl;
63
66
  }
64
67
  get secretsUri() {
65
68
  return `${this.type === "github" ? `${this.home}/settings/secrets/actions` : `${this.home}/-/settings/ci_cd`}`;
@@ -81,10 +84,8 @@ class GitHelper {
81
84
  gitInfo = (url = this.originUrl) => import_hosted_git_info.default.fromUrl(url);
82
85
  hostType = (url = this.originUrl) => {
83
86
  if (url) {
84
- if (url.includes("github.com"))
85
- return "github";
86
- else
87
- return "gitlab";
87
+ if (url.includes("github.com")) return "github";
88
+ else return "gitlab";
88
89
  }
89
90
  };
90
91
  gitConfig = (cwd = this.gitRepoPath) => {
@@ -93,8 +94,7 @@ class GitHelper {
93
94
  path: ".git/config",
94
95
  expandKeys: true
95
96
  });
96
- if (Object.keys(config || {}).length)
97
- return config;
97
+ if (Object.keys(config || {}).length) return config;
98
98
  const pathParts = (0, import_os.linuxSlash)(cwd).split("/");
99
99
  for (let i = 1; i <= pathParts.length; i++) {
100
100
  const relPath = `${Array(i).fill("..").join("/")}/.git/config`;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/util/git.ts"],
4
4
  "sourcesContent": ["import giturl from 'giturl';\nimport hostedGitInfo from 'hosted-git-info';\nimport parseGitConfig from 'parse-git-config';\nimport path from 'path';\n\nimport { linuxSlash } from './os';\nimport { readFile, readFiles } from '~/providers/file-provider';\nimport { Logger } from './logger';\n\nconst GITLAB_CI_FILENAME = '.gitlab-ci.yml';\n\ntype GitConfig = parseGitConfig.Config;\n\nexport type GitTypes = hostedGitInfo.Hosts;\n\nexport class GitHelper {\n private gitRepoPath: string;\n private ciFile?: string;\n\n config = {} as GitConfig;\n info: hostedGitInfo | undefined;\n home: string | undefined;\n\n set ciFileName(fileName: string) {\n this.ciFile = fileName;\n }\n\n get ciFileName() {\n return (\n this.ciFile ||\n (this.workflows\n ? this.type === 'github'\n ? this.workflows.length > 1\n ? '[multiple workflows]'\n : this.workflows?.[0]\n : GITLAB_CI_FILENAME\n : '[unknown]')\n );\n }\n get ciFilePath() {\n return `${this.gitRepoPath}/${this.ciFileName}`;\n }\n get name() {\n return (\n this.info?.project || this.home?.split('/').pop() || '[set arg --name]'\n );\n }\n get originUrl() {\n const originUrl = this?.config?.remote?.origin?.url;\n if (originUrl) return originUrl;\n }\n get secretsUri() {\n return `${\n this.type === 'github'\n ? `${this.home}/settings/secrets/actions`\n : `${this.home}/-/settings/ci_cd`\n }`;\n }\n get type() {\n return this.info?.type || this.hostType();\n }\n get workflows() {\n return this.type === 'github'\n ? this.githubWorkflows()\n : this.gitlabWorkflow();\n }\n constructor(gitRepoPath: string = process.cwd()) {\n this.gitRepoPath = gitRepoPath;\n this.config = this.gitConfig();\n this.home = giturl.parse(this.originUrl);\n this.info = this.gitInfo();\n // console.log(this.config);\n // console.log(this.home);\n // console.log(this.info);\n }\n gitcwd = () => path.join(this.gitRepoPath);\n gitInfo = (url: string = this.originUrl) => hostedGitInfo.fromUrl(url);\n hostType = (url: string = this.originUrl): GitTypes | undefined => {\n if (url) {\n if (url.includes('github.com')) return 'github';\n else return 'gitlab';\n }\n\n // if (url.includes('gitlab.com')) return 'gl';\n // if (url.includes('gitlab.zengenti.com')) return 'gl';\n };\n gitConfig = (cwd = this.gitRepoPath) => {\n // Find .git/config in project cwd\n const config = parseGitConfig.sync({\n cwd,\n path: '.git/config',\n expandKeys: true,\n });\n // console.log(cwd, config);\n if (Object.keys(config || {}).length) return config;\n\n // Recursively check the directory heirarchy for existance of a .git/config\n const pathParts = linuxSlash(cwd).split('/');\n for (let i = 1; i <= pathParts.length; i++) {\n const relPath = `${Array(i).fill('..').join('/')}/.git/config`;\n // Does not appear to work when using a shortened cwd, using relative path instead\n const config = parseGitConfig.sync({\n path: relPath,\n expandKeys: true,\n });\n // console.log(relPath, config);\n if (Object.keys(config || {}).length) {\n this.gitRepoPath = path.join(\n this.gitRepoPath,\n Array(i).fill('..').join('/')\n );\n return config;\n }\n }\n return config;\n };\n githubWorkflows = () => {\n const workflowPath = path.join(this.gitcwd(), '.github/workflows');\n const workflowFiles = readFiles(workflowPath, false);\n const addFolderSuffix = (files: string[]) =>\n files.map(f => `.github/workflows/${f}`);\n\n if (workflowFiles.some(f => f.includes('build'))) {\n return addFolderSuffix(workflowFiles.filter(f => f.includes('build')));\n } else {\n return addFolderSuffix(workflowFiles);\n }\n };\n gitlabWorkflow = (ciFileName = GITLAB_CI_FILENAME) => {\n const workflowPath = this.gitcwd();\n const workflowFilePath = path.join(workflowPath, ciFileName);\n const workflowFile = readFile(workflowFilePath);\n // console.log(ciFileName, workflowFile);\n\n return workflowFile;\n };\n checkIsRepo = () => {\n if (\n this.config &&\n this.config.core &&\n this.config.core.repositoryformatversion\n ) {\n Logger.success('You are inside a Git repository.');\n return true;\n } else {\n Logger.error('You are not inside a Git repository.');\n return false;\n }\n };\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["giturl", "path", "hostedGitInfo", "parseGitConfig", "config"]
7
7
  }
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/util/gitignore.ts"],
4
4
  "sourcesContent": ["import fs from 'fs';\nimport { Logger } from './logger';\n\nexport const mergeContentsToAddWithGitignore = (\n filename: string,\n contentsToAdd: string[]\n) => {\n // Check if .gitignore file already exists\n if (fs.existsSync(filename)) {\n // Read the existing .gitignore file\n const existingContent = fs.readFileSync(filename, 'utf-8');\n\n // Create a Set from existing patterns for fast look-up\n const existingContentSet = new Set(\n existingContent.split('\\n').filter(line => line.trim() !== '')\n );\n\n // Filter out patterns that already exist\n const newContents = contentsToAdd.filter(\n contentsItem => !existingContentSet.has(contentsItem)\n );\n\n if (newContents.length >= 1) {\n // Append the new patterns to the end of the existing .gitignore content\n fs.appendFileSync(filename, '\\n' + newContents.join('\\n'));\n Logger.success('.gitignore file updated');\n } else {\n Logger.success('.gitignore checked, nothing to update');\n }\n } else {\n // If .gitignore doesn't exist, create one and add the contents\n const gitignoreContent = contentsToAdd.join('\\n');\n fs.writeFileSync(filename, gitignoreContent);\n\n Logger.success('.gitignore file created and updated');\n }\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAe;AACf,oBAAuB;AAEhB,MAAM,kCAAkC,CAC7C,UACA,kBACG;AAEH,MAAI,UAAAA,QAAG,WAAW,QAAQ,GAAG;AAE3B,UAAM,kBAAkB,UAAAA,QAAG,aAAa,UAAU,OAAO;AAGzD,UAAM,qBAAqB,IAAI;AAAA,MAC7B,gBAAgB,MAAM,IAAI,EAAE,OAAO,UAAQ,KAAK,KAAK,MAAM,EAAE;AAAA,IAC/D;AAGA,UAAM,cAAc,cAAc;AAAA,MAChC,kBAAgB,CAAC,mBAAmB,IAAI,YAAY;AAAA,IACtD;AAEA,QAAI,YAAY,UAAU,GAAG;AAE3B,gBAAAA,QAAG,eAAe,UAAU,OAAO,YAAY,KAAK,IAAI,CAAC;AACzD,2BAAO,QAAQ,yBAAyB;AAAA,IAC1C,OAAO;AACL,2BAAO,QAAQ,uCAAuC;AAAA,IACxD;AAAA,EACF,OAAO;AAEL,UAAM,mBAAmB,cAAc,KAAK,IAAI;AAChD,cAAAA,QAAG,cAAc,UAAU,gBAAgB;AAE3C,yBAAO,QAAQ,qCAAqC;AAAA,EACtD;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAe;AACf,oBAAuB;AAEhB,MAAM,kCAAkC,CAC7C,UACA,kBACG;AAEH,MAAI,UAAAA,QAAG,WAAW,QAAQ,GAAG;AAE3B,UAAM,kBAAkB,UAAAA,QAAG,aAAa,UAAU,OAAO;AAGzD,UAAM,qBAAqB,IAAI;AAAA,MAC7B,gBAAgB,MAAM,IAAI,EAAE,OAAO,UAAQ,KAAK,KAAK,MAAM,EAAE;AAAA,IAC/D;AAGA,UAAM,cAAc,cAAc;AAAA,MAChC,kBAAgB,CAAC,mBAAmB,IAAI,YAAY;AAAA,IACtD;AAEA,QAAI,YAAY,UAAU,GAAG;AAE3B,gBAAAA,QAAG,eAAe,UAAU,OAAO,YAAY,KAAK,IAAI,CAAC;AACzD,2BAAO,QAAQ,yBAAyB;AAAA,IAC1C,OAAO;AACL,2BAAO,QAAQ,uCAAuC;AAAA,IACxD;AAAA,EACF,OAAO;AAEL,UAAM,mBAAmB,cAAc,KAAK,IAAI;AAChD,cAAAA,QAAG,cAAc,UAAU,gBAAgB;AAE3C,yBAAO,QAAQ,qCAAqC;AAAA,EACtD;AACF;",
6
6
  "names": ["fs"]
7
7
  }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var html_formatter_exports = {};
20
+ __export(html_formatter_exports, {
21
+ htmlFormatter: () => htmlFormatter
22
+ });
23
+ module.exports = __toCommonJS(html_formatter_exports);
24
+ var import_json = require("./json.formatter");
25
+ const htmlFormatter = (entries, isDoc = true) => {
26
+ const flatEntries = [];
27
+ if (Array.isArray(entries))
28
+ for (const entry of entries) {
29
+ flatEntries.push((0, import_json.flattenObject)(entry));
30
+ }
31
+ else flatEntries.push((0, import_json.flattenObject)(entries));
32
+ const columns = new Set(flatEntries.map((e) => Object.keys(e)).flat());
33
+ let table = `<table id="contensis-cli-table"><thead><tr>`;
34
+ for (const column of columns) {
35
+ table += `<td>${column}</td>`;
36
+ }
37
+ table += `</tr></thead><tbody>`;
38
+ for (const row of flatEntries) {
39
+ table += `<tr>`;
40
+ for (const column of columns) {
41
+ const val = row[column];
42
+ table += `<td>${typeof val === "undefined" ? "" : val}</td>`;
43
+ }
44
+ table += `</tr>`;
45
+ }
46
+ table += `</tbody></table>`;
47
+ if (isDoc)
48
+ table = `<html><head>${headTag()}</head><body>${table}${scriptTag()}</body></html>`;
49
+ return table;
50
+ };
51
+ const headTag = () => {
52
+ return `<link rel="stylesheet" href="https://cdn.datatables.net/2.1.8/css/dataTables.dataTables.css" />
53
+ <script
54
+ src="https://code.jquery.com/jquery-3.7.1.slim.min.js"
55
+ integrity="sha256-kmHvs0B+OpCW5GVHUNjv9rOmY0IvSIRcf7zGUDTDQM8="
56
+ crossorigin="anonymous"></script>
57
+ <script src="https://cdn.datatables.net/2.1.8/js/dataTables.js"></script>`;
58
+ };
59
+ const scriptTag = () => {
60
+ return `<script>
61
+ let table = new DataTable('#contensis-cli-table', {
62
+ pageLength: 50
63
+ });
64
+ </script>`;
65
+ };
66
+ // Annotate the CommonJS export names for ESM import in node:
67
+ 0 && (module.exports = {
68
+ htmlFormatter
69
+ });
70
+ //# sourceMappingURL=html.formatter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/util/html.formatter.ts"],
4
+ "sourcesContent": ["import { flattenObject } from './json.formatter';\n\nexport const htmlFormatter = <T>(entries: T | T[], isDoc = true) => {\n // Flatten the passed in object\n const flatEntries = [] as any[];\n if (Array.isArray(entries))\n for (const entry of entries) {\n flatEntries.push(flattenObject(entry));\n }\n else flatEntries.push(flattenObject(entries));\n\n // Parse the flattened object to csv\n // const csv = stringify(flatEntries, { header: true });\n // Create an exhaustive list of columns from the entries array\n const columns = new Set<string>(flatEntries.map(e => Object.keys(e)).flat());\n\n let table = `<table id=\"contensis-cli-table\"><thead><tr>`;\n for (const column of columns) {\n table += `<td>${column}</td>`;\n }\n table += `</tr></thead><tbody>`;\n for (const row of flatEntries) {\n table += `<tr>`;\n for (const column of columns) {\n const val = row[column];\n table += `<td>${typeof val === 'undefined' ? '' : val}</td>`;\n }\n table += `</tr>`;\n }\n table += `</tbody></table>`;\n\n if (isDoc)\n table = `<html><head>${headTag()}</head><body>${table}${scriptTag()}</body></html>`;\n return table;\n};\n\nconst headTag = () => {\n return `<link rel=\"stylesheet\" href=\"https://cdn.datatables.net/2.1.8/css/dataTables.dataTables.css\" />\n<script\n src=\"https://code.jquery.com/jquery-3.7.1.slim.min.js\"\n integrity=\"sha256-kmHvs0B+OpCW5GVHUNjv9rOmY0IvSIRcf7zGUDTDQM8=\"\n crossorigin=\"anonymous\"></script>\n<script src=\"https://cdn.datatables.net/2.1.8/js/dataTables.js\"></script>`;\n};\n\nconst scriptTag = () => {\n return `<script>\nlet table = new DataTable('#contensis-cli-table', {\n pageLength: 50\n});\n</script>`;\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA8B;AAEvB,MAAM,gBAAgB,CAAI,SAAkB,QAAQ,SAAS;AAElE,QAAM,cAAc,CAAC;AACrB,MAAI,MAAM,QAAQ,OAAO;AACvB,eAAW,SAAS,SAAS;AAC3B,kBAAY,SAAK,2BAAc,KAAK,CAAC;AAAA,IACvC;AAAA,MACG,aAAY,SAAK,2BAAc,OAAO,CAAC;AAK5C,QAAM,UAAU,IAAI,IAAY,YAAY,IAAI,OAAK,OAAO,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AAE3E,MAAI,QAAQ;AACZ,aAAW,UAAU,SAAS;AAC5B,aAAS,OAAO,MAAM;AAAA,EACxB;AACA,WAAS;AACT,aAAW,OAAO,aAAa;AAC7B,aAAS;AACT,eAAW,UAAU,SAAS;AAC5B,YAAM,MAAM,IAAI,MAAM;AACtB,eAAS,OAAO,OAAO,QAAQ,cAAc,KAAK,GAAG;AAAA,IACvD;AACA,aAAS;AAAA,EACX;AACA,WAAS;AAET,MAAI;AACF,YAAQ,eAAe,QAAQ,CAAC,gBAAgB,KAAK,GAAG,UAAU,CAAC;AACrE,SAAO;AACT;AAEA,MAAM,UAAU,MAAM;AACpB,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAMT;AAEA,MAAM,YAAY,MAAM;AACtB,SAAO;AAAA;AAAA;AAAA;AAAA;AAKT;",
6
+ "names": []
7
+ }
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -73,7 +77,7 @@ const url = (alias, project) => {
73
77
  };
74
78
  const Logging = async (language = "en-GB") => {
75
79
  const defaultMessages = import_en_GB.LogMessages;
76
- let localisedMessages = defaultMessages;
80
+ const localisedMessages = defaultMessages;
77
81
  if (language === "en-GB") {
78
82
  }
79
83
  return {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/util/index.ts"],
4
- "sourcesContent": ["import mergeWith from 'lodash/mergeWith';\nimport { Logger } from './logger';\nimport { LogMessages as enGB } from '../localisation/en-GB.js';\n\nexport const isSharedSecret = (str = '') =>\n str.length > 80 && str.split('-').length === 3 ? str : undefined;\n\nexport const isPassword = (str = '') =>\n !isSharedSecret(str) ? str : undefined;\n\nexport const tryParse = (str: any) => {\n try {\n return typeof str === 'object' ? str : JSON.parse(str);\n } catch (e) {\n return false;\n }\n};\n\nexport const isJson = (str?: string) =>\n typeof str === 'object' || !!tryParse(str);\n\nexport const tryStringify = (obj: any) => {\n try {\n return typeof obj === 'object' ? JSON.stringify(obj) : obj;\n } catch (e) {\n return obj;\n }\n};\n\nexport const isSysError = (error: any): error is Error =>\n error?.message !== undefined && error.stack;\n\nexport const isUuid = (str: string) => {\n // Regular expression to check if string is a valid UUID\n const regexExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/gi;\n\n return regexExp.test(str);\n};\n\nexport const url = (alias: string, project: string) => {\n const projectAndAlias =\n project && project.toLowerCase() !== 'website'\n ? `${project.toLowerCase()}-${alias}`\n : alias;\n return {\n api: `https://api-${alias}.cloud.contensis.com`,\n cms: `https://cms-${alias}.cloud.contensis.com`,\n liveWeb: `https://live-${projectAndAlias}.cloud.contensis.com`,\n previewWeb: `https://preview-${projectAndAlias}.cloud.contensis.com`,\n iisWeb: `https://iis-live-${projectAndAlias}.cloud.contensis.com`,\n iisPreviewWeb: `https://iis-preview-${projectAndAlias}.cloud.contensis.com`,\n };\n};\n\nexport const Logging = async (language = 'en-GB') => {\n const defaultMessages = enGB;\n // const { LogMessages: defaultMessages } = await import(\n // `../localisation/en-GB.js`\n // );\n let localisedMessages = defaultMessages;\n\n if (language === 'en-GB') {\n // Using a variable import e.g. `import(`../localisation/${language}.js`);`\n // does not play well with packaged executables\n // So we have to hard code the import for each language individually\n }\n return {\n messages: mergeWith(\n localisedMessages,\n defaultMessages,\n (v, s) => v || s\n ) as typeof defaultMessages,\n Log: Logger,\n };\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAsB;AACtB,oBAAuB;AACvB,mBAAoC;AAE7B,MAAM,iBAAiB,CAAC,MAAM,OACnC,IAAI,SAAS,MAAM,IAAI,MAAM,GAAG,EAAE,WAAW,IAAI,MAAM;AAElD,MAAM,aAAa,CAAC,MAAM,OAC/B,CAAC,eAAe,GAAG,IAAI,MAAM;AAExB,MAAM,WAAW,CAAC,QAAa;AACpC,MAAI;AACF,WAAO,OAAO,QAAQ,WAAW,MAAM,KAAK,MAAM,GAAG;AAAA,EACvD,SAAS,GAAP;AACA,WAAO;AAAA,EACT;AACF;AAEO,MAAM,SAAS,CAAC,QACrB,OAAO,QAAQ,YAAY,CAAC,CAAC,SAAS,GAAG;AAEpC,MAAM,eAAe,CAAC,QAAa;AACxC,MAAI;AACF,WAAO,OAAO,QAAQ,WAAW,KAAK,UAAU,GAAG,IAAI;AAAA,EACzD,SAAS,GAAP;AACA,WAAO;AAAA,EACT;AACF;AAEO,MAAM,aAAa,CAAC,WACzB,+BAAO,aAAY,UAAa,MAAM;AAEjC,MAAM,SAAS,CAAC,QAAgB;AAErC,QAAM,WACJ;AAEF,SAAO,SAAS,KAAK,GAAG;AAC1B;AAEO,MAAM,MAAM,CAAC,OAAe,YAAoB;AACrD,QAAM,kBACJ,WAAW,QAAQ,YAAY,MAAM,YACjC,GAAG,QAAQ,YAAY,KAAK,UAC5B;AACN,SAAO;AAAA,IACL,KAAK,eAAe;AAAA,IACpB,KAAK,eAAe;AAAA,IACpB,SAAS,gBAAgB;AAAA,IACzB,YAAY,mBAAmB;AAAA,IAC/B,QAAQ,oBAAoB;AAAA,IAC5B,eAAe,uBAAuB;AAAA,EACxC;AACF;AAEO,MAAM,UAAU,OAAO,WAAW,YAAY;AACnD,QAAM,kBAAkB,aAAAA;AAIxB,MAAI,oBAAoB;AAExB,MAAI,aAAa,SAAS;AAAA,EAI1B;AACA,SAAO;AAAA,IACL,cAAU,iBAAAC;AAAA,MACR;AAAA,MACA;AAAA,MACA,CAAC,GAAG,MAAM,KAAK;AAAA,IACjB;AAAA,IACA,KAAK;AAAA,EACP;AACF;",
4
+ "sourcesContent": ["import mergeWith from 'lodash/mergeWith';\nimport { Logger } from './logger';\nimport { LogMessages as enGB } from '../localisation/en-GB.js';\n\nexport const isSharedSecret = (str = '') =>\n str.length > 80 && str.split('-').length === 3 ? str : undefined;\n\nexport const isPassword = (str = '') =>\n !isSharedSecret(str) ? str : undefined;\n\nexport const tryParse = (str: any) => {\n try {\n return typeof str === 'object' ? str : JSON.parse(str);\n } catch (e) {\n return false;\n }\n};\n\nexport const isJson = (str?: string) =>\n typeof str === 'object' || !!tryParse(str);\n\nexport const tryStringify = (obj: any) => {\n try {\n return typeof obj === 'object' ? JSON.stringify(obj) : obj;\n } catch (e) {\n return obj;\n }\n};\n\nexport const isSysError = (error: any): error is Error =>\n error?.message !== undefined && error.stack;\n\nexport const isUuid = (str: string) => {\n // Regular expression to check if string is a valid UUID\n const regexExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/gi;\n\n return regexExp.test(str);\n};\n\nexport const url = (alias: string, project: string) => {\n const projectAndAlias =\n project && project.toLowerCase() !== 'website'\n ? `${project.toLowerCase()}-${alias}`\n : alias;\n return {\n api: `https://api-${alias}.cloud.contensis.com`,\n cms: `https://cms-${alias}.cloud.contensis.com`,\n liveWeb: `https://live-${projectAndAlias}.cloud.contensis.com`,\n previewWeb: `https://preview-${projectAndAlias}.cloud.contensis.com`,\n iisWeb: `https://iis-live-${projectAndAlias}.cloud.contensis.com`,\n iisPreviewWeb: `https://iis-preview-${projectAndAlias}.cloud.contensis.com`,\n };\n};\n\nexport const Logging = async (language = 'en-GB') => {\n const defaultMessages = enGB;\n // const { LogMessages: defaultMessages } = await import(\n // `../localisation/en-GB.js`\n // );\n const localisedMessages = defaultMessages;\n\n if (language === 'en-GB') {\n // Using a variable import e.g. `import(`../localisation/${language}.js`);`\n // does not play well with packaged executables\n // So we have to hard code the import for each language individually\n }\n return {\n messages: mergeWith(\n localisedMessages,\n defaultMessages,\n (v, s) => v || s\n ) as typeof defaultMessages,\n Log: Logger,\n };\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAsB;AACtB,oBAAuB;AACvB,mBAAoC;AAE7B,MAAM,iBAAiB,CAAC,MAAM,OACnC,IAAI,SAAS,MAAM,IAAI,MAAM,GAAG,EAAE,WAAW,IAAI,MAAM;AAElD,MAAM,aAAa,CAAC,MAAM,OAC/B,CAAC,eAAe,GAAG,IAAI,MAAM;AAExB,MAAM,WAAW,CAAC,QAAa;AACpC,MAAI;AACF,WAAO,OAAO,QAAQ,WAAW,MAAM,KAAK,MAAM,GAAG;AAAA,EACvD,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEO,MAAM,SAAS,CAAC,QACrB,OAAO,QAAQ,YAAY,CAAC,CAAC,SAAS,GAAG;AAEpC,MAAM,eAAe,CAAC,QAAa;AACxC,MAAI;AACF,WAAO,OAAO,QAAQ,WAAW,KAAK,UAAU,GAAG,IAAI;AAAA,EACzD,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEO,MAAM,aAAa,CAAC,WACzB,+BAAO,aAAY,UAAa,MAAM;AAEjC,MAAM,SAAS,CAAC,QAAgB;AAErC,QAAM,WACJ;AAEF,SAAO,SAAS,KAAK,GAAG;AAC1B;AAEO,MAAM,MAAM,CAAC,OAAe,YAAoB;AACrD,QAAM,kBACJ,WAAW,QAAQ,YAAY,MAAM,YACjC,GAAG,QAAQ,YAAY,CAAC,IAAI,KAAK,KACjC;AACN,SAAO;AAAA,IACL,KAAK,eAAe,KAAK;AAAA,IACzB,KAAK,eAAe,KAAK;AAAA,IACzB,SAAS,gBAAgB,eAAe;AAAA,IACxC,YAAY,mBAAmB,eAAe;AAAA,IAC9C,QAAQ,oBAAoB,eAAe;AAAA,IAC3C,eAAe,uBAAuB,eAAe;AAAA,EACvD;AACF;AAEO,MAAM,UAAU,OAAO,WAAW,YAAY;AACnD,QAAM,kBAAkB,aAAAA;AAIxB,QAAM,oBAAoB;AAE1B,MAAI,aAAa,SAAS;AAAA,EAI1B;AACA,SAAO;AAAA,IACL,cAAU,iBAAAC;AAAA,MACR;AAAA,MACA;AAAA,MACA,CAAC,GAAG,MAAM,KAAK;AAAA,IACjB;AAAA,IACA,KAAK;AAAA,EACP;AACF;",
6
6
  "names": ["enGB", "mergeWith"]
7
7
  }