alex-c-line 1.26.2 → 1.27.1

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.
@@ -92,10 +92,16 @@ declare const alexCLineConfig: AlexCLineConfig<keyof typeof scripts>;
92
92
  //#region src/configs/internal/infrastructureConfig.d.ts
93
93
  declare const infrastructureConfig: AlexCLineConfig<"format" | "lint">;
94
94
  //#endregion
95
- //#region src/configs/internal/PreCommitSteps.d.ts
96
- type PreCommitSteps = "build" | "format" | "lint" | "test";
95
+ //#region src/configs/internal/PreCommitStep.d.ts
96
+ declare const PreCommitStep: {
97
+ readonly BUILD: "build";
98
+ readonly FORMAT: "format";
99
+ readonly LINT: "lint";
100
+ readonly TEST: "test";
101
+ };
102
+ type PreCommitStep = "build" | "format" | "lint" | "test";
97
103
  //#endregion
98
104
  //#region src/configs/internal/packageConfig.d.ts
99
- declare function packageConfig(steps?: PreCommitSteps[]): AlexCLineConfig<PreCommitSteps>;
105
+ declare function packageConfig<ScriptName extends string = PreCommitStep>(steps?: (StepFunction | ScriptName | PreCommitStep | [ScriptName | PreCommitStep, PreCommitStepOptions])[]): AlexCLineConfig<PreCommitStep>;
100
106
  //#endregion
101
107
  export { alexCLineConfig, infrastructureConfig, packageConfig };
@@ -92,10 +92,16 @@ declare const alexCLineConfig: AlexCLineConfig<keyof typeof scripts>;
92
92
  //#region src/configs/internal/infrastructureConfig.d.ts
93
93
  declare const infrastructureConfig: AlexCLineConfig<"format" | "lint">;
94
94
  //#endregion
95
- //#region src/configs/internal/PreCommitSteps.d.ts
96
- type PreCommitSteps = "build" | "format" | "lint" | "test";
95
+ //#region src/configs/internal/PreCommitStep.d.ts
96
+ declare const PreCommitStep: {
97
+ readonly BUILD: "build";
98
+ readonly FORMAT: "format";
99
+ readonly LINT: "lint";
100
+ readonly TEST: "test";
101
+ };
102
+ type PreCommitStep = "build" | "format" | "lint" | "test";
97
103
  //#endregion
98
104
  //#region src/configs/internal/packageConfig.d.ts
99
- declare function packageConfig(steps?: PreCommitSteps[]): AlexCLineConfig<PreCommitSteps>;
105
+ declare function packageConfig<ScriptName extends string = PreCommitStep>(steps?: (StepFunction | ScriptName | PreCommitStep | [ScriptName | PreCommitStep, PreCommitStepOptions])[]): AlexCLineConfig<PreCommitStep>;
100
106
  //#endregion
101
107
  export { alexCLineConfig, infrastructureConfig, packageConfig };
package/dist/index.cjs CHANGED
@@ -98,12 +98,12 @@ function centerLine(text, width) {
98
98
  //#endregion
99
99
  //#region src/utility/miscellaneous/createAlexCLineArtwork.ts
100
100
  async function createAlexCLineArtwork(options) {
101
- const { includeColors = true } = options ?? {};
101
+ const { includeColors = true, subtitleColor = chalk.default.green, subtitleText = "say my name and I'll assist ✓" } = options ?? {};
102
102
  const title = await (0, figlet.default)("alex-c-line");
103
- const subtitle = centerLine("say my name and I'll assist ✓", Math.max(...title.split("\n").map((line) => {
103
+ const subtitle = centerLine(subtitleText, Math.max(...title.split("\n").map((line) => {
104
104
  return line.length;
105
105
  })));
106
- return (0, boxen.default)(includeColors ? [chalk.default.yellow(title), chalk.default.green(subtitle)].join("\n") : [title, subtitle].join("\n"), {
106
+ return (0, boxen.default)(includeColors ? [chalk.default.yellow(title), subtitleColor(subtitle)].join("\n") : [title, subtitle].join("\n"), {
107
107
  padding: {
108
108
  top: 1,
109
109
  bottom: 1,
@@ -1250,32 +1250,207 @@ function setReleaseStatus2(program) {
1250
1250
  }
1251
1251
 
1252
1252
  //#endregion
1253
- //#region src/utility/cache/createAlexCLineCache.ts
1254
- async function createAlexCLineCache(cacheContents) {
1253
+ //#region package.json
1254
+ var name = "alex-c-line";
1255
+ var version = "1.27.1";
1256
+ var description = "Command-line tool with commands to streamline the developer workflow.";
1257
+ var package_default = {
1258
+ name,
1259
+ version,
1260
+ description,
1261
+ repository: {
1262
+ "type": "git",
1263
+ "url": "git+https://github.com/alextheman231/alex-c-line.git"
1264
+ },
1265
+ license: "MIT",
1266
+ author: "alextheman",
1267
+ type: "module",
1268
+ exports: {
1269
+ "./configs": {
1270
+ "types": "./dist/configs/index.d.ts",
1271
+ "require": "./dist/configs/index.cjs",
1272
+ "import": "./dist/configs/index.js",
1273
+ "default": "./dist/configs/index.js"
1274
+ },
1275
+ "./configs/internal": {
1276
+ "types": "./dist/configs/internal/index.d.ts",
1277
+ "require": "./dist/configs/internal/index.cjs",
1278
+ "import": "./dist/configs/internal/index.js",
1279
+ "default": "./dist/configs/internal/index.js"
1280
+ }
1281
+ },
1282
+ main: "dist/index.js",
1283
+ module: "dist/index.cjs",
1284
+ types: "dist/index.d.ts",
1285
+ bin: { "alex-c-line": "dist/index.js" },
1286
+ files: ["dist", "templates"],
1287
+ scripts: {
1288
+ "build": "tsdown",
1289
+ "command": "bash -c 'pnpm run build && echo && echo \"Command output:\" && node dist/index.js $@' --",
1290
+ "create-local-package": "pnpm run build && rm -f alex-c-line-*.tgz && pnpm pack",
1291
+ "create-release-note": "bash -c 'git pull origin main && pnpm run command create-release-note-2 $@' --",
1292
+ "format": "pnpm run format-prettier && pnpm run format-eslint",
1293
+ "format-eslint": "eslint --fix --suppress-all \"package.json\" \"src/**/*.ts\" \"tests/**/*.ts\" && rm -f eslint-suppressions.json",
1294
+ "format-prettier": "pnpm run format-prettier-typescript && pnpm run format-prettier-javascript && pnpm run format-prettier-yml",
1295
+ "format-prettier-javascript": "prettier --write \"./**/*.js\"",
1296
+ "format-prettier-typescript": "prettier --write --parser typescript \"./**/*.ts\"",
1297
+ "format-prettier-yml": "prettier --write \"./**/*.{yml,yaml}\"",
1298
+ "lint": "pnpm run lint-tsc && pnpm run lint-eslint && pnpm run lint-prettier",
1299
+ "lint-eslint": "eslint \"package.json\" \"src/**/*.ts\" \"tests/**/*.ts\"",
1300
+ "lint-prettier": "pnpm run lint-prettier-typescript && pnpm run lint-prettier-javascript && pnpm run lint-prettier-yml",
1301
+ "lint-prettier-javascript": "prettier --check \"./**.js\"",
1302
+ "lint-prettier-typescript": "prettier --check --parser typescript \"./**/*.ts\"",
1303
+ "lint-prettier-yml": "prettier --check \"./**/*.{yml,yaml}\"",
1304
+ "lint-tsc": "tsc --noEmit",
1305
+ "pre-commit": "pnpm run command pre-commit-2",
1306
+ "prepare": "husky",
1307
+ "prepare-live-eslint-plugin": "pnpm uninstall @alextheman/eslint-plugin && pnpm install --save-dev @alextheman/eslint-plugin",
1308
+ "prepare-live-utility": "pnpm uninstall @alextheman/utility && pnpm install @alextheman/utility",
1309
+ "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\"'",
1310
+ "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\"'",
1311
+ "test": "vitest run",
1312
+ "test-watch": "vitest",
1313
+ "update-dependencies": "pnpm update --latest && pnpm update",
1314
+ "use-live-eslint-plugin": "pnpm run prepare-live-eslint-plugin && pnpm run lint",
1315
+ "use-live-utility": "pnpm run prepare-live-utility",
1316
+ "use-local-eslint-plugin": "pnpm run prepare-local-eslint-plugin && pnpm run lint",
1317
+ "use-local-utility": "pnpm run prepare-local-utility"
1318
+ },
1319
+ dependencies: {
1320
+ "@alextheman/utility": "^4.16.2",
1321
+ "@inquirer/prompts": "^8.2.0",
1322
+ "boxen": "^8.0.1",
1323
+ "canvas": "^3.2.1",
1324
+ "chalk": "^5.6.2",
1325
+ "commander": "^14.0.3",
1326
+ "dotenv": "^17.3.1",
1327
+ "dotenv-stringify": "^3.0.1",
1328
+ "execa": "^9.6.1",
1329
+ "figlet": "^1.10.0",
1330
+ "gray-matter": "^4.0.3",
1331
+ "libsodium-wrappers": "^0.8.2",
1332
+ "supports-color": "^10.2.2",
1333
+ "update-notifier": "^7.3.1",
1334
+ "zod": "^4.3.6"
1335
+ },
1336
+ devDependencies: {
1337
+ "@alextheman/eslint-plugin": "^5.7.0",
1338
+ "@commander-js/extra-typings": "^14.0.0",
1339
+ "@types/eslint": "^9.6.1",
1340
+ "@types/node": "^25.2.3",
1341
+ "@types/update-notifier": "^6.0.8",
1342
+ "dotenv-cli": "^11.0.0",
1343
+ "eslint": "^10.0.0",
1344
+ "husky": "^9.1.7",
1345
+ "prettier": "^3.8.1",
1346
+ "tempy": "^3.2.0",
1347
+ "ts-node": "^10.9.2",
1348
+ "tsdown": "^0.20.3",
1349
+ "typescript": "^5.9.3",
1350
+ "vite-tsconfig-paths": "^6.1.1",
1351
+ "vitest": "^4.0.18"
1352
+ },
1353
+ packageManager: "pnpm@10.29.3+sha512.498e1fb4cca5aa06c1dcf2611e6fafc50972ffe7189998c409e90de74566444298ffe43e6cd2acdc775ba1aa7cc5e092a8b7054c811ba8c5770f84693d33d2dc",
1354
+ engines: { "node": ">=22.0.0" },
1355
+ pnpm: { "onlyBuiltDependencies": [
1356
+ "canvas",
1357
+ "core-js",
1358
+ "esbuild",
1359
+ "fsevents",
1360
+ "unrs-resolver"
1361
+ ] }
1362
+ };
1363
+
1364
+ //#endregion
1365
+ //#region src/commands/update/checkUpdate.ts
1366
+ async function checkUpdate(program) {
1367
+ const currentVersion = new _alextheman_utility.VersionNumber(version);
1368
+ const { stdout: npmViewResult } = await execa.execa`npm view alex-c-line version`;
1369
+ const latestVersion = new _alextheman_utility.VersionNumber(npmViewResult.trim());
1370
+ if (!_alextheman_utility.VersionNumber.isEqual(currentVersion, latestVersion)) {
1371
+ const message = _alextheman_utility.normaliseIndents`
1372
+ A new update of \`alex-c-line\` is available!
1373
+ ${currentVersion.toString()} → ${latestVersion.toString()}
1374
+ Run \`npm install -g alex-c-line@latest\` to update.
1375
+ `;
1376
+ const width = Math.max(...message.split("\n").map((line) => {
1377
+ return line.length;
1378
+ }));
1379
+ const messageWithArtwork = await createAlexCLineArtwork({
1380
+ includeColors: Boolean(supports_color.default.stdout),
1381
+ subtitleColor: chalk.default.white,
1382
+ subtitleText: message.split("\n").map((line) => {
1383
+ return centerLine(line, width);
1384
+ }).join("\n")
1385
+ });
1386
+ if (program) program.error(messageWithArtwork, {
1387
+ exitCode: 2,
1388
+ code: "OUTDATED_VERSION"
1389
+ });
1390
+ else console.info(messageWithArtwork);
1391
+ } else console.info(`alex-c-line is up to date (${currentVersion}).`);
1392
+ }
1393
+
1394
+ //#endregion
1395
+ //#region src/utility/errors/convertDataErrorToProgramError.ts
1396
+ function convertDataErrorToProgramError(dataError, programError, options) {
1397
+ programError(dataError.message, {
1398
+ exitCode: options?.exitCode ?? 1,
1399
+ code: dataError.code
1400
+ });
1401
+ }
1402
+
1403
+ //#endregion
1404
+ //#region src/utility/miscellaneous/parseZodSchemaForProgram.ts
1405
+ function parseZodSchemaForProgram(programError, schema, data) {
1406
+ try {
1407
+ return (0, _alextheman_utility.parseZodSchema)(schema, data);
1408
+ } catch (error) {
1409
+ if (_alextheman_utility.DataError.check(error)) convertDataErrorToProgramError(error, programError);
1410
+ throw error;
1411
+ }
1412
+ }
1413
+
1414
+ //#endregion
1415
+ //#region src/commands/update/index.ts
1416
+ const optionsSchema = zod.default.object({ check: zod.default.boolean().optional() });
1417
+ function update(program) {
1418
+ program.command("update").description("Handle updates of the currently installed alex-c-line").option("--check", "Check for available updates").action(async (rawOptions) => {
1419
+ if (parseZodSchemaForProgram(program.error, optionsSchema, rawOptions).check) await checkUpdate(program);
1420
+ else console.info("Unsupported option. Expected `--check`.");
1421
+ });
1422
+ }
1423
+
1424
+ //#endregion
1425
+ //#region src/cache/project/createAlexCLineProjectCache.ts
1426
+ async function createAlexCLineProjectCache(cacheContents) {
1255
1427
  const cacheFilePath = node_path.default.join(process.cwd(), ".alex-c-line", "cache.json");
1256
1428
  await (0, node_fs_promises.mkdir)(node_path.default.dirname(cacheFilePath), { recursive: true });
1257
1429
  await (0, node_fs_promises.writeFile)(cacheFilePath, JSON.stringify(cacheContents, void 0, 2));
1258
1430
  }
1259
1431
 
1260
1432
  //#endregion
1261
- //#region src/utility/cache/parseAlexCLineCache.ts
1262
- const alexCLineCacheSchema = zod.default.object({ useLocalPackage: zod.default.object({ dependencies: zod.default.record(zod.default.string(), zod.default.object({
1433
+ //#region src/cache/project/types/AlexCLineProjectCache.ts
1434
+ const alexCLineProjectCacheSchema = zod.default.object({ useLocalPackage: zod.default.object({ dependencies: zod.default.record(zod.default.string(), zod.default.object({
1263
1435
  currentVersion: zod.default.string(),
1264
1436
  previousVersion: zod.default.union([zod.default.instanceof(_alextheman_utility.VersionNumber), zod.default.string()]).transform((value) => {
1265
1437
  return value instanceof _alextheman_utility.VersionNumber ? value.toString({ omitPrefix: true }) : value;
1266
1438
  }),
1267
1439
  dependencyGroup: zod.default.enum(DependencyGroup)
1268
1440
  })) }).partial() }).partial();
1269
- function parseAlexCLineCache(data) {
1270
- return (0, _alextheman_utility.parseZodSchema)(alexCLineCacheSchema, data);
1441
+
1442
+ //#endregion
1443
+ //#region src/cache/project/parseAlexCLineCache.ts
1444
+ function parseAlexCLineProjectCache(data) {
1445
+ return (0, _alextheman_utility.parseZodSchema)(alexCLineProjectCacheSchema, data);
1271
1446
  }
1272
1447
 
1273
1448
  //#endregion
1274
- //#region src/utility/cache/loadAlexCLineCache.ts
1275
- async function loadAlexCLineCache(cachePath = node_path.default.join(".alex-c-line", "cache.json")) {
1449
+ //#region src/cache/project/loadAlexCLineProjectCache.ts
1450
+ async function loadAlexCLineProjectCache(cachePath = node_path.default.join(".alex-c-line", "cache.json")) {
1276
1451
  const fullCachePath = node_path.default.join(process.cwd(), cachePath);
1277
1452
  try {
1278
- return parseAlexCLineCache(JSON.parse(await (0, node_fs_promises.readFile)(fullCachePath, "utf-8")));
1453
+ return parseAlexCLineProjectCache(JSON.parse(await (0, node_fs_promises.readFile)(fullCachePath, "utf-8")));
1279
1454
  } catch (error) {
1280
1455
  if (error instanceof Error && "code" in error && error.code === "ENOENT") return null;
1281
1456
  throw error;
@@ -1417,7 +1592,7 @@ function useLocalPackage(program) {
1417
1592
  code: "LOCAL_ALEX_C_LINE_ERROR"
1418
1593
  });
1419
1594
  } else {
1420
- const cacheContents = await loadAlexCLineCache();
1595
+ const cacheContents = await loadAlexCLineProjectCache();
1421
1596
  if (!reverse) {
1422
1597
  if (prepareScript) await (0, execa.execa)({ cwd: localPackagePath })`${packageManager} run ${prepareScript}`;
1423
1598
  if (!keepOldTarballs) await removeAllTarballs(localPackagePath, packageName);
@@ -1446,7 +1621,7 @@ function useLocalPackage(program) {
1446
1621
  dependencyGroup,
1447
1622
  currentVersion: getDependenciesFromGroup(await getPackageJsonContents(process.cwd()) ?? {}, dependencyGroup)[packageName]
1448
1623
  };
1449
- await createAlexCLineCache({
1624
+ await createAlexCLineProjectCache({
1450
1625
  ...cacheContents ?? {},
1451
1626
  useLocalPackage: {
1452
1627
  ...cacheContents?.useLocalPackage,
@@ -1456,7 +1631,7 @@ function useLocalPackage(program) {
1456
1631
  }
1457
1632
  }
1458
1633
  });
1459
- } else await createAlexCLineCache({
1634
+ } else await createAlexCLineProjectCache({
1460
1635
  ...cacheContents ?? {},
1461
1636
  useLocalPackage: {
1462
1637
  ...cacheContents?.useLocalPackage,
@@ -1546,6 +1721,7 @@ function createCommands(program) {
1546
1721
  sayHello,
1547
1722
  setReleaseStatus,
1548
1723
  setReleaseStatus2,
1724
+ update,
1549
1725
  useLocalPackage
1550
1726
  });
1551
1727
  }
@@ -1573,118 +1749,6 @@ function formatError(error) {
1573
1749
  throw error;
1574
1750
  }
1575
1751
 
1576
- //#endregion
1577
- //#region package.json
1578
- var name = "alex-c-line";
1579
- var version = "1.26.2";
1580
- var description = "Command-line tool with commands to streamline the developer workflow.";
1581
- var package_default = {
1582
- name,
1583
- version,
1584
- description,
1585
- repository: {
1586
- "type": "git",
1587
- "url": "git+https://github.com/alextheman231/alex-c-line.git"
1588
- },
1589
- license: "MIT",
1590
- author: "alextheman",
1591
- type: "module",
1592
- exports: {
1593
- "./configs": {
1594
- "types": "./dist/configs/index.d.ts",
1595
- "require": "./dist/configs/index.cjs",
1596
- "import": "./dist/configs/index.js",
1597
- "default": "./dist/configs/index.js"
1598
- },
1599
- "./configs/internal": {
1600
- "types": "./dist/configs/internal/index.d.ts",
1601
- "require": "./dist/configs/internal/index.cjs",
1602
- "import": "./dist/configs/internal/index.js",
1603
- "default": "./dist/configs/internal/index.js"
1604
- }
1605
- },
1606
- main: "dist/index.js",
1607
- module: "dist/index.cjs",
1608
- types: "dist/index.d.ts",
1609
- bin: { "alex-c-line": "dist/index.js" },
1610
- files: ["dist", "templates"],
1611
- scripts: {
1612
- "build": "tsdown",
1613
- "command": "bash -c 'pnpm run build && echo && echo \"Command output:\" && node dist/index.js $@' --",
1614
- "create-local-package": "pnpm run build && rm -f alex-c-line-*.tgz && pnpm pack",
1615
- "create-release-note": "bash -c 'git pull origin main && pnpm run command create-release-note-2 $@' --",
1616
- "format": "pnpm run format-prettier && pnpm run format-eslint",
1617
- "format-eslint": "eslint --fix --suppress-all \"package.json\" \"src/**/*.ts\" \"tests/**/*.ts\" && rm -f eslint-suppressions.json",
1618
- "format-prettier": "pnpm run format-prettier-typescript && pnpm run format-prettier-javascript && pnpm run format-prettier-yml",
1619
- "format-prettier-javascript": "prettier --write \"./**/*.js\"",
1620
- "format-prettier-typescript": "prettier --write --parser typescript \"./**/*.ts\"",
1621
- "format-prettier-yml": "prettier --write \"./**/*.{yml,yaml}\"",
1622
- "lint": "pnpm run lint-tsc && pnpm run lint-eslint && pnpm run lint-prettier",
1623
- "lint-eslint": "eslint \"package.json\" \"src/**/*.ts\" \"tests/**/*.ts\"",
1624
- "lint-prettier": "pnpm run lint-prettier-typescript && pnpm run lint-prettier-javascript && pnpm run lint-prettier-yml",
1625
- "lint-prettier-javascript": "prettier --check \"./**.js\"",
1626
- "lint-prettier-typescript": "prettier --check --parser typescript \"./**/*.ts\"",
1627
- "lint-prettier-yml": "prettier --check \"./**/*.{yml,yaml}\"",
1628
- "lint-tsc": "tsc --noEmit",
1629
- "pre-commit": "pnpm run command pre-commit-2",
1630
- "prepare": "husky",
1631
- "prepare-live-eslint-plugin": "pnpm uninstall @alextheman/eslint-plugin && pnpm install --save-dev @alextheman/eslint-plugin",
1632
- "prepare-live-utility": "pnpm uninstall @alextheman/utility && pnpm install @alextheman/utility",
1633
- "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\"'",
1634
- "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\"'",
1635
- "test": "vitest run",
1636
- "test-watch": "vitest",
1637
- "update-dependencies": "pnpm update --latest && pnpm update",
1638
- "use-live-eslint-plugin": "pnpm run prepare-live-eslint-plugin && pnpm run lint",
1639
- "use-live-utility": "pnpm run prepare-live-utility",
1640
- "use-local-eslint-plugin": "pnpm run prepare-local-eslint-plugin && pnpm run lint",
1641
- "use-local-utility": "pnpm run prepare-local-utility"
1642
- },
1643
- dependencies: {
1644
- "@alextheman/utility": "^4.15.0",
1645
- "@inquirer/prompts": "^8.2.0",
1646
- "boxen": "^8.0.1",
1647
- "canvas": "^3.2.1",
1648
- "chalk": "^5.6.2",
1649
- "commander": "^14.0.3",
1650
- "dotenv": "^17.2.4",
1651
- "dotenv-stringify": "^3.0.1",
1652
- "execa": "^9.6.1",
1653
- "figlet": "^1.10.0",
1654
- "gray-matter": "^4.0.3",
1655
- "libsodium-wrappers": "^0.8.2",
1656
- "supports-color": "^10.2.2",
1657
- "update-notifier": "^7.3.1",
1658
- "zod": "^4.3.6"
1659
- },
1660
- devDependencies: {
1661
- "@alextheman/eslint-plugin": "^5.6.2",
1662
- "@commander-js/extra-typings": "^14.0.0",
1663
- "@types/eslint": "^9.6.1",
1664
- "@types/node": "^25.2.1",
1665
- "@types/update-notifier": "^6.0.8",
1666
- "dotenv-cli": "^11.0.0",
1667
- "eslint": "^10.0.0",
1668
- "husky": "^9.1.7",
1669
- "prettier": "^3.8.1",
1670
- "tempy": "^3.2.0",
1671
- "ts-node": "^10.9.2",
1672
- "tsdown": "^0.20.3",
1673
- "typescript": "^5.9.3",
1674
- "vite-tsconfig-paths": "^6.0.5",
1675
- "vitest": "^4.0.18"
1676
- },
1677
- packageManager: "pnpm@10.29.2+sha512.bef43fa759d91fd2da4b319a5a0d13ef7a45bb985a3d7342058470f9d2051a3ba8674e629672654686ef9443ad13a82da2beb9eeb3e0221c87b8154fff9d74b8",
1678
- engines: { "node": ">=22.0.0" },
1679
- pnpm: { "onlyBuiltDependencies": [
1680
- "canvas",
1681
- "core-js",
1682
- "esbuild",
1683
- "fsevents",
1684
- "unrs-resolver"
1685
- ] }
1686
- };
1687
-
1688
1752
  //#endregion
1689
1753
  //#region src/index.ts
1690
1754
  (async () => {
package/dist/index.js CHANGED
@@ -60,12 +60,12 @@ function centerLine(text, width) {
60
60
  //#endregion
61
61
  //#region src/utility/miscellaneous/createAlexCLineArtwork.ts
62
62
  async function createAlexCLineArtwork(options) {
63
- const { includeColors = true } = options ?? {};
63
+ const { includeColors = true, subtitleColor = chalk.green, subtitleText = "say my name and I'll assist ✓" } = options ?? {};
64
64
  const title = await figlet("alex-c-line");
65
- const subtitle = centerLine("say my name and I'll assist ✓", Math.max(...title.split("\n").map((line) => {
65
+ const subtitle = centerLine(subtitleText, Math.max(...title.split("\n").map((line) => {
66
66
  return line.length;
67
67
  })));
68
- return boxen(includeColors ? [chalk.yellow(title), chalk.green(subtitle)].join("\n") : [title, subtitle].join("\n"), {
68
+ return boxen(includeColors ? [chalk.yellow(title), subtitleColor(subtitle)].join("\n") : [title, subtitle].join("\n"), {
69
69
  padding: {
70
70
  top: 1,
71
71
  bottom: 1,
@@ -1212,32 +1212,207 @@ function setReleaseStatus2(program) {
1212
1212
  }
1213
1213
 
1214
1214
  //#endregion
1215
- //#region src/utility/cache/createAlexCLineCache.ts
1216
- async function createAlexCLineCache(cacheContents) {
1215
+ //#region package.json
1216
+ var name = "alex-c-line";
1217
+ var version = "1.27.1";
1218
+ var description = "Command-line tool with commands to streamline the developer workflow.";
1219
+ var package_default = {
1220
+ name,
1221
+ version,
1222
+ description,
1223
+ repository: {
1224
+ "type": "git",
1225
+ "url": "git+https://github.com/alextheman231/alex-c-line.git"
1226
+ },
1227
+ license: "MIT",
1228
+ author: "alextheman",
1229
+ type: "module",
1230
+ exports: {
1231
+ "./configs": {
1232
+ "types": "./dist/configs/index.d.ts",
1233
+ "require": "./dist/configs/index.cjs",
1234
+ "import": "./dist/configs/index.js",
1235
+ "default": "./dist/configs/index.js"
1236
+ },
1237
+ "./configs/internal": {
1238
+ "types": "./dist/configs/internal/index.d.ts",
1239
+ "require": "./dist/configs/internal/index.cjs",
1240
+ "import": "./dist/configs/internal/index.js",
1241
+ "default": "./dist/configs/internal/index.js"
1242
+ }
1243
+ },
1244
+ main: "dist/index.js",
1245
+ module: "dist/index.cjs",
1246
+ types: "dist/index.d.ts",
1247
+ bin: { "alex-c-line": "dist/index.js" },
1248
+ files: ["dist", "templates"],
1249
+ scripts: {
1250
+ "build": "tsdown",
1251
+ "command": "bash -c 'pnpm run build && echo && echo \"Command output:\" && node dist/index.js $@' --",
1252
+ "create-local-package": "pnpm run build && rm -f alex-c-line-*.tgz && pnpm pack",
1253
+ "create-release-note": "bash -c 'git pull origin main && pnpm run command create-release-note-2 $@' --",
1254
+ "format": "pnpm run format-prettier && pnpm run format-eslint",
1255
+ "format-eslint": "eslint --fix --suppress-all \"package.json\" \"src/**/*.ts\" \"tests/**/*.ts\" && rm -f eslint-suppressions.json",
1256
+ "format-prettier": "pnpm run format-prettier-typescript && pnpm run format-prettier-javascript && pnpm run format-prettier-yml",
1257
+ "format-prettier-javascript": "prettier --write \"./**/*.js\"",
1258
+ "format-prettier-typescript": "prettier --write --parser typescript \"./**/*.ts\"",
1259
+ "format-prettier-yml": "prettier --write \"./**/*.{yml,yaml}\"",
1260
+ "lint": "pnpm run lint-tsc && pnpm run lint-eslint && pnpm run lint-prettier",
1261
+ "lint-eslint": "eslint \"package.json\" \"src/**/*.ts\" \"tests/**/*.ts\"",
1262
+ "lint-prettier": "pnpm run lint-prettier-typescript && pnpm run lint-prettier-javascript && pnpm run lint-prettier-yml",
1263
+ "lint-prettier-javascript": "prettier --check \"./**.js\"",
1264
+ "lint-prettier-typescript": "prettier --check --parser typescript \"./**/*.ts\"",
1265
+ "lint-prettier-yml": "prettier --check \"./**/*.{yml,yaml}\"",
1266
+ "lint-tsc": "tsc --noEmit",
1267
+ "pre-commit": "pnpm run command pre-commit-2",
1268
+ "prepare": "husky",
1269
+ "prepare-live-eslint-plugin": "pnpm uninstall @alextheman/eslint-plugin && pnpm install --save-dev @alextheman/eslint-plugin",
1270
+ "prepare-live-utility": "pnpm uninstall @alextheman/utility && pnpm install @alextheman/utility",
1271
+ "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\"'",
1272
+ "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\"'",
1273
+ "test": "vitest run",
1274
+ "test-watch": "vitest",
1275
+ "update-dependencies": "pnpm update --latest && pnpm update",
1276
+ "use-live-eslint-plugin": "pnpm run prepare-live-eslint-plugin && pnpm run lint",
1277
+ "use-live-utility": "pnpm run prepare-live-utility",
1278
+ "use-local-eslint-plugin": "pnpm run prepare-local-eslint-plugin && pnpm run lint",
1279
+ "use-local-utility": "pnpm run prepare-local-utility"
1280
+ },
1281
+ dependencies: {
1282
+ "@alextheman/utility": "^4.16.2",
1283
+ "@inquirer/prompts": "^8.2.0",
1284
+ "boxen": "^8.0.1",
1285
+ "canvas": "^3.2.1",
1286
+ "chalk": "^5.6.2",
1287
+ "commander": "^14.0.3",
1288
+ "dotenv": "^17.3.1",
1289
+ "dotenv-stringify": "^3.0.1",
1290
+ "execa": "^9.6.1",
1291
+ "figlet": "^1.10.0",
1292
+ "gray-matter": "^4.0.3",
1293
+ "libsodium-wrappers": "^0.8.2",
1294
+ "supports-color": "^10.2.2",
1295
+ "update-notifier": "^7.3.1",
1296
+ "zod": "^4.3.6"
1297
+ },
1298
+ devDependencies: {
1299
+ "@alextheman/eslint-plugin": "^5.7.0",
1300
+ "@commander-js/extra-typings": "^14.0.0",
1301
+ "@types/eslint": "^9.6.1",
1302
+ "@types/node": "^25.2.3",
1303
+ "@types/update-notifier": "^6.0.8",
1304
+ "dotenv-cli": "^11.0.0",
1305
+ "eslint": "^10.0.0",
1306
+ "husky": "^9.1.7",
1307
+ "prettier": "^3.8.1",
1308
+ "tempy": "^3.2.0",
1309
+ "ts-node": "^10.9.2",
1310
+ "tsdown": "^0.20.3",
1311
+ "typescript": "^5.9.3",
1312
+ "vite-tsconfig-paths": "^6.1.1",
1313
+ "vitest": "^4.0.18"
1314
+ },
1315
+ packageManager: "pnpm@10.29.3+sha512.498e1fb4cca5aa06c1dcf2611e6fafc50972ffe7189998c409e90de74566444298ffe43e6cd2acdc775ba1aa7cc5e092a8b7054c811ba8c5770f84693d33d2dc",
1316
+ engines: { "node": ">=22.0.0" },
1317
+ pnpm: { "onlyBuiltDependencies": [
1318
+ "canvas",
1319
+ "core-js",
1320
+ "esbuild",
1321
+ "fsevents",
1322
+ "unrs-resolver"
1323
+ ] }
1324
+ };
1325
+
1326
+ //#endregion
1327
+ //#region src/commands/update/checkUpdate.ts
1328
+ async function checkUpdate(program) {
1329
+ const currentVersion = new VersionNumber(version);
1330
+ const { stdout: npmViewResult } = await execa`npm view alex-c-line version`;
1331
+ const latestVersion = new VersionNumber(npmViewResult.trim());
1332
+ if (!VersionNumber.isEqual(currentVersion, latestVersion)) {
1333
+ const message = normaliseIndents`
1334
+ A new update of \`alex-c-line\` is available!
1335
+ ${currentVersion.toString()} → ${latestVersion.toString()}
1336
+ Run \`npm install -g alex-c-line@latest\` to update.
1337
+ `;
1338
+ const width = Math.max(...message.split("\n").map((line) => {
1339
+ return line.length;
1340
+ }));
1341
+ const messageWithArtwork = await createAlexCLineArtwork({
1342
+ includeColors: Boolean(supportsColor.stdout),
1343
+ subtitleColor: chalk.white,
1344
+ subtitleText: message.split("\n").map((line) => {
1345
+ return centerLine(line, width);
1346
+ }).join("\n")
1347
+ });
1348
+ if (program) program.error(messageWithArtwork, {
1349
+ exitCode: 2,
1350
+ code: "OUTDATED_VERSION"
1351
+ });
1352
+ else console.info(messageWithArtwork);
1353
+ } else console.info(`alex-c-line is up to date (${currentVersion}).`);
1354
+ }
1355
+
1356
+ //#endregion
1357
+ //#region src/utility/errors/convertDataErrorToProgramError.ts
1358
+ function convertDataErrorToProgramError(dataError, programError, options) {
1359
+ programError(dataError.message, {
1360
+ exitCode: options?.exitCode ?? 1,
1361
+ code: dataError.code
1362
+ });
1363
+ }
1364
+
1365
+ //#endregion
1366
+ //#region src/utility/miscellaneous/parseZodSchemaForProgram.ts
1367
+ function parseZodSchemaForProgram(programError, schema, data) {
1368
+ try {
1369
+ return parseZodSchema(schema, data);
1370
+ } catch (error) {
1371
+ if (DataError.check(error)) convertDataErrorToProgramError(error, programError);
1372
+ throw error;
1373
+ }
1374
+ }
1375
+
1376
+ //#endregion
1377
+ //#region src/commands/update/index.ts
1378
+ const optionsSchema = z.object({ check: z.boolean().optional() });
1379
+ function update(program) {
1380
+ program.command("update").description("Handle updates of the currently installed alex-c-line").option("--check", "Check for available updates").action(async (rawOptions) => {
1381
+ if (parseZodSchemaForProgram(program.error, optionsSchema, rawOptions).check) await checkUpdate(program);
1382
+ else console.info("Unsupported option. Expected `--check`.");
1383
+ });
1384
+ }
1385
+
1386
+ //#endregion
1387
+ //#region src/cache/project/createAlexCLineProjectCache.ts
1388
+ async function createAlexCLineProjectCache(cacheContents) {
1217
1389
  const cacheFilePath = path.join(process.cwd(), ".alex-c-line", "cache.json");
1218
1390
  await mkdir(path.dirname(cacheFilePath), { recursive: true });
1219
1391
  await writeFile(cacheFilePath, JSON.stringify(cacheContents, void 0, 2));
1220
1392
  }
1221
1393
 
1222
1394
  //#endregion
1223
- //#region src/utility/cache/parseAlexCLineCache.ts
1224
- const alexCLineCacheSchema = z.object({ useLocalPackage: z.object({ dependencies: z.record(z.string(), z.object({
1395
+ //#region src/cache/project/types/AlexCLineProjectCache.ts
1396
+ const alexCLineProjectCacheSchema = z.object({ useLocalPackage: z.object({ dependencies: z.record(z.string(), z.object({
1225
1397
  currentVersion: z.string(),
1226
1398
  previousVersion: z.union([z.instanceof(VersionNumber), z.string()]).transform((value) => {
1227
1399
  return value instanceof VersionNumber ? value.toString({ omitPrefix: true }) : value;
1228
1400
  }),
1229
1401
  dependencyGroup: z.enum(DependencyGroup)
1230
1402
  })) }).partial() }).partial();
1231
- function parseAlexCLineCache(data) {
1232
- return parseZodSchema(alexCLineCacheSchema, data);
1403
+
1404
+ //#endregion
1405
+ //#region src/cache/project/parseAlexCLineCache.ts
1406
+ function parseAlexCLineProjectCache(data) {
1407
+ return parseZodSchema(alexCLineProjectCacheSchema, data);
1233
1408
  }
1234
1409
 
1235
1410
  //#endregion
1236
- //#region src/utility/cache/loadAlexCLineCache.ts
1237
- async function loadAlexCLineCache(cachePath = path.join(".alex-c-line", "cache.json")) {
1411
+ //#region src/cache/project/loadAlexCLineProjectCache.ts
1412
+ async function loadAlexCLineProjectCache(cachePath = path.join(".alex-c-line", "cache.json")) {
1238
1413
  const fullCachePath = path.join(process.cwd(), cachePath);
1239
1414
  try {
1240
- return parseAlexCLineCache(JSON.parse(await readFile(fullCachePath, "utf-8")));
1415
+ return parseAlexCLineProjectCache(JSON.parse(await readFile(fullCachePath, "utf-8")));
1241
1416
  } catch (error) {
1242
1417
  if (error instanceof Error && "code" in error && error.code === "ENOENT") return null;
1243
1418
  throw error;
@@ -1379,7 +1554,7 @@ function useLocalPackage(program) {
1379
1554
  code: "LOCAL_ALEX_C_LINE_ERROR"
1380
1555
  });
1381
1556
  } else {
1382
- const cacheContents = await loadAlexCLineCache();
1557
+ const cacheContents = await loadAlexCLineProjectCache();
1383
1558
  if (!reverse) {
1384
1559
  if (prepareScript) await execa({ cwd: localPackagePath })`${packageManager} run ${prepareScript}`;
1385
1560
  if (!keepOldTarballs) await removeAllTarballs(localPackagePath, packageName);
@@ -1408,7 +1583,7 @@ function useLocalPackage(program) {
1408
1583
  dependencyGroup,
1409
1584
  currentVersion: getDependenciesFromGroup(await getPackageJsonContents(process.cwd()) ?? {}, dependencyGroup)[packageName]
1410
1585
  };
1411
- await createAlexCLineCache({
1586
+ await createAlexCLineProjectCache({
1412
1587
  ...cacheContents ?? {},
1413
1588
  useLocalPackage: {
1414
1589
  ...cacheContents?.useLocalPackage,
@@ -1418,7 +1593,7 @@ function useLocalPackage(program) {
1418
1593
  }
1419
1594
  }
1420
1595
  });
1421
- } else await createAlexCLineCache({
1596
+ } else await createAlexCLineProjectCache({
1422
1597
  ...cacheContents ?? {},
1423
1598
  useLocalPackage: {
1424
1599
  ...cacheContents?.useLocalPackage,
@@ -1508,6 +1683,7 @@ function createCommands(program) {
1508
1683
  sayHello,
1509
1684
  setReleaseStatus,
1510
1685
  setReleaseStatus2,
1686
+ update,
1511
1687
  useLocalPackage
1512
1688
  });
1513
1689
  }
@@ -1535,118 +1711,6 @@ function formatError(error) {
1535
1711
  throw error;
1536
1712
  }
1537
1713
 
1538
- //#endregion
1539
- //#region package.json
1540
- var name = "alex-c-line";
1541
- var version = "1.26.2";
1542
- var description = "Command-line tool with commands to streamline the developer workflow.";
1543
- var package_default = {
1544
- name,
1545
- version,
1546
- description,
1547
- repository: {
1548
- "type": "git",
1549
- "url": "git+https://github.com/alextheman231/alex-c-line.git"
1550
- },
1551
- license: "MIT",
1552
- author: "alextheman",
1553
- type: "module",
1554
- exports: {
1555
- "./configs": {
1556
- "types": "./dist/configs/index.d.ts",
1557
- "require": "./dist/configs/index.cjs",
1558
- "import": "./dist/configs/index.js",
1559
- "default": "./dist/configs/index.js"
1560
- },
1561
- "./configs/internal": {
1562
- "types": "./dist/configs/internal/index.d.ts",
1563
- "require": "./dist/configs/internal/index.cjs",
1564
- "import": "./dist/configs/internal/index.js",
1565
- "default": "./dist/configs/internal/index.js"
1566
- }
1567
- },
1568
- main: "dist/index.js",
1569
- module: "dist/index.cjs",
1570
- types: "dist/index.d.ts",
1571
- bin: { "alex-c-line": "dist/index.js" },
1572
- files: ["dist", "templates"],
1573
- scripts: {
1574
- "build": "tsdown",
1575
- "command": "bash -c 'pnpm run build && echo && echo \"Command output:\" && node dist/index.js $@' --",
1576
- "create-local-package": "pnpm run build && rm -f alex-c-line-*.tgz && pnpm pack",
1577
- "create-release-note": "bash -c 'git pull origin main && pnpm run command create-release-note-2 $@' --",
1578
- "format": "pnpm run format-prettier && pnpm run format-eslint",
1579
- "format-eslint": "eslint --fix --suppress-all \"package.json\" \"src/**/*.ts\" \"tests/**/*.ts\" && rm -f eslint-suppressions.json",
1580
- "format-prettier": "pnpm run format-prettier-typescript && pnpm run format-prettier-javascript && pnpm run format-prettier-yml",
1581
- "format-prettier-javascript": "prettier --write \"./**/*.js\"",
1582
- "format-prettier-typescript": "prettier --write --parser typescript \"./**/*.ts\"",
1583
- "format-prettier-yml": "prettier --write \"./**/*.{yml,yaml}\"",
1584
- "lint": "pnpm run lint-tsc && pnpm run lint-eslint && pnpm run lint-prettier",
1585
- "lint-eslint": "eslint \"package.json\" \"src/**/*.ts\" \"tests/**/*.ts\"",
1586
- "lint-prettier": "pnpm run lint-prettier-typescript && pnpm run lint-prettier-javascript && pnpm run lint-prettier-yml",
1587
- "lint-prettier-javascript": "prettier --check \"./**.js\"",
1588
- "lint-prettier-typescript": "prettier --check --parser typescript \"./**/*.ts\"",
1589
- "lint-prettier-yml": "prettier --check \"./**/*.{yml,yaml}\"",
1590
- "lint-tsc": "tsc --noEmit",
1591
- "pre-commit": "pnpm run command pre-commit-2",
1592
- "prepare": "husky",
1593
- "prepare-live-eslint-plugin": "pnpm uninstall @alextheman/eslint-plugin && pnpm install --save-dev @alextheman/eslint-plugin",
1594
- "prepare-live-utility": "pnpm uninstall @alextheman/utility && pnpm install @alextheman/utility",
1595
- "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\"'",
1596
- "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\"'",
1597
- "test": "vitest run",
1598
- "test-watch": "vitest",
1599
- "update-dependencies": "pnpm update --latest && pnpm update",
1600
- "use-live-eslint-plugin": "pnpm run prepare-live-eslint-plugin && pnpm run lint",
1601
- "use-live-utility": "pnpm run prepare-live-utility",
1602
- "use-local-eslint-plugin": "pnpm run prepare-local-eslint-plugin && pnpm run lint",
1603
- "use-local-utility": "pnpm run prepare-local-utility"
1604
- },
1605
- dependencies: {
1606
- "@alextheman/utility": "^4.15.0",
1607
- "@inquirer/prompts": "^8.2.0",
1608
- "boxen": "^8.0.1",
1609
- "canvas": "^3.2.1",
1610
- "chalk": "^5.6.2",
1611
- "commander": "^14.0.3",
1612
- "dotenv": "^17.2.4",
1613
- "dotenv-stringify": "^3.0.1",
1614
- "execa": "^9.6.1",
1615
- "figlet": "^1.10.0",
1616
- "gray-matter": "^4.0.3",
1617
- "libsodium-wrappers": "^0.8.2",
1618
- "supports-color": "^10.2.2",
1619
- "update-notifier": "^7.3.1",
1620
- "zod": "^4.3.6"
1621
- },
1622
- devDependencies: {
1623
- "@alextheman/eslint-plugin": "^5.6.2",
1624
- "@commander-js/extra-typings": "^14.0.0",
1625
- "@types/eslint": "^9.6.1",
1626
- "@types/node": "^25.2.1",
1627
- "@types/update-notifier": "^6.0.8",
1628
- "dotenv-cli": "^11.0.0",
1629
- "eslint": "^10.0.0",
1630
- "husky": "^9.1.7",
1631
- "prettier": "^3.8.1",
1632
- "tempy": "^3.2.0",
1633
- "ts-node": "^10.9.2",
1634
- "tsdown": "^0.20.3",
1635
- "typescript": "^5.9.3",
1636
- "vite-tsconfig-paths": "^6.0.5",
1637
- "vitest": "^4.0.18"
1638
- },
1639
- packageManager: "pnpm@10.29.2+sha512.bef43fa759d91fd2da4b319a5a0d13ef7a45bb985a3d7342058470f9d2051a3ba8674e629672654686ef9443ad13a82da2beb9eeb3e0221c87b8154fff9d74b8",
1640
- engines: { "node": ">=22.0.0" },
1641
- pnpm: { "onlyBuiltDependencies": [
1642
- "canvas",
1643
- "core-js",
1644
- "esbuild",
1645
- "fsevents",
1646
- "unrs-resolver"
1647
- ] }
1648
- };
1649
-
1650
1714
  //#endregion
1651
1715
  //#region src/index.ts
1652
1716
  (async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alex-c-line",
3
- "version": "1.26.2",
3
+ "version": "1.27.1",
4
4
  "description": "Command-line tool with commands to streamline the developer workflow.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,13 +34,13 @@
34
34
  "templates"
35
35
  ],
36
36
  "dependencies": {
37
- "@alextheman/utility": "^4.15.0",
37
+ "@alextheman/utility": "^4.16.2",
38
38
  "@inquirer/prompts": "^8.2.0",
39
39
  "boxen": "^8.0.1",
40
40
  "canvas": "^3.2.1",
41
41
  "chalk": "^5.6.2",
42
42
  "commander": "^14.0.3",
43
- "dotenv": "^17.2.4",
43
+ "dotenv": "^17.3.1",
44
44
  "dotenv-stringify": "^3.0.1",
45
45
  "execa": "^9.6.1",
46
46
  "figlet": "^1.10.0",
@@ -51,10 +51,10 @@
51
51
  "zod": "^4.3.6"
52
52
  },
53
53
  "devDependencies": {
54
- "@alextheman/eslint-plugin": "^5.6.2",
54
+ "@alextheman/eslint-plugin": "^5.7.0",
55
55
  "@commander-js/extra-typings": "^14.0.0",
56
56
  "@types/eslint": "^9.6.1",
57
- "@types/node": "^25.2.1",
57
+ "@types/node": "^25.2.3",
58
58
  "@types/update-notifier": "^6.0.8",
59
59
  "dotenv-cli": "^11.0.0",
60
60
  "eslint": "^10.0.0",
@@ -64,7 +64,7 @@
64
64
  "ts-node": "^10.9.2",
65
65
  "tsdown": "^0.20.3",
66
66
  "typescript": "^5.9.3",
67
- "vite-tsconfig-paths": "^6.0.5",
67
+ "vite-tsconfig-paths": "^6.1.1",
68
68
  "vitest": "^4.0.18"
69
69
  },
70
70
  "engines": {