alex-c-line 2.10.0 → 2.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +16 -15
- package/dist/index.js +17 -16
- package/package.json +7 -7
package/dist/index.cjs
CHANGED
|
@@ -325,14 +325,17 @@ async function getLicenseCheck(program) {
|
|
|
325
325
|
code: "LICENSE_CHECK_ERROR"
|
|
326
326
|
});
|
|
327
327
|
const licenseCheck = parseLicenseCheck(JSON.parse(stdout.trim()));
|
|
328
|
-
|
|
328
|
+
const licenseEntries = Object.entries(licenseCheck);
|
|
329
|
+
if (licenseEntries.length === 0) return "No licenses found.";
|
|
329
330
|
const licenseCheckSummaryPath = node_path.default.join(await ALEX_C_LINE_PACKAGE_ROOT, "templates", "dependencyAudit", "licenseCheck", "summary");
|
|
330
331
|
const summaryTableTemplate = await (0, node_fs_promises.readFile)(node_path.default.join(licenseCheckSummaryPath, "table.html"), "utf-8");
|
|
331
332
|
const summaryTableRowTemplate = await (0, node_fs_promises.readFile)(node_path.default.join(licenseCheckSummaryPath, "tableRow.html"), "utf-8");
|
|
332
|
-
const summary = summaryTableTemplate.replace("{{tableRows}}",
|
|
333
|
-
return
|
|
333
|
+
const summary = summaryTableTemplate.replace("{{tableRows}}", licenseEntries.toSorted((0, _alextheman_utility.sortBy)(([_, data]) => {
|
|
334
|
+
return data.length;
|
|
335
|
+
}, "desc")).map(([license, data]) => {
|
|
336
|
+
return summaryTableRowTemplate.replace("{{license}}", (0, _alextheman_utility.escapeHTML)(license)).replace("{{count}}", (0, _alextheman_utility.escapeHTML)(data.length.toString()));
|
|
334
337
|
}).join("\n"));
|
|
335
|
-
const invalidLicenses =
|
|
338
|
+
const invalidLicenses = licenseEntries.filter(([license, _]) => {
|
|
336
339
|
return !ALLOWED_LICENSES.includes(license);
|
|
337
340
|
});
|
|
338
341
|
let invalidSummary;
|
|
@@ -343,12 +346,10 @@ async function getLicenseCheck(program) {
|
|
|
343
346
|
const invalidLicensesTableRowTemplate = await (0, node_fs_promises.readFile)(node_path.default.join(invalidLicensesInvalidPath, "tableRow.html"), "utf-8");
|
|
344
347
|
const invalidLicensesListTemplate = await (0, node_fs_promises.readFile)(node_path.default.join(invalidLicensesInvalidPath, "list.html"), "utf-8");
|
|
345
348
|
const invalidLicensesListItemTemplate = await (0, node_fs_promises.readFile)(node_path.default.join(invalidLicensesInvalidPath, "listItem.html"), "utf-8");
|
|
346
|
-
invalidSummary = invalidLicensesTableTemplate.replace("{{tableRows}}",
|
|
347
|
-
return
|
|
348
|
-
}).map(([license, data]) => {
|
|
349
|
-
return invalidLicensesTableRowTemplate.replaceAll("{{license}}", license).replace("{{count}}", data.length.toString()).replace("{{dependencies}}", invalidLicensesListTemplate.replace("{{listItems}}", data.flatMap((item) => {
|
|
349
|
+
invalidSummary = invalidLicensesTableTemplate.replace("{{tableRows}}", invalidLicenses.map(([license, data]) => {
|
|
350
|
+
return invalidLicensesTableRowTemplate.replaceAll("{{license}}", (0, _alextheman_utility.escapeHTML)(license)).replace("{{count}}", (0, _alextheman_utility.escapeHTML)(data.length.toString())).replace("{{dependencies}}", invalidLicensesListTemplate.replace("{{listItems}}", data.flatMap((item) => {
|
|
350
351
|
return item.versions.map((version) => {
|
|
351
|
-
return invalidLicensesListItemTemplate.replace("{{name}}", item.name).replace("{{version}}", version);
|
|
352
|
+
return invalidLicensesListItemTemplate.replace("{{name}}", (0, _alextheman_utility.escapeHTML)(item.name)).replace("{{version}}", (0, _alextheman_utility.escapeHTML)(version));
|
|
352
353
|
});
|
|
353
354
|
}).join("")));
|
|
354
355
|
}).join("\n"));
|
|
@@ -393,7 +394,7 @@ async function getOutdatedDependencies(program) {
|
|
|
393
394
|
const tableTemplate = await (0, node_fs_promises.readFile)(node_path.default.join(outdatedTemplatesPath, "table.html"), "utf-8");
|
|
394
395
|
const tableRowTemplate = await (0, node_fs_promises.readFile)(node_path.default.join(outdatedTemplatesPath, "tableRow.html"), "utf-8");
|
|
395
396
|
return tableTemplate.replace("{{tableRows}}", Object.entries(outdatedDependencies).map(([packageName, data]) => {
|
|
396
|
-
return tableRowTemplate.replace("{{packageName}}", packageName).replace("{{currentVersion}}", data.current.toString()).replace("{{latestVersion}}", data.latest.toString()).replace("{{isDeprecated}}", data.isDeprecated ? "Yes" : "No").replace("{{dependencyGroup}}", data.dependencyType);
|
|
397
|
+
return tableRowTemplate.replace("{{packageName}}", (0, _alextheman_utility.escapeHTML)(packageName)).replace("{{currentVersion}}", (0, _alextheman_utility.escapeHTML)(data.current.toString())).replace("{{latestVersion}}", (0, _alextheman_utility.escapeHTML)(data.latest.toString())).replace("{{isDeprecated}}", data.isDeprecated ? "Yes" : "No").replace("{{dependencyGroup}}", (0, _alextheman_utility.escapeHTML)(data.dependencyType));
|
|
397
398
|
}).join("\n"));
|
|
398
399
|
}
|
|
399
400
|
//#endregion
|
|
@@ -423,8 +424,8 @@ async function getPeerCheck(program) {
|
|
|
423
424
|
if (Object.keys(peerCheck["."].bad).length === 0) return "No peer dependency issues found";
|
|
424
425
|
return peerCheckTableTemplate.replace("{{tableRows}}", Object.entries(peerCheck["."].bad).flatMap(([packageName, data]) => {
|
|
425
426
|
return data.map((item) => {
|
|
426
|
-
return peerCheckTableRowTemplate.replace("{{packageName}}", packageName).replace("{{currentVersion}}", item.foundVersion.toString()).replace("{{wantedRange}}", item.wantedRange).replace("{{parentDependencies}}", item.parents.map((parent) => {
|
|
427
|
-
return `${parent.name}@${parent.version}`;
|
|
427
|
+
return peerCheckTableRowTemplate.replace("{{packageName}}", (0, _alextheman_utility.escapeHTML)(packageName)).replace("{{currentVersion}}", (0, _alextheman_utility.escapeHTML)(item.foundVersion.toString())).replace("{{wantedRange}}", (0, _alextheman_utility.escapeHTML)(item.wantedRange)).replace("{{parentDependencies}}", item.parents.map((parent) => {
|
|
428
|
+
return `${(0, _alextheman_utility.escapeHTML)(parent.name)}@${parent.version}`;
|
|
428
429
|
}).join(", "));
|
|
429
430
|
});
|
|
430
431
|
}).join("\n"));
|
|
@@ -478,12 +479,12 @@ async function getSecurityAudit(program) {
|
|
|
478
479
|
const auditTable = tableTemplate.replace("{{tableRows}}", Object.entries(securityAudit.advisories).toSorted((0, _alextheman_utility.sortBy)(([_, advisory]) => {
|
|
479
480
|
return severityOrder[advisory.severity];
|
|
480
481
|
}, "desc")).map(([id, data]) => {
|
|
481
|
-
return tableRowTemplate.replace("{{advisoryId}}", id).replace("{{severity}}", data.severity).replace("{{packageName}}", data.module_name).replace("{{title}}", data.title).replace("{{affected}}", data.vulnerable_versions).replace("{{patched}}", data.patched_versions).replace("{{url}}", data.url);
|
|
482
|
+
return tableRowTemplate.replace("{{advisoryId}}", (0, _alextheman_utility.escapeHTML)(id)).replace("{{severity}}", (0, _alextheman_utility.escapeHTML)(data.severity)).replace("{{packageName}}", (0, _alextheman_utility.escapeHTML)(data.module_name)).replace("{{title}}", (0, _alextheman_utility.escapeHTML)(data.title)).replace("{{affected}}", (0, _alextheman_utility.escapeHTML)(data.vulnerable_versions)).replace("{{patched}}", (0, _alextheman_utility.escapeHTML)(data.patched_versions)).replace("{{url}}", (0, _alextheman_utility.escapeHTML)(data.url));
|
|
482
483
|
}).join("\n"));
|
|
483
484
|
return _alextheman_utility.normaliseIndents`
|
|
484
485
|
### Summary
|
|
485
486
|
|
|
486
|
-
${(await (0, node_fs_promises.readFile)(node_path.default.join(auditTemplatesPath, "summary.html"), "utf-8")).replace("{{info}}", securityAudit.metadata.vulnerabilities.info.toString()).replace("{{low}}", securityAudit.metadata.vulnerabilities.low.toString()).replace("{{moderate}}", securityAudit.metadata.vulnerabilities.moderate.toString()).replace("{{high}}", securityAudit.metadata.vulnerabilities.high.toString()).replace("{{critical}}", securityAudit.metadata.vulnerabilities.critical.toString())}
|
|
487
|
+
${(await (0, node_fs_promises.readFile)(node_path.default.join(auditTemplatesPath, "summary.html"), "utf-8")).replace("{{info}}", (0, _alextheman_utility.escapeHTML)(securityAudit.metadata.vulnerabilities.info.toString())).replace("{{low}}", (0, _alextheman_utility.escapeHTML)(securityAudit.metadata.vulnerabilities.low.toString())).replace("{{moderate}}", (0, _alextheman_utility.escapeHTML)(securityAudit.metadata.vulnerabilities.moderate.toString())).replace("{{high}}", (0, _alextheman_utility.escapeHTML)(securityAudit.metadata.vulnerabilities.high.toString())).replace("{{critical}}", (0, _alextheman_utility.escapeHTML)(securityAudit.metadata.vulnerabilities.critical.toString()))}
|
|
487
488
|
|
|
488
489
|
### Audit Results
|
|
489
490
|
|
|
@@ -1422,7 +1423,7 @@ function template(program) {
|
|
|
1422
1423
|
//#endregion
|
|
1423
1424
|
//#region package.json
|
|
1424
1425
|
var name = "alex-c-line";
|
|
1425
|
-
var version$1 = "2.10.
|
|
1426
|
+
var version$1 = "2.10.2";
|
|
1426
1427
|
var description = "Command-line tool with commands to streamline the developer workflow.";
|
|
1427
1428
|
//#endregion
|
|
1428
1429
|
//#region src/utility/updates/checkUpdate.ts
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import boxen from "boxen";
|
|
|
7
7
|
import figlet from "figlet";
|
|
8
8
|
import envPaths from "env-paths";
|
|
9
9
|
import path from "node:path";
|
|
10
|
-
import { ONE_DAY_IN_MILLISECONDS, VersionNumber, az, fillArray, getStringsAndInterpolations, interpolate, isTemplateStringsArray, kebabToCamel, normaliseIndents, omitProperties, parseBoolean, parseVersionType, removeDuplicates, removeUndefinedFromObject, sortBy, stringifyDotenv } from "@alextheman/utility";
|
|
10
|
+
import { ONE_DAY_IN_MILLISECONDS, VersionNumber, az, escapeHTML, fillArray, getStringsAndInterpolations, interpolate, isTemplateStringsArray, kebabToCamel, normaliseIndents, omitProperties, parseBoolean, parseVersionType, removeDuplicates, removeUndefinedFromObject, sortBy, stringifyDotenv } from "@alextheman/utility";
|
|
11
11
|
import { confirm, input, password, select } from "@inquirer/prompts";
|
|
12
12
|
import { access, mkdir, readFile, readdir, rm, stat, writeFile } from "node:fs/promises";
|
|
13
13
|
import { parse } from "dotenv";
|
|
@@ -294,14 +294,17 @@ async function getLicenseCheck(program) {
|
|
|
294
294
|
code: "LICENSE_CHECK_ERROR"
|
|
295
295
|
});
|
|
296
296
|
const licenseCheck = parseLicenseCheck(JSON.parse(stdout.trim()));
|
|
297
|
-
|
|
297
|
+
const licenseEntries = Object.entries(licenseCheck);
|
|
298
|
+
if (licenseEntries.length === 0) return "No licenses found.";
|
|
298
299
|
const licenseCheckSummaryPath = path.join(await ALEX_C_LINE_PACKAGE_ROOT, "templates", "dependencyAudit", "licenseCheck", "summary");
|
|
299
300
|
const summaryTableTemplate = await readFile(path.join(licenseCheckSummaryPath, "table.html"), "utf-8");
|
|
300
301
|
const summaryTableRowTemplate = await readFile(path.join(licenseCheckSummaryPath, "tableRow.html"), "utf-8");
|
|
301
|
-
const summary = summaryTableTemplate.replace("{{tableRows}}",
|
|
302
|
-
return
|
|
302
|
+
const summary = summaryTableTemplate.replace("{{tableRows}}", licenseEntries.toSorted(sortBy(([_, data]) => {
|
|
303
|
+
return data.length;
|
|
304
|
+
}, "desc")).map(([license, data]) => {
|
|
305
|
+
return summaryTableRowTemplate.replace("{{license}}", escapeHTML(license)).replace("{{count}}", escapeHTML(data.length.toString()));
|
|
303
306
|
}).join("\n"));
|
|
304
|
-
const invalidLicenses =
|
|
307
|
+
const invalidLicenses = licenseEntries.filter(([license, _]) => {
|
|
305
308
|
return !ALLOWED_LICENSES.includes(license);
|
|
306
309
|
});
|
|
307
310
|
let invalidSummary;
|
|
@@ -312,12 +315,10 @@ async function getLicenseCheck(program) {
|
|
|
312
315
|
const invalidLicensesTableRowTemplate = await readFile(path.join(invalidLicensesInvalidPath, "tableRow.html"), "utf-8");
|
|
313
316
|
const invalidLicensesListTemplate = await readFile(path.join(invalidLicensesInvalidPath, "list.html"), "utf-8");
|
|
314
317
|
const invalidLicensesListItemTemplate = await readFile(path.join(invalidLicensesInvalidPath, "listItem.html"), "utf-8");
|
|
315
|
-
invalidSummary = invalidLicensesTableTemplate.replace("{{tableRows}}",
|
|
316
|
-
return
|
|
317
|
-
}).map(([license, data]) => {
|
|
318
|
-
return invalidLicensesTableRowTemplate.replaceAll("{{license}}", license).replace("{{count}}", data.length.toString()).replace("{{dependencies}}", invalidLicensesListTemplate.replace("{{listItems}}", data.flatMap((item) => {
|
|
318
|
+
invalidSummary = invalidLicensesTableTemplate.replace("{{tableRows}}", invalidLicenses.map(([license, data]) => {
|
|
319
|
+
return invalidLicensesTableRowTemplate.replaceAll("{{license}}", escapeHTML(license)).replace("{{count}}", escapeHTML(data.length.toString())).replace("{{dependencies}}", invalidLicensesListTemplate.replace("{{listItems}}", data.flatMap((item) => {
|
|
319
320
|
return item.versions.map((version) => {
|
|
320
|
-
return invalidLicensesListItemTemplate.replace("{{name}}", item.name).replace("{{version}}", version);
|
|
321
|
+
return invalidLicensesListItemTemplate.replace("{{name}}", escapeHTML(item.name)).replace("{{version}}", escapeHTML(version));
|
|
321
322
|
});
|
|
322
323
|
}).join("")));
|
|
323
324
|
}).join("\n"));
|
|
@@ -362,7 +363,7 @@ async function getOutdatedDependencies(program) {
|
|
|
362
363
|
const tableTemplate = await readFile(path.join(outdatedTemplatesPath, "table.html"), "utf-8");
|
|
363
364
|
const tableRowTemplate = await readFile(path.join(outdatedTemplatesPath, "tableRow.html"), "utf-8");
|
|
364
365
|
return tableTemplate.replace("{{tableRows}}", Object.entries(outdatedDependencies).map(([packageName, data]) => {
|
|
365
|
-
return tableRowTemplate.replace("{{packageName}}", packageName).replace("{{currentVersion}}", data.current.toString()).replace("{{latestVersion}}", data.latest.toString()).replace("{{isDeprecated}}", data.isDeprecated ? "Yes" : "No").replace("{{dependencyGroup}}", data.dependencyType);
|
|
366
|
+
return tableRowTemplate.replace("{{packageName}}", escapeHTML(packageName)).replace("{{currentVersion}}", escapeHTML(data.current.toString())).replace("{{latestVersion}}", escapeHTML(data.latest.toString())).replace("{{isDeprecated}}", data.isDeprecated ? "Yes" : "No").replace("{{dependencyGroup}}", escapeHTML(data.dependencyType));
|
|
366
367
|
}).join("\n"));
|
|
367
368
|
}
|
|
368
369
|
//#endregion
|
|
@@ -392,8 +393,8 @@ async function getPeerCheck(program) {
|
|
|
392
393
|
if (Object.keys(peerCheck["."].bad).length === 0) return "No peer dependency issues found";
|
|
393
394
|
return peerCheckTableTemplate.replace("{{tableRows}}", Object.entries(peerCheck["."].bad).flatMap(([packageName, data]) => {
|
|
394
395
|
return data.map((item) => {
|
|
395
|
-
return peerCheckTableRowTemplate.replace("{{packageName}}", packageName).replace("{{currentVersion}}", item.foundVersion.toString()).replace("{{wantedRange}}", item.wantedRange).replace("{{parentDependencies}}", item.parents.map((parent) => {
|
|
396
|
-
return `${parent.name}@${parent.version}`;
|
|
396
|
+
return peerCheckTableRowTemplate.replace("{{packageName}}", escapeHTML(packageName)).replace("{{currentVersion}}", escapeHTML(item.foundVersion.toString())).replace("{{wantedRange}}", escapeHTML(item.wantedRange)).replace("{{parentDependencies}}", item.parents.map((parent) => {
|
|
397
|
+
return `${escapeHTML(parent.name)}@${parent.version}`;
|
|
397
398
|
}).join(", "));
|
|
398
399
|
});
|
|
399
400
|
}).join("\n"));
|
|
@@ -447,12 +448,12 @@ async function getSecurityAudit(program) {
|
|
|
447
448
|
const auditTable = tableTemplate.replace("{{tableRows}}", Object.entries(securityAudit.advisories).toSorted(sortBy(([_, advisory]) => {
|
|
448
449
|
return severityOrder[advisory.severity];
|
|
449
450
|
}, "desc")).map(([id, data]) => {
|
|
450
|
-
return tableRowTemplate.replace("{{advisoryId}}", id).replace("{{severity}}", data.severity).replace("{{packageName}}", data.module_name).replace("{{title}}", data.title).replace("{{affected}}", data.vulnerable_versions).replace("{{patched}}", data.patched_versions).replace("{{url}}", data.url);
|
|
451
|
+
return tableRowTemplate.replace("{{advisoryId}}", escapeHTML(id)).replace("{{severity}}", escapeHTML(data.severity)).replace("{{packageName}}", escapeHTML(data.module_name)).replace("{{title}}", escapeHTML(data.title)).replace("{{affected}}", escapeHTML(data.vulnerable_versions)).replace("{{patched}}", escapeHTML(data.patched_versions)).replace("{{url}}", escapeHTML(data.url));
|
|
451
452
|
}).join("\n"));
|
|
452
453
|
return normaliseIndents`
|
|
453
454
|
### Summary
|
|
454
455
|
|
|
455
|
-
${(await readFile(path.join(auditTemplatesPath, "summary.html"), "utf-8")).replace("{{info}}", securityAudit.metadata.vulnerabilities.info.toString()).replace("{{low}}", securityAudit.metadata.vulnerabilities.low.toString()).replace("{{moderate}}", securityAudit.metadata.vulnerabilities.moderate.toString()).replace("{{high}}", securityAudit.metadata.vulnerabilities.high.toString()).replace("{{critical}}", securityAudit.metadata.vulnerabilities.critical.toString())}
|
|
456
|
+
${(await readFile(path.join(auditTemplatesPath, "summary.html"), "utf-8")).replace("{{info}}", escapeHTML(securityAudit.metadata.vulnerabilities.info.toString())).replace("{{low}}", escapeHTML(securityAudit.metadata.vulnerabilities.low.toString())).replace("{{moderate}}", escapeHTML(securityAudit.metadata.vulnerabilities.moderate.toString())).replace("{{high}}", escapeHTML(securityAudit.metadata.vulnerabilities.high.toString())).replace("{{critical}}", escapeHTML(securityAudit.metadata.vulnerabilities.critical.toString()))}
|
|
456
457
|
|
|
457
458
|
### Audit Results
|
|
458
459
|
|
|
@@ -1391,7 +1392,7 @@ function template(program) {
|
|
|
1391
1392
|
//#endregion
|
|
1392
1393
|
//#region package.json
|
|
1393
1394
|
var name = "alex-c-line";
|
|
1394
|
-
var version$1 = "2.10.
|
|
1395
|
+
var version$1 = "2.10.2";
|
|
1395
1396
|
var description = "Command-line tool with commands to streamline the developer workflow.";
|
|
1396
1397
|
//#endregion
|
|
1397
1398
|
//#region src/utility/updates/checkUpdate.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "alex-c-line",
|
|
3
|
-
"version": "2.10.
|
|
3
|
+
"version": "2.10.2",
|
|
4
4
|
"description": "Command-line tool with commands to streamline the developer workflow.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
"templates"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@alextheman/utility": "5.
|
|
37
|
+
"@alextheman/utility": "5.22.0",
|
|
38
38
|
"@inquirer/prompts": "8.5.2",
|
|
39
|
-
"axios": "1.
|
|
39
|
+
"axios": "1.18.0",
|
|
40
40
|
"boxen": "8.0.1",
|
|
41
41
|
"chalk": "5.6.2",
|
|
42
42
|
"commander": "15.0.0",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"zod": "4.4.3"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@alextheman/eslint-plugin": "5.17.
|
|
55
|
+
"@alextheman/eslint-plugin": "5.17.1",
|
|
56
56
|
"@commander-js/extra-typings": "15.0.0",
|
|
57
57
|
"@types/eslint": "9.6.1",
|
|
58
58
|
"@types/node": "25.9.3",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"@types/update-notifier": "6.0.8",
|
|
61
61
|
"cross-env": "10.1.0",
|
|
62
62
|
"dotenv-cli": "11.0.0",
|
|
63
|
-
"eslint": "10.
|
|
63
|
+
"eslint": "10.5.0",
|
|
64
64
|
"husky": "9.1.7",
|
|
65
65
|
"markdownlint-cli2": "0.22.1",
|
|
66
66
|
"prettier": "3.8.4",
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
"ts-node": "10.9.2",
|
|
69
69
|
"tsdown": "0.22.2",
|
|
70
70
|
"typescript": "6.0.3",
|
|
71
|
-
"typescript-eslint": "8.61.
|
|
71
|
+
"typescript-eslint": "8.61.1",
|
|
72
72
|
"vite": "8.0.16",
|
|
73
|
-
"vitest": "4.1.
|
|
73
|
+
"vitest": "4.1.9"
|
|
74
74
|
},
|
|
75
75
|
"engines": {
|
|
76
76
|
"node": ">=22.3.0"
|