@xylabs/ts-scripts-yarn3 7.4.18 → 7.4.20

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.
Files changed (182) hide show
  1. package/README.body.md +86 -0
  2. package/README.md +108 -0
  3. package/dist/actions/claude-commands.mjs +6 -2
  4. package/dist/actions/claude-commands.mjs.map +1 -1
  5. package/dist/actions/claude-rules.mjs +6 -2
  6. package/dist/actions/claude-rules.mjs.map +1 -1
  7. package/dist/actions/claude-skills.mjs +120 -0
  8. package/dist/actions/claude-skills.mjs.map +1 -0
  9. package/dist/actions/compile.mjs.map +1 -1
  10. package/dist/actions/cycle.mjs.map +1 -1
  11. package/dist/actions/dead.mjs.map +1 -1
  12. package/dist/actions/deploy-major.mjs.map +1 -1
  13. package/dist/actions/deploy-minor.mjs.map +1 -1
  14. package/dist/actions/deploy-next.mjs.map +1 -1
  15. package/dist/actions/deploy.mjs.map +1 -1
  16. package/dist/actions/fix.mjs.map +1 -1
  17. package/dist/actions/gen-docs.mjs.map +1 -1
  18. package/dist/actions/index.mjs +367 -160
  19. package/dist/actions/index.mjs.map +1 -1
  20. package/dist/actions/knip.mjs.map +1 -1
  21. package/dist/actions/lint.mjs.map +1 -1
  22. package/dist/actions/publint.mjs.map +1 -1
  23. package/dist/actions/publish.mjs.map +1 -1
  24. package/dist/actions/readme-gen.mjs +136 -20
  25. package/dist/actions/readme-gen.mjs.map +1 -1
  26. package/dist/actions/readme-init.mjs +83 -0
  27. package/dist/actions/readme-init.mjs.map +1 -0
  28. package/dist/actions/rebuild.mjs.map +1 -1
  29. package/dist/actions/reinstall.mjs.map +1 -1
  30. package/dist/actions/relint.mjs.map +1 -1
  31. package/dist/actions/retest.mjs +2 -2
  32. package/dist/actions/retest.mjs.map +1 -1
  33. package/dist/actions/sonar.mjs.map +1 -1
  34. package/dist/actions/test.mjs.map +1 -1
  35. package/dist/actions/up.mjs.map +1 -1
  36. package/dist/actions/updo.mjs.map +1 -1
  37. package/dist/actions/upplug.mjs.map +1 -1
  38. package/dist/actions/upyarn.mjs.map +1 -1
  39. package/dist/bin/xy.mjs +982 -642
  40. package/dist/bin/xy.mjs.map +1 -1
  41. package/dist/index.d.ts +46 -13
  42. package/dist/index.mjs +1044 -695
  43. package/dist/index.mjs.map +1 -1
  44. package/dist/lib/claudeMdTemplate.mjs +28 -3
  45. package/dist/lib/claudeMdTemplate.mjs.map +1 -1
  46. package/dist/lib/generateReadmeFiles.mjs +118 -21
  47. package/dist/lib/generateReadmeFiles.mjs.map +1 -1
  48. package/dist/lib/index.mjs +146 -24
  49. package/dist/lib/index.mjs.map +1 -1
  50. package/dist/lib/runSteps.mjs.map +1 -1
  51. package/dist/lib/runXy.mjs.map +1 -1
  52. package/dist/xy/{xyBuildCommands.mjs → build-commands/build.mjs} +107 -94
  53. package/dist/xy/build-commands/build.mjs.map +1 -0
  54. package/dist/xy/build-commands/index.mjs +502 -0
  55. package/dist/xy/build-commands/index.mjs.map +1 -0
  56. package/dist/xy/common/claude/commandsCommand.mjs +111 -0
  57. package/dist/xy/common/claude/commandsCommand.mjs.map +1 -0
  58. package/dist/xy/common/claude/index.mjs +441 -0
  59. package/dist/xy/common/claude/index.mjs.map +1 -0
  60. package/dist/xy/common/claude/initCommand.mjs +393 -0
  61. package/dist/xy/common/claude/initCommand.mjs.map +1 -0
  62. package/dist/xy/common/claude/rulesCommand.mjs +133 -0
  63. package/dist/xy/common/claude/rulesCommand.mjs.map +1 -0
  64. package/dist/xy/common/claude/settingsCommand.mjs +90 -0
  65. package/dist/xy/common/claude/settingsCommand.mjs.map +1 -0
  66. package/dist/xy/common/claude/skillsCommand.mjs +129 -0
  67. package/dist/xy/common/claude/skillsCommand.mjs.map +1 -0
  68. package/dist/xy/common/cleanDocsCommand.mjs +45 -0
  69. package/dist/xy/common/cleanDocsCommand.mjs.map +1 -0
  70. package/dist/xy/common/deadCommand.mjs +116 -0
  71. package/dist/xy/common/deadCommand.mjs.map +1 -0
  72. package/dist/xy/common/genDocsCommand.mjs +125 -0
  73. package/dist/xy/common/genDocsCommand.mjs.map +1 -0
  74. package/dist/xy/common/gitignoreGenCommand.mjs +98 -0
  75. package/dist/xy/common/gitignoreGenCommand.mjs.map +1 -0
  76. package/dist/xy/common/gitlintCommand.mjs +82 -0
  77. package/dist/xy/common/gitlintCommand.mjs.map +1 -0
  78. package/dist/xy/{xyCommonCommands.mjs → common/index.mjs} +561 -242
  79. package/dist/xy/common/index.mjs.map +1 -0
  80. package/dist/xy/common/licenseCommand.mjs +100 -0
  81. package/dist/xy/common/licenseCommand.mjs.map +1 -0
  82. package/dist/xy/common/npmignoreGenCommand.mjs +98 -0
  83. package/dist/xy/common/npmignoreGenCommand.mjs.map +1 -0
  84. package/dist/xy/common/readme/genCommand.mjs +321 -0
  85. package/dist/xy/common/readme/genCommand.mjs.map +1 -0
  86. package/dist/xy/common/readme/index.mjs +361 -0
  87. package/dist/xy/common/readme/index.mjs.map +1 -0
  88. package/dist/xy/common/readme/initCommand.mjs +103 -0
  89. package/dist/xy/common/readme/initCommand.mjs.map +1 -0
  90. package/dist/xy/common/retestCommand.mjs +111 -0
  91. package/dist/xy/common/retestCommand.mjs.map +1 -0
  92. package/dist/xy/common/testCommand.mjs +108 -0
  93. package/dist/xy/common/testCommand.mjs.map +1 -0
  94. package/dist/xy/common/upplugCommand.mjs +113 -0
  95. package/dist/xy/common/upplugCommand.mjs.map +1 -0
  96. package/dist/xy/common/upyarnCommand.mjs +108 -0
  97. package/dist/xy/common/upyarnCommand.mjs.map +1 -0
  98. package/dist/xy/common/yarn3OnlyCommand.mjs +70 -0
  99. package/dist/xy/common/yarn3OnlyCommand.mjs.map +1 -0
  100. package/dist/xy/deploy/deployCommand.mjs +139 -0
  101. package/dist/xy/deploy/deployCommand.mjs.map +1 -0
  102. package/dist/xy/deploy/deployMajorCommand.mjs +139 -0
  103. package/dist/xy/deploy/deployMajorCommand.mjs.map +1 -0
  104. package/dist/xy/deploy/deployMinorCommand.mjs +139 -0
  105. package/dist/xy/deploy/deployMinorCommand.mjs.map +1 -0
  106. package/dist/xy/deploy/deployNextCommand.mjs +139 -0
  107. package/dist/xy/deploy/deployNextCommand.mjs.map +1 -0
  108. package/dist/xy/{xyDeployCommands.mjs → deploy/index.mjs} +53 -53
  109. package/dist/xy/deploy/index.mjs.map +1 -0
  110. package/dist/xy/deploy/publishCommand.mjs +108 -0
  111. package/dist/xy/deploy/publishCommand.mjs.map +1 -0
  112. package/dist/xy/index.mjs +982 -642
  113. package/dist/xy/index.mjs.map +1 -1
  114. package/dist/xy/install/cleanCommand.mjs +140 -0
  115. package/dist/xy/install/cleanCommand.mjs.map +1 -0
  116. package/dist/xy/install/dupdepsCommand.mjs +191 -0
  117. package/dist/xy/install/dupdepsCommand.mjs.map +1 -0
  118. package/dist/xy/{xyInstallCommands.mjs → install/index.mjs} +71 -68
  119. package/dist/xy/install/index.mjs.map +1 -0
  120. package/dist/xy/install/reinstallCommand.mjs +140 -0
  121. package/dist/xy/install/reinstallCommand.mjs.map +1 -0
  122. package/dist/xy/install/staticsCommand.mjs +191 -0
  123. package/dist/xy/install/staticsCommand.mjs.map +1 -0
  124. package/dist/{actions/clean-jest.mjs → xy/install/upCommand.mjs} +15 -6
  125. package/dist/xy/install/upCommand.mjs.map +1 -0
  126. package/dist/xy/install/updoCommand.mjs +112 -0
  127. package/dist/xy/install/updoCommand.mjs.map +1 -0
  128. package/dist/xy/lint/cycleCommand.mjs +163 -0
  129. package/dist/xy/lint/cycleCommand.mjs.map +1 -0
  130. package/dist/xy/lint/deplintCommand.mjs +814 -0
  131. package/dist/xy/lint/deplintCommand.mjs.map +1 -0
  132. package/dist/xy/lint/fixCommand.mjs +168 -0
  133. package/dist/xy/lint/fixCommand.mjs.map +1 -0
  134. package/dist/xy/{xyLintCommands.mjs → lint/index.mjs} +176 -145
  135. package/dist/xy/lint/index.mjs.map +1 -0
  136. package/dist/xy/lint/knipCommand.mjs +121 -0
  137. package/dist/xy/lint/knipCommand.mjs.map +1 -0
  138. package/dist/xy/lint/lintCommand.mjs +186 -0
  139. package/dist/xy/lint/lintCommand.mjs.map +1 -0
  140. package/dist/xy/lint/publintCommand.mjs +187 -0
  141. package/dist/xy/lint/publintCommand.mjs.map +1 -0
  142. package/dist/xy/lint/relintCommand.mjs +163 -0
  143. package/dist/xy/lint/relintCommand.mjs.map +1 -0
  144. package/dist/xy/lint/sonarCommand.mjs +121 -0
  145. package/dist/xy/lint/sonarCommand.mjs.map +1 -0
  146. package/dist/xy/xy.mjs +980 -640
  147. package/dist/xy/xy.mjs.map +1 -1
  148. package/package.json +2 -2
  149. package/templates/claude/skills/xylabs-e2e-setup/SKILL.md +196 -0
  150. package/templates/readme/README.body.md +11 -0
  151. package/templates/readme/README.template.md +22 -0
  152. package/dist/actions/clean-jest.mjs.map +0 -1
  153. package/dist/xy/xyBuildCommands.mjs.map +0 -1
  154. package/dist/xy/xyCommonCommands.mjs.map +0 -1
  155. package/dist/xy/xyDeployCommands.mjs.map +0 -1
  156. package/dist/xy/xyInstallCommands.mjs.map +0 -1
  157. package/dist/xy/xyLintCommands.mjs.map +0 -1
  158. /package/templates/{CLAUDE-project.md → claude/CLAUDE-project.md} +0 -0
  159. /package/templates/{commands → claude/commands}/xylabs-build.md +0 -0
  160. /package/templates/{commands → claude/commands}/xylabs-clean.md +0 -0
  161. /package/templates/{commands → claude/commands}/xylabs-compile.md +0 -0
  162. /package/templates/{commands → claude/commands}/xylabs-cycle.md +0 -0
  163. /package/templates/{commands → claude/commands}/xylabs-deplint.md +0 -0
  164. /package/templates/{commands → claude/commands}/xylabs-deploy-major.md +0 -0
  165. /package/templates/{commands → claude/commands}/xylabs-deploy-minor.md +0 -0
  166. /package/templates/{commands → claude/commands}/xylabs-deploy.md +0 -0
  167. /package/templates/{commands → claude/commands}/xylabs-fix.md +0 -0
  168. /package/templates/{commands → claude/commands}/xylabs-knip.md +0 -0
  169. /package/templates/{commands → claude/commands}/xylabs-lint.md +0 -0
  170. /package/templates/{commands → claude/commands}/xylabs-publint.md +0 -0
  171. /package/templates/{commands → claude/commands}/xylabs-rebuild.md +0 -0
  172. /package/templates/{commands → claude/commands}/xylabs-test.md +0 -0
  173. /package/templates/{rules → claude/rules}/xylabs-architecture.md +0 -0
  174. /package/templates/{rules → claude/rules}/xylabs-build.md +0 -0
  175. /package/templates/{rules → claude/rules}/xylabs-dependencies.md +0 -0
  176. /package/templates/{rules → claude/rules}/xylabs-error-handling.md +0 -0
  177. /package/templates/{rules → claude/rules}/xylabs-frameworks.md +0 -0
  178. /package/templates/{rules → claude/rules}/xylabs-git-workflow.md +0 -0
  179. /package/templates/{rules → claude/rules}/xylabs-linting.md +0 -0
  180. /package/templates/{rules → claude/rules}/xylabs-naming.md +0 -0
  181. /package/templates/{rules → claude/rules}/xylabs-style.md +0 -0
  182. /package/templates/{rules → claude/rules}/xylabs-typescript.md +0 -0
package/dist/xy/xy.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/xy/xy.ts
2
- import chalk31 from "chalk";
2
+ import chalk39 from "chalk";
3
3
 
4
4
  // src/actions/build.ts
5
5
  import chalk9 from "chalk";
@@ -18,14 +18,19 @@ var checkResult = (name, result, level = "error", exitOnFail = false) => {
18
18
  };
19
19
 
20
20
  // src/lib/claudeMdTemplate.ts
21
- import { readdirSync, readFileSync } from "fs";
21
+ import {
22
+ readdirSync,
23
+ readFileSync,
24
+ statSync
25
+ } from "fs";
22
26
  import { createRequire } from "module";
23
27
  import PATH from "path";
24
28
  var require2 = createRequire(import.meta.url);
25
29
  var packageRoot = PATH.dirname(require2.resolve("@xylabs/ts-scripts-yarn3/package.json"));
26
- var templatesDir = PATH.resolve(packageRoot, "templates");
30
+ var templatesDir = PATH.resolve(packageRoot, "templates", "claude");
27
31
  var XYLABS_RULES_PREFIX = "xylabs-";
28
32
  var XYLABS_COMMANDS_PREFIX = "xylabs-";
33
+ var XYLABS_SKILLS_PREFIX = "xylabs-";
29
34
  var claudeMdRuleTemplates = () => {
30
35
  const rulesDir = PATH.resolve(templatesDir, "rules");
31
36
  const files = readdirSync(rulesDir).filter((f) => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith(".md"));
@@ -44,6 +49,24 @@ var claudeCommandTemplates = () => {
44
49
  }
45
50
  return result;
46
51
  };
52
+ var claudeSkillTemplates = () => {
53
+ const skillsDir = PATH.resolve(templatesDir, "skills");
54
+ const dirs = readdirSync(skillsDir).filter(
55
+ (f) => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory()
56
+ );
57
+ const result = {};
58
+ for (const dir of dirs) {
59
+ const dirPath = PATH.resolve(skillsDir, dir);
60
+ const files = readdirSync(dirPath, { recursive: true, encoding: "utf8" });
61
+ result[dir] = {};
62
+ for (const file of files) {
63
+ if (statSync(PATH.resolve(dirPath, file)).isFile()) {
64
+ result[dir][file] = readFileSync(PATH.resolve(dirPath, file), "utf8");
65
+ }
66
+ }
67
+ }
68
+ return result;
69
+ };
47
70
  var claudeMdProjectTemplate = () => readFileSync(PATH.resolve(templatesDir, "CLAUDE-project.md"), "utf8");
48
71
 
49
72
  // src/lib/deleteGlob.ts
@@ -326,10 +349,19 @@ var generateIgnoreFiles = (filename3, pkg) => {
326
349
 
327
350
  // src/lib/generateReadmeFiles.ts
328
351
  import { execSync as execSync2 } from "child_process";
329
- import FS from "fs";
330
- import { readFile, writeFile } from "fs/promises";
352
+ import FS, { readFileSync as readFileSync3 } from "fs";
353
+ import {
354
+ mkdir,
355
+ readFile,
356
+ writeFile
357
+ } from "fs/promises";
358
+ import { createRequire as createRequire2 } from "module";
331
359
  import PATH2 from "path";
360
+ import { createInterface } from "readline";
332
361
  import chalk5 from "chalk";
362
+ var require3 = createRequire2(import.meta.url);
363
+ var packageRoot2 = PATH2.dirname(require3.resolve("@xylabs/ts-scripts-yarn3/package.json"));
364
+ var readmeTemplatesDir = PATH2.resolve(packageRoot2, "templates", "readme");
333
365
  function fillTemplate(template, data) {
334
366
  const additionalData = { ...data, safeName: data.name.replaceAll("/", "__").replaceAll("@", "") };
335
367
  return template.replaceAll(/\{\{(.*?)\}\}/g, (_, key) => additionalData[key.trim()] ?? "");
@@ -419,37 +451,120 @@ ${indent}### ${item.name}
419
451
  }
420
452
  return content;
421
453
  }
454
+ function askConfirmation(question) {
455
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
456
+ return new Promise((resolve) => {
457
+ rl.question(question, (answer) => {
458
+ rl.close();
459
+ resolve(answer.toLowerCase() === "y" || answer.toLowerCase() === "yes");
460
+ });
461
+ });
462
+ }
463
+ var DEFAULT_README_TEMPLATE = readFileSync3(PATH2.resolve(readmeTemplatesDir, "README.template.md"), "utf8");
464
+ var DEFAULT_README_BODY = readFileSync3(PATH2.resolve(readmeTemplatesDir, "README.body.md"), "utf8");
465
+ function applyLogoConfig(template, logoUrl, logoLinkUrl) {
466
+ let result = template;
467
+ if (logoUrl) {
468
+ result = result.replace(/\[logo]: .+/, `[logo]: ${logoUrl}`);
469
+ if (logoLinkUrl) {
470
+ result = result.replace(/\[!\[logo]\[]][^)]*\)/, `[![logo][]](${logoLinkUrl})`);
471
+ }
472
+ } else {
473
+ result = result.replace(/\[!\[logo]\[]][^\n]*\n*/, "");
474
+ result = result.replace(/\[logo]: [^\n]*\n?/, "");
475
+ }
476
+ return result;
477
+ }
478
+ function resolveTemplatePath(templatePath) {
479
+ const cwd = INIT_CWD() ?? ".";
480
+ return templatePath ?? PATH2.join(cwd, ".xy", "README.template.md");
481
+ }
482
+ async function loadOrCreateTemplate(resolvedTemplatePath) {
483
+ try {
484
+ const template = await readFile(resolvedTemplatePath, "utf8");
485
+ return { created: false, template };
486
+ } catch {
487
+ console.log(chalk5.yellow(`Template not found: ${resolvedTemplatePath}`));
488
+ const shouldCreate = await askConfirmation("Would you like to create a stock template? (y/N) ");
489
+ if (!shouldCreate) {
490
+ throw new Error("Template creation declined");
491
+ }
492
+ const template = DEFAULT_README_TEMPLATE;
493
+ await scaffoldTemplate(resolvedTemplatePath, template);
494
+ return { created: true, template };
495
+ }
496
+ }
497
+ async function scaffoldTemplate(resolvedTemplatePath, template) {
498
+ const xyDir = PATH2.dirname(resolvedTemplatePath);
499
+ await mkdir(xyDir, { recursive: true });
500
+ await writeFile(resolvedTemplatePath, template);
501
+ console.log(chalk5.green(`Created template: ${resolvedTemplatePath}`));
502
+ const bodyPath = PATH2.join(xyDir, "README.body.md");
503
+ await writeFile(bodyPath, DEFAULT_README_BODY);
504
+ console.log(chalk5.green(`Created body template: ${bodyPath}`));
505
+ }
506
+ async function resolveBody(location, defaultBody) {
507
+ const localBodyPath = PATH2.join(location, "README.body.md");
508
+ try {
509
+ return await readFile(localBodyPath, "utf8");
510
+ } catch {
511
+ return defaultBody;
512
+ }
513
+ }
514
+ async function generateReadmeForWorkspace(location, name, template, defaultBody, typedoc, verbose) {
515
+ try {
516
+ const pkgJsonPath = PATH2.join(location, "package.json");
517
+ const pkgJson = JSON.parse(await readFile(pkgJsonPath, "utf8"));
518
+ const body = await resolveBody(location, defaultBody);
519
+ const typedocContent = typedoc ? generateTypedoc(location, ["src/index*.ts"]) : "";
520
+ const readmeContent = fillTemplate(template, {
521
+ ...pkgJson,
522
+ body,
523
+ typedoc: typedocContent
524
+ });
525
+ await writeFile(PATH2.join(location, "README.md"), readmeContent);
526
+ if (verbose) console.log(chalk5.green(` ${name}`));
527
+ return true;
528
+ } catch (ex) {
529
+ const error = ex;
530
+ console.warn(chalk5.yellow(` Skipped ${location}: ${error.message}`));
531
+ return false;
532
+ }
533
+ }
422
534
  async function generateReadmeFiles({
535
+ logoLinkUrl,
536
+ logoUrl,
423
537
  pkg,
424
538
  templatePath,
425
539
  typedoc = false,
426
- verbose
540
+ verbose = false
427
541
  }) {
428
542
  console.log(chalk5.green("Generate README Files"));
429
- const cwd = INIT_CWD() ?? ".";
430
- const resolvedTemplatePath = templatePath ?? PATH2.join(cwd, "scripts", "README.template.md");
543
+ const resolvedTemplatePath = resolveTemplatePath(templatePath);
431
544
  let template;
545
+ let templateCreated;
432
546
  try {
433
- template = await readFile(resolvedTemplatePath, "utf8");
547
+ ({ template, created: templateCreated } = await loadOrCreateTemplate(resolvedTemplatePath));
434
548
  } catch {
435
- console.error(chalk5.red(`Template not found: ${resolvedTemplatePath}`));
436
549
  return 1;
437
550
  }
438
- const workspaces = pkg ? [yarnWorkspace(pkg)] : yarnWorkspaces();
551
+ template = applyLogoConfig(template, logoUrl, logoLinkUrl);
552
+ if (templateCreated) {
553
+ console.log(chalk5.green("Generating README files for all packages..."));
554
+ }
555
+ const xyDir = PATH2.dirname(resolvedTemplatePath);
556
+ const xyBodyPath = PATH2.join(xyDir, "README.body.md");
557
+ let defaultBody;
558
+ try {
559
+ defaultBody = await readFile(xyBodyPath, "utf8");
560
+ } catch {
561
+ defaultBody = DEFAULT_README_BODY;
562
+ }
563
+ const workspaces = pkg && !templateCreated ? [yarnWorkspace(pkg)] : yarnWorkspaces();
439
564
  let failed = false;
440
565
  for (const { location, name } of workspaces) {
441
- try {
442
- const pkgJsonPath = PATH2.join(location, "package.json");
443
- const pkgJson = JSON.parse(await readFile(pkgJsonPath, "utf8"));
444
- const typedocContent = typedoc ? generateTypedoc(location, ["src/index*.ts"]) : "";
445
- const readmeContent = fillTemplate(template, { ...pkgJson, typedoc: typedocContent });
446
- await writeFile(PATH2.join(location, "README.md"), readmeContent);
447
- if (verbose) console.log(chalk5.green(` ${name}`));
448
- } catch (ex) {
449
- const error = ex;
450
- console.warn(chalk5.yellow(` Skipped ${location}: ${error.message}`));
451
- failed = true;
452
- }
566
+ const success = await generateReadmeForWorkspace(location, name, template, defaultBody, typedoc, verbose);
567
+ if (!success) failed = true;
453
568
  }
454
569
  return failed ? 1 : 0;
455
570
  }
@@ -476,10 +591,10 @@ var loadConfig = async (params) => {
476
591
  };
477
592
 
478
593
  // src/lib/parsedPackageJSON.ts
479
- import { readFileSync as readFileSync3 } from "fs";
594
+ import { readFileSync as readFileSync4 } from "fs";
480
595
  var parsedPackageJSON = (path8) => {
481
596
  const pathToPackageJSON = path8 ?? process.env.npm_package_json ?? "";
482
- const packageJSON = readFileSync3(pathToPackageJSON).toString();
597
+ const packageJSON = readFileSync4(pathToPackageJSON).toString();
483
598
  return JSON.parse(packageJSON);
484
599
  };
485
600
 
@@ -594,7 +709,7 @@ import {
594
709
  existsSync as existsSync4,
595
710
  mkdirSync,
596
711
  readdirSync as readdirSync2,
597
- readFileSync as readFileSync4,
712
+ readFileSync as readFileSync5,
598
713
  unlinkSync,
599
714
  writeFileSync as writeFileSync2
600
715
  } from "fs";
@@ -607,7 +722,7 @@ var syncCommandFiles = (commandsDir) => {
607
722
  let created = 0;
608
723
  for (const [filename3, content] of Object.entries(templates)) {
609
724
  const targetPath = PATH3.resolve(commandsDir, filename3);
610
- const existing = existsSync4(targetPath) ? readFileSync4(targetPath, "utf8") : void 0;
725
+ const existing = existsSync4(targetPath) ? readFileSync5(targetPath, "utf8") : void 0;
611
726
  if (existing === content) continue;
612
727
  writeFileSync2(targetPath, content, "utf8");
613
728
  if (existing) {
@@ -664,7 +779,7 @@ import {
664
779
  existsSync as existsSync5,
665
780
  mkdirSync as mkdirSync2,
666
781
  readdirSync as readdirSync3,
667
- readFileSync as readFileSync5,
782
+ readFileSync as readFileSync6,
668
783
  unlinkSync as unlinkSync2,
669
784
  writeFileSync as writeFileSync3
670
785
  } from "fs";
@@ -677,7 +792,7 @@ var syncRuleFiles = (rulesDir) => {
677
792
  let created = 0;
678
793
  for (const [filename3, content] of Object.entries(templates)) {
679
794
  const targetPath = PATH4.resolve(rulesDir, filename3);
680
- const existing = existsSync5(targetPath) ? readFileSync5(targetPath, "utf8") : void 0;
795
+ const existing = existsSync5(targetPath) ? readFileSync6(targetPath, "utf8") : void 0;
681
796
  if (existing === content) continue;
682
797
  writeFileSync3(targetPath, content, "utf8");
683
798
  if (existing) {
@@ -749,7 +864,7 @@ import {
749
864
  writeFileSync as writeFileSync4
750
865
  } from "fs";
751
866
  import PATH5 from "path";
752
- import { createInterface } from "readline";
867
+ import { createInterface as createInterface2 } from "readline";
753
868
  import chalk12 from "chalk";
754
869
  var DEFAULT_SETTINGS = {
755
870
  permissions: {
@@ -784,8 +899,8 @@ var DEFAULT_SETTINGS = {
784
899
  ]
785
900
  }
786
901
  };
787
- function askConfirmation(question) {
788
- const rl = createInterface({ input: process.stdin, output: process.stdout });
902
+ function askConfirmation2(question) {
903
+ const rl = createInterface2({ input: process.stdin, output: process.stdout });
789
904
  return new Promise((resolve) => {
790
905
  rl.question(question, (answer) => {
791
906
  rl.close();
@@ -799,7 +914,7 @@ async function claudeSettings() {
799
914
  const settingsPath = PATH5.resolve(claudeDir, "settings.local.json");
800
915
  mkdirSync3(claudeDir, { recursive: true });
801
916
  if (existsSync6(settingsPath)) {
802
- const confirmed = await askConfirmation(
917
+ const confirmed = await askConfirmation2(
803
918
  chalk12.yellow(`${settingsPath} already exists. Replace it? (y/N) `)
804
919
  );
805
920
  if (!confirmed) {
@@ -813,6 +928,84 @@ async function claudeSettings() {
813
928
  return 0;
814
929
  }
815
930
 
931
+ // src/actions/claude-skills.ts
932
+ import {
933
+ existsSync as existsSync7,
934
+ mkdirSync as mkdirSync4,
935
+ readdirSync as readdirSync4,
936
+ readFileSync as readFileSync7,
937
+ rmSync,
938
+ statSync as statSync2,
939
+ writeFileSync as writeFileSync5
940
+ } from "fs";
941
+ import PATH6 from "path";
942
+ import chalk13 from "chalk";
943
+ var syncSkillFiles = (skillsDir) => {
944
+ const templates = claudeSkillTemplates();
945
+ const templateNames = new Set(Object.keys(templates));
946
+ let updated = 0;
947
+ let created = 0;
948
+ for (const [skillName, files] of Object.entries(templates)) {
949
+ const skillDir = PATH6.resolve(skillsDir, skillName);
950
+ mkdirSync4(skillDir, { recursive: true });
951
+ for (const [filename3, content] of Object.entries(files)) {
952
+ const targetPath = PATH6.resolve(skillDir, filename3);
953
+ mkdirSync4(PATH6.dirname(targetPath), { recursive: true });
954
+ const existing = existsSync7(targetPath) ? readFileSync7(targetPath, "utf8") : void 0;
955
+ if (existing === content) continue;
956
+ writeFileSync5(targetPath, content, "utf8");
957
+ if (existing) {
958
+ updated++;
959
+ } else {
960
+ created++;
961
+ }
962
+ }
963
+ }
964
+ return {
965
+ created,
966
+ templateNames,
967
+ updated
968
+ };
969
+ };
970
+ var removeStaleSkills = (skillsDir, templateNames) => {
971
+ const existingSkills = readdirSync4(skillsDir).filter(
972
+ (f) => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync2(PATH6.resolve(skillsDir, f)).isDirectory()
973
+ );
974
+ let removed = 0;
975
+ for (const dir of existingSkills) {
976
+ if (!templateNames.has(dir)) {
977
+ rmSync(PATH6.resolve(skillsDir, dir), { recursive: true });
978
+ removed++;
979
+ }
980
+ }
981
+ return removed;
982
+ };
983
+ var logSkillsResult = (created, updated, removed) => {
984
+ if (created || updated || removed) {
985
+ const parts = [
986
+ created ? `${created} created` : "",
987
+ updated ? `${updated} updated` : "",
988
+ removed ? `${removed} removed` : ""
989
+ ].filter(Boolean);
990
+ console.log(chalk13.green(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: ${parts.join(", ")}`));
991
+ } else {
992
+ console.log(chalk13.gray(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: already up to date`));
993
+ }
994
+ };
995
+ var claudeSkills = () => {
996
+ const cwd = INIT_CWD() ?? process.cwd();
997
+ const skillsDir = PATH6.resolve(cwd, ".claude", "skills");
998
+ mkdirSync4(skillsDir, { recursive: true });
999
+ const {
1000
+ created,
1001
+ templateNames,
1002
+ updated
1003
+ } = syncSkillFiles(skillsDir);
1004
+ const removed = removeStaleSkills(skillsDir, templateNames);
1005
+ logSkillsResult(created, updated, removed);
1006
+ return 0;
1007
+ };
1008
+
816
1009
  // src/actions/clean.ts
817
1010
  var clean = async ({ verbose, pkg }) => {
818
1011
  return pkg ? await cleanPackage({ pkg, verbose }) : cleanAll({ verbose });
@@ -827,16 +1020,16 @@ var cleanAll = ({ verbose }) => {
827
1020
 
828
1021
  // src/actions/clean-docs.ts
829
1022
  import path from "path";
830
- import chalk13 from "chalk";
1023
+ import chalk14 from "chalk";
831
1024
  var cleanDocs = () => {
832
1025
  const pkgName = process.env.npm_package_name;
833
- console.log(chalk13.green(`Cleaning Docs [${pkgName}]`));
1026
+ console.log(chalk14.green(`Cleaning Docs [${pkgName}]`));
834
1027
  for (const { location } of yarnWorkspaces()) deleteGlob(path.join(location, "docs"));
835
1028
  return 0;
836
1029
  };
837
1030
 
838
1031
  // src/actions/compile.ts
839
- import chalk14 from "chalk";
1032
+ import chalk15 from "chalk";
840
1033
  var compile = ({
841
1034
  verbose,
842
1035
  target,
@@ -877,7 +1070,7 @@ var compileAll = ({
877
1070
  const incrementalOptions = incremental ? ["--since", "-Ap", "--topological-dev"] : ["--parallel", "-Ap", "--topological-dev"];
878
1071
  const jobsOptions = jobs ? ["-j", `${jobs}`] : [];
879
1072
  if (jobs) {
880
- console.log(chalk14.blue(`Jobs set to [${jobs}]`));
1073
+ console.log(chalk15.blue(`Jobs set to [${jobs}]`));
881
1074
  }
882
1075
  const result = runSteps(`Compile${incremental ? "-Incremental" : ""} [All]`, [
883
1076
  ["yarn", [
@@ -891,13 +1084,13 @@ var compileAll = ({
891
1084
  ...targetOptions
892
1085
  ]]
893
1086
  ]);
894
- console.log(`${chalk14.gray("Compiled in")} [${chalk14.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk14.gray("seconds")}`);
1087
+ console.log(`${chalk15.gray("Compiled in")} [${chalk15.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk15.gray("seconds")}`);
895
1088
  return result;
896
1089
  };
897
1090
 
898
1091
  // src/actions/copy-assets.ts
899
1092
  import path2 from "path/posix";
900
- import chalk15 from "chalk";
1093
+ import chalk16 from "chalk";
901
1094
  import cpy from "cpy";
902
1095
  var copyPackageTargetAssets = async (target, name, location) => {
903
1096
  try {
@@ -920,7 +1113,7 @@ var copyPackageTargetAssets = async (target, name, location) => {
920
1113
  };
921
1114
  var copyTargetAssets = async (target, pkg) => {
922
1115
  const workspaces = yarnWorkspaces();
923
- console.log(chalk15.green(`Copying Assets [${target.toUpperCase()}]`));
1116
+ console.log(chalk16.green(`Copying Assets [${target.toUpperCase()}]`));
924
1117
  const workspaceList = workspaces.filter(({ name }) => {
925
1118
  return pkg === void 0 || name === pkg;
926
1119
  });
@@ -1004,7 +1197,7 @@ var dead = () => {
1004
1197
  };
1005
1198
 
1006
1199
  // src/actions/deplint/deplint.ts
1007
- import chalk21 from "chalk";
1200
+ import chalk22 from "chalk";
1008
1201
 
1009
1202
  // src/actions/deplint/findFiles.ts
1010
1203
  import fs2 from "fs";
@@ -1209,7 +1402,7 @@ function getExternalImportsFromFiles({
1209
1402
 
1210
1403
  // src/actions/deplint/checkPackage/getUnlistedDependencies.ts
1211
1404
  import { builtinModules } from "module";
1212
- import chalk16 from "chalk";
1405
+ import chalk17 from "chalk";
1213
1406
  function isRuntimeImportListed(imp, name, dependencies, peerDependencies) {
1214
1407
  return dependencies.includes(imp) || imp === name || peerDependencies.includes(imp) || builtinModules.includes(imp);
1215
1408
  }
@@ -1217,7 +1410,7 @@ function isTypeImportListed(imp, name, dependencies, devDependencies, peerDepend
1217
1410
  return dependencies.includes(imp) || imp === name || dependencies.includes(`@types/${imp}`) || peerDependencies.includes(imp) || peerDependencies.includes(`@types/${imp}`) || devDependencies.includes(`@types/${imp}`) || builtinModules.includes(imp);
1218
1411
  }
1219
1412
  function logMissing(name, imp, importPaths) {
1220
- console.log(`[${chalk16.blue(name)}] Missing dependency in package.json: ${chalk16.red(imp)}`);
1413
+ console.log(`[${chalk17.blue(name)}] Missing dependency in package.json: ${chalk17.red(imp)}`);
1221
1414
  if (importPaths[imp]) {
1222
1415
  console.log(` ${importPaths[imp].join("\n ")}`);
1223
1416
  }
@@ -1246,7 +1439,7 @@ function getUnlistedDependencies({ name, location }, {
1246
1439
  }
1247
1440
  if (unlistedDependencies > 0) {
1248
1441
  const packageLocation = `${location}/package.json`;
1249
- console.log(` ${chalk16.yellow(packageLocation)}
1442
+ console.log(` ${chalk17.yellow(packageLocation)}
1250
1443
  `);
1251
1444
  }
1252
1445
  return unlistedDependencies;
@@ -1254,7 +1447,7 @@ function getUnlistedDependencies({ name, location }, {
1254
1447
 
1255
1448
  // src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts
1256
1449
  import { builtinModules as builtinModules2 } from "module";
1257
- import chalk17 from "chalk";
1450
+ import chalk18 from "chalk";
1258
1451
  function getUnlistedDevDependencies({ name, location }, {
1259
1452
  devDependencies,
1260
1453
  dependencies,
@@ -1268,7 +1461,7 @@ function getUnlistedDevDependencies({ name, location }, {
1268
1461
  for (const imp of externalAllImports) {
1269
1462
  if (!distImports.includes(imp) && imp !== name && !dependencies.includes(imp) && !dependencies.includes(`@types/${imp}`) && !peerDependencies.includes(imp) && !peerDependencies.includes(`@types/${imp}`) && !devDependencies.includes(imp) && !devDependencies.includes(`@types/${imp}`) && !builtinModules2.includes(imp)) {
1270
1463
  unlistedDevDependencies++;
1271
- console.log(`[${chalk17.blue(name)}] Missing devDependency in package.json: ${chalk17.red(imp)}`);
1464
+ console.log(`[${chalk18.blue(name)}] Missing devDependency in package.json: ${chalk18.red(imp)}`);
1272
1465
  if (allImportPaths[imp]) {
1273
1466
  console.log(` ${allImportPaths[imp].join("\n ")}`);
1274
1467
  }
@@ -1276,14 +1469,14 @@ function getUnlistedDevDependencies({ name, location }, {
1276
1469
  }
1277
1470
  if (unlistedDevDependencies > 0) {
1278
1471
  const packageLocation = `${location}/package.json`;
1279
- console.log(` ${chalk17.yellow(packageLocation)}
1472
+ console.log(` ${chalk18.yellow(packageLocation)}
1280
1473
  `);
1281
1474
  }
1282
1475
  return unlistedDevDependencies;
1283
1476
  }
1284
1477
 
1285
1478
  // src/actions/deplint/checkPackage/getUnusedDependencies.ts
1286
- import chalk18 from "chalk";
1479
+ import chalk19 from "chalk";
1287
1480
  function getUnusedDependencies({ name, location }, { dependencies }, {
1288
1481
  externalDistImports,
1289
1482
  externalDistTypeImports,
@@ -1295,22 +1488,22 @@ function getUnusedDependencies({ name, location }, { dependencies }, {
1295
1488
  if (!externalDistImports.includes(dep) && !externalDistImports.includes(dep.replace(/^@types\//, "")) && !externalDistTypeImports.includes(dep) && !externalDistTypeImports.includes(dep.replace(/^@types\//, ""))) {
1296
1489
  unusedDependencies++;
1297
1490
  if (externalAllImports.includes(dep)) {
1298
- console.log(`[${chalk18.blue(name)}] dependency should be devDependency in package.json: ${chalk18.red(dep)}`);
1491
+ console.log(`[${chalk19.blue(name)}] dependency should be devDependency in package.json: ${chalk19.red(dep)}`);
1299
1492
  } else {
1300
- console.log(`[${chalk18.blue(name)}] Unused dependency in package.json: ${chalk18.red(dep)}`);
1493
+ console.log(`[${chalk19.blue(name)}] Unused dependency in package.json: ${chalk19.red(dep)}`);
1301
1494
  }
1302
1495
  }
1303
1496
  }
1304
1497
  if (unusedDependencies > 0) {
1305
1498
  const packageLocation = `${location}/package.json`;
1306
- console.log(` ${chalk18.yellow(packageLocation)}
1499
+ console.log(` ${chalk19.yellow(packageLocation)}
1307
1500
  `);
1308
1501
  }
1309
1502
  return unusedDependencies;
1310
1503
  }
1311
1504
 
1312
1505
  // src/actions/deplint/checkPackage/getUnusedDevDependencies.ts
1313
- import chalk19 from "chalk";
1506
+ import chalk20 from "chalk";
1314
1507
 
1315
1508
  // src/actions/deplint/getCliReferencedPackagesFromFiles.ts
1316
1509
  import fs8 from "fs";
@@ -1594,19 +1787,19 @@ function getUnusedDevDependencies({ name, location }, {
1594
1787
  if (dependencies.includes(dep) || peerDependencies.includes(dep)) continue;
1595
1788
  if (!isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs, cliRefs)) {
1596
1789
  unusedDevDependencies++;
1597
- console.log(`[${chalk19.blue(name)}] Unused devDependency in package.json: ${chalk19.red(dep)}`);
1790
+ console.log(`[${chalk20.blue(name)}] Unused devDependency in package.json: ${chalk20.red(dep)}`);
1598
1791
  }
1599
1792
  }
1600
1793
  if (unusedDevDependencies > 0) {
1601
1794
  const packageLocation = `${location}/package.json`;
1602
- console.log(` ${chalk19.yellow(packageLocation)}
1795
+ console.log(` ${chalk20.yellow(packageLocation)}
1603
1796
  `);
1604
1797
  }
1605
1798
  return unusedDevDependencies;
1606
1799
  }
1607
1800
 
1608
1801
  // src/actions/deplint/checkPackage/getUnusedPeerDependencies.ts
1609
- import chalk20 from "chalk";
1802
+ import chalk21 from "chalk";
1610
1803
  function getUnusedPeerDependencies({ name, location }, { peerDependencies, dependencies }, { externalDistImports, externalDistTypeImports }, exclude) {
1611
1804
  let unusedDependencies = 0;
1612
1805
  for (const dep of peerDependencies) {
@@ -1614,15 +1807,15 @@ function getUnusedPeerDependencies({ name, location }, { peerDependencies, depen
1614
1807
  if (!externalDistImports.includes(dep) && !externalDistImports.includes(dep.replace(/^@types\//, "")) && !externalDistTypeImports.includes(dep) && !externalDistTypeImports.includes(dep.replace(/^@types\//, ""))) {
1615
1808
  unusedDependencies++;
1616
1809
  if (dependencies.includes(dep)) {
1617
- console.log(`[${chalk20.blue(name)}] Unused peerDependency [already a dependency] in package.json: ${chalk20.red(dep)}`);
1810
+ console.log(`[${chalk21.blue(name)}] Unused peerDependency [already a dependency] in package.json: ${chalk21.red(dep)}`);
1618
1811
  } else {
1619
- console.log(`[${chalk20.blue(name)}] Unused peerDependency in package.json: ${chalk20.red(dep)}`);
1812
+ console.log(`[${chalk21.blue(name)}] Unused peerDependency in package.json: ${chalk21.red(dep)}`);
1620
1813
  }
1621
1814
  }
1622
1815
  }
1623
1816
  if (unusedDependencies > 0) {
1624
1817
  const packageLocation = `${location}/package.json`;
1625
- console.log(` ${chalk20.yellow(packageLocation)}
1818
+ console.log(` ${chalk21.yellow(packageLocation)}
1626
1819
  `);
1627
1820
  }
1628
1821
  return unusedDependencies;
@@ -1717,19 +1910,19 @@ var deplint = async ({
1717
1910
  });
1718
1911
  }
1719
1912
  if (totalErrors > 0) {
1720
- console.warn(`Deplint: Found ${chalk21.red(totalErrors)} dependency problems. ${chalk21.red("\u2716")}`);
1913
+ console.warn(`Deplint: Found ${chalk22.red(totalErrors)} dependency problems. ${chalk22.red("\u2716")}`);
1721
1914
  } else {
1722
- console.info(`Deplint: Found no dependency problems. ${chalk21.green("\u2714")}`);
1915
+ console.info(`Deplint: Found no dependency problems. ${chalk22.green("\u2714")}`);
1723
1916
  }
1724
1917
  return 0;
1725
1918
  };
1726
1919
 
1727
1920
  // src/actions/deploy.ts
1728
- import { readFileSync as readFileSync6 } from "fs";
1921
+ import { readFileSync as readFileSync8 } from "fs";
1729
1922
  var privatePackageExcludeList = () => {
1730
1923
  const possibleDeployablePackages = yarnWorkspaces().map((workspace) => [
1731
1924
  workspace,
1732
- JSON.parse(readFileSync6(`${workspace.location}/package.json`, { encoding: "utf8" }))
1925
+ JSON.parse(readFileSync8(`${workspace.location}/package.json`, { encoding: "utf8" }))
1733
1926
  ]);
1734
1927
  const privatePackages = possibleDeployablePackages.filter(([_, pkg]) => pkg.private).map(([workspace]) => workspace);
1735
1928
  const excludeList = privatePackages.map((workspace) => `--exclude ${workspace.name}`);
@@ -1749,11 +1942,11 @@ var deploy = () => {
1749
1942
  };
1750
1943
 
1751
1944
  // src/actions/deploy-major.ts
1752
- import { readFileSync as readFileSync7 } from "fs";
1945
+ import { readFileSync as readFileSync9 } from "fs";
1753
1946
  var privatePackageExcludeList2 = () => {
1754
1947
  const possibleDeployablePackages = yarnWorkspaces().map((workspace) => [
1755
1948
  workspace,
1756
- JSON.parse(readFileSync7(`${workspace.location}/package.json`, { encoding: "utf8" }))
1949
+ JSON.parse(readFileSync9(`${workspace.location}/package.json`, { encoding: "utf8" }))
1757
1950
  ]);
1758
1951
  const privatePackages = possibleDeployablePackages.filter(([_, pkg]) => pkg.private).map(([workspace]) => workspace);
1759
1952
  const excludeList = privatePackages.map((workspace) => `--exclude ${workspace.name}`);
@@ -1773,11 +1966,11 @@ var deployMajor = () => {
1773
1966
  };
1774
1967
 
1775
1968
  // src/actions/deploy-minor.ts
1776
- import { readFileSync as readFileSync8 } from "fs";
1969
+ import { readFileSync as readFileSync10 } from "fs";
1777
1970
  var privatePackageExcludeList3 = () => {
1778
1971
  const possibleDeployablePackages = yarnWorkspaces().map((workspace) => [
1779
1972
  workspace,
1780
- JSON.parse(readFileSync8(`${workspace.location}/package.json`, { encoding: "utf8" }))
1973
+ JSON.parse(readFileSync10(`${workspace.location}/package.json`, { encoding: "utf8" }))
1781
1974
  ]);
1782
1975
  const privatePackages = possibleDeployablePackages.filter(([_, pkg]) => pkg.private).map(([workspace]) => workspace);
1783
1976
  const excludeList = privatePackages.map((workspace) => `--exclude ${workspace.name}`);
@@ -1797,11 +1990,11 @@ var deployMinor = () => {
1797
1990
  };
1798
1991
 
1799
1992
  // src/actions/deploy-next.ts
1800
- import { readFileSync as readFileSync9 } from "fs";
1993
+ import { readFileSync as readFileSync11 } from "fs";
1801
1994
  var privatePackageExcludeList4 = () => {
1802
1995
  const possibleDeployablePackages = yarnWorkspaces().map((workspace) => [
1803
1996
  workspace,
1804
- JSON.parse(readFileSync9(`${workspace.location}/package.json`, { encoding: "utf8" }))
1997
+ JSON.parse(readFileSync11(`${workspace.location}/package.json`, { encoding: "utf8" }))
1805
1998
  ]);
1806
1999
  const privatePackages = possibleDeployablePackages.filter(([_, pkg]) => pkg.private).map(([workspace]) => workspace);
1807
2000
  const excludeList = privatePackages.map((workspace) => `--exclude ${workspace.name}`);
@@ -1821,22 +2014,22 @@ var deployNext = () => {
1821
2014
  };
1822
2015
 
1823
2016
  // src/actions/dupdeps.ts
1824
- import chalk22 from "chalk";
2017
+ import chalk23 from "chalk";
1825
2018
  var dupdeps = () => {
1826
- console.log(chalk22.green("Checking all Dependencies for Duplicates"));
2019
+ console.log(chalk23.green("Checking all Dependencies for Duplicates"));
1827
2020
  const allDependencies = parsedPackageJSON()?.dependencies;
1828
2021
  const dependencies = Object.entries(allDependencies).map(([k]) => k);
1829
2022
  return detectDuplicateDependencies(dependencies);
1830
2023
  };
1831
2024
 
1832
2025
  // src/actions/lint.ts
1833
- import chalk23 from "chalk";
2026
+ import chalk24 from "chalk";
1834
2027
  var lintPackage = ({
1835
2028
  pkg,
1836
2029
  fix: fix2,
1837
2030
  verbose
1838
2031
  }) => {
1839
- console.log(chalk23.gray(`${fix2 ? "Fix" : "Lint"} [${pkg}]`));
2032
+ console.log(chalk24.gray(`${fix2 ? "Fix" : "Lint"} [${pkg}]`));
1840
2033
  const start = Date.now();
1841
2034
  const result = runSteps(`${fix2 ? "Fix" : "Lint"} [${pkg}]`, [
1842
2035
  ["yarn", [
@@ -1846,7 +2039,7 @@ var lintPackage = ({
1846
2039
  fix2 ? "package-fix" : verbose ? "package-lint-verbose" : "package-lint"
1847
2040
  ]]
1848
2041
  ]);
1849
- console.log(chalk23.gray(`${fix2 ? "Fixed in" : "Linted in"} [${chalk23.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk23.gray("seconds")}`));
2042
+ console.log(chalk24.gray(`${fix2 ? "Fixed in" : "Linted in"} [${chalk24.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk24.gray("seconds")}`));
1850
2043
  return result;
1851
2044
  };
1852
2045
  var lint = ({
@@ -1866,13 +2059,13 @@ var lint = ({
1866
2059
  });
1867
2060
  };
1868
2061
  var lintAllPackages = ({ fix: fix2 = false } = {}) => {
1869
- console.log(chalk23.gray(`${fix2 ? "Fix" : "Lint"} [All-Packages]`));
2062
+ console.log(chalk24.gray(`${fix2 ? "Fix" : "Lint"} [All-Packages]`));
1870
2063
  const start = Date.now();
1871
2064
  const fixOptions = fix2 ? ["--fix"] : [];
1872
2065
  const result = runSteps(`${fix2 ? "Fix" : "Lint"} [All-Packages]`, [
1873
2066
  ["yarn", ["eslint", "--cache", "--cache-location", ".eslintcache", "--cache-strategy", "content", ...fixOptions]]
1874
2067
  ]);
1875
- console.log(chalk23.gray(`${fix2 ? "Fixed in" : "Linted in"} [${chalk23.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk23.gray("seconds")}`));
2068
+ console.log(chalk24.gray(`${fix2 ? "Fixed in" : "Linted in"} [${chalk24.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk24.gray("seconds")}`));
1876
2069
  return result;
1877
2070
  };
1878
2071
 
@@ -1900,7 +2093,7 @@ var filename = ".gitignore";
1900
2093
  var gitignoreGen = (pkg) => generateIgnoreFiles(filename, pkg);
1901
2094
 
1902
2095
  // src/actions/gitlint.ts
1903
- import chalk24 from "chalk";
2096
+ import chalk25 from "chalk";
1904
2097
  import ParseGitConfig from "parse-git-config";
1905
2098
  var gitlint = () => {
1906
2099
  console.log(`
@@ -1911,7 +2104,7 @@ Gitlint Start [${process.cwd()}]
1911
2104
  const errors = 0;
1912
2105
  const gitConfig = ParseGitConfig.sync();
1913
2106
  const warn = (message) => {
1914
- console.warn(chalk24.yellow(`Warning: ${message}`));
2107
+ console.warn(chalk25.yellow(`Warning: ${message}`));
1915
2108
  warnings++;
1916
2109
  };
1917
2110
  if (gitConfig.core.ignorecase) {
@@ -1931,13 +2124,13 @@ Gitlint Start [${process.cwd()}]
1931
2124
  }
1932
2125
  const resultMessages = [];
1933
2126
  if (valid > 0) {
1934
- resultMessages.push(chalk24.green(`Passed: ${valid}`));
2127
+ resultMessages.push(chalk25.green(`Passed: ${valid}`));
1935
2128
  }
1936
2129
  if (warnings > 0) {
1937
- resultMessages.push(chalk24.yellow(`Warnings: ${warnings}`));
2130
+ resultMessages.push(chalk25.yellow(`Warnings: ${warnings}`));
1938
2131
  }
1939
2132
  if (errors > 0) {
1940
- resultMessages.push(chalk24.red(` Errors: ${errors}`));
2133
+ resultMessages.push(chalk25.red(` Errors: ${errors}`));
1941
2134
  }
1942
2135
  console.warn(`Gitlint Finish [ ${resultMessages.join(" | ")} ]
1943
2136
  `);
@@ -1946,7 +2139,7 @@ Gitlint Start [${process.cwd()}]
1946
2139
 
1947
2140
  // src/actions/gitlint-fix.ts
1948
2141
  import { execSync as execSync3 } from "child_process";
1949
- import chalk25 from "chalk";
2142
+ import chalk26 from "chalk";
1950
2143
  import ParseGitConfig2 from "parse-git-config";
1951
2144
  var gitlintFix = () => {
1952
2145
  console.log(`
@@ -1955,15 +2148,15 @@ Gitlint Fix Start [${process.cwd()}]
1955
2148
  const gitConfig = ParseGitConfig2.sync();
1956
2149
  if (gitConfig.core.ignorecase) {
1957
2150
  execSync3("git config core.ignorecase false", { stdio: "inherit" });
1958
- console.warn(chalk25.yellow("\nGitlint Fix: Updated core.ignorecase to be false\n"));
2151
+ console.warn(chalk26.yellow("\nGitlint Fix: Updated core.ignorecase to be false\n"));
1959
2152
  }
1960
2153
  if (gitConfig.core.autocrlf !== false) {
1961
2154
  execSync3("git config core.autocrlf false", { stdio: "inherit" });
1962
- console.warn(chalk25.yellow("\nGitlint Fix: Updated core.autocrlf to be false\n"));
2155
+ console.warn(chalk26.yellow("\nGitlint Fix: Updated core.autocrlf to be false\n"));
1963
2156
  }
1964
2157
  if (gitConfig.core.eol !== "lf") {
1965
2158
  execSync3("git config core.eol lf", { stdio: "inherit" });
1966
- console.warn(chalk25.yellow('\nGitlint Fix: Updated core.eol to be "lf"\n'));
2159
+ console.warn(chalk26.yellow('\nGitlint Fix: Updated core.eol to be "lf"\n'));
1967
2160
  }
1968
2161
  return 1;
1969
2162
  };
@@ -1974,7 +2167,7 @@ var knip = () => {
1974
2167
  };
1975
2168
 
1976
2169
  // src/actions/license.ts
1977
- import chalk26 from "chalk";
2170
+ import chalk27 from "chalk";
1978
2171
  import { init } from "license-checker";
1979
2172
  var license = async (pkg) => {
1980
2173
  const workspaces = yarnWorkspaces();
@@ -1999,18 +2192,18 @@ var license = async (pkg) => {
1999
2192
  "LGPL-3.0-or-later",
2000
2193
  "Python-2.0"
2001
2194
  ]);
2002
- console.log(chalk26.green("License Checker"));
2195
+ console.log(chalk27.green("License Checker"));
2003
2196
  return (await Promise.all(
2004
2197
  workspaceList.map(({ location, name }) => {
2005
2198
  return new Promise((resolve) => {
2006
2199
  init({ production: true, start: location }, (error, packages) => {
2007
2200
  if (error) {
2008
- console.error(chalk26.red(`License Checker [${name}] Error`));
2009
- console.error(chalk26.gray(error));
2201
+ console.error(chalk27.red(`License Checker [${name}] Error`));
2202
+ console.error(chalk27.gray(error));
2010
2203
  console.log("\n");
2011
2204
  resolve(1);
2012
2205
  } else {
2013
- console.log(chalk26.green(`License Checker [${name}]`));
2206
+ console.log(chalk27.green(`License Checker [${name}]`));
2014
2207
  let count = 0;
2015
2208
  for (const [name2, info] of Object.entries(packages)) {
2016
2209
  const licenses = Array.isArray(info.licenses) ? info.licenses : [info.licenses];
@@ -2026,7 +2219,7 @@ var license = async (pkg) => {
2026
2219
  }
2027
2220
  if (!orLicenseFound) {
2028
2221
  count++;
2029
- console.warn(chalk26.yellow(`${name2}: Package License not allowed [${license2}]`));
2222
+ console.warn(chalk27.yellow(`${name2}: Package License not allowed [${license2}]`));
2030
2223
  }
2031
2224
  }
2032
2225
  }
@@ -2068,7 +2261,10 @@ async function readmeGen({
2068
2261
  typedoc,
2069
2262
  verbose
2070
2263
  }) {
2264
+ const config2 = await loadConfig();
2071
2265
  return await generateReadmeFiles({
2266
+ logoLinkUrl: config2.readme?.logoLinkUrl,
2267
+ logoUrl: config2.readme?.logoUrl,
2072
2268
  pkg,
2073
2269
  templatePath,
2074
2270
  typedoc,
@@ -2076,6 +2272,15 @@ async function readmeGen({
2076
2272
  });
2077
2273
  }
2078
2274
 
2275
+ // src/actions/readme-init.ts
2276
+ async function readmeInit({ templatePath }) {
2277
+ const config2 = await loadConfig();
2278
+ const template = applyLogoConfig(DEFAULT_README_TEMPLATE, config2.readme?.logoUrl, config2.readme?.logoLinkUrl);
2279
+ const resolvedTemplatePath = resolveTemplatePath(templatePath);
2280
+ await scaffoldTemplate(resolvedTemplatePath, template);
2281
+ return 0;
2282
+ }
2283
+
2079
2284
  // src/actions/rebuild.ts
2080
2285
  var rebuild = ({ target }) => {
2081
2286
  return runSteps("Rebuild", [
@@ -2085,7 +2290,7 @@ var rebuild = ({ target }) => {
2085
2290
  };
2086
2291
 
2087
2292
  // src/actions/recompile.ts
2088
- import chalk27 from "chalk";
2293
+ import chalk28 from "chalk";
2089
2294
  var recompile = async ({
2090
2295
  verbose,
2091
2296
  target,
@@ -2121,7 +2326,7 @@ var recompileAll = async ({
2121
2326
  const incrementalOptions = incremental ? ["--since", "-Apt", "--topological-dev"] : ["--parallel", "-Apt", "--topological-dev"];
2122
2327
  const jobsOptions = jobs ? ["-j", `${jobs}`] : [];
2123
2328
  if (jobs) {
2124
- console.log(chalk27.blue(`Jobs set to [${jobs}]`));
2329
+ console.log(chalk28.blue(`Jobs set to [${jobs}]`));
2125
2330
  }
2126
2331
  const result = await runStepsAsync(`Recompile${incremental ? "-Incremental" : ""} [All]`, [
2127
2332
  [
@@ -2152,7 +2357,7 @@ var recompileAll = async ({
2152
2357
  ]
2153
2358
  ]);
2154
2359
  console.log(
2155
- `${chalk27.gray("Recompiled in")} [${chalk27.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk27.gray("seconds")}`
2360
+ `${chalk28.gray("Recompiled in")} [${chalk28.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk28.gray("seconds")}`
2156
2361
  );
2157
2362
  return result;
2158
2363
  };
@@ -2161,7 +2366,7 @@ var recompileAll = async ({
2161
2366
  import {
2162
2367
  closeSync,
2163
2368
  openSync,
2164
- rmSync
2369
+ rmSync as rmSync2
2165
2370
  } from "fs";
2166
2371
  var reinstall = () => {
2167
2372
  console.log("Reinstall [Clear Lock File]");
@@ -2171,7 +2376,7 @@ var reinstall = () => {
2171
2376
  const result = workspaces.map(({ location, name }) => {
2172
2377
  const dist = `${location}/node_modules`;
2173
2378
  try {
2174
- rmSync(dist, { force: true, recursive: true });
2379
+ rmSync2(dist, { force: true, recursive: true });
2175
2380
  return 0;
2176
2381
  } catch (ex) {
2177
2382
  const error = ex;
@@ -2183,13 +2388,13 @@ var reinstall = () => {
2183
2388
  };
2184
2389
 
2185
2390
  // src/actions/relint.ts
2186
- import chalk28 from "chalk";
2391
+ import chalk29 from "chalk";
2187
2392
  var relintPackage = ({
2188
2393
  pkg,
2189
2394
  fix: fix2,
2190
2395
  verbose
2191
2396
  }) => {
2192
- console.log(chalk28.gray(`${fix2 ? "Fix" : "Lint"} [${pkg}]`));
2397
+ console.log(chalk29.gray(`${fix2 ? "Fix" : "Lint"} [${pkg}]`));
2193
2398
  const start = Date.now();
2194
2399
  const result = runSteps(`${fix2 ? "Fix" : "Lint"} [${pkg}]`, [
2195
2400
  ["yarn", [
@@ -2199,7 +2404,7 @@ var relintPackage = ({
2199
2404
  fix2 ? "package-fix" : verbose ? "package-lint-verbose" : "package-lint"
2200
2405
  ]]
2201
2406
  ]);
2202
- console.log(chalk28.gray(`${fix2 ? "Fixed in" : "Linted in"} [${chalk28.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk28.gray("seconds")}`));
2407
+ console.log(chalk29.gray(`${fix2 ? "Fixed in" : "Linted in"} [${chalk29.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk29.gray("seconds")}`));
2203
2408
  return result;
2204
2409
  };
2205
2410
  var relint = ({
@@ -2219,21 +2424,21 @@ var relint = ({
2219
2424
  });
2220
2425
  };
2221
2426
  var relintAllPackages = ({ fix: fix2 = false } = {}) => {
2222
- console.log(chalk28.gray(`${fix2 ? "Fix" : "Lint"} [All-Packages]`));
2427
+ console.log(chalk29.gray(`${fix2 ? "Fix" : "Lint"} [All-Packages]`));
2223
2428
  const start = Date.now();
2224
2429
  const fixOptions = fix2 ? ["--fix"] : [];
2225
2430
  const result = runSteps(`${fix2 ? "Fix" : "Lint"} [All-Packages]`, [
2226
2431
  ["yarn", ["eslint", ...fixOptions]]
2227
2432
  ]);
2228
- console.log(chalk28.gray(`${fix2 ? "Fixed in" : "Linted in"} [${chalk28.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk28.gray("seconds")}`));
2433
+ console.log(chalk29.gray(`${fix2 ? "Fixed in" : "Linted in"} [${chalk29.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk29.gray("seconds")}`));
2229
2434
  return result;
2230
2435
  };
2231
2436
 
2232
2437
  // src/actions/retest.ts
2233
2438
  var retest = () => {
2234
2439
  return runSteps("Test", [
2235
- ["yarn", ["jest", "--clearCache"]],
2236
- ["yarn", ["jest", "."]]
2440
+ ["yarn", ["vitest", "--clearCache"]],
2441
+ ["yarn", ["vitest", "."]]
2237
2442
  ]);
2238
2443
  };
2239
2444
 
@@ -2243,10 +2448,10 @@ var sonar = () => {
2243
2448
  };
2244
2449
 
2245
2450
  // src/actions/statics.ts
2246
- import chalk29 from "chalk";
2451
+ import chalk30 from "chalk";
2247
2452
  var DefaultDependencies = ["axios", "@xylabs/pixel", "react", "graphql", "react-router", "@mui/material", "@mui/system"];
2248
2453
  var statics = () => {
2249
- console.log(chalk29.green("Check Required Static Dependencies"));
2454
+ console.log(chalk30.green("Check Required Static Dependencies"));
2250
2455
  const statics2 = parsedPackageJSON()?.xy?.deps?.statics;
2251
2456
  return detectDuplicateDependencies(statics2, DefaultDependencies);
2252
2457
  };
@@ -2294,556 +2499,691 @@ var yarn3Only = () => {
2294
2499
  return 0;
2295
2500
  };
2296
2501
 
2297
- // src/xy/xyBuildCommands.ts
2298
- var xyBuildCommands = (args) => {
2299
- return args.command(
2300
- "build [package]",
2301
- "Build - Compile & Lint",
2302
- (yargs2) => {
2303
- return yargs2.positional("package", { describe: "Specific package to build" });
2304
- },
2305
- async (argv) => {
2306
- if (argv.verbose) {
2307
- console.log(`Building: ${argv.package ?? "all"}`);
2308
- }
2309
- process.exitCode = await build({
2310
- incremental: !!argv.incremental,
2311
- jobs: argv.jobs,
2312
- pkg: argv.package,
2313
- target: argv.target,
2314
- verbose: !!argv.verbose
2315
- });
2316
- }
2317
- ).command(
2318
- "compile [package]",
2319
- "Compile with Typescript & Copy Images",
2320
- (yargs2) => {
2321
- return yargs2.positional("package", { describe: "Specific package to compile" });
2322
- },
2323
- (argv) => {
2324
- if (argv.verbose) {
2325
- console.log(`Compiling: ${argv.package ?? "all"}`);
2326
- }
2327
- process.exitCode = compile({
2328
- incremental: !!argv.incremental,
2329
- jobs: argv.jobs,
2330
- pkg: argv.package,
2331
- target: argv.target,
2332
- verbose: !!argv.verbose
2333
- });
2334
- }
2335
- ).command(
2336
- "compile-only [package]",
2337
- "Compile with Typescript & Copy Images (No Publint)",
2338
- (yargs2) => {
2339
- return yargs2.positional("package", { describe: "Specific package to compile" });
2340
- },
2341
- (argv) => {
2342
- if (argv.verbose) {
2343
- console.log(`Compiling: ${argv.package ?? "all"}`);
2344
- }
2345
- process.exitCode = compile({
2346
- incremental: !!argv.incremental,
2347
- jobs: argv.jobs,
2348
- pkg: argv.package,
2349
- publint: false,
2350
- target: argv.target,
2351
- verbose: !!argv.verbose
2352
- });
2353
- }
2354
- ).command(
2355
- "recompile [package]",
2356
- "Re-compile with Typescript & Copy Images",
2357
- (yargs2) => {
2358
- return yargs2.positional("package", { describe: "Specific package to re-compile" });
2359
- },
2360
- async (argv) => {
2361
- if (argv.verbose) {
2362
- console.log(`Re-compiling: ${argv.package ?? "all"}`);
2363
- }
2364
- process.exitCode = await recompile({
2365
- incremental: !!argv.incremental,
2366
- jobs: argv.jobs,
2367
- pkg: argv.package,
2368
- target: argv.target,
2369
- verbose: !!argv.verbose
2370
- });
2371
- }
2372
- ).command(
2373
- "rebuild [package]",
2374
- "Rebuild - Clean, Compile & Lint",
2375
- (yargs2) => {
2376
- return yargs2.positional("package", { describe: "Specific package to rebuild" });
2377
- },
2378
- (argv) => {
2379
- if (argv.verbose) console.log(`Rebuilding: ${argv.package ?? "all"}`);
2380
- process.exitCode = rebuild({ target: argv.target });
2381
- }
2382
- ).command(
2383
- "copy-assets [package]",
2384
- "Copy Assets - Copy the assets from src to dist",
2385
- (yargs2) => {
2386
- return yargs2.positional("package", { describe: "Specific package to copy assets" });
2387
- },
2388
- async (argv) => {
2389
- if (argv.verbose) console.log(`Copying Assets: ${argv.package ?? "all"}`);
2390
- process.exitCode = await copyAssets({ target: argv.target });
2391
- }
2392
- );
2393
- };
2394
-
2395
2502
  // src/xy/param.ts
2396
2503
  var packagePositionalParam = (yargs2) => {
2397
2504
  return yargs2.positional("package", { describe: "Specific package to target", type: "string" });
2398
2505
  };
2399
2506
 
2400
- // src/xy/xyCommonCommands.ts
2507
+ // src/xy/build-commands/build.ts
2508
+ var buildCommand = {
2509
+ builder: (yargs2) => {
2510
+ return packagePositionalParam(yargs2);
2511
+ },
2512
+ command: "build [package]",
2513
+ describe: "Build - Compile & Lint",
2514
+ handler: async (argv) => {
2515
+ if (argv.verbose) {
2516
+ console.log(`Building: ${argv.package ?? "all"}`);
2517
+ }
2518
+ process.exitCode = await build({
2519
+ incremental: !!argv.incremental,
2520
+ jobs: argv.jobs,
2521
+ pkg: argv.package,
2522
+ target: argv.target,
2523
+ verbose: !!argv.verbose
2524
+ });
2525
+ }
2526
+ };
2527
+ var compileCommand = {
2528
+ builder: (yargs2) => {
2529
+ return packagePositionalParam(yargs2);
2530
+ },
2531
+ command: "compile [package]",
2532
+ describe: "Compile with Typescript & Copy Images",
2533
+ handler: (argv) => {
2534
+ if (argv.verbose) {
2535
+ console.log(`Compiling: ${argv.package ?? "all"}`);
2536
+ }
2537
+ process.exitCode = compile({
2538
+ incremental: !!argv.incremental,
2539
+ jobs: argv.jobs,
2540
+ pkg: argv.package,
2541
+ target: argv.target,
2542
+ verbose: !!argv.verbose
2543
+ });
2544
+ }
2545
+ };
2546
+ var compileOnlyCommand = {
2547
+ builder: (yargs2) => {
2548
+ return packagePositionalParam(yargs2);
2549
+ },
2550
+ command: "compile-only [package]",
2551
+ describe: "Compile with Typescript & Copy Images (No Publint)",
2552
+ handler: (argv) => {
2553
+ if (argv.verbose) {
2554
+ console.log(`Compiling: ${argv.package ?? "all"}`);
2555
+ }
2556
+ process.exitCode = compile({
2557
+ incremental: !!argv.incremental,
2558
+ jobs: argv.jobs,
2559
+ pkg: argv.package,
2560
+ publint: false,
2561
+ target: argv.target,
2562
+ verbose: !!argv.verbose
2563
+ });
2564
+ }
2565
+ };
2566
+ var recompileCommand = {
2567
+ builder: (yargs2) => {
2568
+ return packagePositionalParam(yargs2);
2569
+ },
2570
+ command: "recompile [package]",
2571
+ describe: "Re-compile with Typescript & Copy Images",
2572
+ handler: async (argv) => {
2573
+ if (argv.verbose) {
2574
+ console.log(`Re-compiling: ${argv.package ?? "all"}`);
2575
+ }
2576
+ process.exitCode = await recompile({
2577
+ incremental: !!argv.incremental,
2578
+ jobs: argv.jobs,
2579
+ pkg: argv.package,
2580
+ target: argv.target,
2581
+ verbose: !!argv.verbose
2582
+ });
2583
+ }
2584
+ };
2585
+ var rebuildCommand = {
2586
+ builder: (yargs2) => {
2587
+ return packagePositionalParam(yargs2);
2588
+ },
2589
+ command: "rebuild [package]",
2590
+ describe: "Rebuild - Clean, Compile & Lint",
2591
+ handler: (argv) => {
2592
+ if (argv.verbose) console.log(`Rebuilding: ${argv.package ?? "all"}`);
2593
+ process.exitCode = rebuild({ target: argv.target });
2594
+ }
2595
+ };
2596
+ var copyAssetsCommand = {
2597
+ builder: (yargs2) => {
2598
+ return packagePositionalParam(yargs2);
2599
+ },
2600
+ command: "copy-assets [package]",
2601
+ describe: "Copy Assets - Copy the assets from src to dist",
2602
+ handler: async (argv) => {
2603
+ if (argv.verbose) console.log(`Copying Assets: ${argv.package ?? "all"}`);
2604
+ process.exitCode = await copyAssets({ target: argv.target });
2605
+ }
2606
+ };
2607
+
2608
+ // src/xy/build-commands/index.ts
2609
+ var xyBuildCommands = (args) => {
2610
+ return args.command(buildCommand).command(compileCommand).command(compileOnlyCommand).command(rebuildCommand).command(recompileCommand).command(copyAssetsCommand);
2611
+ };
2612
+
2613
+ // src/xy/common/claude/commandsCommand.ts
2614
+ var commandsCommand = {
2615
+ command: "commands",
2616
+ describe: "Sync XY Labs standard Claude slash commands to .claude/commands/",
2617
+ handler: (argv) => {
2618
+ if (argv.verbose) console.log("Claude Commands");
2619
+ process.exitCode = claudeCommands();
2620
+ }
2621
+ };
2622
+
2623
+ // src/xy/common/claude/initCommand.ts
2624
+ var initCommand = {
2625
+ builder: (yargs2) => {
2626
+ return yargs2.option("force", {
2627
+ alias: "f",
2628
+ default: false,
2629
+ description: "Overwrite existing CLAUDE.md",
2630
+ type: "boolean"
2631
+ });
2632
+ },
2633
+ command: "init",
2634
+ describe: "Initialize all Claude configuration (commands, rules, settings)",
2635
+ handler: async (argv) => {
2636
+ if (argv.verbose) console.log("Claude Init");
2637
+ const commandsResult = claudeCommands();
2638
+ const rulesResult = claudeRules({ force: argv.force });
2639
+ const settingsResult = await claudeSettings();
2640
+ process.exitCode = commandsResult || rulesResult || settingsResult;
2641
+ }
2642
+ };
2643
+ var initClaudeSkillsCommand = {
2644
+ command: "init:skills",
2645
+ describe: "Initialize Claude skills configuration",
2646
+ handler: () => {
2647
+ const result = claudeSkills();
2648
+ process.exitCode = result;
2649
+ }
2650
+ };
2651
+
2652
+ // src/xy/common/claude/rulesCommand.ts
2653
+ var rulesCommand = {
2654
+ builder: (yargs2) => {
2655
+ return yargs2.option("force", {
2656
+ alias: "f",
2657
+ default: false,
2658
+ description: "Overwrite existing CLAUDE.md",
2659
+ type: "boolean"
2660
+ });
2661
+ },
2662
+ command: "rules",
2663
+ describe: "Sync XY Labs standard Claude rules to .claude/rules/",
2664
+ handler: (argv) => {
2665
+ if (argv.verbose) console.log("Claude Rules");
2666
+ process.exitCode = claudeRules({ force: argv.force });
2667
+ }
2668
+ };
2669
+
2670
+ // src/xy/common/claude/settingsCommand.ts
2671
+ var settingsCommand = {
2672
+ command: "settings",
2673
+ describe: "Initialize .claude/settings.local.json with XY Labs defaults",
2674
+ handler: async (argv) => {
2675
+ if (argv.verbose) console.log("Claude Settings");
2676
+ process.exitCode = await claudeSettings();
2677
+ }
2678
+ };
2679
+
2680
+ // src/xy/common/claude/index.ts
2681
+ var claudeCommand = {
2682
+ builder: (yargs2) => {
2683
+ return yargs2.command(commandsCommand).command(initCommand).command(rulesCommand).command(settingsCommand).command(initClaudeSkillsCommand).demandCommand(1, "Please specify a claude subcommand");
2684
+ },
2685
+ command: "claude",
2686
+ describe: "Claude - Claude Code configuration utilities",
2687
+ handler: () => {
2688
+ }
2689
+ };
2690
+
2691
+ // src/xy/common/cleanDocsCommand.ts
2692
+ var cleanDocsCommand = {
2693
+ command: "clean-docs",
2694
+ describe: "CleanDocs - Clean TypeDocs",
2695
+ handler: (argv) => {
2696
+ if (argv.verbose) console.log("Cleaning TypeDocs: all");
2697
+ process.exitCode = cleanDocs();
2698
+ }
2699
+ };
2700
+
2701
+ // src/xy/common/deadCommand.ts
2702
+ var deadCommand = {
2703
+ builder: (yargs2) => {
2704
+ return packagePositionalParam(yargs2);
2705
+ },
2706
+ command: "dead [package]",
2707
+ describe: "Dead - Check for dead code",
2708
+ handler: (argv) => {
2709
+ if (argv.verbose) console.log("Dead");
2710
+ process.exitCode = dead();
2711
+ }
2712
+ };
2713
+
2714
+ // src/xy/common/genDocsCommand.ts
2715
+ var genDocsCommand = {
2716
+ builder: (yargs2) => {
2717
+ return packagePositionalParam(yargs2);
2718
+ },
2719
+ command: "gen-docs [package]",
2720
+ describe: "GenDocs - Generate TypeDocs",
2721
+ handler: (argv) => {
2722
+ if (argv.verbose) console.log(`Generating TypeDocs: ${argv.package ?? "all"}`);
2723
+ process.exitCode = genDocs({ incremental: !!argv.incremental, pkg: argv.package });
2724
+ }
2725
+ };
2726
+
2727
+ // src/xy/common/gitignoreGenCommand.ts
2728
+ var gitignoreGenCommand = {
2729
+ command: "gitignore-gen",
2730
+ describe: "GitIgnore Gen - Generate .gitignore files",
2731
+ handler: (argv) => {
2732
+ if (argv.verbose) console.log("GitIgnore Gen");
2733
+ process.exitCode = gitignoreGen();
2734
+ }
2735
+ };
2736
+
2737
+ // src/xy/common/gitlintCommand.ts
2738
+ var gitlintCommand = {
2739
+ command: "gitlint [package]",
2740
+ describe: "Gitlint - Lint your git config",
2741
+ handler: (argv) => {
2742
+ if (argv.verbose) console.log("Gitlint");
2743
+ process.exitCode = argv.fix ? gitlintFix() : gitlint();
2744
+ }
2745
+ };
2746
+
2747
+ // src/xy/common/licenseCommand.ts
2748
+ var licenseCommand = {
2749
+ builder: (yargs2) => {
2750
+ return packagePositionalParam(yargs2);
2751
+ },
2752
+ command: "license [package]",
2753
+ describe: "License - Check licenses of dependencies",
2754
+ handler: async (argv) => {
2755
+ if (argv.verbose) console.log(`License: ${argv.package ?? "all"}`);
2756
+ process.exitCode = await license();
2757
+ }
2758
+ };
2759
+
2760
+ // src/xy/common/npmignoreGenCommand.ts
2761
+ var npmignoreGenCommand = {
2762
+ command: "npmignore-gen",
2763
+ describe: "NpmIgnore Gen - Generate .npmignore files",
2764
+ handler: (argv) => {
2765
+ if (argv.verbose) console.log("NpmIgnore Gen");
2766
+ process.exitCode = npmignoreGen();
2767
+ }
2768
+ };
2769
+
2770
+ // src/xy/common/readme/genCommand.ts
2771
+ var genCommand = {
2772
+ builder: (yargs2) => {
2773
+ return packagePositionalParam(yargs2).option("template", {
2774
+ alias: "t",
2775
+ description: "Path to README.template.md",
2776
+ type: "string"
2777
+ }).option("typedoc", {
2778
+ default: false,
2779
+ description: "Generate TypeDoc reference sections",
2780
+ type: "boolean"
2781
+ });
2782
+ },
2783
+ aliases: ["$0"],
2784
+ command: "gen [package]",
2785
+ describe: "Generate README.md files from template",
2786
+ handler: async (argv) => {
2787
+ if (argv.verbose) console.log("Readme Gen");
2788
+ process.exitCode = await readmeGen({
2789
+ pkg: argv.package,
2790
+ templatePath: argv.template,
2791
+ typedoc: argv.typedoc,
2792
+ verbose: !!argv.verbose
2793
+ });
2794
+ }
2795
+ };
2796
+
2797
+ // src/xy/common/readme/initCommand.ts
2798
+ var initCommand2 = {
2799
+ builder: (yargs2) => {
2800
+ return yargs2.option("template", {
2801
+ alias: "t",
2802
+ description: "Path to README.template.md",
2803
+ type: "string"
2804
+ });
2805
+ },
2806
+ command: "init",
2807
+ describe: "Initialize README template and logo files",
2808
+ handler: async (argv) => {
2809
+ if (argv.verbose) console.log("Readme Init");
2810
+ process.exitCode = await readmeInit({
2811
+ templatePath: argv.template,
2812
+ verbose: !!argv.verbose
2813
+ });
2814
+ }
2815
+ };
2816
+
2817
+ // src/xy/common/readme/index.ts
2818
+ var readmeCommand = {
2819
+ builder: (yargs2) => {
2820
+ return yargs2.command(genCommand).command(initCommand2);
2821
+ },
2822
+ command: "readme",
2823
+ describe: "Readme - README file utilities",
2824
+ handler: () => {
2825
+ }
2826
+ };
2827
+
2828
+ // src/xy/common/retestCommand.ts
2829
+ var retestCommand = {
2830
+ command: "retest",
2831
+ describe: "Re-Test - Run Jest Tests with cleaned cache",
2832
+ handler: (argv) => {
2833
+ if (argv.verbose) console.log("Re-Testing");
2834
+ process.exitCode = retest();
2835
+ }
2836
+ };
2837
+
2838
+ // src/xy/common/testCommand.ts
2839
+ var testCommand = {
2840
+ command: "test",
2841
+ describe: "Test - Run Jest Tests",
2842
+ handler: (argv) => {
2843
+ if (argv.verbose) console.log("Testing");
2844
+ process.exitCode = test();
2845
+ }
2846
+ };
2847
+
2848
+ // src/xy/common/upplugCommand.ts
2849
+ var upplugCommand = {
2850
+ command: "upplug",
2851
+ describe: "UpPlug - Update Yarn Plugins",
2852
+ handler: (argv) => {
2853
+ if (argv.verbose) console.log("UpPlug");
2854
+ process.exitCode = updateYarnPlugins();
2855
+ }
2856
+ };
2857
+
2858
+ // src/xy/common/upyarnCommand.ts
2859
+ var upyarnCommand = {
2860
+ command: "upyarn",
2861
+ describe: "UpYarn - Update Yarn Version",
2862
+ handler: (argv) => {
2863
+ if (argv.verbose) console.log("UpYarn");
2864
+ process.exitCode = updateYarnVersion();
2865
+ }
2866
+ };
2867
+
2868
+ // src/xy/common/yarn3OnlyCommand.ts
2869
+ var yarn3OnlyCommand = {
2870
+ command: "yarn3only",
2871
+ describe: "Yarn3Only - Check if using Yarn v3",
2872
+ handler: (argv) => {
2873
+ if (argv.verbose) console.log("Yarn 3 Check");
2874
+ process.exitCode = yarn3Only();
2875
+ }
2876
+ };
2877
+
2878
+ // src/xy/common/index.ts
2401
2879
  var xyCommonCommands = (args) => {
2402
- return args.command(
2403
- "claude-commands",
2404
- "Claude Commands - Sync XY Labs standard Claude slash commands to .claude/commands/",
2405
- (yargs2) => yargs2,
2406
- (argv) => {
2407
- if (argv.verbose) console.log("Claude Commands");
2408
- process.exitCode = claudeCommands();
2409
- }
2410
- ).command(
2411
- "claude-settings",
2412
- "Claude Settings - Initialize .claude/settings.local.json with XY Labs defaults",
2413
- (yargs2) => yargs2,
2414
- async (argv) => {
2415
- if (argv.verbose) console.log("Claude Settings");
2416
- process.exitCode = await claudeSettings();
2417
- }
2418
- ).command(
2419
- "claude-rules",
2420
- "Claude Rules - Sync XY Labs standard Claude rules to .claude/rules/",
2421
- (yargs2) => {
2422
- return yargs2.option("force", {
2423
- alias: "f",
2424
- default: false,
2425
- description: "Overwrite existing CLAUDE.md",
2426
- type: "boolean"
2427
- });
2428
- },
2429
- (argv) => {
2430
- if (argv.verbose) console.log("Claude Rules");
2431
- process.exitCode = claudeRules({ force: argv.force });
2432
- }
2433
- ).command(
2434
- "license [package]",
2435
- "License - Check licenses of dependencies",
2436
- (yargs2) => {
2437
- return packagePositionalParam(yargs2);
2438
- },
2439
- async (argv) => {
2440
- if (argv.verbose) console.log(`License: ${argv.package ?? "all"}`);
2441
- process.exitCode = await license();
2442
- }
2443
- ).command(
2444
- "dead [package]",
2445
- "Dead - Check for dead code",
2446
- (yargs2) => {
2447
- return packagePositionalParam(yargs2);
2448
- },
2449
- (argv) => {
2450
- if (argv.verbose) console.log("Dead");
2451
- process.exitCode = dead();
2452
- }
2453
- ).command(
2454
- "gen-docs [package]",
2455
- "GenDocs - Generate TypeDocs",
2456
- (yargs2) => {
2457
- return packagePositionalParam(yargs2);
2458
- },
2459
- (argv) => {
2460
- if (argv.verbose) console.log(`Generating TypeDocs: ${argv.package ?? "all"}`);
2461
- process.exitCode = genDocs({ incremental: !!argv.incremental, pkg: argv.package });
2462
- }
2463
- ).command(
2464
- "clean-docs",
2465
- "CleanDocs - Clean TypeDocs",
2466
- (yargs2) => yargs2,
2467
- (argv) => {
2468
- if (argv.verbose) console.log("Cleaning TypeDocs: all");
2469
- process.exitCode = cleanDocs();
2470
- }
2471
- ).command(
2472
- "gitlint [package]",
2473
- "Gitlint - Lint your git config",
2474
- (yargs2) => {
2475
- return yargs2;
2476
- },
2477
- (argv) => {
2478
- if (argv.verbose) console.log("Gitlint");
2479
- process.exitCode = argv.fix ? gitlintFix() : gitlint();
2480
- }
2481
- ).command(
2482
- "gitignore-gen",
2483
- "GitIgnore Gen - Generate .gitignore files",
2484
- (yargs2) => {
2485
- return yargs2;
2486
- },
2487
- (argv) => {
2488
- if (argv.verbose) console.log("GitIgnore Gen");
2489
- process.exitCode = gitignoreGen();
2490
- }
2491
- ).command(
2492
- "npmignore-gen",
2493
- "NpmIgnore Gen - Generate .npmignore files",
2494
- (yargs2) => {
2495
- return yargs2;
2496
- },
2497
- (argv) => {
2498
- if (argv.verbose) console.log("NpmIgnore Gen");
2499
- process.exitCode = npmignoreGen();
2500
- }
2501
- ).command(
2502
- "readme-gen [package]",
2503
- "Readme Gen - Generate README.md files from template",
2504
- (yargs2) => {
2505
- return packagePositionalParam(yargs2).option("template", {
2506
- alias: "t",
2507
- description: "Path to README.template.md",
2508
- type: "string"
2509
- }).option("typedoc", {
2510
- default: false,
2511
- description: "Generate TypeDoc reference sections",
2512
- type: "boolean"
2513
- });
2514
- },
2515
- async (argv) => {
2516
- if (argv.verbose) console.log("Readme Gen");
2517
- process.exitCode = await readmeGen({
2518
- pkg: argv.package,
2519
- templatePath: argv.template,
2520
- typedoc: argv.typedoc,
2521
- verbose: !!argv.verbose
2522
- });
2523
- }
2524
- ).command(
2525
- "retest",
2526
- "Re-Test - Run Jest Tests with cleaned cache",
2527
- (yargs2) => {
2528
- return yargs2;
2529
- },
2530
- (argv) => {
2531
- if (argv.verbose) console.log("Re-Testing");
2532
- process.exitCode = retest();
2533
- }
2534
- ).command(
2535
- "test",
2536
- "Test - Run Jest Tests",
2537
- (yargs2) => {
2538
- return yargs2;
2539
- },
2540
- (argv) => {
2541
- if (argv.verbose) console.log("Testing");
2542
- process.exitCode = test();
2543
- }
2544
- ).command(
2545
- "upplug",
2546
- "UpPlug - Update Yarn Plugins",
2547
- (yargs2) => {
2548
- return yargs2;
2549
- },
2550
- (argv) => {
2551
- if (argv.verbose) console.log("UpPlug");
2552
- process.exitCode = updateYarnPlugins();
2553
- }
2554
- ).command(
2555
- "upyarn",
2556
- "UpYarn - Update Yarn Version",
2557
- (yargs2) => {
2558
- return yargs2;
2559
- },
2560
- (argv) => {
2561
- if (argv.verbose) console.log("UpYarn");
2562
- process.exitCode = updateYarnVersion();
2563
- }
2564
- ).command(
2565
- "yarn3only",
2566
- "Yarn3Only - Check if using Yarn v3",
2567
- (yargs2) => {
2568
- return yargs2;
2569
- },
2570
- (argv) => {
2571
- if (argv.verbose) console.log("Yarn 3 Check");
2572
- process.exitCode = yarn3Only();
2573
- }
2574
- );
2880
+ return args.command(claudeCommand).command(licenseCommand).command(deadCommand).command(genDocsCommand).command(cleanDocsCommand).command(gitlintCommand).command(gitignoreGenCommand).command(npmignoreGenCommand).command(readmeCommand).command(retestCommand).command(testCommand).command(upplugCommand).command(upyarnCommand).command(yarn3OnlyCommand);
2881
+ };
2882
+
2883
+ // src/xy/deploy/deployCommand.ts
2884
+ var deployCommand = {
2885
+ command: "deploy",
2886
+ describe: "Deploy - Deploy patch",
2887
+ handler: (argv) => {
2888
+ if (argv.verbose) console.log("Deploy patch");
2889
+ process.exitCode = deploy();
2890
+ }
2891
+ };
2892
+
2893
+ // src/xy/deploy/deployMajorCommand.ts
2894
+ var deployMajorCommand = {
2895
+ command: "deploy-major",
2896
+ describe: "Deploy - Deploy major",
2897
+ handler: (argv) => {
2898
+ if (argv.verbose) console.log("Deploy major");
2899
+ process.exitCode = deployMajor();
2900
+ }
2901
+ };
2902
+
2903
+ // src/xy/deploy/deployMinorCommand.ts
2904
+ var deployMinorCommand = {
2905
+ command: "deploy-minor",
2906
+ describe: "Deploy - Deploy minor",
2907
+ handler: (argv) => {
2908
+ if (argv.verbose) console.log("Deploy minor");
2909
+ process.exitCode = deployMinor();
2910
+ }
2575
2911
  };
2576
2912
 
2577
- // src/xy/xyDeployCommands.ts
2913
+ // src/xy/deploy/deployNextCommand.ts
2914
+ var deployNextCommand = {
2915
+ command: "deploy-next",
2916
+ describe: "Deploy - Deploy next",
2917
+ handler: (argv) => {
2918
+ if (argv.verbose) console.log("Deploy next");
2919
+ process.exitCode = deployNext();
2920
+ }
2921
+ };
2922
+
2923
+ // src/xy/deploy/publishCommand.ts
2924
+ var publishCommand = {
2925
+ command: "publish",
2926
+ describe: "Publish - Publish packages to npmjs",
2927
+ handler: (argv) => {
2928
+ if (argv.verbose) console.log("Publish packages to npmjs");
2929
+ process.exitCode = publish();
2930
+ }
2931
+ };
2932
+
2933
+ // src/xy/deploy/index.ts
2578
2934
  var xyDeployCommands = (args) => {
2579
- return args.command(
2580
- "deploy",
2581
- "Deploy - Deploy patch",
2582
- (yargs2) => {
2583
- return yargs2;
2584
- },
2585
- (argv) => {
2586
- if (argv.verbose) console.log("Deploy patch");
2587
- process.exitCode = deploy();
2588
- }
2589
- ).command(
2590
- "deploy-minor",
2591
- "Deploy - Deploy minor",
2592
- (yargs2) => {
2593
- return yargs2;
2594
- },
2595
- (argv) => {
2596
- if (argv.verbose) console.log("Deploy minor");
2597
- process.exitCode = deployMinor();
2598
- }
2599
- ).command(
2600
- "deploy-major",
2601
- "Deploy - Deploy major",
2602
- (yargs2) => {
2603
- return yargs2;
2604
- },
2605
- (argv) => {
2606
- if (argv.verbose) console.log("Deploy major");
2607
- process.exitCode = deployMajor();
2608
- }
2609
- ).command(
2610
- "deploy-next",
2611
- "Deploy - Deploy next",
2612
- (yargs2) => {
2613
- return yargs2;
2614
- },
2615
- (argv) => {
2616
- if (argv.verbose) console.log("Deploy next");
2617
- process.exitCode = deployNext();
2618
- }
2619
- ).command(
2620
- "publish",
2621
- "Publish - Publish packages to npmjs",
2622
- (yargs2) => {
2623
- return yargs2;
2624
- },
2625
- (argv) => {
2626
- if (argv.verbose) console.log("Publish packages to npmjs");
2627
- process.exitCode = publish();
2935
+ return args.command(deployCommand).command(deployMinorCommand).command(deployMajorCommand).command(deployNextCommand).command(publishCommand);
2936
+ };
2937
+
2938
+ // src/xy/install/cleanCommand.ts
2939
+ var cleanCommand = {
2940
+ command: "clean [package]",
2941
+ describe: "Clean",
2942
+ builder: (yargs2) => {
2943
+ return yargs2.positional("package", { describe: "Specific package to clean" });
2944
+ },
2945
+ handler: async (argv) => {
2946
+ if (argv.verbose) {
2947
+ console.log(`Cleaning: ${argv.package ?? "all"}`);
2628
2948
  }
2629
- );
2949
+ process.exitCode = await clean({
2950
+ pkg: argv.package,
2951
+ verbose: !!argv.verbose
2952
+ });
2953
+ }
2954
+ };
2955
+
2956
+ // src/xy/install/dupdepsCommand.ts
2957
+ var dupdepsCommand = {
2958
+ command: "dupdeps",
2959
+ describe: "Dupdeps - Duplicate Dependencies in package.json",
2960
+ handler: (argv) => {
2961
+ if (argv.verbose) console.log("Dupdeps");
2962
+ process.exitCode = dupdeps();
2963
+ }
2964
+ };
2965
+
2966
+ // src/xy/install/reinstallCommand.ts
2967
+ var reinstallCommand = {
2968
+ command: "reinstall",
2969
+ describe: "Reinstall - Clean & Install",
2970
+ handler: (argv) => {
2971
+ if (argv.verbose) console.log("Reinstalling");
2972
+ process.exitCode = reinstall();
2973
+ }
2974
+ };
2975
+
2976
+ // src/xy/install/staticsCommand.ts
2977
+ var staticsCommand = {
2978
+ command: "statics",
2979
+ describe: "Statics - Confirming Static Packages",
2980
+ handler: (argv) => {
2981
+ if (argv.verbose) console.log("Statics");
2982
+ process.exitCode = statics();
2983
+ }
2984
+ };
2985
+
2986
+ // src/xy/install/upCommand.ts
2987
+ var upCommand = {
2988
+ command: "up",
2989
+ describe: "Up - Update dependencies",
2990
+ handler: (argv) => {
2991
+ if (argv.verbose) console.log("Up");
2992
+ process.exitCode = up();
2993
+ }
2630
2994
  };
2631
2995
 
2632
- // src/xy/xyInstallCommands.ts
2996
+ // src/xy/install/updoCommand.ts
2997
+ var updoCommand = {
2998
+ command: "updo",
2999
+ describe: "Updo - Update dependencies [Interactive]",
3000
+ handler: (argv) => {
3001
+ if (argv.verbose) console.log("Updo");
3002
+ process.exitCode = updo();
3003
+ }
3004
+ };
3005
+
3006
+ // src/xy/install/index.ts
2633
3007
  var xyInstallCommands = (args) => {
2634
- return args.command(
2635
- "clean [package]",
2636
- "Clean",
2637
- (yargs2) => {
2638
- return yargs2.positional("package", { describe: "Specific package to clean" });
2639
- },
2640
- async (argv) => {
2641
- if (argv.verbose) {
2642
- console.log(`Cleaning: ${argv.package ?? "all"}`);
2643
- }
2644
- process.exitCode = await clean({
2645
- pkg: argv.package,
2646
- verbose: !!argv.verbose
2647
- });
2648
- }
2649
- ).command(
2650
- "reinstall",
2651
- "Reinstall - Clean & Install",
2652
- (yargs2) => {
2653
- return yargs2;
2654
- },
2655
- (argv) => {
2656
- if (argv.verbose) console.log("Reinstalling");
2657
- process.exitCode = reinstall();
2658
- }
2659
- ).command(
2660
- "up",
2661
- "Up - Update dependencies",
2662
- (yargs2) => {
2663
- return yargs2;
2664
- },
2665
- (argv) => {
2666
- if (argv.verbose) console.log("Up");
2667
- process.exitCode = up();
2668
- }
2669
- ).command(
2670
- "updo",
2671
- "Updo - Update dependencies [Interactive]",
2672
- (yargs2) => {
2673
- return yargs2;
2674
- },
2675
- (argv) => {
2676
- if (argv.verbose) console.log("Updo");
2677
- process.exitCode = updo();
2678
- }
2679
- ).command(
2680
- "statics",
2681
- "Statics - Confirming Static Packages",
2682
- (yargs2) => {
2683
- return yargs2;
2684
- },
2685
- (argv) => {
2686
- if (argv.verbose) console.log("Statics");
2687
- process.exitCode = statics();
2688
- }
2689
- ).command(
2690
- "dupdeps",
2691
- "Dupdeps - Duplicate Dependencies in package.json",
2692
- (yargs2) => {
2693
- return yargs2;
2694
- },
2695
- (argv) => {
2696
- if (argv.verbose) console.log("Dupdeps");
2697
- process.exitCode = dupdeps();
2698
- }
2699
- );
3008
+ return args.command(cleanCommand).command(reinstallCommand).command(upCommand).command(updoCommand).command(staticsCommand).command(dupdepsCommand);
2700
3009
  };
2701
3010
 
2702
- // src/xy/xyLintCommands.ts
2703
- import chalk30 from "chalk";
3011
+ // src/xy/lint/cycleCommand.ts
3012
+ import chalk31 from "chalk";
3013
+ var cycleCommand = {
3014
+ command: "cycle [package]",
3015
+ describe: "Cycle - Check for dependency cycles",
3016
+ builder: (yargs2) => {
3017
+ return packagePositionalParam(yargs2);
3018
+ },
3019
+ handler: async (argv) => {
3020
+ const start = Date.now();
3021
+ if (argv.verbose) console.log("Cycle");
3022
+ process.exitCode = await cycle({ pkg: argv.package });
3023
+ console.log(chalk31.blue(`Finished in ${Date.now() - start}ms`));
3024
+ }
3025
+ };
3026
+
3027
+ // src/xy/lint/deplintCommand.ts
3028
+ import chalk32 from "chalk";
3029
+ var deplintCommand = {
3030
+ command: "deplint [package]",
3031
+ describe: "Deplint - Run Deplint",
3032
+ builder: (yargs2) => {
3033
+ return packagePositionalParam(yargs2).option("deps", {
3034
+ alias: "d",
3035
+ default: false,
3036
+ description: "Check dependencies",
3037
+ type: "boolean"
3038
+ }).option("devDeps", {
3039
+ alias: "v",
3040
+ default: false,
3041
+ description: "Check devDependencies",
3042
+ type: "boolean"
3043
+ }).option("peerDeps", {
3044
+ alias: "p",
3045
+ default: false,
3046
+ description: "Check peerDependencies",
3047
+ type: "boolean"
3048
+ }).option("exclude", {
3049
+ alias: "e",
3050
+ description: "Package names to exclude from unused checks (comma-separated or repeated)",
3051
+ type: "array"
3052
+ });
3053
+ },
3054
+ handler: async (argv) => {
3055
+ if (argv.verbose) console.log("Deplint");
3056
+ const start = Date.now();
3057
+ const cliExclude = argv.exclude?.flatMap((v) => String(v).split(",")).map((v) => v.trim()).filter(Boolean);
3058
+ process.exitCode = await deplint({
3059
+ cliExclude,
3060
+ pkg: argv.package,
3061
+ deps: !!argv.deps,
3062
+ devDeps: !!argv.devDeps,
3063
+ peerDeps: !!argv.peerDeps,
3064
+ verbose: !!argv.verbose
3065
+ });
3066
+ console.log(chalk32.blue(`Finished in ${Date.now() - start}ms`));
3067
+ }
3068
+ };
3069
+
3070
+ // src/xy/lint/fixCommand.ts
3071
+ import chalk33 from "chalk";
3072
+ var fixCommand = {
3073
+ command: "fix [package]",
3074
+ describe: "Fix - Run Eslint w/fix",
3075
+ builder: (yargs2) => {
3076
+ return packagePositionalParam(yargs2);
3077
+ },
3078
+ handler: (argv) => {
3079
+ const start = Date.now();
3080
+ if (argv.verbose) console.log("Fix");
3081
+ process.exitCode = fix();
3082
+ console.log(chalk33.blue(`Finished in ${Date.now() - start}ms`));
3083
+ }
3084
+ };
3085
+
3086
+ // src/xy/lint/knipCommand.ts
3087
+ import chalk34 from "chalk";
3088
+ var knipCommand = {
3089
+ command: "knip",
3090
+ describe: "Knip - Run Knip",
3091
+ builder: (yargs2) => {
3092
+ return packagePositionalParam(yargs2);
3093
+ },
3094
+ handler: (argv) => {
3095
+ if (argv.verbose) console.log("Knip");
3096
+ const start = Date.now();
3097
+ process.exitCode = knip();
3098
+ console.log(chalk34.blue(`Knip finished in ${Date.now() - start}ms`));
3099
+ }
3100
+ };
3101
+
3102
+ // src/xy/lint/lintCommand.ts
3103
+ import chalk35 from "chalk";
3104
+ var lintCommand = {
3105
+ command: "lint [package]",
3106
+ describe: "Lint - Run Eslint",
3107
+ builder: (yargs2) => {
3108
+ return packagePositionalParam(yargs2).option("fix", {
3109
+ alias: "f",
3110
+ default: false,
3111
+ description: "Fix fixable issues",
3112
+ type: "boolean"
3113
+ }).option("cache", {
3114
+ alias: "c",
3115
+ default: false,
3116
+ description: "Use caching for performance",
3117
+ type: "boolean"
3118
+ });
3119
+ },
3120
+ handler: (argv) => {
3121
+ if (argv.verbose) console.log("Lint");
3122
+ const start = Date.now();
3123
+ process.exitCode = argv.fix ? fix({
3124
+ pkg: argv.package,
3125
+ cache: argv.cache,
3126
+ verbose: !!argv.verbose
3127
+ }) : lint({
3128
+ pkg: argv.package,
3129
+ cache: argv.cache,
3130
+ verbose: !!argv.verbose
3131
+ });
3132
+ console.log(chalk35.blue(`Finished in ${Date.now() - start}ms`));
3133
+ }
3134
+ };
3135
+
3136
+ // src/xy/lint/publintCommand.ts
3137
+ import chalk36 from "chalk";
3138
+ var publintCommand = {
3139
+ command: "publint [package]",
3140
+ describe: "Publint - Run Publint",
3141
+ builder: (yargs2) => {
3142
+ return packagePositionalParam(yargs2);
3143
+ },
3144
+ handler: async (argv) => {
3145
+ if (argv.verbose) console.log("Publint");
3146
+ const start = Date.now();
3147
+ process.exitCode = await publint({ pkg: argv.package, verbose: !!argv.verbose });
3148
+ console.log(chalk36.blue(`Finished in ${Date.now() - start}ms`));
3149
+ }
3150
+ };
3151
+
3152
+ // src/xy/lint/relintCommand.ts
3153
+ import chalk37 from "chalk";
3154
+ var relintCommand = {
3155
+ command: "relint [package]",
3156
+ describe: "Relint - Clean & Lint",
3157
+ builder: (yargs2) => {
3158
+ return packagePositionalParam(yargs2);
3159
+ },
3160
+ handler: (argv) => {
3161
+ if (argv.verbose) console.log("Relinting");
3162
+ const start = Date.now();
3163
+ process.exitCode = relint();
3164
+ console.log(chalk37.blue(`Finished in ${Date.now() - start}ms`));
3165
+ }
3166
+ };
3167
+
3168
+ // src/xy/lint/sonarCommand.ts
3169
+ import chalk38 from "chalk";
3170
+ var sonarCommand = {
3171
+ command: "sonar",
3172
+ describe: "Sonar - Run Sonar Check",
3173
+ builder: (yargs2) => {
3174
+ return packagePositionalParam(yargs2);
3175
+ },
3176
+ handler: (argv) => {
3177
+ const start = Date.now();
3178
+ if (argv.verbose) console.log("Sonar Check");
3179
+ process.exitCode = sonar();
3180
+ console.log(chalk38.blue(`Finished in ${Date.now() - start}ms`));
3181
+ }
3182
+ };
3183
+
3184
+ // src/xy/lint/index.ts
2704
3185
  var xyLintCommands = (args) => {
2705
- return args.command(
2706
- "cycle [package]",
2707
- "Cycle - Check for dependency cycles",
2708
- (yargs2) => {
2709
- return packagePositionalParam(yargs2);
2710
- },
2711
- async (argv) => {
2712
- const start = Date.now();
2713
- if (argv.verbose) console.log("Cycle");
2714
- process.exitCode = await cycle({ pkg: argv.package });
2715
- console.log(chalk30.blue(`Finished in ${Date.now() - start}ms`));
2716
- }
2717
- ).command(
2718
- "lint [package]",
2719
- "Lint - Run Eslint",
2720
- (yargs2) => {
2721
- return packagePositionalParam(yargs2).option("fix", {
2722
- alias: "f",
2723
- default: false,
2724
- description: "Fix fixable issues",
2725
- type: "boolean"
2726
- }).option("cache", {
2727
- alias: "c",
2728
- default: false,
2729
- description: "Use caching for performance",
2730
- type: "boolean"
2731
- });
2732
- },
2733
- (argv) => {
2734
- if (argv.verbose) console.log("Lint");
2735
- const start = Date.now();
2736
- process.exitCode = argv.fix ? fix({
2737
- pkg: argv.package,
2738
- cache: argv.cache,
2739
- verbose: !!argv.verbose
2740
- }) : lint({
2741
- pkg: argv.package,
2742
- cache: argv.cache,
2743
- verbose: !!argv.verbose
2744
- });
2745
- console.log(chalk30.blue(`Finished in ${Date.now() - start}ms`));
2746
- }
2747
- ).command(
2748
- "deplint [package]",
2749
- "Deplint - Run Deplint",
2750
- (yargs2) => {
2751
- return packagePositionalParam(yargs2).option("deps", {
2752
- alias: "d",
2753
- default: false,
2754
- description: "Check dependencies",
2755
- type: "boolean"
2756
- }).option("devDeps", {
2757
- alias: "v",
2758
- default: false,
2759
- description: "Check devDependencies",
2760
- type: "boolean"
2761
- }).option("peerDeps", {
2762
- alias: "p",
2763
- default: false,
2764
- description: "Check peerDependencies",
2765
- type: "boolean"
2766
- }).option("exclude", {
2767
- alias: "e",
2768
- description: "Package names to exclude from unused checks (comma-separated or repeated)",
2769
- type: "array"
2770
- });
2771
- },
2772
- async (argv) => {
2773
- if (argv.verbose) console.log("Deplint");
2774
- const start = Date.now();
2775
- const cliExclude = argv.exclude?.flatMap((v) => String(v).split(",")).map((v) => v.trim()).filter(Boolean);
2776
- process.exitCode = await deplint({
2777
- cliExclude,
2778
- pkg: argv.package,
2779
- deps: !!argv.deps,
2780
- devDeps: !!argv.devDeps,
2781
- peerDeps: !!argv.peerDeps,
2782
- verbose: !!argv.verbose
2783
- });
2784
- console.log(chalk30.blue(`Finished in ${Date.now() - start}ms`));
2785
- }
2786
- ).command(
2787
- "fix [package]",
2788
- "Fix - Run Eslint w/fix",
2789
- (yargs2) => {
2790
- return packagePositionalParam(yargs2);
2791
- },
2792
- (argv) => {
2793
- const start = Date.now();
2794
- if (argv.verbose) console.log("Fix");
2795
- process.exitCode = fix();
2796
- console.log(chalk30.blue(`Finished in ${Date.now() - start}ms`));
2797
- }
2798
- ).command(
2799
- "relint [package]",
2800
- "Relint - Clean & Lint",
2801
- (yargs2) => {
2802
- return packagePositionalParam(yargs2);
2803
- },
2804
- (argv) => {
2805
- if (argv.verbose) console.log("Relinting");
2806
- const start = Date.now();
2807
- process.exitCode = relint();
2808
- console.log(chalk30.blue(`Finished in ${Date.now() - start}ms`));
2809
- }
2810
- ).command(
2811
- "publint [package]",
2812
- "Publint - Run Publint",
2813
- (yargs2) => {
2814
- return packagePositionalParam(yargs2);
2815
- },
2816
- async (argv) => {
2817
- if (argv.verbose) console.log("Publint");
2818
- const start = Date.now();
2819
- process.exitCode = await publint({ pkg: argv.package, verbose: !!argv.verbose });
2820
- console.log(chalk30.blue(`Finished in ${Date.now() - start}ms`));
2821
- }
2822
- ).command(
2823
- "knip",
2824
- "Knip - Run Knip",
2825
- (yargs2) => {
2826
- return packagePositionalParam(yargs2);
2827
- },
2828
- (argv) => {
2829
- if (argv.verbose) console.log("Knip");
2830
- const start = Date.now();
2831
- process.exitCode = knip();
2832
- console.log(chalk30.blue(`Knip finished in ${Date.now() - start}ms`));
2833
- }
2834
- ).command(
2835
- "sonar",
2836
- "Sonar - Run Sonar Check",
2837
- (yargs2) => {
2838
- return packagePositionalParam(yargs2);
2839
- },
2840
- (argv) => {
2841
- const start = Date.now();
2842
- if (argv.verbose) console.log("Sonar Check");
2843
- process.exitCode = sonar();
2844
- console.log(chalk30.blue(`Finished in ${Date.now() - start}ms`));
2845
- }
2846
- );
3186
+ return args.command(cycleCommand).command(lintCommand).command(deplintCommand).command(fixCommand).command(relintCommand).command(publintCommand).command(knipCommand).command(sonarCommand);
2847
3187
  };
2848
3188
 
2849
3189
  // src/xy/xyParseOptions.ts
@@ -2877,8 +3217,8 @@ var xyParseOptions = () => {
2877
3217
  var xy = async () => {
2878
3218
  const options = xyParseOptions();
2879
3219
  return await xyBuildCommands(xyCommonCommands(xyInstallCommands(xyDeployCommands(xyLintCommands(options))))).demandCommand(1).command("*", "", () => {
2880
- console.error(chalk31.yellow(`Command not found [${chalk31.magenta(process.argv[2])}]`));
2881
- console.log(chalk31.gray("Try 'yarn xy --help' for list of commands"));
3220
+ console.error(chalk39.yellow(`Command not found [${chalk39.magenta(process.argv[2])}]`));
3221
+ console.log(chalk39.gray("Try 'yarn xy --help' for list of commands"));
2882
3222
  }).version().help().argv;
2883
3223
  };
2884
3224
  export {