alex-c-line 1.31.0 → 1.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +48 -2
- package/dist/index.js +49 -3
- package/package.json +11 -8
package/dist/index.cjs
CHANGED
|
@@ -59,6 +59,7 @@ let _alextheman_utility_node = require("@alextheman/utility/node");
|
|
|
59
59
|
let supports_color = require("supports-color");
|
|
60
60
|
supports_color = __toESM(supports_color);
|
|
61
61
|
let node_crypto = require("node:crypto");
|
|
62
|
+
let semver = require("semver");
|
|
62
63
|
|
|
63
64
|
//#region src/utility/miscellaneous/asciiToPng.ts
|
|
64
65
|
async function asciiToPng(ascii, options) {
|
|
@@ -1316,7 +1317,7 @@ function parseZodSchemaForProgram(programError, schema, data) {
|
|
|
1316
1317
|
//#endregion
|
|
1317
1318
|
//#region package.json
|
|
1318
1319
|
var name = "alex-c-line";
|
|
1319
|
-
var version = "1.
|
|
1320
|
+
var version = "1.32.0";
|
|
1320
1321
|
var description = "Command-line tool with commands to streamline the developer workflow.";
|
|
1321
1322
|
|
|
1322
1323
|
//#endregion
|
|
@@ -1619,6 +1620,50 @@ function incrementVersion(program) {
|
|
|
1619
1620
|
});
|
|
1620
1621
|
}
|
|
1621
1622
|
|
|
1623
|
+
//#endregion
|
|
1624
|
+
//#region src/utility/constants/successPrefix.ts
|
|
1625
|
+
const successPrefix = chalk.default.green("✓");
|
|
1626
|
+
|
|
1627
|
+
//#endregion
|
|
1628
|
+
//#region src/cli/commands/package-json/noPreReleaseDependencies.ts
|
|
1629
|
+
function isPreRelease(dependencyVersionRange) {
|
|
1630
|
+
const minimumFromRange = (0, semver.minVersion)(dependencyVersionRange);
|
|
1631
|
+
return minimumFromRange !== null && (0, semver.prerelease)(minimumFromRange) !== null;
|
|
1632
|
+
}
|
|
1633
|
+
async function noPreReleaseDependencies(program) {
|
|
1634
|
+
const packageJson = await (0, _alextheman_utility_internal.getPackageJsonContents)(process.cwd());
|
|
1635
|
+
if (packageJson === null) throw (0, _alextheman_utility_internal.packageJsonNotFoundError)(process.cwd());
|
|
1636
|
+
const dependencies = (0, _alextheman_utility_internal.getDependenciesFromGroup)(packageJson, "dependencies");
|
|
1637
|
+
const devDependencies = (0, _alextheman_utility_internal.getDependenciesFromGroup)(packageJson, "devDependencies");
|
|
1638
|
+
const preReleaseDependencies = {};
|
|
1639
|
+
const preReleaseDevDependencies = {};
|
|
1640
|
+
for (const [dependencyName, dependencyVersionRange] of Object.entries(dependencies)) if (isPreRelease(dependencyVersionRange)) preReleaseDependencies[dependencyName] = dependencyVersionRange;
|
|
1641
|
+
for (const [dependencyName, dependencyVersionRange] of Object.entries(devDependencies)) if (isPreRelease(dependencyVersionRange)) preReleaseDevDependencies[dependencyName] = dependencyVersionRange;
|
|
1642
|
+
if (Object.keys(preReleaseDependencies).length !== 0 || Object.keys(preReleaseDevDependencies).length !== 0) program.error(_alextheman_utility.normaliseIndents`
|
|
1643
|
+
${errorPrefix}: Pre-release version pinning is not allowed. Found the following violations:
|
|
1644
|
+
|
|
1645
|
+
${JSON.stringify({
|
|
1646
|
+
dependencies: preReleaseDependencies,
|
|
1647
|
+
devDependencies: preReleaseDevDependencies
|
|
1648
|
+
}, null, 2)}
|
|
1649
|
+
`, {
|
|
1650
|
+
exitCode: 2,
|
|
1651
|
+
code: "UNEXPECTED_PRE_RELEASE_VERSION"
|
|
1652
|
+
});
|
|
1653
|
+
console.info(`${successPrefix} No pre-release versions found!`);
|
|
1654
|
+
}
|
|
1655
|
+
|
|
1656
|
+
//#endregion
|
|
1657
|
+
//#region src/cli/commands/package-json/index.ts
|
|
1658
|
+
const RuleName = { NO_PRE_RELEASE_DEPENDENCIES: "no-pre-release-dependencies" };
|
|
1659
|
+
function packageJson(program) {
|
|
1660
|
+
program.command("package-json").description("Run checks on your package.json file").argument("[ruleName]", "The name of the rule to check", (rawRuleName) => {
|
|
1661
|
+
return (0, _alextheman_utility.parseZodSchema)(zod.default.enum(RuleName), rawRuleName);
|
|
1662
|
+
}).action(async (ruleName) => {
|
|
1663
|
+
if (ruleName === "no-pre-release-dependencies") return await noPreReleaseDependencies(program);
|
|
1664
|
+
});
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1622
1667
|
//#endregion
|
|
1623
1668
|
//#region src/cli/commands/index.ts
|
|
1624
1669
|
function createCommands(program) {
|
|
@@ -1649,7 +1694,8 @@ function createCommands(program) {
|
|
|
1649
1694
|
setReleaseStatus2,
|
|
1650
1695
|
update,
|
|
1651
1696
|
useLocalPackage,
|
|
1652
|
-
uuid
|
|
1697
|
+
uuid,
|
|
1698
|
+
packageJson
|
|
1653
1699
|
});
|
|
1654
1700
|
}
|
|
1655
1701
|
|
package/dist/index.js
CHANGED
|
@@ -15,12 +15,13 @@ import dotenvStringify from "dotenv-stringify";
|
|
|
15
15
|
import z from "zod";
|
|
16
16
|
import { confirm, input, password, select } from "@inquirer/prompts";
|
|
17
17
|
import os from "node:os";
|
|
18
|
-
import { PackageManager, getDependenciesFromGroup, getExpectedTgzName, getPackageJsonContents } from "@alextheman/utility/internal";
|
|
18
|
+
import { PackageManager, getDependenciesFromGroup, getExpectedTgzName, getPackageJsonContents, packageJsonNotFoundError } from "@alextheman/utility/internal";
|
|
19
19
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
20
20
|
import matter from "gray-matter";
|
|
21
21
|
import { parseFilePath } from "@alextheman/utility/node";
|
|
22
22
|
import supportsColor from "supports-color";
|
|
23
23
|
import { randomUUID } from "node:crypto";
|
|
24
|
+
import { minVersion, prerelease } from "semver";
|
|
24
25
|
|
|
25
26
|
//#region src/utility/miscellaneous/asciiToPng.ts
|
|
26
27
|
async function asciiToPng(ascii, options) {
|
|
@@ -1278,7 +1279,7 @@ function parseZodSchemaForProgram(programError, schema, data) {
|
|
|
1278
1279
|
//#endregion
|
|
1279
1280
|
//#region package.json
|
|
1280
1281
|
var name = "alex-c-line";
|
|
1281
|
-
var version = "1.
|
|
1282
|
+
var version = "1.32.0";
|
|
1282
1283
|
var description = "Command-line tool with commands to streamline the developer workflow.";
|
|
1283
1284
|
|
|
1284
1285
|
//#endregion
|
|
@@ -1581,6 +1582,50 @@ function incrementVersion(program) {
|
|
|
1581
1582
|
});
|
|
1582
1583
|
}
|
|
1583
1584
|
|
|
1585
|
+
//#endregion
|
|
1586
|
+
//#region src/utility/constants/successPrefix.ts
|
|
1587
|
+
const successPrefix = chalk.green("✓");
|
|
1588
|
+
|
|
1589
|
+
//#endregion
|
|
1590
|
+
//#region src/cli/commands/package-json/noPreReleaseDependencies.ts
|
|
1591
|
+
function isPreRelease(dependencyVersionRange) {
|
|
1592
|
+
const minimumFromRange = minVersion(dependencyVersionRange);
|
|
1593
|
+
return minimumFromRange !== null && prerelease(minimumFromRange) !== null;
|
|
1594
|
+
}
|
|
1595
|
+
async function noPreReleaseDependencies(program) {
|
|
1596
|
+
const packageJson = await getPackageJsonContents(process.cwd());
|
|
1597
|
+
if (packageJson === null) throw packageJsonNotFoundError(process.cwd());
|
|
1598
|
+
const dependencies = getDependenciesFromGroup(packageJson, "dependencies");
|
|
1599
|
+
const devDependencies = getDependenciesFromGroup(packageJson, "devDependencies");
|
|
1600
|
+
const preReleaseDependencies = {};
|
|
1601
|
+
const preReleaseDevDependencies = {};
|
|
1602
|
+
for (const [dependencyName, dependencyVersionRange] of Object.entries(dependencies)) if (isPreRelease(dependencyVersionRange)) preReleaseDependencies[dependencyName] = dependencyVersionRange;
|
|
1603
|
+
for (const [dependencyName, dependencyVersionRange] of Object.entries(devDependencies)) if (isPreRelease(dependencyVersionRange)) preReleaseDevDependencies[dependencyName] = dependencyVersionRange;
|
|
1604
|
+
if (Object.keys(preReleaseDependencies).length !== 0 || Object.keys(preReleaseDevDependencies).length !== 0) program.error(normaliseIndents`
|
|
1605
|
+
${errorPrefix}: Pre-release version pinning is not allowed. Found the following violations:
|
|
1606
|
+
|
|
1607
|
+
${JSON.stringify({
|
|
1608
|
+
dependencies: preReleaseDependencies,
|
|
1609
|
+
devDependencies: preReleaseDevDependencies
|
|
1610
|
+
}, null, 2)}
|
|
1611
|
+
`, {
|
|
1612
|
+
exitCode: 2,
|
|
1613
|
+
code: "UNEXPECTED_PRE_RELEASE_VERSION"
|
|
1614
|
+
});
|
|
1615
|
+
console.info(`${successPrefix} No pre-release versions found!`);
|
|
1616
|
+
}
|
|
1617
|
+
|
|
1618
|
+
//#endregion
|
|
1619
|
+
//#region src/cli/commands/package-json/index.ts
|
|
1620
|
+
const RuleName = { NO_PRE_RELEASE_DEPENDENCIES: "no-pre-release-dependencies" };
|
|
1621
|
+
function packageJson(program) {
|
|
1622
|
+
program.command("package-json").description("Run checks on your package.json file").argument("[ruleName]", "The name of the rule to check", (rawRuleName) => {
|
|
1623
|
+
return parseZodSchema(z.enum(RuleName), rawRuleName);
|
|
1624
|
+
}).action(async (ruleName) => {
|
|
1625
|
+
if (ruleName === "no-pre-release-dependencies") return await noPreReleaseDependencies(program);
|
|
1626
|
+
});
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1584
1629
|
//#endregion
|
|
1585
1630
|
//#region src/cli/commands/index.ts
|
|
1586
1631
|
function createCommands(program) {
|
|
@@ -1611,7 +1656,8 @@ function createCommands(program) {
|
|
|
1611
1656
|
setReleaseStatus2,
|
|
1612
1657
|
update,
|
|
1613
1658
|
useLocalPackage,
|
|
1614
|
-
uuid
|
|
1659
|
+
uuid,
|
|
1660
|
+
packageJson
|
|
1615
1661
|
});
|
|
1616
1662
|
}
|
|
1617
1663
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "alex-c-line",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.32.0",
|
|
4
4
|
"description": "Command-line tool with commands to streamline the developer workflow.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"templates"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@alextheman/utility": "^5.
|
|
38
|
-
"@inquirer/prompts": "^8.
|
|
37
|
+
"@alextheman/utility": "^5.5.0",
|
|
38
|
+
"@inquirer/prompts": "^8.3.0",
|
|
39
39
|
"boxen": "^8.0.1",
|
|
40
40
|
"canvas": "^3.2.1",
|
|
41
41
|
"chalk": "^5.6.2",
|
|
@@ -47,24 +47,27 @@
|
|
|
47
47
|
"figlet": "^1.10.0",
|
|
48
48
|
"gray-matter": "^4.0.3",
|
|
49
49
|
"libsodium-wrappers": "^0.8.2",
|
|
50
|
+
"semver": "^7.7.4",
|
|
50
51
|
"supports-color": "^10.2.2",
|
|
51
52
|
"zod": "^4.3.6"
|
|
52
53
|
},
|
|
53
54
|
"devDependencies": {
|
|
54
|
-
"@alextheman/eslint-plugin": "^5.
|
|
55
|
+
"@alextheman/eslint-plugin": "^5.9.0",
|
|
55
56
|
"@commander-js/extra-typings": "^14.0.0",
|
|
56
57
|
"@types/eslint": "^9.6.1",
|
|
57
|
-
"@types/node": "^25.3.
|
|
58
|
+
"@types/node": "^25.3.2",
|
|
59
|
+
"@types/semver": "^7.7.1",
|
|
58
60
|
"@types/update-notifier": "^6.0.8",
|
|
61
|
+
"cross-env": "^10.1.0",
|
|
59
62
|
"dotenv-cli": "^11.0.0",
|
|
60
|
-
"eslint": "^10.0.
|
|
63
|
+
"eslint": "^10.0.2",
|
|
61
64
|
"husky": "^9.1.7",
|
|
62
65
|
"prettier": "^3.8.1",
|
|
63
66
|
"tempy": "^3.2.0",
|
|
64
67
|
"ts-node": "^10.9.2",
|
|
65
68
|
"tsdown": "^0.20.3",
|
|
66
69
|
"typescript": "^5.9.3",
|
|
67
|
-
"typescript-eslint": "^8.56.
|
|
70
|
+
"typescript-eslint": "^8.56.1",
|
|
68
71
|
"vite-tsconfig-paths": "^6.1.1",
|
|
69
72
|
"vitest": "^4.0.18"
|
|
70
73
|
},
|
|
@@ -95,7 +98,7 @@
|
|
|
95
98
|
"prepare-local-eslint-plugin": "dotenv -e .env -- sh -c 'ESLINT_PLUGIN_PATH=${LOCAL_ESLINT_PLUGIN_PATH:-../eslint-plugin}; pnpm --prefix \"$ESLINT_PLUGIN_PATH\" run build && pnpm uninstall @alextheman/eslint-plugin && pnpm install --save-dev file:\"$ESLINT_PLUGIN_PATH\"'",
|
|
96
99
|
"prepare-local-utility": "dotenv -e .env -- sh -c 'UTILITY_PATH=${LOCAL_UTILITY_PATH:-../utility}; pnpm --prefix \"$UTILITY_PATH\" run build && pnpm uninstall @alextheman/utility && pnpm install file:\"$UTILITY_PATH\"'",
|
|
97
100
|
"test": "vitest run",
|
|
98
|
-
"test-end-to-end": "RUN_END_TO_END=true vitest run tests/end-to-end --reporter verbose",
|
|
101
|
+
"test-end-to-end": "cross-env RUN_END_TO_END=true vitest run tests/end-to-end --reporter verbose",
|
|
99
102
|
"test-watch": "vitest",
|
|
100
103
|
"update-dependencies": "pnpm update --latest && pnpm update",
|
|
101
104
|
"use-live-eslint-plugin": "pnpm run prepare-live-eslint-plugin && pnpm run lint",
|