contensis-cli 1.0.0-beta.10 → 1.0.0-beta.100
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 +1146 -78
- package/cli.js +3 -0
- package/dist/commands/connect.js +3 -3
- package/dist/commands/connect.js.map +2 -2
- package/dist/commands/create.js +45 -10
- package/dist/commands/create.js.map +2 -2
- package/dist/commands/dev.js +71 -0
- package/dist/commands/dev.js.map +7 -0
- package/dist/commands/diff.js +57 -0
- package/dist/commands/diff.js.map +7 -0
- package/dist/commands/execute.js +103 -0
- package/dist/commands/execute.js.map +7 -0
- package/dist/commands/get.js +169 -32
- package/dist/commands/get.js.map +3 -3
- package/dist/commands/globalOptions.js +37 -12
- package/dist/commands/globalOptions.js.map +2 -2
- package/dist/commands/import.js +65 -12
- package/dist/commands/import.js.map +2 -2
- package/dist/commands/index.js +22 -2
- package/dist/commands/index.js.map +2 -2
- package/dist/commands/list.js +53 -10
- package/dist/commands/list.js.map +2 -2
- package/dist/commands/login.js +2 -2
- package/dist/commands/login.js.map +2 -2
- package/dist/commands/push.js +17 -13
- package/dist/commands/push.js.map +2 -2
- package/dist/commands/remove.js +51 -8
- package/dist/commands/remove.js.map +2 -2
- package/dist/commands/set.js +139 -12
- package/dist/commands/set.js.map +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/dist/localisation/en-GB.js +297 -49
- package/dist/localisation/en-GB.js.map +2 -2
- package/dist/mappers/ContensisCliService-to-RequestHanderSiteConfigYaml.js +56 -0
- package/dist/mappers/ContensisCliService-to-RequestHanderSiteConfigYaml.js.map +7 -0
- package/dist/mappers/DevInit-to-CIWorkflow.js +374 -0
- package/dist/mappers/DevInit-to-CIWorkflow.js.map +7 -0
- package/dist/mappers/DevInit-to-RolePermissions.js +56 -0
- package/dist/mappers/DevInit-to-RolePermissions.js.map +7 -0
- package/dist/mappers/DevRequests-to-RequestHanderSiteConfigYaml.js +56 -0
- package/dist/mappers/DevRequests-to-RequestHanderSiteConfigYaml.js.map +7 -0
- package/dist/models/CliService.d.js +17 -0
- package/dist/models/CliService.d.js.map +7 -0
- package/dist/models/DevService.d.js +17 -0
- package/dist/models/DevService.d.js.map +7 -0
- package/dist/providers/CredentialProvider.js +46 -14
- package/dist/providers/CredentialProvider.js.map +3 -3
- package/dist/providers/SessionCacheProvider.js +21 -1
- package/dist/providers/SessionCacheProvider.js.map +2 -2
- package/dist/providers/file-provider.js +12 -6
- package/dist/providers/file-provider.js.map +3 -3
- package/dist/services/ContensisCliService.js +1211 -420
- package/dist/services/ContensisCliService.js.map +3 -3
- package/dist/services/ContensisDevService.js +368 -0
- package/dist/services/ContensisDevService.js.map +7 -0
- package/dist/services/ContensisRoleService.js +114 -0
- package/dist/services/ContensisRoleService.js.map +7 -0
- package/dist/shell.js +58 -18
- package/dist/shell.js.map +3 -3
- package/dist/util/console.printer.js +171 -55
- package/dist/util/console.printer.js.map +2 -2
- package/dist/util/diff.js +116 -0
- package/dist/util/diff.js.map +7 -0
- package/dist/util/dotenv.js +57 -0
- package/dist/util/dotenv.js.map +7 -0
- package/dist/util/find.js +31 -0
- package/dist/util/find.js.map +7 -0
- package/dist/util/git.js +128 -0
- package/dist/util/git.js.map +7 -0
- package/dist/util/index.js +8 -2
- package/dist/util/index.js.map +3 -3
- package/dist/util/logger.js +90 -29
- package/dist/util/logger.js.map +3 -3
- package/dist/util/os.js +42 -0
- package/dist/util/os.js.map +7 -0
- package/dist/util/timers.js +49 -0
- package/dist/util/timers.js.map +7 -0
- package/dist/util/yaml.js +45 -0
- package/dist/util/yaml.js.map +7 -0
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/esbuild.config.js +3 -1
- package/package.json +14 -3
- package/src/commands/connect.ts +3 -2
- package/src/commands/create.ts +61 -8
- package/src/commands/dev.ts +69 -0
- package/src/commands/diff.ts +41 -0
- package/src/commands/execute.ts +117 -0
- package/src/commands/get.ts +242 -28
- package/src/commands/globalOptions.ts +42 -12
- package/src/commands/import.ts +83 -8
- package/src/commands/index.ts +22 -1
- package/src/commands/list.ts +85 -11
- package/src/commands/login.ts +2 -1
- package/src/commands/push.ts +18 -11
- package/src/commands/remove.ts +66 -4
- package/src/commands/set.ts +189 -9
- package/src/index.ts +1 -4
- package/src/localisation/en-GB.ts +428 -66
- package/src/mappers/ContensisCliService-to-RequestHanderSiteConfigYaml.ts +44 -0
- package/src/mappers/DevInit-to-CIWorkflow.ts +526 -0
- package/src/mappers/DevInit-to-RolePermissions.ts +32 -0
- package/src/mappers/DevRequests-to-RequestHanderSiteConfigYaml.ts +44 -0
- package/src/models/CliService.d.ts +36 -0
- package/src/models/DevService.d.ts +40 -0
- package/src/models/JsModules.d.ts +2 -0
- package/src/providers/CredentialProvider.ts +51 -18
- package/src/providers/SessionCacheProvider.ts +29 -2
- package/src/providers/file-provider.ts +17 -6
- package/src/services/ContensisCliService.ts +1532 -508
- package/src/services/ContensisDevService.ts +434 -0
- package/src/services/ContensisRoleService.ts +108 -0
- package/src/shell.ts +68 -18
- package/src/util/console.printer.ts +240 -78
- package/src/util/diff.ts +124 -0
- package/src/util/dotenv.ts +37 -0
- package/src/util/find.ts +8 -0
- package/src/util/git.ts +131 -0
- package/src/util/index.ts +16 -7
- package/src/util/logger.ts +145 -31
- package/src/util/os.ts +12 -0
- package/src/util/timers.ts +24 -0
- package/src/util/yaml.ts +13 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var diff_exports = {};
|
|
26
|
+
__export(diff_exports, {
|
|
27
|
+
diffFileContent: () => diffFileContent,
|
|
28
|
+
diffLogStrings: () => diffLogStrings
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(diff_exports);
|
|
31
|
+
var import_chalk = __toESM(require("chalk"));
|
|
32
|
+
var import_diff = require("diff");
|
|
33
|
+
var import_os = require("./os");
|
|
34
|
+
const diffLogStrings = (updates, previous) => {
|
|
35
|
+
const lastFewLines = previous.split("\n").slice(-10);
|
|
36
|
+
const incomingLines = updates.split("\n");
|
|
37
|
+
const incomingLineIndices = [];
|
|
38
|
+
for (const lastRenderedLine of lastFewLines) {
|
|
39
|
+
if (lastRenderedLine.length > 10)
|
|
40
|
+
incomingLineIndices.push(incomingLines.lastIndexOf(lastRenderedLine));
|
|
41
|
+
}
|
|
42
|
+
const differentFromPos = Math.max(...incomingLineIndices, 0) + 1;
|
|
43
|
+
return incomingLines.slice(differentFromPos).join("\n");
|
|
44
|
+
};
|
|
45
|
+
const diffFileContent = (existingContent, newContent) => {
|
|
46
|
+
const existingContentNormalised = (0, import_os.normaliseLineEndings)(existingContent, "\n");
|
|
47
|
+
const newContentNormalised = (0, import_os.normaliseLineEndings)(newContent, "\n");
|
|
48
|
+
const diff = (0, import_diff.diffLines)(existingContentNormalised, newContentNormalised, {
|
|
49
|
+
newlineIsToken: true
|
|
50
|
+
});
|
|
51
|
+
const diffRanges = addDiffPositionInfo(diff);
|
|
52
|
+
const output = [];
|
|
53
|
+
const lnSpaceLength = Math.max(
|
|
54
|
+
...diffRanges.map((d) => d.startLineNumber.toString().length),
|
|
55
|
+
0
|
|
56
|
+
);
|
|
57
|
+
const lnSpaces = Array(lnSpaceLength).join(" ");
|
|
58
|
+
let needsNewLine = false;
|
|
59
|
+
for (let i = 0; i < diffRanges.length; i++) {
|
|
60
|
+
const part = diffRanges[i];
|
|
61
|
+
if (part.added || part.removed) {
|
|
62
|
+
const colour = part.added ? "green" : part.removed ? "red" : "grey";
|
|
63
|
+
if (part.value !== "\n") {
|
|
64
|
+
if (needsNewLine) {
|
|
65
|
+
output.push("\n### --");
|
|
66
|
+
needsNewLine = false;
|
|
67
|
+
}
|
|
68
|
+
output.push(
|
|
69
|
+
`
|
|
70
|
+
${part.value.split("\n").map(
|
|
71
|
+
(ln, idx) => ln.trim() !== "" ? `${part.startLineNumber ? part.startLineNumber + idx : lnSpaces}${part.added ? "+" : part.removed ? "-" : " "} ${import_chalk.default[colour](`${ln}`)}` : ln
|
|
72
|
+
).join("\n")}`
|
|
73
|
+
);
|
|
74
|
+
} else
|
|
75
|
+
needsNewLine = true;
|
|
76
|
+
} else
|
|
77
|
+
needsNewLine = true;
|
|
78
|
+
}
|
|
79
|
+
return output.join("");
|
|
80
|
+
};
|
|
81
|
+
const addDiffPositionInfo = (diff) => {
|
|
82
|
+
const diffRanges = [];
|
|
83
|
+
let lineNumber = 0;
|
|
84
|
+
let column = 0;
|
|
85
|
+
for (let partIndex = 0; partIndex < diff.length; partIndex++) {
|
|
86
|
+
const part = diff[partIndex];
|
|
87
|
+
const startLineNumber = lineNumber;
|
|
88
|
+
const startColumn = column;
|
|
89
|
+
const substring = part.value;
|
|
90
|
+
const lines = substring.split("\n");
|
|
91
|
+
lines.forEach((line, lineIndex) => {
|
|
92
|
+
if (lineIndex === 0) {
|
|
93
|
+
column += line.length;
|
|
94
|
+
} else if (lineIndex > 0) {
|
|
95
|
+
lineNumber += 1;
|
|
96
|
+
column = line.length;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
if (part.added === true || part.removed === true) {
|
|
100
|
+
diffRanges.push({
|
|
101
|
+
startLineNumber: startLineNumber + 1,
|
|
102
|
+
startColumn,
|
|
103
|
+
endLineNumber: lineNumber,
|
|
104
|
+
endColumn: column,
|
|
105
|
+
...part
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return diffRanges;
|
|
110
|
+
};
|
|
111
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
112
|
+
0 && (module.exports = {
|
|
113
|
+
diffFileContent,
|
|
114
|
+
diffLogStrings
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/util/diff.ts"],
|
|
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('');\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;AACvB;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;",
|
|
6
|
+
"names": ["chalk"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 dotenv_exports = {};
|
|
20
|
+
__export(dotenv_exports, {
|
|
21
|
+
mergeDotEnvFileContents: () => mergeDotEnvFileContents
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(dotenv_exports);
|
|
24
|
+
const mergeDotEnvFileContents = (existingFileLines, envContentsToAdd) => {
|
|
25
|
+
const envFileLines = [];
|
|
26
|
+
if (existingFileLines.length === 0) {
|
|
27
|
+
envFileLines.push(
|
|
28
|
+
...Object.entries(envContentsToAdd).map(([k, v]) => `${k}=${v}`)
|
|
29
|
+
);
|
|
30
|
+
} else {
|
|
31
|
+
const updatedEnvKeys = [];
|
|
32
|
+
for (const ln of existingFileLines) {
|
|
33
|
+
let newline = "";
|
|
34
|
+
for (const [k, v] of Object.entries(envContentsToAdd))
|
|
35
|
+
if (ln.startsWith(`${k}=`)) {
|
|
36
|
+
newline = `${k}=${v}`;
|
|
37
|
+
updatedEnvKeys.push(k);
|
|
38
|
+
}
|
|
39
|
+
if (newline || ln)
|
|
40
|
+
envFileLines.push(newline || ln);
|
|
41
|
+
}
|
|
42
|
+
for (const addKey of Object.keys(envContentsToAdd).filter(
|
|
43
|
+
(efl) => !updatedEnvKeys.find((uek) => {
|
|
44
|
+
var _a;
|
|
45
|
+
return uek.startsWith(`${(_a = efl.split("=")) == null ? void 0 : _a[0]}`);
|
|
46
|
+
})
|
|
47
|
+
)) {
|
|
48
|
+
envFileLines.push(`${addKey}=${envContentsToAdd[addKey]}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return envFileLines;
|
|
52
|
+
};
|
|
53
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
54
|
+
0 && (module.exports = {
|
|
55
|
+
mergeDotEnvFileContents
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=dotenv.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/util/dotenv.ts"],
|
|
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;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
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 find_exports = {};
|
|
20
|
+
__export(find_exports, {
|
|
21
|
+
findByIdOrName: () => findByIdOrName
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(find_exports);
|
|
24
|
+
const findByIdOrName = (arr, idOrName, exact = false) => arr.find(
|
|
25
|
+
(r) => r.id === idOrName || r.name.toLowerCase() === idOrName.toLowerCase()
|
|
26
|
+
) || !exact && arr.find((r) => r.name.toLowerCase().includes(idOrName.toLowerCase()));
|
|
27
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
28
|
+
0 && (module.exports = {
|
|
29
|
+
findByIdOrName
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=find.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/util/find.ts"],
|
|
4
|
+
"sourcesContent": ["export const findByIdOrName = (arr: any[], idOrName: string, exact = false) =>\n arr.find(\n r =>\n r.id === idOrName ||\n r.name.toLowerCase() === idOrName.toLowerCase()\n ) ||\n (!exact &&\n arr.find(r => r.name.toLowerCase().includes(idOrName.toLowerCase())));\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,iBAAiB,CAAC,KAAY,UAAkB,QAAQ,UACnE,IAAI;AAAA,EACF,OACE,EAAE,OAAO,YACT,EAAE,KAAK,YAAY,MAAM,SAAS,YAAY;AAClD,KACC,CAAC,SACA,IAAI,KAAK,OAAK,EAAE,KAAK,YAAY,EAAE,SAAS,SAAS,YAAY,CAAC,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/util/git.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var git_exports = {};
|
|
26
|
+
__export(git_exports, {
|
|
27
|
+
GitHelper: () => GitHelper
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(git_exports);
|
|
30
|
+
var import_giturl = __toESM(require("giturl"));
|
|
31
|
+
var import_hosted_git_info = __toESM(require("hosted-git-info"));
|
|
32
|
+
var import_parse_git_config = __toESM(require("parse-git-config"));
|
|
33
|
+
var import_path = __toESM(require("path"));
|
|
34
|
+
var import_os = require("./os");
|
|
35
|
+
var import_file_provider = require("../providers/file-provider");
|
|
36
|
+
const GITLAB_CI_FILENAME = ".gitlab-ci.yml";
|
|
37
|
+
class GitHelper {
|
|
38
|
+
gitRepoPath;
|
|
39
|
+
ciFile;
|
|
40
|
+
config = {};
|
|
41
|
+
info;
|
|
42
|
+
home;
|
|
43
|
+
set ciFileName(fileName) {
|
|
44
|
+
this.ciFile = fileName;
|
|
45
|
+
}
|
|
46
|
+
get ciFileName() {
|
|
47
|
+
var _a;
|
|
48
|
+
return this.ciFile || (this.workflows ? this.type === "github" ? this.workflows.length > 1 ? "[multiple workflows]" : (_a = this.workflows) == null ? void 0 : _a[0] : GITLAB_CI_FILENAME : "[unknown]");
|
|
49
|
+
}
|
|
50
|
+
get ciFilePath() {
|
|
51
|
+
return `${this.gitRepoPath}/${this.ciFileName}`;
|
|
52
|
+
}
|
|
53
|
+
get name() {
|
|
54
|
+
var _a, _b;
|
|
55
|
+
return ((_a = this.info) == null ? void 0 : _a.project) || ((_b = this.home) == null ? void 0 : _b.split("/").pop()) || "[set arg --name]";
|
|
56
|
+
}
|
|
57
|
+
get originUrl() {
|
|
58
|
+
return this.config.remote.origin.url;
|
|
59
|
+
}
|
|
60
|
+
get secretsUri() {
|
|
61
|
+
return `${this.type === "github" ? `${this.home}/settings/secrets/actions` : `${this.home}/-/settings/ci_cd`}`;
|
|
62
|
+
}
|
|
63
|
+
get type() {
|
|
64
|
+
var _a;
|
|
65
|
+
return ((_a = this.info) == null ? void 0 : _a.type) || this.hostType();
|
|
66
|
+
}
|
|
67
|
+
get workflows() {
|
|
68
|
+
return this.type === "github" ? this.githubWorkflows() : this.gitlabWorkflow();
|
|
69
|
+
}
|
|
70
|
+
constructor(gitRepoPath = process.cwd()) {
|
|
71
|
+
this.gitRepoPath = gitRepoPath;
|
|
72
|
+
this.config = this.gitConfig();
|
|
73
|
+
this.home = import_giturl.default.parse(this.originUrl);
|
|
74
|
+
this.info = this.gitInfo();
|
|
75
|
+
}
|
|
76
|
+
gitcwd = () => import_path.default.join(this.gitRepoPath);
|
|
77
|
+
gitInfo = (url = this.originUrl) => import_hosted_git_info.default.fromUrl(url);
|
|
78
|
+
hostType = (url = this.originUrl) => {
|
|
79
|
+
if (url.includes("github.com"))
|
|
80
|
+
return "github";
|
|
81
|
+
return "gitlab";
|
|
82
|
+
};
|
|
83
|
+
gitConfig = (cwd = this.gitRepoPath) => {
|
|
84
|
+
const config = import_parse_git_config.default.sync({
|
|
85
|
+
path: ".git/config",
|
|
86
|
+
expandKeys: true
|
|
87
|
+
});
|
|
88
|
+
if (Object.keys(config || {}).length)
|
|
89
|
+
return config;
|
|
90
|
+
const pathParts = (0, import_os.linuxSlash)(cwd).split("/");
|
|
91
|
+
for (let i = 1; i <= pathParts.length; i++) {
|
|
92
|
+
const relPath = `${Array(i).fill("..").join("/")}/.git/config`;
|
|
93
|
+
const config2 = import_parse_git_config.default.sync({
|
|
94
|
+
path: relPath,
|
|
95
|
+
expandKeys: true
|
|
96
|
+
});
|
|
97
|
+
if (Object.keys(config2 || {}).length) {
|
|
98
|
+
this.gitRepoPath = import_path.default.join(
|
|
99
|
+
this.gitRepoPath,
|
|
100
|
+
Array(i).fill("..").join("/")
|
|
101
|
+
);
|
|
102
|
+
return config2;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return config;
|
|
106
|
+
};
|
|
107
|
+
githubWorkflows = () => {
|
|
108
|
+
const workflowPath = import_path.default.join(this.gitcwd(), ".github/workflows");
|
|
109
|
+
const workflowFiles = (0, import_file_provider.readFiles)(workflowPath, false);
|
|
110
|
+
const addFolderSuffix = (files) => files.map((f) => `.github/workflows/${f}`);
|
|
111
|
+
if (workflowFiles.some((f) => f.includes("build"))) {
|
|
112
|
+
return addFolderSuffix(workflowFiles.filter((f) => f.includes("build")));
|
|
113
|
+
} else {
|
|
114
|
+
return addFolderSuffix(workflowFiles);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
gitlabWorkflow = (ciFileName = GITLAB_CI_FILENAME) => {
|
|
118
|
+
const workflowPath = this.gitcwd();
|
|
119
|
+
const workflowFilePath = import_path.default.join(workflowPath, ciFileName);
|
|
120
|
+
const workflowFile = (0, import_file_provider.readFile)(workflowFilePath);
|
|
121
|
+
return workflowFile;
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
125
|
+
0 && (module.exports = {
|
|
126
|
+
GitHelper
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/util/git.ts"],
|
|
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';\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 return this.config.remote.origin.url;\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 => {\n if (url.includes('github.com')) return 'github';\n return 'gitlab';\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 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}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["giturl", "path", "hostedGitInfo", "parseGitConfig", "config"]
|
|
7
|
+
}
|
package/dist/util/index.js
CHANGED
|
@@ -28,6 +28,7 @@ __export(util_exports, {
|
|
|
28
28
|
isJson: () => isJson,
|
|
29
29
|
isPassword: () => isPassword,
|
|
30
30
|
isSharedSecret: () => isSharedSecret,
|
|
31
|
+
isSysError: () => isSysError,
|
|
31
32
|
isUuid: () => isUuid,
|
|
32
33
|
tryParse: () => tryParse,
|
|
33
34
|
tryStringify: () => tryStringify,
|
|
@@ -36,6 +37,7 @@ __export(util_exports, {
|
|
|
36
37
|
module.exports = __toCommonJS(util_exports);
|
|
37
38
|
var import_mergeWith = __toESM(require("lodash/mergeWith"));
|
|
38
39
|
var import_logger = require("./logger");
|
|
40
|
+
var import_en_GB = require("../localisation/en-GB.js");
|
|
39
41
|
const isSharedSecret = (str = "") => str.length > 80 && str.split("-").length === 3 ? str : void 0;
|
|
40
42
|
const isPassword = (str = "") => !isSharedSecret(str) ? str : void 0;
|
|
41
43
|
const tryParse = (str) => {
|
|
@@ -53,6 +55,7 @@ const tryStringify = (obj) => {
|
|
|
53
55
|
return obj;
|
|
54
56
|
}
|
|
55
57
|
};
|
|
58
|
+
const isSysError = (error) => (error == null ? void 0 : error.message) !== void 0 && error.stack;
|
|
56
59
|
const isUuid = (str) => {
|
|
57
60
|
const regexExp = /^[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;
|
|
58
61
|
return regexExp.test(str);
|
|
@@ -69,8 +72,10 @@ const url = (alias, project) => {
|
|
|
69
72
|
};
|
|
70
73
|
};
|
|
71
74
|
const Logging = async (language = "en-GB") => {
|
|
72
|
-
const
|
|
73
|
-
|
|
75
|
+
const defaultMessages = import_en_GB.LogMessages;
|
|
76
|
+
let localisedMessages = defaultMessages;
|
|
77
|
+
if (language === "en-GB") {
|
|
78
|
+
}
|
|
74
79
|
return {
|
|
75
80
|
messages: (0, import_mergeWith.default)(
|
|
76
81
|
localisedMessages,
|
|
@@ -86,6 +91,7 @@ const Logging = async (language = "en-GB") => {
|
|
|
86
91
|
isJson,
|
|
87
92
|
isPassword,
|
|
88
93
|
isSharedSecret,
|
|
94
|
+
isSysError,
|
|
89
95
|
isUuid,
|
|
90
96
|
tryParse,
|
|
91
97
|
tryStringify,
|
package/dist/util/index.js.map
CHANGED
|
@@ -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';\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:
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAsB;AACtB,oBAAuB;
|
|
6
|
-
"names": ["mergeWith"]
|
|
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;",
|
|
6
|
+
"names": ["enGB", "mergeWith"]
|
|
7
7
|
}
|
package/dist/util/logger.js
CHANGED
|
@@ -32,7 +32,7 @@ module.exports = __toCommonJS(logger_exports);
|
|
|
32
32
|
var import_chalk = __toESM(require("chalk"));
|
|
33
33
|
var import_dateformat = __toESM(require("dateformat"));
|
|
34
34
|
var import_deep_cleaner = __toESM(require("deep-cleaner"));
|
|
35
|
-
var
|
|
35
|
+
var import_printable_characters = require("printable-characters");
|
|
36
36
|
var import__ = require(".");
|
|
37
37
|
class Logger {
|
|
38
38
|
static isUserTerminal = !!process.stdout.columns;
|
|
@@ -53,13 +53,14 @@ class Logger {
|
|
|
53
53
|
)} ${content}`;
|
|
54
54
|
console.log(message);
|
|
55
55
|
};
|
|
56
|
-
static error = (content, err) => {
|
|
56
|
+
static error = (content, err, newline = "\n") => {
|
|
57
57
|
const message = `${Logger.getPrefix()} ${Logger.errorText(
|
|
58
58
|
`${Logger.isUserTerminal ? "\u274C" : "[ERROR]"} ${content}${err ? `
|
|
59
59
|
|
|
60
|
-
${
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
${Logger.infoText(
|
|
61
|
+
(0, import__.isSysError)(err) ? err.toString() : JSON.stringify(err, null, 2)
|
|
62
|
+
)}` : ""}`
|
|
63
|
+
)}${newline}`;
|
|
63
64
|
if (progress.active)
|
|
64
65
|
progress.current.interrupt(message);
|
|
65
66
|
else
|
|
@@ -110,39 +111,86 @@ ${Logger.standardText(content)}`;
|
|
|
110
111
|
console.log(message);
|
|
111
112
|
progress.current.interrupt(message);
|
|
112
113
|
};
|
|
114
|
+
static debug = (content) => {
|
|
115
|
+
if (["true", "1"].includes(process.env.debug || "")) {
|
|
116
|
+
const message = `${Logger.getPrefix()} ${Logger.isUserTerminal ? import_chalk.default.bgGrey(" \u2699 ") : "[DEBUG]"} ${Logger.infoText(content)}`;
|
|
117
|
+
if (progress.active)
|
|
118
|
+
progress.current.interrupt(message);
|
|
119
|
+
else
|
|
120
|
+
console.log(message);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
113
123
|
static json = (content, depth = 9) => console.dir((0, import_deep_cleaner.default)(content), { colors: true, depth });
|
|
114
124
|
static mixed = (contentArray) => console.log(`${Logger.getPrefix()} ${contentArray.join(" ")}`);
|
|
115
125
|
static line = () => Logger.raw(` ${Logger.infoText(`-------------------------------------`)}`);
|
|
116
126
|
static object = (content) => {
|
|
117
|
-
var _a, _b;
|
|
118
|
-
for (const [key, value] of Object.entries(content)) {
|
|
127
|
+
var _a, _b, _c, _d, _e, _f;
|
|
128
|
+
for (const [key, value] of Object.entries(content || {})) {
|
|
119
129
|
if (value && typeof value === "object") {
|
|
120
130
|
Logger.raw(` ${import_chalk.default.bold.grey(key)}:`);
|
|
121
131
|
if (key === "fields" && Array.isArray(value)) {
|
|
122
132
|
for (const field of value || []) {
|
|
123
133
|
Logger.raw(
|
|
124
|
-
` ${import_chalk.default.bold(field.id)}: ${import_chalk.default.grey(
|
|
134
|
+
` ${import_chalk.default.bold(field.id)}${field.id === content.entryTitleField ? "**" : ((_a = field.validations.minCount) == null ? void 0 : _a.value) || typeof ((_b = field.validations.required) == null ? void 0 : _b.message) !== "undefined" ? "*" : ""}: ${import_chalk.default.grey(
|
|
135
|
+
`${field.dataType}${field.dataFormat ? `<${Array.isArray(
|
|
136
|
+
(_c = field.validations.allowedFieldTypes) == null ? void 0 : _c.fields
|
|
137
|
+
) ? `composer[${field.validations.allowedFieldTypes.fields.map((f) => f.id).join(" | ")}]` : field.dataFormat}${field.dataFormat === "entry" ? `, ${field.validations.allowedContentTypes.contentTypes.join(
|
|
138
|
+
" | "
|
|
139
|
+
)}` : ""}>` : ""}${((_d = field.validations.maxLength) == null ? void 0 : _d.value) ? `(${field.validations.maxLength.value})` : ""}`
|
|
140
|
+
)}`
|
|
125
141
|
);
|
|
126
142
|
}
|
|
127
143
|
} else if (key === "groups" && Array.isArray(value)) {
|
|
128
144
|
for (const group of value || []) {
|
|
129
|
-
const description = Object.keys(group.description).length && ((
|
|
145
|
+
const description = Object.keys(group.description).length && ((_e = Object.values(group.description)) == null ? void 0 : _e[0]);
|
|
130
146
|
Logger.raw(
|
|
131
|
-
` ${import_chalk.default.bold(group.id)}${description ? `: ${import_chalk.default.grey((
|
|
147
|
+
` ${import_chalk.default.bold(group.id)}${description ? `: ${import_chalk.default.grey((_f = Object.values(group.description)) == null ? void 0 : _f[0])}` : ""}`
|
|
132
148
|
);
|
|
133
149
|
}
|
|
134
150
|
} else {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
151
|
+
Logger.objectRecurse(value, 3, " ");
|
|
152
|
+
}
|
|
153
|
+
} else if (typeof value !== "undefined" && value !== null) {
|
|
154
|
+
const valueText = key === "id" && typeof value === "string" ? Logger.highlightText(value) : value;
|
|
155
|
+
Logger.raw(` ${import_chalk.default.bold.grey(key)}: ${valueText}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
static objectRecurse = (content, depth = 3, indent = "") => {
|
|
160
|
+
if (Array.isArray(content)) {
|
|
161
|
+
for (const item of content) {
|
|
162
|
+
if (item && typeof item === "object") {
|
|
163
|
+
if (Array.isArray(item) && depth > 3)
|
|
164
|
+
Logger.raw(import_chalk.default.grey(`${indent} [${item.join(", ")}]`));
|
|
165
|
+
else
|
|
166
|
+
Logger.objectRecurse(item, depth + 1, `${indent} `);
|
|
167
|
+
} else
|
|
168
|
+
Logger.raw(`${indent}${item}`);
|
|
169
|
+
}
|
|
170
|
+
} else {
|
|
171
|
+
let pos = 0;
|
|
172
|
+
for (const [key, value] of Object.entries(content)) {
|
|
173
|
+
const thisIndent = pos === 0 ? `${indent.substring(0, indent.length - 2)}- ` : indent;
|
|
174
|
+
if (Array.isArray(value)) {
|
|
175
|
+
if (value.length)
|
|
176
|
+
Logger.raw(`${thisIndent}${import_chalk.default.bold.grey(key)}:`);
|
|
177
|
+
for (const item of value) {
|
|
178
|
+
if (item && typeof item === "object") {
|
|
179
|
+
if (Array.isArray(item) && depth > 3)
|
|
180
|
+
Logger.raw(import_chalk.default.grey(`${indent} [${item.join(", ")}]`));
|
|
181
|
+
else
|
|
182
|
+
Logger.objectRecurse(item, depth + 1, `${indent} `);
|
|
183
|
+
} else {
|
|
184
|
+
Logger.raw(`${indent} ${item}`);
|
|
141
185
|
}
|
|
142
186
|
}
|
|
187
|
+
} else if (value && typeof value === "object") {
|
|
188
|
+
Logger.raw(`${indent}${import_chalk.default.bold.grey(key)}:`);
|
|
189
|
+
Logger.objectRecurse(value, depth + 1, `${indent} `);
|
|
190
|
+
} else if (typeof value !== "undefined" && value !== null) {
|
|
191
|
+
Logger.raw(`${thisIndent}${import_chalk.default.bold.grey(key)}: ${value}`);
|
|
143
192
|
}
|
|
144
|
-
|
|
145
|
-
Logger.raw(` ${import_chalk.default.bold.grey(key)}: ${value}`);
|
|
193
|
+
pos++;
|
|
146
194
|
}
|
|
147
195
|
}
|
|
148
196
|
};
|
|
@@ -152,28 +200,41 @@ ${Logger.standardText(content)}`;
|
|
|
152
200
|
else
|
|
153
201
|
console.log(content);
|
|
154
202
|
};
|
|
203
|
+
static limits = (content, displayLength = 30) => {
|
|
204
|
+
const consoleWidth = process.stdout.columns;
|
|
205
|
+
console.info(
|
|
206
|
+
consoleWidth ? content.split("\n").slice(0, consoleWidth ? displayLength : void 0).map(
|
|
207
|
+
(line) => consoleWidth && (0, import_printable_characters.strlen)(line) > consoleWidth ? (0, import_printable_characters.first)(line, consoleWidth) : line
|
|
208
|
+
).join("\n") : content.replace(import_printable_characters.ansiEscapeCodes, "")
|
|
209
|
+
);
|
|
210
|
+
const tableArray = content.split("\n");
|
|
211
|
+
if (consoleWidth && tableArray.length > displayLength)
|
|
212
|
+
console.info(`
|
|
213
|
+
`, `- and ${tableArray.length - displayLength} more...`);
|
|
214
|
+
};
|
|
155
215
|
}
|
|
156
216
|
const logError = (err = new Error("Undefined error"), msg, level = "error") => {
|
|
157
217
|
var _a;
|
|
158
218
|
Logger[level](msg || err.message || ((_a = err == null ? void 0 : err.data) == null ? void 0 : _a.message) || err.Message);
|
|
159
219
|
(Array.isArray(err) ? err : [err]).map((error) => {
|
|
220
|
+
if (typeof error === "string") {
|
|
221
|
+
Logger.raw(`${Logger.infoText(error)}
|
|
222
|
+
`);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
160
225
|
if ("stack" in error)
|
|
161
|
-
Logger.raw(` ${Logger.infoText(error.stack)}
|
|
226
|
+
Logger.raw(` ${Logger.infoText(error.stack)}
|
|
227
|
+
`);
|
|
162
228
|
if ("data" in error)
|
|
163
|
-
Logger.raw(` ${Logger.infoText((0, import__.tryStringify)(error.data))}
|
|
229
|
+
Logger.raw(` ${Logger.infoText((0, import__.tryStringify)(error.data))}
|
|
230
|
+
`);
|
|
164
231
|
});
|
|
165
232
|
return null;
|
|
166
233
|
};
|
|
167
234
|
const progress = {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
current: new import_progress.default(`:bar`, {
|
|
172
|
-
complete: "=",
|
|
173
|
-
incomplete: " ",
|
|
174
|
-
width: 20,
|
|
175
|
-
total: 100
|
|
176
|
-
})
|
|
235
|
+
current: { interrupt: (x) => {
|
|
236
|
+
} },
|
|
237
|
+
active: false
|
|
177
238
|
};
|
|
178
239
|
// Annotate the CommonJS export names for ESM import in node:
|
|
179
240
|
0 && (module.exports = {
|