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.
- package/README.md +78 -6
- package/dist/commands/copy.js +2 -2
- package/dist/commands/copy.js.map +2 -2
- package/dist/commands/create.js +1 -2
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/globalOptions.js +16 -4
- package/dist/commands/globalOptions.js.map +2 -2
- package/dist/commands/import.js +1 -1
- package/dist/commands/import.js.map +2 -2
- package/dist/commands/index.js +4 -2
- package/dist/commands/index.js.map +2 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.js +1 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/push.js +102 -10
- package/dist/commands/push.js.map +3 -3
- package/dist/commands/remove.js +15 -4
- package/dist/commands/remove.js.map +2 -2
- package/dist/commands/set.js +2 -4
- package/dist/commands/set.js.map +1 -1
- package/dist/commands/update.js +70 -0
- package/dist/commands/update.js.map +7 -0
- package/dist/factories/RequestHandlerFactory.js +12 -5
- package/dist/factories/RequestHandlerFactory.js.map +2 -2
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/localisation/en-GB.js +19 -2
- package/dist/localisation/en-GB.js.map +2 -2
- package/dist/mappers/ContensisCliService-to-RequestHanderSiteConfigYaml.js.map +1 -1
- package/dist/mappers/DevInit-to-CIWorkflow.js +11 -6
- package/dist/mappers/DevInit-to-CIWorkflow.js.map +1 -1
- package/dist/mappers/DevRequests-to-RequestHanderCliArgs.js +4 -2
- package/dist/mappers/DevRequests-to-RequestHanderCliArgs.js.map +1 -1
- package/dist/models/CliService.d.js.map +1 -1
- package/dist/providers/CredentialProvider.js +11 -4
- package/dist/providers/CredentialProvider.js.map +2 -2
- package/dist/providers/GitHubCliModuleProvider.js +8 -10
- package/dist/providers/GitHubCliModuleProvider.js.map +1 -1
- package/dist/providers/HttpProvider.js +5 -4
- package/dist/providers/HttpProvider.js.map +1 -1
- package/dist/providers/ManifestProvider.js +1 -4
- package/dist/providers/ManifestProvider.js.map +1 -1
- package/dist/providers/SessionCacheProvider.js +26 -8
- package/dist/providers/SessionCacheProvider.js.map +2 -2
- package/dist/providers/file-provider.js +13 -11
- package/dist/providers/file-provider.js.map +1 -1
- package/dist/services/ContensisAuthService.js +1 -2
- package/dist/services/ContensisAuthService.js.map +1 -1
- package/dist/services/ContensisCliService.js +194 -127
- package/dist/services/ContensisCliService.js.map +3 -3
- package/dist/services/ContensisDevService.js +15 -18
- package/dist/services/ContensisDevService.js.map +2 -2
- package/dist/services/ContensisRoleService.js +8 -10
- package/dist/services/ContensisRoleService.js.map +1 -1
- package/dist/shell.js +31 -15
- package/dist/shell.js.map +2 -2
- package/dist/util/api-ids.js.map +1 -1
- package/dist/util/console.printer.js +15 -17
- package/dist/util/console.printer.js.map +2 -2
- package/dist/util/csv.formatter.js +8 -15
- package/dist/util/csv.formatter.js.map +2 -2
- package/dist/util/diff.js +6 -4
- package/dist/util/diff.js.map +1 -1
- package/dist/util/dotenv.js +1 -2
- package/dist/util/dotenv.js.map +1 -1
- package/dist/util/error.js.map +1 -1
- package/dist/util/fetch.js +4 -0
- package/dist/util/fetch.js.map +1 -1
- package/dist/util/git.js +8 -8
- package/dist/util/git.js.map +1 -1
- package/dist/util/gitignore.js +4 -0
- package/dist/util/gitignore.js.map +1 -1
- package/dist/util/html.formatter.js +70 -0
- package/dist/util/html.formatter.js.map +7 -0
- package/dist/util/index.js +5 -1
- package/dist/util/index.js.map +2 -2
- package/dist/util/json.formatter.js +6 -4
- package/dist/util/json.formatter.js.map +1 -1
- package/dist/util/logger.js +47 -53
- package/dist/util/logger.js.map +2 -2
- package/dist/util/os.js +4 -0
- package/dist/util/os.js.map +1 -1
- package/dist/util/xml.formatter.js +4 -0
- package/dist/util/xml.formatter.js.map +1 -1
- package/dist/util/yaml.js +1 -2
- package/dist/util/yaml.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/esbuild.config.js +12 -16
- package/package.json +31 -32
- package/src/commands/copy.ts +3 -1
- package/src/commands/globalOptions.ts +10 -3
- package/src/commands/import.ts +2 -0
- package/src/commands/index.ts +4 -0
- package/src/commands/push.ts +125 -1
- package/src/commands/remove.ts +20 -0
- package/src/commands/update.ts +84 -0
- package/src/factories/RequestHandlerFactory.ts +1 -1
- package/src/localisation/en-GB.ts +16 -1
- package/src/models/CliService.d.ts +1 -1
- package/src/providers/CredentialProvider.ts +2 -2
- package/src/providers/SessionCacheProvider.ts +26 -2
- package/src/services/ContensisCliService.ts +187 -49
- package/src/services/ContensisDevService.ts +2 -2
- package/src/shell.ts +20 -9
- package/src/util/console.printer.ts +23 -19
- package/src/util/csv.formatter.ts +1 -1
- package/src/util/html.formatter.ts +52 -0
- package/src/util/index.ts +1 -1
- package/src/util/logger.ts +17 -16
- package/src/version.ts +1 -1
- package/tsconfig.json +1 -1
|
@@ -18,6 +18,10 @@ var __copyProps = (to2, from, except, desc) => {
|
|
|
18
18
|
return to2;
|
|
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
|
));
|
|
@@ -59,8 +63,7 @@ class ContensisDev extends import_ContensisRoleService.default {
|
|
|
59
63
|
var _a, _b;
|
|
60
64
|
const git = this.git = new import_git.GitHelper(projectHome);
|
|
61
65
|
const isRepo = git.checkIsRepo();
|
|
62
|
-
if (!isRepo)
|
|
63
|
-
return;
|
|
66
|
+
if (!isRepo) return;
|
|
64
67
|
const { dryRun = false } = opts || {};
|
|
65
68
|
const { currentEnv, currentProject, log, messages } = this;
|
|
66
69
|
const contensis = await this.ConnectContensis();
|
|
@@ -69,10 +72,9 @@ class ContensisDev extends import_ContensisRoleService.default {
|
|
|
69
72
|
const pattern = /^[0-9a-z](-?[0-9a-z])*$/;
|
|
70
73
|
if (blockId2.length >= 1 && blockId2.length <= 225) {
|
|
71
74
|
return pattern.test(blockId2);
|
|
72
|
-
} else
|
|
73
|
-
return false;
|
|
75
|
+
} else return false;
|
|
74
76
|
};
|
|
75
|
-
|
|
77
|
+
const { blockId } = await import_inquirer.default.prompt({
|
|
76
78
|
name: "blockId",
|
|
77
79
|
type: "input",
|
|
78
80
|
prefix: "\u{1F9F1}",
|
|
@@ -144,6 +146,7 @@ class ContensisDev extends import_ContensisRoleService.default {
|
|
|
144
146
|
name: "loc",
|
|
145
147
|
type: "list",
|
|
146
148
|
prefix: "\u{1F511}",
|
|
149
|
+
// Where would you like to store your client id/secret?
|
|
147
150
|
message: messages.devinit.clientDetailsLocation(),
|
|
148
151
|
choices: [
|
|
149
152
|
{
|
|
@@ -168,8 +171,7 @@ class ContensisDev extends import_ContensisRoleService.default {
|
|
|
168
171
|
}
|
|
169
172
|
]);
|
|
170
173
|
log.raw("");
|
|
171
|
-
if (!confirm)
|
|
172
|
-
return;
|
|
174
|
+
if (!confirm) return;
|
|
173
175
|
}
|
|
174
176
|
let accessToken = void 0;
|
|
175
177
|
const spinner = (0, import_nanospinner.createSpinner)(messages.devinit.accessTokenFetch());
|
|
@@ -185,15 +187,12 @@ class ContensisDev extends import_ContensisRoleService.default {
|
|
|
185
187
|
return;
|
|
186
188
|
}
|
|
187
189
|
const checkpoint = (op) => {
|
|
188
|
-
if (errors.length)
|
|
189
|
-
|
|
190
|
-
else
|
|
191
|
-
log.debug(`${op} completed ok`);
|
|
190
|
+
if (errors.length) throw errors[0];
|
|
191
|
+
else log.debug(`${op} completed ok`);
|
|
192
192
|
return true;
|
|
193
193
|
};
|
|
194
194
|
const [getRolesErr, roles] = await (0, import_await_to_js.default)(contensis.roles.GetRoles());
|
|
195
|
-
if (!roles && getRolesErr)
|
|
196
|
-
errors.push(getRolesErr);
|
|
195
|
+
if (!roles && getRolesErr) errors.push(getRolesErr);
|
|
197
196
|
checkpoint(`fetched ${roles == null ? void 0 : roles.length} roles`);
|
|
198
197
|
if (dryRun) {
|
|
199
198
|
checkpoint(`skip api key creation (dry-run)`);
|
|
@@ -238,14 +237,13 @@ class ContensisDev extends import_ContensisRoleService.default {
|
|
|
238
237
|
}
|
|
239
238
|
const envFilePath = `${projectHome}/.env`;
|
|
240
239
|
const existingEnvFile = (0, import_file_provider.readFile)(envFilePath);
|
|
241
|
-
|
|
240
|
+
const existingEnvFileArray = (existingEnvFile || "").split("\n").filter((l) => !!l);
|
|
242
241
|
const envContentsToAdd = {
|
|
243
242
|
ALIAS: currentEnv,
|
|
244
243
|
PROJECT_API_ID: currentProject,
|
|
245
244
|
BLOCK_ID: blockId
|
|
246
245
|
};
|
|
247
|
-
if (accessToken)
|
|
248
|
-
envContentsToAdd["ACCESS_TOKEN"] = accessToken;
|
|
246
|
+
if (accessToken) envContentsToAdd["ACCESS_TOKEN"] = accessToken;
|
|
249
247
|
if (loc === "env") {
|
|
250
248
|
envContentsToAdd["CONTENSIS_CLIENT_ID"] = (existingDevKey == null ? void 0 : existingDevKey.id) || messages.devinit.dryRunKeyMessage(dryRun);
|
|
251
249
|
envContentsToAdd["CONTENSIS_CLIENT_SECRET"] = (existingDevKey == null ? void 0 : existingDevKey.sharedSecret) || messages.devinit.dryRunKeyMessage(dryRun);
|
|
@@ -281,8 +279,7 @@ ${envDiff}`);
|
|
|
281
279
|
}
|
|
282
280
|
checkpoint("skip .env file update (dry-run)");
|
|
283
281
|
} else {
|
|
284
|
-
if (envDiff)
|
|
285
|
-
log.info(`Updating .env file ${(0, import_os.winSlash)(envFilePath)}`);
|
|
282
|
+
if (envDiff) log.info(`Updating .env file ${(0, import_os.winSlash)(envFilePath)}`);
|
|
286
283
|
(0, import_file_provider.writeFile)(envFilePath, envFileLines.join("\n"));
|
|
287
284
|
checkpoint(".env file updated");
|
|
288
285
|
log.success(messages.devinit.writeEnvFile());
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/services/ContensisDevService.ts"],
|
|
4
|
-
"sourcesContent": ["import ansiEscapes from 'ansi-escapes';\nimport to from 'await-to-js';\nimport inquirer from 'inquirer';\nimport { createSpinner } from 'nanospinner';\n\nimport { Role } from 'contensis-management-api/lib/models';\nimport { MigrateRequest } from 'migratortron';\n\nimport ContensisRole from './ContensisRoleService';\nimport { createRequestHandler } from '~/factories/RequestHandlerFactory';\nimport { OutputOptionsConstructorArg } from '~/models/CliService';\nimport { EnvContentsToAdd } from '~/models/DevService';\nimport { mapCIWorkflowContent } from '~/mappers/DevInit-to-CIWorkflow';\nimport RequestHandlerArgs from '~/mappers/DevRequests-to-RequestHanderCliArgs';\nimport { deployKeyRole } from '~/mappers/DevInit-to-RolePermissions';\nimport { readFile, writeFile } from '~/providers/file-provider';\nimport { diffFileContent } from '~/util/diff';\nimport { mergeDotEnvFileContents } from '~/util/dotenv';\nimport { findByIdOrName } from '~/util/find';\nimport { GitHelper } from '~/util/git';\nimport { jsonFormatter } from '~/util/json.formatter';\nimport { winSlash } from '~/util/os';\nimport { mergeContentsToAddWithGitignore } from '~/util/gitignore';\n\nclass ContensisDev extends ContensisRole {\n git!: GitHelper;\n blockId!: string;\n\n deployCredentials = {\n clientId: '',\n clientSecret: '',\n };\n\n constructor(\n args: string[],\n outputOpts?: OutputOptionsConstructorArg,\n contensisOpts: Partial<MigrateRequest> = {}\n ) {\n super(args, outputOpts, contensisOpts);\n }\n\n DevelopmentInit = async (projectHome: string, opts: any) => {\n // Retrieve git info\n const git = (this.git = new GitHelper(projectHome));\n // Check if we are in a git repo\n const isRepo = git.checkIsRepo();\n if (!isRepo) return;\n\n const { dryRun = false } = opts || {};\n const { currentEnv, currentProject, log, messages } = this;\n const contensis = await this.ConnectContensis();\n\n if (contensis) {\n // First we need to get the block id from the user\n const validateBlockId = (blockId: string) => {\n const pattern = /^[0-9a-z](-?[0-9a-z])*$/;\n if (blockId.length >= 1 && blockId.length <= 225) {\n return pattern.test(blockId);\n } else return false;\n };\n let { blockId } = await inquirer.prompt({\n name: 'blockId',\n type: 'input',\n prefix: '\uD83E\uDDF1',\n message: messages.devinit.blockIdQuestion,\n validate: validateBlockId,\n default: git.name,\n });\n // make sure block id is lowercase\n this.blockId = blockId.toLowerCase();\n log.success(`Valid block id: ${blockId.toLowerCase()}`);\n\n // Retrieve keys list for env\n const [keysErr, apiKeys] = await contensis.apiKeys.GetKeys();\n if (keysErr) {\n log.error(messages.keys.noList(currentEnv));\n log.error(jsonFormatter(keysErr));\n return;\n }\n const apiKeyExists = (findKey: string) =>\n apiKeys?.find(\n k => k.name.trim().toLowerCase() === findKey?.trim().toLowerCase()\n );\n\n // Retrieve ci workflow info\n const workflowFiles = git.workflows;\n\n // Set variables for performing operations and logging etc.\n let ciFileName = git.ciFileName;\n\n const apiKeyName = `block-${currentProject}-${blockId}`.toLowerCase();\n\n const devKeyName = `${apiKeyName}`;\n const devKeyDescription = `Created by Contensis to allow API access from the running block`;\n let existingDevKey = apiKeyExists(devKeyName);\n\n const deployKeyName = `${apiKeyName}-ci`;\n const deployKeyDescription = `Created by the Contensis CLI for use in continuous integration`;\n\n let existingDeployKey = apiKeyExists(deployKeyName);\n\n // const blockId = git.name;\n const errors = [] as AppError[];\n\n // Start render console output\n log.raw('');\n log.success(messages.devinit.intro());\n log.raw(\n log.infoText(\n messages.devinit.projectDetails(\n git.name,\n currentEnv,\n currentProject,\n blockId,\n git\n )\n )\n );\n log.raw(\n log.infoText(\n messages.devinit.developmentKey(devKeyName, !!existingDevKey)\n )\n );\n log.raw(\n log.infoText(\n messages.devinit.deploymentKey(deployKeyName, !!existingDeployKey)\n )\n );\n log.raw('');\n\n if (Array.isArray(workflowFiles) && workflowFiles.length > 1) {\n // Choose GitHub workflow file (if multiple)\n ({ ciFileName } = await inquirer.prompt([\n {\n type: 'list',\n prefix: '\u29F0',\n message: messages.devinit.ciMultipleChoices(),\n name: 'ciFileName',\n choices: workflowFiles,\n default: workflowFiles.find(f => f.includes('docker')),\n },\n ]));\n log.raw('');\n git.ciFileName = ciFileName;\n }\n\n log.raw(log.infoText(messages.devinit.ciDetails(ciFileName)));\n\n // Location for Client ID / Secret.\n const { loc } = await inquirer.prompt({\n name: 'loc',\n type: 'list',\n prefix: '\uD83D\uDD11',\n // Where would you like to store your client id/secret?\n message: messages.devinit.clientDetailsLocation(),\n choices: [\n {\n name: messages.devinit.clientDetailsInGit(git),\n value: 'git',\n },\n {\n name: messages.devinit.clientDetailsInEnv(),\n value: 'env',\n },\n ],\n });\n\n log.raw('');\n log.help(messages.devinit.ciIntro(git, loc));\n\n if (!dryRun) {\n // Confirm prompt\n const { confirm } = await inquirer.prompt([\n {\n type: 'confirm',\n message: messages.devinit.confirm(),\n name: 'confirm',\n default: false,\n },\n ]);\n log.raw('');\n if (!confirm) return;\n }\n\n // Fetching access token\n let accessToken: string | undefined = undefined;\n\n const spinner = createSpinner(messages.devinit.accessTokenFetch());\n spinner.start();\n\n const token = await this.GetDeliveryApiKey();\n\n if (token) {\n accessToken = token;\n spinner.success({ text: messages.devinit.accessTokenSuccess(token) });\n log.raw('');\n } else {\n spinner.error();\n this.log.error(messages.devinit.accessTokenFailed());\n return;\n }\n\n // Magic happens...\n const checkpoint = (op: string) => {\n if (errors.length) throw errors[0];\n else log.debug(`${op} completed ok`);\n return true;\n };\n\n // Arrange API keys for development and deployment\n const [getRolesErr, roles] = await to(contensis.roles.GetRoles());\n if (!roles && getRolesErr) errors.push(getRolesErr);\n checkpoint(`fetched ${roles?.length} roles`);\n\n if (dryRun) {\n checkpoint(`skip api key creation (dry-run)`);\n } else {\n // if dev api key doesn't exist go and create it (we need this for local development, we will store these details in the .env file).\n const devKeyExisted = !!existingDevKey;\n if (!existingDevKey) {\n existingDevKey = await this.CreateOrUpdateApiKey(\n existingDevKey,\n devKeyName,\n devKeyDescription\n );\n log.success(messages.devinit.createDevKey(devKeyName, devKeyExisted));\n }\n // NF 24/11/23 Added this commented code back in as we are not assigning the dev key to any role here\n // // Ensure dev API key is assigned to a role\n // let existingDevRole = findByIdOrName(roles || [], devKeyName, true) as\n // | Role\n // | undefined;\n // existingDevRole = await this.CreateOrUpdateRole(\n // existingDevRole,\n // devKeyRole(devKeyName, devKeyDescription)\n // );\n // checkpoint('dev key role assigned');\n\n // if deploy api key doesn't exist go and create it (we need this for yml file).\n const deployKeyExisted = !!existingDeployKey;\n if (!existingDeployKey) {\n existingDeployKey = await this.CreateOrUpdateApiKey(\n existingDeployKey,\n deployKeyName,\n deployKeyDescription\n );\n }\n\n // check we have the deploy key so we can assign them to this values\n if (existingDeployKey) {\n // Add client id and secret to credentials\n this.deployCredentials.clientId = existingDeployKey?.id;\n this.deployCredentials.clientSecret = existingDeployKey?.sharedSecret;\n }\n\n // Ensure deploy API key is assigned to a role with the right permissions\n const deployRoleName = `Role for CI push of block '${blockId}'`;\n const deplyRoleDescription = `Created by the Contensis CLI for use in continuous integration`;\n let existingDeployRole = findByIdOrName(\n roles || [],\n deployRoleName,\n true\n ) as Role | undefined;\n existingDeployRole = await this.CreateOrUpdateRole(\n existingDeployRole,\n deployKeyRole(deployKeyName, deployRoleName, deplyRoleDescription)\n );\n\n checkpoint('deploy key role assigned');\n log.success(\n messages.devinit.createDeployKey(deployRoleName, deployKeyExisted)\n );\n checkpoint('api keys done');\n }\n\n const envFilePath = `${projectHome}/.env`;\n const existingEnvFile = readFile(envFilePath);\n let existingEnvFileArray = (existingEnvFile || '')\n .split('\\n')\n .filter(l => !!l);\n\n // Update or create a file called .env in project home\n const envContentsToAdd: EnvContentsToAdd = {\n ALIAS: currentEnv,\n PROJECT_API_ID: currentProject,\n BLOCK_ID: blockId,\n };\n if (accessToken) envContentsToAdd['ACCESS_TOKEN'] = accessToken;\n // add client id and secret to the env file\n if (loc === 'env') {\n envContentsToAdd['CONTENSIS_CLIENT_ID'] =\n existingDevKey?.id || messages.devinit.dryRunKeyMessage(dryRun);\n envContentsToAdd['CONTENSIS_CLIENT_SECRET'] =\n existingDevKey?.sharedSecret ||\n messages.devinit.dryRunKeyMessage(dryRun);\n }\n\n // if we have client id / secret in our env remove it\n const removeEnvItems = (items: string[]) => {\n const indexesToRemove = [];\n\n for (let i = 0; i < existingEnvFileArray.length; i++) {\n for (const item of items) {\n if (existingEnvFileArray[i].includes(item)) {\n indexesToRemove.push(i);\n break;\n }\n }\n }\n\n for (let i = indexesToRemove.length - 1; i >= 0; i--) {\n existingEnvFileArray.splice(indexesToRemove[i], 1);\n }\n };\n\n // remove client id and secret from env file\n if (loc === 'git') {\n removeEnvItems(['CONTENSIS_CLIENT_ID', 'CONTENSIS_CLIENT_SECRET']);\n }\n\n const envFileLines = mergeDotEnvFileContents(\n existingEnvFileArray,\n envContentsToAdd\n );\n const newEnvFileContent = envFileLines.join('\\n');\n const envDiff = diffFileContent(existingEnvFile || '', newEnvFileContent);\n\n if (dryRun) {\n if (envDiff) {\n log.info(`Updating .env file ${winSlash(envFilePath)}:\\n${envDiff}`);\n log.raw('');\n }\n checkpoint('skip .env file update (dry-run)');\n } else {\n if (envDiff) log.info(`Updating .env file ${winSlash(envFilePath)}`);\n writeFile(envFilePath, envFileLines.join('\\n'));\n checkpoint('.env file updated');\n log.success(messages.devinit.writeEnvFile());\n // log.help(messages.devinit.useEnvFileTip());\n }\n\n // Update git ignore\n if (dryRun) {\n checkpoint('skip .gitignore file update (dry-run)');\n } else {\n mergeContentsToAddWithGitignore(`${projectHome}/.gitignore`, ['.env']);\n log.raw('');\n }\n\n // Update CI Workflow\n const mappedWorkflow = await mapCIWorkflowContent(this, loc);\n\n // Update CI file -- different for GH/GL\n if (mappedWorkflow?.diff) {\n log.info(\n `Updating ${winSlash(ciFileName)} file:\\n${mappedWorkflow.diff}`\n );\n log.raw('');\n }\n if (dryRun) {\n checkpoint('skip CI file update (dry-run)');\n //log.object(ciFileLines);\n } else {\n if (mappedWorkflow?.newWorkflow) {\n if (mappedWorkflow?.diff) {\n writeFile(git.ciFilePath, mappedWorkflow.newWorkflow);\n log.success(messages.devinit.writeCiFile(`./${ciFileName}`));\n log.info(\n messages.devinit.ciBlockTip(blockId, currentEnv, currentProject)\n );\n } else {\n log.info(messages.devinit.ciFileNoChanges(`./${ciFileName}`));\n }\n log.raw('');\n checkpoint('CI file updated');\n }\n }\n\n if (loc === 'git') {\n // Echo Deployment API key to console, ask user to add secrets to repo\n log.warning(messages.devinit.addGitSecretsIntro());\n log.help(\n messages.devinit.addGitSecretsHelp(\n git,\n existingDeployKey?.id || messages.devinit.dryRunKeyMessage(dryRun),\n existingDeployKey?.sharedSecret ||\n messages.devinit.dryRunKeyMessage(dryRun)\n )\n );\n }\n\n if (dryRun) {\n log.success(messages.devinit.dryRun());\n log.help(messages.devinit.noChanges());\n } else {\n log.success(messages.devinit.success());\n log.help(messages.devinit.startProjectTip());\n // open the cms link -- if no classic token just return the cms url\n\n // go and fetch the classic token from auth service\n const classicToken = await this.auth?.ClassicToken();\n log.help(\n ansiEscapes.link(\n `Open Contensis`,\n `${this.urls?.cms}${\n classicToken ? `?SecurityToken=${classicToken}` : ''\n }`\n )\n );\n }\n }\n };\n\n ExecRequestHandler = async (\n blockId: string[],\n overrideArgs: string[] = [],\n version?: string\n ) => {\n const { debug, log, messages } = this;\n\n const spinner = !debug\n ? createSpinner(messages.devrequests.launch())\n : log.info(messages.devrequests.launch());\n\n // Ensure request handler is available to use\n const requestHandler = await createRequestHandler(version);\n\n // Generate args for request handler using CLI methods\n const args = new RequestHandlerArgs(this);\n spinner?.start();\n await args.Create();\n spinner?.success();\n\n // Prompt block id and dev uri to run locally (if not supplied)\n const blockIdChoices = args.siteConfig?.blocks.map(block => block.id) || [];\n blockIdChoices.push('none');\n const defaultDeveloperUri = 'http://localhost:3000';\n\n const { overrideBlockId, overrideUri } = blockId.length\n ? {\n overrideBlockId: blockId[0],\n overrideUri: blockId?.[1] || defaultDeveloperUri,\n }\n : await inquirer.prompt([\n {\n type: 'list',\n prefix: '\uD83E\uDDF1',\n message: messages.devrequests.overrideBlock(),\n name: 'overrideBlockId',\n choices: blockIdChoices,\n },\n {\n type: 'input',\n prefix: '\uD83D\uDD17',\n message: messages.devrequests.overrideUri(),\n name: 'overrideUri',\n default: defaultDeveloperUri,\n },\n ]);\n\n args.overrideBlock(overrideBlockId, overrideUri);\n\n // Launch request handler\n await requestHandler(args.getArgs(overrideArgs));\n };\n}\nexport const devCommand = (\n commandArgs: string[],\n outputOpts: OutputOptionsConstructorArg,\n contensisOpts: Partial<MigrateRequest> = {}\n) => {\n return new ContensisDev(['', '', ...commandArgs], outputOpts, contensisOpts);\n};\n\nexport default ContensisDev;\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import ansiEscapes from 'ansi-escapes';\nimport to from 'await-to-js';\nimport inquirer from 'inquirer';\nimport { createSpinner } from 'nanospinner';\n\nimport { Role } from 'contensis-management-api/lib/models';\nimport { MigrateRequest } from 'migratortron';\n\nimport ContensisRole from './ContensisRoleService';\nimport { createRequestHandler } from '~/factories/RequestHandlerFactory';\nimport { OutputOptionsConstructorArg } from '~/models/CliService';\nimport { EnvContentsToAdd } from '~/models/DevService';\nimport { mapCIWorkflowContent } from '~/mappers/DevInit-to-CIWorkflow';\nimport RequestHandlerArgs from '~/mappers/DevRequests-to-RequestHanderCliArgs';\nimport { deployKeyRole } from '~/mappers/DevInit-to-RolePermissions';\nimport { readFile, writeFile } from '~/providers/file-provider';\nimport { diffFileContent } from '~/util/diff';\nimport { mergeDotEnvFileContents } from '~/util/dotenv';\nimport { findByIdOrName } from '~/util/find';\nimport { GitHelper } from '~/util/git';\nimport { jsonFormatter } from '~/util/json.formatter';\nimport { winSlash } from '~/util/os';\nimport { mergeContentsToAddWithGitignore } from '~/util/gitignore';\n\nclass ContensisDev extends ContensisRole {\n git!: GitHelper;\n blockId!: string;\n\n deployCredentials = {\n clientId: '',\n clientSecret: '',\n };\n\n constructor(\n args: string[],\n outputOpts?: OutputOptionsConstructorArg,\n contensisOpts: Partial<MigrateRequest> = {}\n ) {\n super(args, outputOpts, contensisOpts);\n }\n\n DevelopmentInit = async (projectHome: string, opts: any) => {\n // Retrieve git info\n const git = (this.git = new GitHelper(projectHome));\n // Check if we are in a git repo\n const isRepo = git.checkIsRepo();\n if (!isRepo) return;\n\n const { dryRun = false } = opts || {};\n const { currentEnv, currentProject, log, messages } = this;\n const contensis = await this.ConnectContensis();\n\n if (contensis) {\n // First we need to get the block id from the user\n const validateBlockId = (blockId: string) => {\n const pattern = /^[0-9a-z](-?[0-9a-z])*$/;\n if (blockId.length >= 1 && blockId.length <= 225) {\n return pattern.test(blockId);\n } else return false;\n };\n const { blockId } = await inquirer.prompt({\n name: 'blockId',\n type: 'input',\n prefix: '\uD83E\uDDF1',\n message: messages.devinit.blockIdQuestion,\n validate: validateBlockId,\n default: git.name,\n });\n // make sure block id is lowercase\n this.blockId = blockId.toLowerCase();\n log.success(`Valid block id: ${blockId.toLowerCase()}`);\n\n // Retrieve keys list for env\n const [keysErr, apiKeys] = await contensis.apiKeys.GetKeys();\n if (keysErr) {\n log.error(messages.keys.noList(currentEnv));\n log.error(jsonFormatter(keysErr));\n return;\n }\n const apiKeyExists = (findKey: string) =>\n apiKeys?.find(\n k => k.name.trim().toLowerCase() === findKey?.trim().toLowerCase()\n );\n\n // Retrieve ci workflow info\n const workflowFiles = git.workflows;\n\n // Set variables for performing operations and logging etc.\n let ciFileName = git.ciFileName;\n\n const apiKeyName = `block-${currentProject}-${blockId}`.toLowerCase();\n\n const devKeyName = `${apiKeyName}`;\n const devKeyDescription = `Created by Contensis to allow API access from the running block`;\n let existingDevKey = apiKeyExists(devKeyName);\n\n const deployKeyName = `${apiKeyName}-ci`;\n const deployKeyDescription = `Created by the Contensis CLI for use in continuous integration`;\n\n let existingDeployKey = apiKeyExists(deployKeyName);\n\n // const blockId = git.name;\n const errors = [] as AppError[];\n\n // Start render console output\n log.raw('');\n log.success(messages.devinit.intro());\n log.raw(\n log.infoText(\n messages.devinit.projectDetails(\n git.name,\n currentEnv,\n currentProject,\n blockId,\n git\n )\n )\n );\n log.raw(\n log.infoText(\n messages.devinit.developmentKey(devKeyName, !!existingDevKey)\n )\n );\n log.raw(\n log.infoText(\n messages.devinit.deploymentKey(deployKeyName, !!existingDeployKey)\n )\n );\n log.raw('');\n\n if (Array.isArray(workflowFiles) && workflowFiles.length > 1) {\n // Choose GitHub workflow file (if multiple)\n ({ ciFileName } = await inquirer.prompt([\n {\n type: 'list',\n prefix: '\u29F0',\n message: messages.devinit.ciMultipleChoices(),\n name: 'ciFileName',\n choices: workflowFiles,\n default: workflowFiles.find(f => f.includes('docker')),\n },\n ]));\n log.raw('');\n git.ciFileName = ciFileName;\n }\n\n log.raw(log.infoText(messages.devinit.ciDetails(ciFileName)));\n\n // Location for Client ID / Secret.\n const { loc } = await inquirer.prompt({\n name: 'loc',\n type: 'list',\n prefix: '\uD83D\uDD11',\n // Where would you like to store your client id/secret?\n message: messages.devinit.clientDetailsLocation(),\n choices: [\n {\n name: messages.devinit.clientDetailsInGit(git),\n value: 'git',\n },\n {\n name: messages.devinit.clientDetailsInEnv(),\n value: 'env',\n },\n ],\n });\n\n log.raw('');\n log.help(messages.devinit.ciIntro(git, loc));\n\n if (!dryRun) {\n // Confirm prompt\n const { confirm } = await inquirer.prompt([\n {\n type: 'confirm',\n message: messages.devinit.confirm(),\n name: 'confirm',\n default: false,\n },\n ]);\n log.raw('');\n if (!confirm) return;\n }\n\n // Fetching access token\n let accessToken: string | undefined = undefined;\n\n const spinner = createSpinner(messages.devinit.accessTokenFetch());\n spinner.start();\n\n const token = await this.GetDeliveryApiKey();\n\n if (token) {\n accessToken = token;\n spinner.success({ text: messages.devinit.accessTokenSuccess(token) });\n log.raw('');\n } else {\n spinner.error();\n this.log.error(messages.devinit.accessTokenFailed());\n return;\n }\n\n // Magic happens...\n const checkpoint = (op: string) => {\n if (errors.length) throw errors[0];\n else log.debug(`${op} completed ok`);\n return true;\n };\n\n // Arrange API keys for development and deployment\n const [getRolesErr, roles] = await to(contensis.roles.GetRoles());\n if (!roles && getRolesErr) errors.push(getRolesErr);\n checkpoint(`fetched ${roles?.length} roles`);\n\n if (dryRun) {\n checkpoint(`skip api key creation (dry-run)`);\n } else {\n // if dev api key doesn't exist go and create it (we need this for local development, we will store these details in the .env file).\n const devKeyExisted = !!existingDevKey;\n if (!existingDevKey) {\n existingDevKey = await this.CreateOrUpdateApiKey(\n existingDevKey,\n devKeyName,\n devKeyDescription\n );\n log.success(messages.devinit.createDevKey(devKeyName, devKeyExisted));\n }\n // NF 24/11/23 Added this commented code back in as we are not assigning the dev key to any role here\n // // Ensure dev API key is assigned to a role\n // let existingDevRole = findByIdOrName(roles || [], devKeyName, true) as\n // | Role\n // | undefined;\n // existingDevRole = await this.CreateOrUpdateRole(\n // existingDevRole,\n // devKeyRole(devKeyName, devKeyDescription)\n // );\n // checkpoint('dev key role assigned');\n\n // if deploy api key doesn't exist go and create it (we need this for yml file).\n const deployKeyExisted = !!existingDeployKey;\n if (!existingDeployKey) {\n existingDeployKey = await this.CreateOrUpdateApiKey(\n existingDeployKey,\n deployKeyName,\n deployKeyDescription\n );\n }\n\n // check we have the deploy key so we can assign them to this values\n if (existingDeployKey) {\n // Add client id and secret to credentials\n this.deployCredentials.clientId = existingDeployKey?.id;\n this.deployCredentials.clientSecret = existingDeployKey?.sharedSecret;\n }\n\n // Ensure deploy API key is assigned to a role with the right permissions\n const deployRoleName = `Role for CI push of block '${blockId}'`;\n const deplyRoleDescription = `Created by the Contensis CLI for use in continuous integration`;\n let existingDeployRole = findByIdOrName(\n roles || [],\n deployRoleName,\n true\n ) as Role | undefined;\n existingDeployRole = await this.CreateOrUpdateRole(\n existingDeployRole,\n deployKeyRole(deployKeyName, deployRoleName, deplyRoleDescription)\n );\n\n checkpoint('deploy key role assigned');\n log.success(\n messages.devinit.createDeployKey(deployRoleName, deployKeyExisted)\n );\n checkpoint('api keys done');\n }\n\n const envFilePath = `${projectHome}/.env`;\n const existingEnvFile = readFile(envFilePath);\n const existingEnvFileArray = (existingEnvFile || '')\n .split('\\n')\n .filter(l => !!l);\n\n // Update or create a file called .env in project home\n const envContentsToAdd: EnvContentsToAdd = {\n ALIAS: currentEnv,\n PROJECT_API_ID: currentProject,\n BLOCK_ID: blockId,\n };\n if (accessToken) envContentsToAdd['ACCESS_TOKEN'] = accessToken;\n // add client id and secret to the env file\n if (loc === 'env') {\n envContentsToAdd['CONTENSIS_CLIENT_ID'] =\n existingDevKey?.id || messages.devinit.dryRunKeyMessage(dryRun);\n envContentsToAdd['CONTENSIS_CLIENT_SECRET'] =\n existingDevKey?.sharedSecret ||\n messages.devinit.dryRunKeyMessage(dryRun);\n }\n\n // if we have client id / secret in our env remove it\n const removeEnvItems = (items: string[]) => {\n const indexesToRemove = [];\n\n for (let i = 0; i < existingEnvFileArray.length; i++) {\n for (const item of items) {\n if (existingEnvFileArray[i].includes(item)) {\n indexesToRemove.push(i);\n break;\n }\n }\n }\n\n for (let i = indexesToRemove.length - 1; i >= 0; i--) {\n existingEnvFileArray.splice(indexesToRemove[i], 1);\n }\n };\n\n // remove client id and secret from env file\n if (loc === 'git') {\n removeEnvItems(['CONTENSIS_CLIENT_ID', 'CONTENSIS_CLIENT_SECRET']);\n }\n\n const envFileLines = mergeDotEnvFileContents(\n existingEnvFileArray,\n envContentsToAdd\n );\n const newEnvFileContent = envFileLines.join('\\n');\n const envDiff = diffFileContent(existingEnvFile || '', newEnvFileContent);\n\n if (dryRun) {\n if (envDiff) {\n log.info(`Updating .env file ${winSlash(envFilePath)}:\\n${envDiff}`);\n log.raw('');\n }\n checkpoint('skip .env file update (dry-run)');\n } else {\n if (envDiff) log.info(`Updating .env file ${winSlash(envFilePath)}`);\n writeFile(envFilePath, envFileLines.join('\\n'));\n checkpoint('.env file updated');\n log.success(messages.devinit.writeEnvFile());\n // log.help(messages.devinit.useEnvFileTip());\n }\n\n // Update git ignore\n if (dryRun) {\n checkpoint('skip .gitignore file update (dry-run)');\n } else {\n mergeContentsToAddWithGitignore(`${projectHome}/.gitignore`, ['.env']);\n log.raw('');\n }\n\n // Update CI Workflow\n const mappedWorkflow = await mapCIWorkflowContent(this, loc);\n\n // Update CI file -- different for GH/GL\n if (mappedWorkflow?.diff) {\n log.info(\n `Updating ${winSlash(ciFileName)} file:\\n${mappedWorkflow.diff}`\n );\n log.raw('');\n }\n if (dryRun) {\n checkpoint('skip CI file update (dry-run)');\n //log.object(ciFileLines);\n } else {\n if (mappedWorkflow?.newWorkflow) {\n if (mappedWorkflow?.diff) {\n writeFile(git.ciFilePath, mappedWorkflow.newWorkflow);\n log.success(messages.devinit.writeCiFile(`./${ciFileName}`));\n log.info(\n messages.devinit.ciBlockTip(blockId, currentEnv, currentProject)\n );\n } else {\n log.info(messages.devinit.ciFileNoChanges(`./${ciFileName}`));\n }\n log.raw('');\n checkpoint('CI file updated');\n }\n }\n\n if (loc === 'git') {\n // Echo Deployment API key to console, ask user to add secrets to repo\n log.warning(messages.devinit.addGitSecretsIntro());\n log.help(\n messages.devinit.addGitSecretsHelp(\n git,\n existingDeployKey?.id || messages.devinit.dryRunKeyMessage(dryRun),\n existingDeployKey?.sharedSecret ||\n messages.devinit.dryRunKeyMessage(dryRun)\n )\n );\n }\n\n if (dryRun) {\n log.success(messages.devinit.dryRun());\n log.help(messages.devinit.noChanges());\n } else {\n log.success(messages.devinit.success());\n log.help(messages.devinit.startProjectTip());\n // open the cms link -- if no classic token just return the cms url\n\n // go and fetch the classic token from auth service\n const classicToken = await this.auth?.ClassicToken();\n log.help(\n ansiEscapes.link(\n `Open Contensis`,\n `${this.urls?.cms}${\n classicToken ? `?SecurityToken=${classicToken}` : ''\n }`\n )\n );\n }\n }\n };\n\n ExecRequestHandler = async (\n blockId: string[],\n overrideArgs: string[] = [],\n version?: string\n ) => {\n const { debug, log, messages } = this;\n\n const spinner = !debug\n ? createSpinner(messages.devrequests.launch())\n : log.info(messages.devrequests.launch());\n\n // Ensure request handler is available to use\n const requestHandler = await createRequestHandler(version);\n\n // Generate args for request handler using CLI methods\n const args = new RequestHandlerArgs(this);\n spinner?.start();\n await args.Create();\n spinner?.success();\n\n // Prompt block id and dev uri to run locally (if not supplied)\n const blockIdChoices = args.siteConfig?.blocks.map(block => block.id) || [];\n blockIdChoices.push('none');\n const defaultDeveloperUri = 'http://localhost:3000';\n\n const { overrideBlockId, overrideUri } = blockId.length\n ? {\n overrideBlockId: blockId[0],\n overrideUri: blockId?.[1] || defaultDeveloperUri,\n }\n : await inquirer.prompt([\n {\n type: 'list',\n prefix: '\uD83E\uDDF1',\n message: messages.devrequests.overrideBlock(),\n name: 'overrideBlockId',\n choices: blockIdChoices,\n },\n {\n type: 'input',\n prefix: '\uD83D\uDD17',\n message: messages.devrequests.overrideUri(),\n name: 'overrideUri',\n default: defaultDeveloperUri,\n },\n ]);\n\n args.overrideBlock(overrideBlockId, overrideUri);\n\n // Launch request handler\n await requestHandler(args.getArgs(overrideArgs));\n };\n}\nexport const devCommand = (\n commandArgs: string[],\n outputOpts: OutputOptionsConstructorArg,\n contensisOpts: Partial<MigrateRequest> = {}\n) => {\n return new ContensisDev(['', '', ...commandArgs], outputOpts, contensisOpts);\n};\n\nexport default ContensisDev;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAwB;AACxB,yBAAe;AACf,sBAAqB;AACrB,yBAA8B;AAK9B,kCAA0B;AAC1B,mCAAqC;AAGrC,mCAAqC;AACrC,iDAA+B;AAC/B,wCAA8B;AAC9B,2BAAoC;AACpC,kBAAgC;AAChC,oBAAwC;AACxC,kBAA+B;AAC/B,iBAA0B;AAC1B,kBAA8B;AAC9B,gBAAyB;AACzB,uBAAgD;AAEhD,MAAM,qBAAqB,4BAAAA,QAAc;AAAA,EACvC;AAAA,EACA;AAAA,EAEA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,cAAc;AAAA,EAChB;AAAA,EAEA,YACE,MACA,YACA,gBAAyC,CAAC,GAC1C;AACA,UAAM,MAAM,YAAY,aAAa;AAAA,EACvC;AAAA,EAEA,kBAAkB,OAAO,aAAqB,SAAc;AAzC9D;AA2CI,UAAM,MAAO,KAAK,MAAM,IAAI,qBAAU,WAAW;AAEjD,UAAM,SAAS,IAAI,YAAY;AAC/B,QAAI,CAAC,OAAQ;AAEb,UAAM,EAAE,SAAS,MAAM,IAAI,QAAQ,CAAC;AACpC,UAAM,EAAE,YAAY,gBAAgB,KAAK,SAAS,IAAI;AACtD,UAAM,YAAY,MAAM,KAAK,iBAAiB;AAE9C,QAAI,WAAW;AAEb,YAAM,kBAAkB,CAACC,aAAoB;AAC3C,cAAM,UAAU;AAChB,YAAIA,SAAQ,UAAU,KAAKA,SAAQ,UAAU,KAAK;AAChD,iBAAO,QAAQ,KAAKA,QAAO;AAAA,QAC7B,MAAO,QAAO;AAAA,MAChB;AACA,YAAM,EAAE,QAAQ,IAAI,MAAM,gBAAAC,QAAS,OAAO;AAAA,QACxC,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,SAAS,QAAQ;AAAA,QAC1B,UAAU;AAAA,QACV,SAAS,IAAI;AAAA,MACf,CAAC;AAED,WAAK,UAAU,QAAQ,YAAY;AACnC,UAAI,QAAQ,mBAAmB,QAAQ,YAAY,CAAC,EAAE;AAGtD,YAAM,CAAC,SAAS,OAAO,IAAI,MAAM,UAAU,QAAQ,QAAQ;AAC3D,UAAI,SAAS;AACX,YAAI,MAAM,SAAS,KAAK,OAAO,UAAU,CAAC;AAC1C,YAAI,UAAM,2BAAc,OAAO,CAAC;AAChC;AAAA,MACF;AACA,YAAM,eAAe,CAAC,YACpB,mCAAS;AAAA,QACP,OAAK,EAAE,KAAK,KAAK,EAAE,YAAY,OAAM,mCAAS,OAAO;AAAA;AAIzD,YAAM,gBAAgB,IAAI;AAG1B,UAAI,aAAa,IAAI;AAErB,YAAM,aAAa,SAAS,cAAc,IAAI,OAAO,GAAG,YAAY;AAEpE,YAAM,aAAa,GAAG,UAAU;AAChC,YAAM,oBAAoB;AAC1B,UAAI,iBAAiB,aAAa,UAAU;AAE5C,YAAM,gBAAgB,GAAG,UAAU;AACnC,YAAM,uBAAuB;AAE7B,UAAI,oBAAoB,aAAa,aAAa;AAGlD,YAAM,SAAS,CAAC;AAGhB,UAAI,IAAI,EAAE;AACV,UAAI,QAAQ,SAAS,QAAQ,MAAM,CAAC;AACpC,UAAI;AAAA,QACF,IAAI;AAAA,UACF,SAAS,QAAQ;AAAA,YACf,IAAI;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI;AAAA,QACF,IAAI;AAAA,UACF,SAAS,QAAQ,eAAe,YAAY,CAAC,CAAC,cAAc;AAAA,QAC9D;AAAA,MACF;AACA,UAAI;AAAA,QACF,IAAI;AAAA,UACF,SAAS,QAAQ,cAAc,eAAe,CAAC,CAAC,iBAAiB;AAAA,QACnE;AAAA,MACF;AACA,UAAI,IAAI,EAAE;AAEV,UAAI,MAAM,QAAQ,aAAa,KAAK,cAAc,SAAS,GAAG;AAE5D,SAAC,EAAE,WAAW,IAAI,MAAM,gBAAAA,QAAS,OAAO;AAAA,UACtC;AAAA,YACE,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,SAAS,SAAS,QAAQ,kBAAkB;AAAA,YAC5C,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS,cAAc,KAAK,OAAK,EAAE,SAAS,QAAQ,CAAC;AAAA,UACvD;AAAA,QACF,CAAC;AACD,YAAI,IAAI,EAAE;AACV,YAAI,aAAa;AAAA,MACnB;AAEA,UAAI,IAAI,IAAI,SAAS,SAAS,QAAQ,UAAU,UAAU,CAAC,CAAC;AAG5D,YAAM,EAAE,IAAI,IAAI,MAAM,gBAAAA,QAAS,OAAO;AAAA,QACpC,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA;AAAA,QAER,SAAS,SAAS,QAAQ,sBAAsB;AAAA,QAChD,SAAS;AAAA,UACP;AAAA,YACE,MAAM,SAAS,QAAQ,mBAAmB,GAAG;AAAA,YAC7C,OAAO;AAAA,UACT;AAAA,UACA;AAAA,YACE,MAAM,SAAS,QAAQ,mBAAmB;AAAA,YAC1C,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAC;AAED,UAAI,IAAI,EAAE;AACV,UAAI,KAAK,SAAS,QAAQ,QAAQ,KAAK,GAAG,CAAC;AAE3C,UAAI,CAAC,QAAQ;AAEX,cAAM,EAAE,QAAQ,IAAI,MAAM,gBAAAA,QAAS,OAAO;AAAA,UACxC;AAAA,YACE,MAAM;AAAA,YACN,SAAS,SAAS,QAAQ,QAAQ;AAAA,YAClC,MAAM;AAAA,YACN,SAAS;AAAA,UACX;AAAA,QACF,CAAC;AACD,YAAI,IAAI,EAAE;AACV,YAAI,CAAC,QAAS;AAAA,MAChB;AAGA,UAAI,cAAkC;AAEtC,YAAM,cAAU,kCAAc,SAAS,QAAQ,iBAAiB,CAAC;AACjE,cAAQ,MAAM;AAEd,YAAM,QAAQ,MAAM,KAAK,kBAAkB;AAE3C,UAAI,OAAO;AACT,sBAAc;AACd,gBAAQ,QAAQ,EAAE,MAAM,SAAS,QAAQ,mBAAmB,KAAK,EAAE,CAAC;AACpE,YAAI,IAAI,EAAE;AAAA,MACZ,OAAO;AACL,gBAAQ,MAAM;AACd,aAAK,IAAI,MAAM,SAAS,QAAQ,kBAAkB,CAAC;AACnD;AAAA,MACF;AAGA,YAAM,aAAa,CAAC,OAAe;AACjC,YAAI,OAAO,OAAQ,OAAM,OAAO,CAAC;AAAA,YAC5B,KAAI,MAAM,GAAG,EAAE,eAAe;AACnC,eAAO;AAAA,MACT;AAGA,YAAM,CAAC,aAAa,KAAK,IAAI,UAAM,mBAAAC,SAAG,UAAU,MAAM,SAAS,CAAC;AAChE,UAAI,CAAC,SAAS,YAAa,QAAO,KAAK,WAAW;AAClD,iBAAW,WAAW,+BAAO,MAAM,QAAQ;AAE3C,UAAI,QAAQ;AACV,mBAAW,iCAAiC;AAAA,MAC9C,OAAO;AAEL,cAAM,gBAAgB,CAAC,CAAC;AACxB,YAAI,CAAC,gBAAgB;AACnB,2BAAiB,MAAM,KAAK;AAAA,YAC1B;AAAA,YACA;AAAA,YACA;AAAA,UACF;AACA,cAAI,QAAQ,SAAS,QAAQ,aAAa,YAAY,aAAa,CAAC;AAAA,QACtE;AAaA,cAAM,mBAAmB,CAAC,CAAC;AAC3B,YAAI,CAAC,mBAAmB;AACtB,8BAAoB,MAAM,KAAK;AAAA,YAC7B;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAGA,YAAI,mBAAmB;AAErB,eAAK,kBAAkB,WAAW,uDAAmB;AACrD,eAAK,kBAAkB,eAAe,uDAAmB;AAAA,QAC3D;AAGA,cAAM,iBAAiB,8BAA8B,OAAO;AAC5D,cAAM,uBAAuB;AAC7B,YAAI,yBAAqB;AAAA,UACvB,SAAS,CAAC;AAAA,UACV;AAAA,UACA;AAAA,QACF;AACA,6BAAqB,MAAM,KAAK;AAAA,UAC9B;AAAA,cACA,iDAAc,eAAe,gBAAgB,oBAAoB;AAAA,QACnE;AAEA,mBAAW,0BAA0B;AACrC,YAAI;AAAA,UACF,SAAS,QAAQ,gBAAgB,gBAAgB,gBAAgB;AAAA,QACnE;AACA,mBAAW,eAAe;AAAA,MAC5B;AAEA,YAAM,cAAc,GAAG,WAAW;AAClC,YAAM,sBAAkB,+BAAS,WAAW;AAC5C,YAAM,wBAAwB,mBAAmB,IAC9C,MAAM,IAAI,EACV,OAAO,OAAK,CAAC,CAAC,CAAC;AAGlB,YAAM,mBAAqC;AAAA,QACzC,OAAO;AAAA,QACP,gBAAgB;AAAA,QAChB,UAAU;AAAA,MACZ;AACA,UAAI,YAAa,kBAAiB,cAAc,IAAI;AAEpD,UAAI,QAAQ,OAAO;AACjB,yBAAiB,qBAAqB,KACpC,iDAAgB,OAAM,SAAS,QAAQ,iBAAiB,MAAM;AAChE,yBAAiB,yBAAyB,KACxC,iDAAgB,iBAChB,SAAS,QAAQ,iBAAiB,MAAM;AAAA,MAC5C;AAGA,YAAM,iBAAiB,CAAC,UAAoB;AAC1C,cAAM,kBAAkB,CAAC;AAEzB,iBAAS,IAAI,GAAG,IAAI,qBAAqB,QAAQ,KAAK;AACpD,qBAAW,QAAQ,OAAO;AACxB,gBAAI,qBAAqB,CAAC,EAAE,SAAS,IAAI,GAAG;AAC1C,8BAAgB,KAAK,CAAC;AACtB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,IAAI,gBAAgB,SAAS,GAAG,KAAK,GAAG,KAAK;AACpD,+BAAqB,OAAO,gBAAgB,CAAC,GAAG,CAAC;AAAA,QACnD;AAAA,MACF;AAGA,UAAI,QAAQ,OAAO;AACjB,uBAAe,CAAC,uBAAuB,yBAAyB,CAAC;AAAA,MACnE;AAEA,YAAM,mBAAe;AAAA,QACnB;AAAA,QACA;AAAA,MACF;AACA,YAAM,oBAAoB,aAAa,KAAK,IAAI;AAChD,YAAM,cAAU,6BAAgB,mBAAmB,IAAI,iBAAiB;AAExE,UAAI,QAAQ;AACV,YAAI,SAAS;AACX,cAAI,KAAK,0BAAsB,oBAAS,WAAW,CAAC;AAAA,EAAM,OAAO,EAAE;AACnE,cAAI,IAAI,EAAE;AAAA,QACZ;AACA,mBAAW,iCAAiC;AAAA,MAC9C,OAAO;AACL,YAAI,QAAS,KAAI,KAAK,0BAAsB,oBAAS,WAAW,CAAC,EAAE;AACnE,4CAAU,aAAa,aAAa,KAAK,IAAI,CAAC;AAC9C,mBAAW,mBAAmB;AAC9B,YAAI,QAAQ,SAAS,QAAQ,aAAa,CAAC;AAAA,MAE7C;AAGA,UAAI,QAAQ;AACV,mBAAW,uCAAuC;AAAA,MACpD,OAAO;AACL,8DAAgC,GAAG,WAAW,eAAe,CAAC,MAAM,CAAC;AACrE,YAAI,IAAI,EAAE;AAAA,MACZ;AAGA,YAAM,iBAAiB,UAAM,mDAAqB,MAAM,GAAG;AAG3D,UAAI,iDAAgB,MAAM;AACxB,YAAI;AAAA,UACF,gBAAY,oBAAS,UAAU,CAAC;AAAA,EAAW,eAAe,IAAI;AAAA,QAChE;AACA,YAAI,IAAI,EAAE;AAAA,MACZ;AACA,UAAI,QAAQ;AACV,mBAAW,+BAA+B;AAAA,MAE5C,OAAO;AACL,YAAI,iDAAgB,aAAa;AAC/B,cAAI,iDAAgB,MAAM;AACxB,gDAAU,IAAI,YAAY,eAAe,WAAW;AACpD,gBAAI,QAAQ,SAAS,QAAQ,YAAY,KAAK,UAAU,EAAE,CAAC;AAC3D,gBAAI;AAAA,cACF,SAAS,QAAQ,WAAW,SAAS,YAAY,cAAc;AAAA,YACjE;AAAA,UACF,OAAO;AACL,gBAAI,KAAK,SAAS,QAAQ,gBAAgB,KAAK,UAAU,EAAE,CAAC;AAAA,UAC9D;AACA,cAAI,IAAI,EAAE;AACV,qBAAW,iBAAiB;AAAA,QAC9B;AAAA,MACF;AAEA,UAAI,QAAQ,OAAO;AAEjB,YAAI,QAAQ,SAAS,QAAQ,mBAAmB,CAAC;AACjD,YAAI;AAAA,UACF,SAAS,QAAQ;AAAA,YACf;AAAA,aACA,uDAAmB,OAAM,SAAS,QAAQ,iBAAiB,MAAM;AAAA,aACjE,uDAAmB,iBACjB,SAAS,QAAQ,iBAAiB,MAAM;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAEA,UAAI,QAAQ;AACV,YAAI,QAAQ,SAAS,QAAQ,OAAO,CAAC;AACrC,YAAI,KAAK,SAAS,QAAQ,UAAU,CAAC;AAAA,MACvC,OAAO;AACL,YAAI,QAAQ,SAAS,QAAQ,QAAQ,CAAC;AACtC,YAAI,KAAK,SAAS,QAAQ,gBAAgB,CAAC;AAI3C,cAAM,eAAe,QAAM,UAAK,SAAL,mBAAW;AACtC,YAAI;AAAA,UACF,oBAAAC,QAAY;AAAA,YACV;AAAA,YACA,IAAG,UAAK,SAAL,mBAAW,GAAG,GACf,eAAe,kBAAkB,YAAY,KAAK,EACpD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,qBAAqB,OACnB,SACA,eAAyB,CAAC,GAC1B,YACG;AAjaP;AAkaI,UAAM,EAAE,OAAO,KAAK,SAAS,IAAI;AAEjC,UAAM,UAAU,CAAC,YACb,kCAAc,SAAS,YAAY,OAAO,CAAC,IAC3C,IAAI,KAAK,SAAS,YAAY,OAAO,CAAC;AAG1C,UAAM,iBAAiB,UAAM,mDAAqB,OAAO;AAGzD,UAAM,OAAO,IAAI,2CAAAC,QAAmB,IAAI;AACxC,uCAAS;AACT,UAAM,KAAK,OAAO;AAClB,uCAAS;AAGT,UAAM,mBAAiB,UAAK,eAAL,mBAAiB,OAAO,IAAI,WAAS,MAAM,QAAO,CAAC;AAC1E,mBAAe,KAAK,MAAM;AAC1B,UAAM,sBAAsB;AAE5B,UAAM,EAAE,iBAAiB,YAAY,IAAI,QAAQ,SAC7C;AAAA,MACE,iBAAiB,QAAQ,CAAC;AAAA,MAC1B,cAAa,mCAAU,OAAM;AAAA,IAC/B,IACA,MAAM,gBAAAH,QAAS,OAAO;AAAA,MACpB;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,SAAS,YAAY,cAAc;AAAA,QAC5C,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,SAAS,YAAY,YAAY;AAAA,QAC1C,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AAEL,SAAK,cAAc,iBAAiB,WAAW;AAG/C,UAAM,eAAe,KAAK,QAAQ,YAAY,CAAC;AAAA,EACjD;AACF;AACO,MAAM,aAAa,CACxB,aACA,YACA,gBAAyC,CAAC,MACvC;AACH,SAAO,IAAI,aAAa,CAAC,IAAI,IAAI,GAAG,WAAW,GAAG,YAAY,aAAa;AAC7E;AAEA,IAAO,8BAAQ;",
|
|
6
6
|
"names": ["ContensisRole", "blockId", "inquirer", "to", "ansiEscapes", "RequestHandlerArgs"]
|
|
7
7
|
}
|
|
@@ -18,6 +18,10 @@ var __copyProps = (to2, from, except, desc) => {
|
|
|
18
18
|
return to2;
|
|
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
|
));
|
|
@@ -42,8 +46,7 @@ class ContensisRole extends import_ContensisCliService.default {
|
|
|
42
46
|
const [error, bearerToken] = await (0, import_await_to_js.default)(
|
|
43
47
|
contensis.content.sourceRepo.repo.BearerToken()
|
|
44
48
|
);
|
|
45
|
-
if (error)
|
|
46
|
-
import_logger.Logger.error(error.message);
|
|
49
|
+
if (error) import_logger.Logger.error(error.message);
|
|
47
50
|
const token = fetch(`${CMS}/${API}`, {
|
|
48
51
|
method: "GET",
|
|
49
52
|
headers: {
|
|
@@ -51,8 +54,7 @@ class ContensisRole extends import_ContensisCliService.default {
|
|
|
51
54
|
Authorization: `Bearer ${bearerToken}`
|
|
52
55
|
}
|
|
53
56
|
}).then((repsonse) => repsonse.json()).then(({ value }) => {
|
|
54
|
-
if (value)
|
|
55
|
-
return value;
|
|
57
|
+
if (value) return value;
|
|
56
58
|
}).catch((error2) => {
|
|
57
59
|
throw new Error(error2);
|
|
58
60
|
});
|
|
@@ -61,8 +63,7 @@ class ContensisRole extends import_ContensisCliService.default {
|
|
|
61
63
|
};
|
|
62
64
|
CreateOrUpdateApiKey = async (existingKey, name, description) => {
|
|
63
65
|
const { contensis, currentEnv, messages } = this;
|
|
64
|
-
if (!contensis)
|
|
65
|
-
throw new Error("shouldnt be here");
|
|
66
|
+
if (!contensis) throw new Error("shouldnt be here");
|
|
66
67
|
if (existingKey) {
|
|
67
68
|
const [err, key] = await contensis.apiKeys.UpdateKey(existingKey.id, {
|
|
68
69
|
name,
|
|
@@ -84,8 +85,7 @@ class ContensisRole extends import_ContensisCliService.default {
|
|
|
84
85
|
};
|
|
85
86
|
CreateOrUpdateRole = async (existingRole, role) => {
|
|
86
87
|
const { contensis, currentEnv, messages } = this;
|
|
87
|
-
if (!contensis)
|
|
88
|
-
throw new Error("shouldnt be here");
|
|
88
|
+
if (!contensis) throw new Error("shouldnt be here");
|
|
89
89
|
if (existingRole) {
|
|
90
90
|
const [err, updated] = await contensis.roles.UpdateRole(existingRole.id, {
|
|
91
91
|
...existingRole,
|
|
@@ -109,6 +109,4 @@ class ContensisRole extends import_ContensisCliService.default {
|
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
var ContensisRoleService_default = ContensisRole;
|
|
112
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
113
|
-
0 && (module.exports = {});
|
|
114
112
|
//# sourceMappingURL=ContensisRoleService.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/services/ContensisRoleService.ts"],
|
|
4
4
|
"sourcesContent": ["import { Role } from 'contensis-management-api/lib/models';\nimport { ApiKey, MigrateRequest } from 'migratortron';\nimport to from 'await-to-js';\nimport ContensisCli from './ContensisCliService';\nimport { OutputOptionsConstructorArg } from '~/models/CliService';\nimport { Logger } from '~/util/logger';\n\nclass ContensisRole extends ContensisCli {\n constructor(\n args: string[],\n outputOpts?: OutputOptionsConstructorArg,\n contensisOpts: Partial<MigrateRequest> = {}\n ) {\n super(args, outputOpts, contensisOpts);\n }\n\n GetDeliveryApiKey = async () => {\n const { contensis, currentEnv } = this;\n\n const CMS = `https://cms-${currentEnv}.cloud.contensis.com`;\n const API = 'api/contensis-cli/settings/defaultDeliveryApiAccessToken';\n\n if (contensis) {\n const [error, bearerToken] = await to(\n contensis.content.sourceRepo.repo.BearerToken()\n );\n if (error) Logger.error(error.message);\n\n const token = fetch(`${CMS}/${API}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${bearerToken}`,\n },\n })\n .then(repsonse => repsonse.json())\n .then(({ value }) => {\n if (value) return value;\n })\n .catch(error => {\n throw new Error(error);\n });\n\n return token;\n }\n };\n\n CreateOrUpdateApiKey = async (\n existingKey: ApiKey | undefined,\n name: string,\n description: string\n ) => {\n const { contensis, currentEnv, messages } = this;\n if (!contensis) throw new Error('shouldnt be here');\n if (existingKey) {\n const [err, key] = await contensis.apiKeys.UpdateKey(existingKey.id, {\n name,\n description,\n });\n\n if (err)\n throw new Error(messages.keys.failedUpdate(currentEnv, name), {\n cause: err,\n });\n return key;\n } else {\n const [err, key] = await contensis.apiKeys.CreateKey(name, description);\n if (err)\n throw new Error(messages.keys.failedCreate(currentEnv, name), {\n cause: err,\n });\n\n return key;\n }\n };\n\n CreateOrUpdateRole = async (\n existingRole: Role | undefined,\n role: Partial<Role>\n ) => {\n const { contensis, currentEnv, messages } = this;\n if (!contensis) throw new Error('shouldnt be here');\n\n if (existingRole) {\n // TODO: check is update needed?\n const [err, updated] = await contensis.roles.UpdateRole(existingRole.id, {\n ...existingRole,\n ...role,\n });\n if (err)\n throw new Error(messages.roles.failedSet(currentEnv, role.name), {\n cause: err,\n });\n return updated;\n } else {\n const [err, created] = await contensis.roles.CreateRole(\n role as Omit<Role, 'id'>\n );\n if (err)\n throw new Error(messages.roles.failedCreate(currentEnv, role.name), {\n cause: err,\n });\n\n return created;\n }\n };\n}\nexport default ContensisRole;\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,yBAAe;AACf,iCAAyB;AAEzB,oBAAuB;AAEvB,MAAM,sBAAsB,2BAAAA,QAAa;AAAA,EACvC,YACE,MACA,YACA,gBAAyC,CAAC,GAC1C;AACA,UAAM,MAAM,YAAY,aAAa;AAAA,EACvC;AAAA,EAEA,oBAAoB,YAAY;AAC9B,UAAM,EAAE,WAAW,WAAW,IAAI;AAElC,UAAM,MAAM,eAAe,UAAU;AACrC,UAAM,MAAM;AAEZ,QAAI,WAAW;AACb,YAAM,CAAC,OAAO,WAAW,IAAI,UAAM,mBAAAC;AAAA,QACjC,UAAU,QAAQ,WAAW,KAAK,YAAY;AAAA,MAChD;AACA,UAAI,MAAO,sBAAO,MAAM,MAAM,OAAO;AAErC,YAAM,QAAQ,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI;AAAA,QACnC,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,eAAe,UAAU,WAAW;AAAA,QACtC;AAAA,MACF,CAAC,EACE,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,CAAC,EAAE,MAAM,MAAM;AACnB,YAAI,MAAO,QAAO;AAAA,MACpB,CAAC,EACA,MAAM,CAAAC,WAAS;AACd,cAAM,IAAI,MAAMA,MAAK;AAAA,MACvB,CAAC;AAEH,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,uBAAuB,OACrB,aACA,MACA,gBACG;AACH,UAAM,EAAE,WAAW,YAAY,SAAS,IAAI;AAC5C,QAAI,CAAC,UAAW,OAAM,IAAI,MAAM,kBAAkB;AAClD,QAAI,aAAa;AACf,YAAM,CAAC,KAAK,GAAG,IAAI,MAAM,UAAU,QAAQ,UAAU,YAAY,IAAI;AAAA,QACnE;AAAA,QACA;AAAA,MACF,CAAC;AAED,UAAI;AACF,cAAM,IAAI,MAAM,SAAS,KAAK,aAAa,YAAY,IAAI,GAAG;AAAA,UAC5D,OAAO;AAAA,QACT,CAAC;AACH,aAAO;AAAA,IACT,OAAO;AACL,YAAM,CAAC,KAAK,GAAG,IAAI,MAAM,UAAU,QAAQ,UAAU,MAAM,WAAW;AACtE,UAAI;AACF,cAAM,IAAI,MAAM,SAAS,KAAK,aAAa,YAAY,IAAI,GAAG;AAAA,UAC5D,OAAO;AAAA,QACT,CAAC;AAEH,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,qBAAqB,OACnB,cACA,SACG;AACH,UAAM,EAAE,WAAW,YAAY,SAAS,IAAI;AAC5C,QAAI,CAAC,UAAW,OAAM,IAAI,MAAM,kBAAkB;AAElD,QAAI,cAAc;AAEhB,YAAM,CAAC,KAAK,OAAO,IAAI,MAAM,UAAU,MAAM,WAAW,aAAa,IAAI;AAAA,QACvE,GAAG;AAAA,QACH,GAAG;AAAA,MACL,CAAC;AACD,UAAI;AACF,cAAM,IAAI,MAAM,SAAS,MAAM,UAAU,YAAY,KAAK,IAAI,GAAG;AAAA,UAC/D,OAAO;AAAA,QACT,CAAC;AACH,aAAO;AAAA,IACT,OAAO;AACL,YAAM,CAAC,KAAK,OAAO,IAAI,MAAM,UAAU,MAAM;AAAA,QAC3C;AAAA,MACF;AACA,UAAI;AACF,cAAM,IAAI,MAAM,SAAS,MAAM,aAAa,YAAY,KAAK,IAAI,GAAG;AAAA,UAClE,OAAO;AAAA,QACT,CAAC;AAEH,aAAO;AAAA,IACT;AAAA,EACF;AACF;AACA,IAAO,+BAAQ;",
|
|
6
6
|
"names": ["ContensisCli", "to", "error"]
|
|
7
7
|
}
|
package/dist/shell.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
|
));
|
|
@@ -42,17 +46,18 @@ var import_version = require("./version");
|
|
|
42
46
|
class ContensisShell {
|
|
43
47
|
currentEnvironment;
|
|
44
48
|
emptyInputCounter = 0;
|
|
49
|
+
cache;
|
|
45
50
|
env;
|
|
46
51
|
firstStart = true;
|
|
47
52
|
userId = "";
|
|
48
53
|
log = import_logger.Logger;
|
|
49
54
|
messages = import_en_GB.LogMessages;
|
|
50
55
|
refreshEnvironment = () => {
|
|
51
|
-
const {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
this.env = environments[currentEnvironment];
|
|
56
|
+
const { cache } = new import_ContensisCliService.default([]);
|
|
57
|
+
this.cache = cache;
|
|
58
|
+
this.currentEnvironment = cache.currentEnvironment || "";
|
|
59
|
+
const environments = cache.environments || {};
|
|
60
|
+
this.env = environments[this.currentEnvironment];
|
|
56
61
|
(0, import_util.Logging)("en-GB").then(({ messages, Log }) => {
|
|
57
62
|
this.log = Log;
|
|
58
63
|
this.messages = messages;
|
|
@@ -122,8 +127,7 @@ class ContensisShell {
|
|
|
122
127
|
);
|
|
123
128
|
if (token) {
|
|
124
129
|
this.userId = env.lastUserId;
|
|
125
|
-
if (!env.currentProject)
|
|
126
|
-
log.warning(messages.projects.tip());
|
|
130
|
+
if (!env.currentProject) log.warning(messages.projects.tip());
|
|
127
131
|
}
|
|
128
132
|
this.firstStart = false;
|
|
129
133
|
this.refreshEnvironment();
|
|
@@ -135,6 +139,7 @@ class ContensisShell {
|
|
|
135
139
|
await this.contensisPrompt();
|
|
136
140
|
};
|
|
137
141
|
contensisPrompt = async () => {
|
|
142
|
+
var _a;
|
|
138
143
|
const { currentEnvironment, env, log, messages, userId } = this;
|
|
139
144
|
const availableCommands = [
|
|
140
145
|
{
|
|
@@ -143,11 +148,20 @@ class ContensisShell {
|
|
|
143
148
|
}
|
|
144
149
|
},
|
|
145
150
|
"connect",
|
|
151
|
+
...Object.keys(this.cache.environments || {}).map(
|
|
152
|
+
(alias) => `connect ${alias}`
|
|
153
|
+
),
|
|
146
154
|
"list envs",
|
|
155
|
+
"remove env",
|
|
147
156
|
"quit"
|
|
148
157
|
];
|
|
149
158
|
if (currentEnvironment)
|
|
150
|
-
availableCommands.push(
|
|
159
|
+
availableCommands.push(
|
|
160
|
+
"login",
|
|
161
|
+
"list projects",
|
|
162
|
+
"set project",
|
|
163
|
+
...(((_a = this.env) == null ? void 0 : _a.projects) || []).map((project) => `set project ${project}`)
|
|
164
|
+
);
|
|
151
165
|
if (userId)
|
|
152
166
|
availableCommands.push(
|
|
153
167
|
"copy field",
|
|
@@ -190,6 +204,7 @@ class ContensisShell {
|
|
|
190
204
|
"list roles",
|
|
191
205
|
"list webhooks",
|
|
192
206
|
"list workflows",
|
|
207
|
+
"push asset",
|
|
193
208
|
"push block",
|
|
194
209
|
"remove components",
|
|
195
210
|
"remove contenttypes",
|
|
@@ -203,7 +218,8 @@ class ContensisShell {
|
|
|
203
218
|
"set role description",
|
|
204
219
|
"set role assignments",
|
|
205
220
|
"set role enabled",
|
|
206
|
-
"set role permissions"
|
|
221
|
+
"set role permissions",
|
|
222
|
+
"update field"
|
|
207
223
|
);
|
|
208
224
|
const prompt = import_inquirer.default.createPromptModule();
|
|
209
225
|
prompt.registerPrompt("command", import_inquirer_command_prompt.default);
|
|
@@ -216,8 +232,7 @@ class ContensisShell {
|
|
|
216
232
|
message: `${userId ? `${userId}@` : ""}${currentEnvironment || ""}>`,
|
|
217
233
|
context: 0,
|
|
218
234
|
validate: (val) => {
|
|
219
|
-
if (!val)
|
|
220
|
-
this.emptyInputCounter++;
|
|
235
|
+
if (!val) this.emptyInputCounter++;
|
|
221
236
|
if (this.emptyInputCounter > 1)
|
|
222
237
|
console.log(this.log.infoText(this.messages.app.suggestions()));
|
|
223
238
|
if (val) {
|
|
@@ -237,6 +252,9 @@ class ContensisShell {
|
|
|
237
252
|
const program = (0, import_commands.default)();
|
|
238
253
|
await program.parseAsync(
|
|
239
254
|
(0, import_split_cmd.split)(answers.cmd).map((e) => e.replace(/\\"/g, '"')),
|
|
255
|
+
// answers.cmd
|
|
256
|
+
// .match(/"[^"]+"|[^\s]+/g)
|
|
257
|
+
// ?.map(e => e.replace(/"(.+)"/, '$1')),
|
|
240
258
|
{
|
|
241
259
|
from: "user"
|
|
242
260
|
}
|
|
@@ -249,9 +267,8 @@ class ContensisShell {
|
|
|
249
267
|
ex,
|
|
250
268
|
`Shell ${ex instanceof Error ? ex.toString() : JSON.stringify(ex, null, 2)}`
|
|
251
269
|
);
|
|
252
|
-
} finally {
|
|
253
|
-
return this.contensisPrompt();
|
|
254
270
|
}
|
|
271
|
+
return this.contensisPrompt();
|
|
255
272
|
}
|
|
256
273
|
}).catch((err) => {
|
|
257
274
|
log.error(err.message);
|
|
@@ -280,8 +297,7 @@ const shell = () => {
|
|
|
280
297
|
restart() {
|
|
281
298
|
}
|
|
282
299
|
};
|
|
283
|
-
if (!globalShell)
|
|
284
|
-
globalShell = new ContensisShell();
|
|
300
|
+
if (!globalShell) globalShell = new ContensisShell();
|
|
285
301
|
return globalShell;
|
|
286
302
|
};
|
|
287
303
|
process.on("uncaughtException", function(err) {
|
package/dist/shell.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/shell.ts"],
|
|
4
|
-
"sourcesContent": ["import figlet from 'figlet';\nimport inquirer from 'inquirer';\nimport inquirerPrompt from 'inquirer-command-prompt';\nimport { split } from 'split-cmd';\nimport commands from './commands';\nimport { LogMessages } from './localisation/en-GB';\nimport CredentialProvider from './providers/CredentialProvider';\nimport { appRootDir } from './providers/file-provider';\nimport ContensisCli, { cliCommand } from './services/ContensisCliService';\nimport { Logging } from './util';\nimport { logError, Logger } from './util/logger';\nimport { LIB_VERSION } from './version';\n\nclass ContensisShell {\n private currentEnvironment!: string;\n private emptyInputCounter: number = 0;\n private env!: EnvironmentCache;\n private firstStart = true;\n private userId: string = '';\n private log = Logger;\n private messages = LogMessages;\n\n private refreshEnvironment = () => {\n // Reload any persisted changes from the disk cache\n const {
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import figlet from 'figlet';\nimport inquirer from 'inquirer';\nimport inquirerPrompt from 'inquirer-command-prompt';\nimport { split } from 'split-cmd';\nimport commands from './commands';\nimport { LogMessages } from './localisation/en-GB';\nimport CredentialProvider from './providers/CredentialProvider';\nimport { appRootDir } from './providers/file-provider';\nimport ContensisCli, { cliCommand } from './services/ContensisCliService';\nimport { Logging } from './util';\nimport { logError, Logger } from './util/logger';\nimport { LIB_VERSION } from './version';\n\nclass ContensisShell {\n private currentEnvironment!: string;\n private emptyInputCounter: number = 0;\n private cache!: SessionCache;\n private env!: EnvironmentCache;\n private firstStart = true;\n private userId: string = '';\n private log = Logger;\n private messages = LogMessages;\n\n private refreshEnvironment = () => {\n // Reload any persisted changes from the disk cache\n const { cache } = new ContensisCli([]);\n this.cache = cache; // read the cache to pre-load suggestions\n // console.log(`refreshing env w/${currentEnvironment}`);\n this.currentEnvironment = cache.currentEnvironment || '';\n const environments = cache.environments || {};\n this.env = environments[this.currentEnvironment];\n\n // Reload logging here to support changing language\n Logging('en-GB').then(({ messages, Log }) => {\n this.log = Log;\n this.messages = messages;\n });\n };\n\n constructor() {\n this.refreshEnvironment();\n inquirerPrompt.setConfig({\n history: {\n save: true,\n folder: appRootDir,\n limit: 100,\n blacklist: ['quit'],\n },\n });\n\n const { log, messages } = this;\n\n figlet.text(\n messages.app.contensis(),\n {\n font: 'Block',\n horizontalLayout: 'default',\n verticalLayout: 'default',\n width: process.stdout.columns,\n whitespaceBreak: true,\n },\n (err, data) => {\n if (err) {\n log.error(messages.app.unknownError());\n console.dir(err);\n return;\n }\n console.log(log.successText(data));\n console.log(log.infoText(messages.app.startup(LIB_VERSION)));\n console.log(log.helpText(messages.app.help()));\n\n this.start().catch(ex => log.error(ex));\n }\n );\n }\n\n restart = async () => {\n this.firstStart = false;\n this.log.line(); // add a line so we can see where the shell has been restarted\n await this.start();\n };\n\n start = async () => {\n this.refreshEnvironment();\n this.userId = '';\n const { currentEnvironment, env, log, messages } = this;\n\n if (env?.lastUserId) {\n const [credsErr, credentials] = await new CredentialProvider(\n {\n userId: env.lastUserId,\n alias: currentEnvironment,\n },\n env.passwordFallback\n ).Init();\n if (credsErr && !credentials.current) {\n log.error(credsErr.message);\n }\n if (credentials.current) {\n if (this.firstStart) {\n const token = await cliCommand(['login', env.lastUserId]).Login(\n env.lastUserId,\n {\n promptPassword: false,\n silent: true,\n }\n );\n if (token) {\n this.userId = env.lastUserId;\n if (!env.currentProject) log.warning(messages.projects.tip());\n }\n this.firstStart = false;\n this.refreshEnvironment();\n } else {\n this.userId = env.lastUserId;\n }\n }\n }\n await this.contensisPrompt();\n };\n\n contensisPrompt = async (): Promise<any> => {\n const { currentEnvironment, env, log, messages, userId } = this;\n\n const availableCommands = [\n {\n filter: (str: string) => {\n return str.replace(/ \\[.*$/, '');\n },\n },\n 'connect',\n ...Object.keys(this.cache.environments || {}).map(\n alias => `connect ${alias}`\n ),\n 'list envs',\n 'remove env',\n 'quit',\n ];\n\n if (currentEnvironment)\n availableCommands.push(\n 'login',\n 'list projects',\n 'set project',\n ...(this.env?.projects || []).map(project => `set project ${project}`)\n );\n if (userId)\n availableCommands.push(\n 'copy field',\n 'create key',\n 'create project',\n 'create role',\n 'diff models',\n 'execute block action release',\n 'execute block action makelive',\n 'execute block action rollback',\n 'execute block action markasbroken',\n 'get assets',\n 'get block',\n 'get block logs',\n 'get contenttype',\n 'get component',\n 'get entries',\n 'get nodes',\n 'get model',\n 'get project',\n 'get proxy',\n 'get renderer',\n 'get role',\n 'get token',\n 'get version',\n 'get webhook',\n 'get workflow',\n 'import contenttypes',\n 'import components',\n 'import entries',\n 'import models',\n 'import nodes',\n 'list blocks',\n 'list contenttypes',\n 'list components',\n 'list keys',\n 'list models',\n 'list proxies',\n 'list renderers',\n 'list roles',\n 'list webhooks',\n 'list workflows',\n 'push asset',\n 'push block',\n 'remove components',\n 'remove contenttypes',\n 'remove key',\n 'remove entries',\n 'remove nodes',\n 'remove role',\n 'set project name',\n 'set project description',\n 'set role name',\n 'set role description',\n 'set role assignments',\n 'set role enabled',\n 'set role permissions',\n 'update field'\n );\n\n const prompt = inquirer.createPromptModule();\n prompt.registerPrompt('command', inquirerPrompt);\n return prompt([\n {\n type: 'command',\n name: 'cmd',\n autoCompletion: availableCommands.sort(),\n autocompletePrompt: log.infoText(messages.app.autocomplete()),\n message: `${userId ? `${userId}@` : ''}${currentEnvironment || ''}>`,\n context: 0,\n validate: (val: string) => {\n if (!val) this.emptyInputCounter++;\n if (this.emptyInputCounter > 1)\n console.log(this.log.infoText(this.messages.app.suggestions()));\n if (val) {\n this.emptyInputCounter = 0;\n return true;\n }\n },\n prefix: `${env?.currentProject || log.infoText('contensis')}`,\n short: true,\n },\n ])\n .then(async (answers: { cmd: string }) => {\n if (answers.cmd === 'quit') {\n this.quit();\n } else {\n try {\n if (answers.cmd) {\n const program = commands();\n await program.parseAsync(\n split(answers.cmd).map(e => e.replace(/\\\\\"/g, '\"')),\n // answers.cmd\n // .match(/\"[^\"]+\"|[^\\s]+/g)\n // ?.map(e => e.replace(/\"(.+)\"/, '$1')),\n {\n from: 'user',\n }\n );\n }\n } catch (ex: any) {\n const str = ex.toString();\n if (!str.includes('CommanderError'))\n logError(\n ex,\n `Shell ${\n ex instanceof Error\n ? ex.toString()\n : JSON.stringify(ex, null, 2)\n }`\n );\n }\n return this.contensisPrompt();\n }\n })\n .catch((err: Error) => {\n log.error(err.message);\n this.quit();\n });\n };\n\n quit = (error?: Error) => {\n const { log, messages } = this;\n process.removeAllListeners('exit');\n\n if (error) {\n log.error(error.message);\n process.exit(1);\n } else {\n log.success(messages.app.quit());\n process.exitCode = 0;\n process.exit(0);\n }\n };\n}\n\nlet globalShell: ContensisShell;\n\nexport const shell = () => {\n // Return a benign function for shell().restart() when used in cli context\n // as some commands need to restart the shell to show an updated prompt\n // after successful connect / login / set project\n if (typeof process.argv?.[2] !== 'undefined')\n return {\n quit: ContensisCli.quit,\n restart() {},\n } as any;\n if (!globalShell) globalShell = new ContensisShell();\n return globalShell;\n};\n\nprocess.on('uncaughtException', function (err) {\n // Handle the error safely\n console.log(err);\n});\n\nprocess.on('SIGINT', () => {\n Logger.warning('received SIGINT');\n shell().quit();\n // setTimeout(() => {\n // }, 2000);\n});\n\nprocess.on('SIGTERM', () => {\n Logger.warning('received SIGTERM');\n shell().quit();\n});\n\nprocess.stdin.on('data', key => {\n if ((key as any) == '\\u0003') {\n console.log('');\n Logger.info(`[CTRL]+[C] detected, exiting shell...`);\n shell().quit();\n }\n});\n\n// process.env.http_proxy = 'http://127.0.0.1:8888';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ContensisCli", "inquirerPrompt", "figlet", "CredentialProvider", "inquirer", "commands"]
|
|
7
7
|
}
|
package/dist/util/api-ids.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/util/api-ids.ts"],
|
|
4
4
|
"sourcesContent": ["export const sanitiseId = (id: string) =>\n id\n .split('.')\n .map(part => toApiId(part, 'camelCase', true))\n .join('.');\n\nexport const sanitiseIds = (arr: string[]) => arr.map(sanitiseId);\n\n// borrowed from packages\\contensis\\components\\app\\src\\utils.ts\n\nexport function isApiId(id: string, mode: 'camelCase' | 'snake-case'): boolean {\n if (!id) {\n return false;\n }\n const validChars = mode === 'camelCase' ? /[^a-zA-Z0-9]/g : /[^a-z0-9-]/g;\n if (id !== id.replace(validChars, '')) {\n return false;\n }\n if (!id.substr(0, 1).replace(/[^a-z]/g, '')) {\n return false;\n }\n return true;\n}\n\nexport function toApiId(\n name: string,\n mode: 'camelCase' | 'snake-case',\n isId: boolean\n) {\n if (!name) {\n return name;\n }\n const validChars =\n mode === 'camelCase' ? /[^a-zA-Z0-9 ]/g : /[^a-zA-Z0-9 -]/g;\n let id = name.replace(validChars, '');\n id = id.replace(/-/g, ' ');\n id = id.trim();\n\n const noStart = '0123456789 '.split('');\n id = id\n .split('')\n .reduce(\n (prev, char) => (prev || !noStart.includes(char) ? prev + char : prev),\n ''\n );\n return mode === 'camelCase' ? toCamelCase(id, isId) : toSnakeCase(id);\n}\n\nfunction toSnakeCase(sentence: string): string {\n sentence = (sentence || '').trim();\n if (!sentence) {\n return sentence;\n }\n sentence = sentence.toLowerCase();\n return sentence\n .split(' ')\n .filter(w => !!w)\n .join('-');\n}\n\nfunction toCamelCase(sentence: string, isId: boolean): string {\n sentence = (sentence || '').trim();\n if (!sentence) {\n return sentence;\n }\n if (sentence.length < 2) {\n return sentence.toLowerCase();\n }\n const words = sentence.split(' ');\n if (isId && words.length === 1) {\n return words[0].substr(0, 1).toLowerCase() + words[0].substr(1);\n }\n const result = words\n .filter(w => !!w)\n .map((w, index) =>\n index === 0 ? firstWordToCamelCase(w) : wordToCamelCase(w)\n )\n .join('');\n\n return result\n .split('.')\n .map((w, index) => (index === 0 ? w : wordToCamelCase(w)))\n .join('.');\n}\n\nfunction firstWordToCamelCase(word: string) {\n return isUpperCase(word)\n ? word.toLowerCase()\n : lowerCaseInitialCapitalLettersExceptLast(word);\n}\n\nfunction wordToCamelCase(word: string) {\n return word.substr(0, 1).toUpperCase() + word.substr(1);\n}\n\nfunction lowerCaseInitialCapitalLettersExceptLast(value: string): string {\n return value.split('').reduce((prev, char, index) => {\n if (index === 0) {\n char = char.toLowerCase();\n } else if (isUpperCase(char)) {\n if (index + 1 < value.length && isUpperCase(value.charAt(index + 1))) {\n char = char.toLowerCase();\n }\n }\n return prev + char;\n }, '');\n}\n\nfunction isUpperCase(value: string): boolean {\n return value === value.toUpperCase();\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,aAAa,CAAC,OACzB,GACG,MAAM,GAAG,EACT,IAAI,UAAQ,QAAQ,MAAM,aAAa,IAAI,CAAC,EAC5C,KAAK,GAAG;AAEN,MAAM,cAAc,CAAC,QAAkB,IAAI,IAAI,UAAU;AAIzD,SAAS,QAAQ,IAAY,MAA2C;AAC7E,MAAI,CAAC,IAAI;AACP,WAAO;AAAA,EACT;AACA,QAAM,aAAa,SAAS,cAAc,kBAAkB;AAC5D,MAAI,OAAO,GAAG,QAAQ,YAAY,EAAE,GAAG;AACrC,WAAO;AAAA,EACT;AACA,MAAI,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,QAAQ,WAAW,EAAE,GAAG;AAC3C,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,QACd,MACA,MACA,MACA;AACA,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,QAAM,aACJ,SAAS,cAAc,mBAAmB;AAC5C,MAAI,KAAK,KAAK,QAAQ,YAAY,EAAE;AACpC,OAAK,GAAG,QAAQ,MAAM,GAAG;AACzB,OAAK,GAAG,KAAK;AAEb,QAAM,UAAU,cAAc,MAAM,EAAE;AACtC,OAAK,GACF,MAAM,EAAE,EACR;AAAA,IACC,CAAC,MAAM,SAAU,QAAQ,CAAC,QAAQ,SAAS,IAAI,IAAI,OAAO,OAAO;AAAA,IACjE;AAAA,EACF;AACF,SAAO,SAAS,cAAc,YAAY,IAAI,IAAI,IAAI,YAAY,EAAE;AACtE;AAEA,SAAS,YAAY,UAA0B;AAC7C,cAAY,YAAY,IAAI,KAAK;AACjC,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AACA,aAAW,SAAS,YAAY;AAChC,SAAO,SACJ,MAAM,GAAG,EACT,OAAO,OAAK,CAAC,CAAC,CAAC,EACf,KAAK,GAAG;AACb;AAEA,SAAS,YAAY,UAAkB,MAAuB;AAC5D,cAAY,YAAY,IAAI,KAAK;AACjC,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AACA,MAAI,SAAS,SAAS,GAAG;AACvB,WAAO,SAAS,YAAY;AAAA,EAC9B;AACA,QAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,MAAI,QAAQ,MAAM,WAAW,GAAG;AAC9B,WAAO,MAAM,
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
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
|
));
|
|
@@ -116,8 +120,7 @@ const printBlockVersion = ({ log, messages }, block, printOptions = {
|
|
|
116
120
|
if (printOptions.showStaticPaths) {
|
|
117
121
|
if ((_b = block.staticPaths) == null ? void 0 : _b.length) {
|
|
118
122
|
console.log(` static paths:`);
|
|
119
|
-
for (const path of block.staticPaths)
|
|
120
|
-
console.log(` - ${path}`);
|
|
123
|
+
for (const path of block.staticPaths) console.log(` - ${path}`);
|
|
121
124
|
}
|
|
122
125
|
}
|
|
123
126
|
if (block.stagingUrl)
|
|
@@ -163,8 +166,7 @@ const printEntriesMigrateResult = (service, migrateResult, {
|
|
|
163
166
|
const [targetGuid, { error, diff, status }] = Object.entries(
|
|
164
167
|
projectStatus
|
|
165
168
|
)[0];
|
|
166
|
-
if (error)
|
|
167
|
-
log.error(error);
|
|
169
|
+
if (error) log.error(error);
|
|
168
170
|
if (diff && showDiff) {
|
|
169
171
|
console.log(
|
|
170
172
|
` ${log.infoText(`diff: ${highlightDiffText(diff)}`)}
|
|
@@ -175,13 +177,14 @@ const printEntriesMigrateResult = (service, migrateResult, {
|
|
|
175
177
|
}
|
|
176
178
|
}
|
|
177
179
|
}
|
|
178
|
-
if (showAll || showChanged)
|
|
179
|
-
console.log(``);
|
|
180
|
+
if (showAll || showChanged) console.log(``);
|
|
180
181
|
for (const [projectId, contentTypeCounts] of Object.entries(
|
|
181
182
|
migrateResult.entries || {}
|
|
182
183
|
)) {
|
|
183
184
|
log.help(
|
|
184
|
-
|
|
185
|
+
action === "update" ? `update entries in project ${log.boldText(
|
|
186
|
+
log.warningText(currentProject)
|
|
187
|
+
)}` : `${action}${action === "delete" ? ` from project ${log.warningText(currentProject)}` : `${projectId ? ` from project ${log.highlightText(projectId)}` : ""} to ${log.boldText(
|
|
185
188
|
log.warningText(currentProject)
|
|
186
189
|
)}`}`
|
|
187
190
|
);
|
|
@@ -229,12 +232,10 @@ const printNodesMigrateResult = ({ log, currentProject }, migrateResult, {
|
|
|
229
232
|
isEntriesMigration = false
|
|
230
233
|
} = {}) => {
|
|
231
234
|
var _a, _b, _c;
|
|
232
|
-
if (!isEntriesMigration)
|
|
233
|
-
log.raw(``);
|
|
235
|
+
if (!isEntriesMigration) log.raw(``);
|
|
234
236
|
for (const [projectId, counts] of Object.entries(migrateResult.nodes || {})) {
|
|
235
237
|
const importTitle = action === "delete" ? `Delete from project ${log.warningText(currentProject)}` : `Import ${projectId && projectId !== "null" ? `from project ${log.highlightText(projectId)} ` : ""}to ${log.boldText(log.warningText(currentProject))}`;
|
|
236
|
-
if (!isEntriesMigration)
|
|
237
|
-
log.help(importTitle);
|
|
238
|
+
if (!isEntriesMigration) log.help(importTitle);
|
|
238
239
|
const migrateStatusAndCount = migrateResult.nodesToMigrate[currentProject];
|
|
239
240
|
const existingCount = ((_b = (_a = migrateResult.nodes) == null ? void 0 : _a[projectId]) == null ? void 0 : _b.totalCount) || 0;
|
|
240
241
|
const totalCount = Object.keys(migrateResult.nodesToMigrate.nodeIds).length;
|
|
@@ -328,10 +329,8 @@ const printModelMigrationAnalysis = ({ log, messages }, result = {}) => {
|
|
|
328
329
|
)
|
|
329
330
|
);
|
|
330
331
|
}
|
|
331
|
-
if (diffOutput)
|
|
332
|
-
|
|
333
|
-
if (errorOutput)
|
|
334
|
-
console.log(errorOutput);
|
|
332
|
+
if (diffOutput) console.log(diffOutput);
|
|
333
|
+
if (errorOutput) console.log(errorOutput);
|
|
335
334
|
}
|
|
336
335
|
};
|
|
337
336
|
const printModelMigrationResult = ({ log, messages }, result) => {
|
|
@@ -404,8 +403,7 @@ const printNodeTreeOutput = ({ log, messages }, root, logDetail = "errors", logL
|
|
|
404
403
|
for (const child of (node == null ? void 0 : node.children) || []) {
|
|
405
404
|
str += `${outputNode(child, Array(depth + 1).join(" "))}
|
|
406
405
|
`;
|
|
407
|
-
if ("children" in child)
|
|
408
|
-
str += outputChildren(child, depth + 1);
|
|
406
|
+
if ("children" in child) str += outputChildren(child, depth + 1);
|
|
409
407
|
}
|
|
410
408
|
return str;
|
|
411
409
|
};
|