@solid-stack/mason 1.0.22 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAUA,wBAAgB,SAAS,sBAqOxB;AAcD,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAWA,wBAAgB,SAAS,sBA2OxB;AAcD,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE"}
@@ -1,7 +1,4 @@
1
- import type { FeatureAuditResult, LintOptions, LintSummary, Violation } from "../types/lint.js";
2
- export declare function printLintBanner(mode: "failFast" | "complete"): void;
3
- export declare function formatViolation(v: Violation, showFixHint?: boolean): string;
4
- export declare function formatFeatureResult(res: FeatureAuditResult, options?: LintOptions): string;
5
- export declare function printTerminalReport(summary: LintSummary, options?: LintOptions): void;
1
+ import type { LintSummary, Violation } from "../types/lint.js";
2
+ export declare function formatViolation(v: Violation): string;
6
3
  export declare function handleLint(flags?: Record<string, any>): Promise<LintSummary>;
7
4
  //# sourceMappingURL=lint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGhG,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAanE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,GAAE,OAAc,GAAG,MAAM,CAiBjF;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,kBAAkB,EACvB,OAAO,GAAE,WAAgB,GACxB,MAAM,CAyBR;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,WAAgB,GACxB,IAAI,CA2BN;AAED,wBAAsB,UAAU,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8DtF"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG5E,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAsBpD;AAED,wBAAsB,UAAU,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0EtF"}
@@ -1 +1 @@
1
- {"version":3,"file":"lintEngine.d.ts","sourceRoot":"","sources":["../../src/core/lintEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EAEtB,yBAAyB,EACzB,SAAS,EACT,WAAW,EACX,WAAW,EAEX,SAAS,EACV,MAAM,kBAAkB,CAAC;AAG1B,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,SAAgB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxC,SAAgB,UAAU,EAAE,OAAO,CAAC;IAEpC,YAAY,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,UAAU,GAAE,OAAe,EAKhF;CACF;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAa1E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBxE;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,CA2BjE;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,UAAU,CAmGZ;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAsB1E;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,KAAK,CAA6D;IAEnE,OAAO,CAAC,QAAQ,EAAE,yBAAyB,GAAG;QACnD,YAAY,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;QACtD,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;KACnC,CAwBA;IAEM,QAAQ,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,yBAAyB,CAAA;KAAE,CAAC,CAQ1F;IAEM,gBAAgB,IAAI,sBAAsB,EAAE,CAwBlD;IAED,OAAO,CAAC,aAAa;CAqCtB;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,GAClB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAYtC;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,WAAgB,GAAG,WAAW,CAokBnE"}
1
+ {"version":3,"file":"lintEngine.d.ts","sourceRoot":"","sources":["../../src/core/lintEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EAEtB,yBAAyB,EACzB,SAAS,EACT,WAAW,EACX,WAAW,EAEX,SAAS,EACV,MAAM,kBAAkB,CAAC;AAG1B,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,SAAgB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxC,SAAgB,UAAU,EAAE,OAAO,CAAC;IAEpC,YAAY,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,UAAU,GAAE,OAAe,EAKhF;CACF;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAa1E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBxE;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,CA2BjE;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,UAAU,CAmGZ;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAsB1E;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,KAAK,CAA6D;IAEnE,OAAO,CAAC,QAAQ,EAAE,yBAAyB,GAAG;QACnD,YAAY,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;QACtD,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;KACnC,CAwBA;IAEM,QAAQ,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,yBAAyB,CAAA;KAAE,CAAC,CAQ1F;IAEM,gBAAgB,IAAI,sBAAsB,EAAE,CAwBlD;IAED,OAAO,CAAC,aAAa;CAqCtB;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,GAClB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAYtC;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,WAAgB,GAAG,WAAW,CAgkBnE"}
package/dist/index.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  var fs4 = require('fs');
4
4
  var path2 = require('path');
5
5
  var p14 = require('@clack/prompts');
6
- var pc15 = require('picocolors');
6
+ var pc14 = require('picocolors');
7
7
  var url = require('url');
8
8
  var child_process = require('child_process');
9
9
  var crypto = require('crypto');
@@ -34,7 +34,7 @@ function _interopNamespace(e) {
34
34
  var fs4__default = /*#__PURE__*/_interopDefault(fs4);
35
35
  var path2__default = /*#__PURE__*/_interopDefault(path2);
36
36
  var p14__namespace = /*#__PURE__*/_interopNamespace(p14);
37
- var pc15__default = /*#__PURE__*/_interopDefault(pc15);
37
+ var pc14__default = /*#__PURE__*/_interopDefault(pc14);
38
38
  var Handlebars__default = /*#__PURE__*/_interopDefault(Handlebars);
39
39
 
40
40
  // src/utils/formatting.ts
@@ -141,17 +141,17 @@ function writeFileSafely(absolutePath, content, options = {}) {
141
141
  function printGeneratedFiles(files, isDryRun = false) {
142
142
  console.log("");
143
143
  if (isDryRun) {
144
- p14__namespace.log.warn(pc15__default.default.yellow(pc15__default.default.bold("[DRY RUN PREVIEW] No files were written to disk.")));
144
+ p14__namespace.log.warn(pc14__default.default.yellow(pc14__default.default.bold("[DRY RUN PREVIEW] No files were written to disk.")));
145
145
  }
146
146
  for (const f of files) {
147
147
  if (f.action === "created") {
148
- p14__namespace.log.success(`${pc15__default.default.bold(f.relativePath)} ${pc15__default.default.dim("(created)")}`);
148
+ p14__namespace.log.success(`${pc14__default.default.bold(f.relativePath)} ${pc14__default.default.dim("(created)")}`);
149
149
  } else if (f.action === "overwritten") {
150
- p14__namespace.log.warn(`${pc15__default.default.bold(f.relativePath)} ${pc15__default.default.dim("(overwritten)")}`);
150
+ p14__namespace.log.warn(`${pc14__default.default.bold(f.relativePath)} ${pc14__default.default.dim("(overwritten)")}`);
151
151
  } else if (f.action === "skipped") {
152
- p14__namespace.log.info(`${pc15__default.default.dim(f.relativePath)} ${pc15__default.default.dim("(skipped - already exists, pass -o to overwrite)")}`);
152
+ p14__namespace.log.info(`${pc14__default.default.dim(f.relativePath)} ${pc14__default.default.dim("(skipped - already exists, pass -o to overwrite)")}`);
153
153
  } else {
154
- p14__namespace.log.info(`${pc15__default.default.bold(f.relativePath)} ${pc15__default.default.dim("(preview)")}`);
154
+ p14__namespace.log.info(`${pc14__default.default.bold(f.relativePath)} ${pc14__default.default.dim("(preview)")}`);
155
155
  }
156
156
  }
157
157
  }
@@ -361,13 +361,13 @@ function handleCancel(result) {
361
361
  }
362
362
  function printBanner() {
363
363
  console.log("");
364
- p14__namespace.intro(pc15__default.default.bgCyan(pc15__default.default.black(" @solid-stack/mason ")));
364
+ p14__namespace.intro(pc14__default.default.bgCyan(pc14__default.default.black(" @solid-stack/mason ")));
365
365
  }
366
366
  async function promptProperties(options = {}) {
367
367
  const properties = options.defaults ? [...options.defaults] : [];
368
368
  if (properties.length > 0) {
369
369
  const summary = properties.map((p16) => `${p16.name}: ${p16.type}${p16.optional ? "?" : ""}`).join(", ");
370
- p14__namespace.log.info(pc15__default.default.dim(`Pre-configured fields: ${summary}`));
370
+ p14__namespace.log.info(pc14__default.default.dim(`Pre-configured fields: ${summary}`));
371
371
  const addMore = handleCancel(
372
372
  await p14__namespace.confirm({
373
373
  message: "Would you like to add custom fields/properties?",
@@ -378,7 +378,7 @@ async function promptProperties(options = {}) {
378
378
  return properties;
379
379
  }
380
380
  }
381
- p14__namespace.log.info(pc15__default.default.cyan("Enter properties (leave name blank when finished):"));
381
+ p14__namespace.log.info(pc14__default.default.cyan("Enter properties (leave name blank when finished):"));
382
382
  while (true) {
383
383
  const name = handleCancel(
384
384
  await p14__namespace.text({
@@ -426,7 +426,7 @@ async function promptProperties(options = {}) {
426
426
  optional
427
427
  });
428
428
  p14__namespace.log.success(
429
- pc15__default.default.green(`Added: ${name.trim()}${optional ? "?" : ""}: ${finalType.trim()}`)
429
+ pc14__default.default.green(`Added: ${name.trim()}${optional ? "?" : ""}: ${finalType.trim()}`)
430
430
  );
431
431
  }
432
432
  return properties;
@@ -660,7 +660,7 @@ function installNpmPackages(projectRoot, packages, pm) {
660
660
  installCmd = `npm install ${packages.join(" ")}`;
661
661
  break;
662
662
  }
663
- p14__namespace.log.info(`Installing missing dependencies with ${manager}: ${pc15__default.default.cyan(packages.join(", "))}`);
663
+ p14__namespace.log.info(`Installing missing dependencies with ${manager}: ${pc14__default.default.cyan(packages.join(", "))}`);
664
664
  child_process.execSync(installCmd, {
665
665
  cwd: projectRoot,
666
666
  stdio: "inherit"
@@ -2377,7 +2377,7 @@ async function runFeatureCommand(featureNameArg, flags = {}) {
2377
2377
  }
2378
2378
  }
2379
2379
  const s = p14__namespace.spinner();
2380
- s.start(`Generating feature '${pc15__default.default.cyan(normalizedName)}'...`);
2380
+ s.start(`Generating feature '${pc14__default.default.cyan(normalizedName)}'...`);
2381
2381
  const options = {
2382
2382
  name: normalizedName,
2383
2383
  projectRoot,
@@ -2424,7 +2424,7 @@ async function runFeatureCommand(featureNameArg, flags = {}) {
2424
2424
  s.stop("Feature scaffolded successfully!");
2425
2425
  printGeneratedFiles(files, options.dryRun);
2426
2426
  p14__namespace.outro(
2427
- pc15__default.default.green(
2427
+ pc14__default.default.green(
2428
2428
  `\u2713 Feature '${normalizedName}' initialized in ${path2__default.default.relative(projectRoot, targetDir)} (uncommitted, unregistered)`
2429
2429
  )
2430
2430
  );
@@ -2580,7 +2580,7 @@ async function runSharedCommand(sharedNameArg, flags = {}) {
2580
2580
  );
2581
2581
  }
2582
2582
  const s = p14__namespace.spinner();
2583
- s.start(`Generating shared module '${pc15__default.default.cyan(normalizedName)}'...`);
2583
+ s.start(`Generating shared module '${pc14__default.default.cyan(normalizedName)}'...`);
2584
2584
  const files = generateShared({
2585
2585
  name: normalizedName,
2586
2586
  description,
@@ -2594,7 +2594,7 @@ async function runSharedCommand(sharedNameArg, flags = {}) {
2594
2594
  s.stop("Shared module generated successfully!");
2595
2595
  printGeneratedFiles(files, Boolean(flags.dryRun));
2596
2596
  p14__namespace.outro(
2597
- pc15__default.default.green(
2597
+ pc14__default.default.green(
2598
2598
  `\u2713 Shared module '${normalizedName}' initialized in ${path2__default.default.relative(projectRoot, targetDir)} (uncommitted, unregistered)`
2599
2599
  )
2600
2600
  );
@@ -2722,7 +2722,7 @@ async function runUseCaseCommand(useCaseNameArg, flags = {}) {
2722
2722
  }
2723
2723
  }
2724
2724
  const s = p14__namespace.spinner();
2725
- s.start(`Generating use case '${pc15__default.default.cyan(ucName)}'...`);
2725
+ s.start(`Generating use case '${pc14__default.default.cyan(ucName)}'...`);
2726
2726
  const options = {
2727
2727
  name: ucName,
2728
2728
  feature,
@@ -2754,7 +2754,7 @@ async function runUseCaseCommand(useCaseNameArg, flags = {}) {
2754
2754
  }
2755
2755
  s.stop("Use case generated successfully!");
2756
2756
  printGeneratedFiles(files, options.dryRun);
2757
- p14__namespace.outro(pc15__default.default.green(`Use case '${ucName}' created in feature '${feature}'!`));
2757
+ p14__namespace.outro(pc14__default.default.green(`Use case '${ucName}' created in feature '${feature}'!`));
2758
2758
  }
2759
2759
  async function runDomainCommand(domainNameArg, flags = {}) {
2760
2760
  const projectRoot = findProjectRoot();
@@ -2825,7 +2825,7 @@ async function runDomainCommand(domainNameArg, flags = {}) {
2825
2825
  });
2826
2826
  }
2827
2827
  const s = p14__namespace.spinner();
2828
- s.start(`Generating domain model '${pc15__default.default.cyan(entityName)}'...`);
2828
+ s.start(`Generating domain model '${pc14__default.default.cyan(entityName)}'...`);
2829
2829
  const options = {
2830
2830
  name: entityName,
2831
2831
  feature,
@@ -2838,7 +2838,7 @@ async function runDomainCommand(domainNameArg, flags = {}) {
2838
2838
  const file = generateDomain(options);
2839
2839
  s.stop("Domain model generated successfully!");
2840
2840
  printGeneratedFiles([file], options.dryRun);
2841
- p14__namespace.outro(pc15__default.default.green(`Domain model '${entityName}' created in feature '${feature}'!`));
2841
+ p14__namespace.outro(pc14__default.default.green(`Domain model '${entityName}' created in feature '${feature}'!`));
2842
2842
  }
2843
2843
  async function runInfrastructureCommand(classNameArg, flags = {}) {
2844
2844
  const projectRoot = findProjectRoot();
@@ -3007,7 +3007,7 @@ async function runInfrastructureCommand(classNameArg, flags = {}) {
3007
3007
  registerInProvider = !flags.noProvider;
3008
3008
  }
3009
3009
  const s = p14__namespace.spinner();
3010
- s.start(`Generating infrastructure class '${pc15__default.default.cyan(className)}'...`);
3010
+ s.start(`Generating infrastructure class '${pc14__default.default.cyan(className)}'...`);
3011
3011
  const files = [];
3012
3012
  const options = {
3013
3013
  name: className,
@@ -3042,7 +3042,7 @@ async function runInfrastructureCommand(classNameArg, flags = {}) {
3042
3042
  }
3043
3043
  s.stop("Infrastructure class generated successfully!");
3044
3044
  printGeneratedFiles(files, options.dryRun);
3045
- p14__namespace.outro(pc15__default.default.green(`Infrastructure class '${className}' created!`));
3045
+ p14__namespace.outro(pc14__default.default.green(`Infrastructure class '${className}' created!`));
3046
3046
  }
3047
3047
  async function runInterfaceCommand(interfaceNameArg, flags = {}) {
3048
3048
  const projectRoot = findProjectRoot();
@@ -3155,7 +3155,7 @@ async function runInterfaceCommand(interfaceNameArg, flags = {}) {
3155
3155
  }
3156
3156
  }
3157
3157
  const s = p14__namespace.spinner();
3158
- s.start(`Generating interface '${pc15__default.default.cyan(ifaceName)}'...`);
3158
+ s.start(`Generating interface '${pc14__default.default.cyan(ifaceName)}'...`);
3159
3159
  const files = [];
3160
3160
  const options = {
3161
3161
  name: ifaceName,
@@ -3204,7 +3204,7 @@ async function runInterfaceCommand(interfaceNameArg, flags = {}) {
3204
3204
  }
3205
3205
  s.stop("Interface generated successfully!");
3206
3206
  printGeneratedFiles(files, options.dryRun);
3207
- p14__namespace.outro(pc15__default.default.green(`Interface '${ifaceName}' created in feature '${feature}'!`));
3207
+ p14__namespace.outro(pc14__default.default.green(`Interface '${ifaceName}' created in feature '${feature}'!`));
3208
3208
  }
3209
3209
  async function runHttpHandlerCommand(handlerNameArg, flags = {}) {
3210
3210
  const projectRoot = findProjectRoot();
@@ -3321,7 +3321,7 @@ async function runHttpHandlerCommand(handlerNameArg, flags = {}) {
3321
3321
  }
3322
3322
  }
3323
3323
  const s = p14__namespace.spinner();
3324
- s.start(`Generating HTTP handler '${pc15__default.default.cyan(className)}'...`);
3324
+ s.start(`Generating HTTP handler '${pc14__default.default.cyan(className)}'...`);
3325
3325
  const options = {
3326
3326
  name: className,
3327
3327
  feature,
@@ -3339,7 +3339,7 @@ async function runHttpHandlerCommand(handlerNameArg, flags = {}) {
3339
3339
  const files = generateHttpHandler(options);
3340
3340
  s.stop("HTTP handler generated successfully!");
3341
3341
  printGeneratedFiles(files, options.dryRun);
3342
- p14__namespace.outro(pc15__default.default.green(`HTTP handler '${className}' created in feature '${feature}'!`));
3342
+ p14__namespace.outro(pc14__default.default.green(`HTTP handler '${className}' created in feature '${feature}'!`));
3343
3343
  }
3344
3344
  function generateInjectableCode(className, dependencies = [], methods = [], implementsInterface) {
3345
3345
  const formattedDeps = dependencies.map((dep) => ({
@@ -3495,7 +3495,7 @@ async function runInjectableCommand(classNameArg, flags = {}) {
3495
3495
  );
3496
3496
  }
3497
3497
  const s = p14__namespace.spinner();
3498
- s.start(`Generating injectable '${pc15__default.default.cyan(className)}'...`);
3498
+ s.start(`Generating injectable '${pc14__default.default.cyan(className)}'...`);
3499
3499
  const options = {
3500
3500
  name: className,
3501
3501
  feature,
@@ -3509,7 +3509,7 @@ async function runInjectableCommand(classNameArg, flags = {}) {
3509
3509
  const files = generateInjectable(options);
3510
3510
  s.stop("Injectable class generated successfully!");
3511
3511
  printGeneratedFiles(files, options.dryRun);
3512
- p14__namespace.outro(pc15__default.default.green(`Injectable '${className}' created successfully!`));
3512
+ p14__namespace.outro(pc14__default.default.green(`Injectable '${className}' created successfully!`));
3513
3513
  }
3514
3514
  async function runInteractiveMenu(flags = {}) {
3515
3515
  printBanner();
@@ -3623,7 +3623,7 @@ async function handleCreate(type, name, flags = {}) {
3623
3623
  break;
3624
3624
  default:
3625
3625
  p14__namespace.log.error(
3626
- pc15__default.default.red(
3626
+ pc14__default.default.red(
3627
3627
  `Unknown component type: "${type}". Allowed types: feature, shared, usecase, domain, infrastructure, interface, httpHandler, injectable.`
3628
3628
  )
3629
3629
  );
@@ -3743,19 +3743,19 @@ async function handleImport(typeArg, nameArg, flags = {}) {
3743
3743
  );
3744
3744
  }
3745
3745
  if (type !== "shared" && type !== "feature") {
3746
- p14__namespace.log.error(pc15__default.default.red(`Invalid module type: "${typeArg}". Must be "shared" or "feature".`));
3746
+ p14__namespace.log.error(pc14__default.default.red(`Invalid module type: "${typeArg}". Must be "shared" or "feature".`));
3747
3747
  process.exit(1);
3748
3748
  }
3749
3749
  const registryBase = getRegistryBase(projectRoot, flags.registry);
3750
3750
  const s = p14__namespace.spinner();
3751
- s.start(`Connecting to registry at ${pc15__default.default.dim(registryBase)}...`);
3751
+ s.start(`Connecting to registry at ${pc14__default.default.dim(registryBase)}...`);
3752
3752
  let index;
3753
3753
  try {
3754
3754
  index = await fetchRegistryIndex(registryBase);
3755
3755
  s.stop("Registry index loaded.");
3756
3756
  } catch (err) {
3757
- s.stop(pc15__default.default.red("Failed to load registry index."));
3758
- p14__namespace.log.error(pc15__default.default.red(err.message || String(err)));
3757
+ s.stop(pc14__default.default.red("Failed to load registry index."));
3758
+ p14__namespace.log.error(pc14__default.default.red(err.message || String(err)));
3759
3759
  process.exit(1);
3760
3760
  }
3761
3761
  const availableList = type === "shared" ? index.shared : index.features;
@@ -3779,9 +3779,9 @@ async function handleImport(typeArg, nameArg, flags = {}) {
3779
3779
  }
3780
3780
  if (!candidateNames.includes(name)) {
3781
3781
  const closest = findClosestMatch(name, candidateNames);
3782
- p14__namespace.log.error(pc15__default.default.red(`\u274C Module '${name}' not found in the ${type} registry.`));
3782
+ p14__namespace.log.error(pc14__default.default.red(`\u274C Module '${name}' not found in the ${type} registry.`));
3783
3783
  if (closest) {
3784
- p14__namespace.log.info(pc15__default.default.yellow(`Did you mean '${pc15__default.default.cyan(closest)}'?`));
3784
+ p14__namespace.log.info(pc14__default.default.yellow(`Did you mean '${pc14__default.default.cyan(closest)}'?`));
3785
3785
  }
3786
3786
  process.exit(1);
3787
3787
  }
@@ -3793,7 +3793,7 @@ async function handleImport(typeArg, nameArg, flags = {}) {
3793
3793
  try {
3794
3794
  manifest = await fetchModuleManifest(registryBase, modType, modName);
3795
3795
  } catch (err) {
3796
- p14__namespace.log.error(pc15__default.default.red(`Failed to fetch manifest for ${modType} '${modName}': ${err.message}`));
3796
+ p14__namespace.log.error(pc14__default.default.red(`Failed to fetch manifest for ${modType} '${modName}': ${err.message}`));
3797
3797
  process.exit(1);
3798
3798
  }
3799
3799
  nodes.set(key, {
@@ -3833,7 +3833,7 @@ async function handleImport(typeArg, nameArg, flags = {}) {
3833
3833
  buildTopologicalOrder(rootKey);
3834
3834
  const resolutions = /* @__PURE__ */ new Map();
3835
3835
  const globalAliasMap = /* @__PURE__ */ new Map();
3836
- p14__namespace.log.step(`Importing ${type}: ${pc15__default.default.cyan(name)}...`);
3836
+ p14__namespace.log.step(`Importing ${type}: ${pc14__default.default.cyan(name)}...`);
3837
3837
  for (const key of orderedKeys) {
3838
3838
  const node = nodes.get(key);
3839
3839
  const { type: modType, name: registryName, manifest } = node;
@@ -3866,7 +3866,7 @@ async function handleImport(typeArg, nameArg, flags = {}) {
3866
3866
  if (programmaticPointTo) {
3867
3867
  if (!checkModuleExists(projectRoot, modType, programmaticPointTo)) {
3868
3868
  p14__namespace.log.error(
3869
- pc15__default.default.red(
3869
+ pc14__default.default.red(
3870
3870
  `Module '${programmaticPointTo}' specified in --point-to does not exist in ${folder}.`
3871
3871
  )
3872
3872
  );
@@ -3902,7 +3902,7 @@ async function handleImport(typeArg, nameArg, flags = {}) {
3902
3902
  }
3903
3903
  const existingDir = getExistingModuleDir(projectRoot, modType, registryName);
3904
3904
  if (!existingDir) {
3905
- p14__namespace.log.info(` \u21B3 Resolving required ${modType} dependency: ${pc15__default.default.cyan(registryName)}`);
3905
+ p14__namespace.log.info(` \u21B3 Resolving required ${modType} dependency: ${pc14__default.default.cyan(registryName)}`);
3906
3906
  resolutions.set(key, {
3907
3907
  type: modType,
3908
3908
  registryName,
@@ -4133,7 +4133,7 @@ async function handleImport(typeArg, nameArg, flags = {}) {
4133
4133
  const isOverwrite = Boolean(flags.overwrite || res.action === "overwrite");
4134
4134
  if (key !== rootKey) {
4135
4135
  p14__namespace.log.step(
4136
- `Importing ${res.type}: ${pc15__default.default.cyan(res.targetName)}${res.targetName !== res.registryName ? pc15__default.default.dim(` (from ${res.registryName})`) : ""}...`
4136
+ `Importing ${res.type}: ${pc14__default.default.cyan(res.targetName)}${res.targetName !== res.registryName ? pc14__default.default.dim(` (from ${res.registryName})`) : ""}...`
4137
4137
  );
4138
4138
  }
4139
4139
  if (res.action === "overwrite" && !flags.dryRun) {
@@ -4152,7 +4152,7 @@ async function handleImport(typeArg, nameArg, flags = {}) {
4152
4152
  const localFilePath = path2__default.default.join(targetDir, file);
4153
4153
  if (fs4__default.default.existsSync(localFilePath) && !isOverwrite) {
4154
4154
  p14__namespace.log.warn(
4155
- ` \u21B3 Skipping existing file: ${pc15__default.default.dim(path2__default.default.relative(projectRoot, localFilePath))} (use --overwrite to replace)`
4155
+ ` \u21B3 Skipping existing file: ${pc14__default.default.dim(path2__default.default.relative(projectRoot, localFilePath))} (use --overwrite to replace)`
4156
4156
  );
4157
4157
  continue;
4158
4158
  }
@@ -4164,13 +4164,13 @@ async function handleImport(typeArg, nameArg, flags = {}) {
4164
4164
  }
4165
4165
  const displayPath = path2__default.default.relative(projectRoot, localFilePath);
4166
4166
  totalWrittenFiles.push(displayPath);
4167
- p14__namespace.log.message(` ${pc15__default.default.green("+")} ${displayPath}`);
4167
+ p14__namespace.log.message(` ${pc14__default.default.green("+")} ${displayPath}`);
4168
4168
  }
4169
4169
  }
4170
4170
  const missingNpm = getMissingNpmPackages(projectRoot, Array.from(requiredNpmPackages));
4171
4171
  if (missingNpm.length > 0) {
4172
4172
  if (flags.skipInstall || flags.dryRun) {
4173
- p14__namespace.log.info(`Required npm dependencies to install: ${pc15__default.default.cyan(missingNpm.join(", "))}`);
4173
+ p14__namespace.log.info(`Required npm dependencies to install: ${pc14__default.default.cyan(missingNpm.join(", "))}`);
4174
4174
  } else {
4175
4175
  try {
4176
4176
  installNpmPackages(projectRoot, missingNpm);
@@ -4184,13 +4184,13 @@ async function handleImport(typeArg, nameArg, flags = {}) {
4184
4184
  }
4185
4185
  }
4186
4186
  if (flags.dryRun) {
4187
- p14__namespace.log.info(pc15__default.default.yellow("Dry run complete: No files were written to disk."));
4187
+ p14__namespace.log.info(pc14__default.default.yellow("Dry run complete: No files were written to disk."));
4188
4188
  } else {
4189
4189
  const rootRes = resolutions.get(rootKey);
4190
4190
  const baseDir = getModuleBaseDir(projectRoot, type);
4191
4191
  const displayTarget = path2__default.default.relative(projectRoot, path2__default.default.join(baseDir, rootRes.targetName));
4192
4192
  p14__namespace.log.success(
4193
- pc15__default.default.green(
4193
+ pc14__default.default.green(
4194
4194
  `Successfully imported ${type} '${name}' (${totalWrittenFiles.length} file${totalWrittenFiles.length === 1 ? "" : "s"} placed in ${displayTarget})`
4195
4195
  )
4196
4196
  );
@@ -4456,13 +4456,9 @@ function lintCodebase(options = {}) {
4456
4456
  featureResult.passed = false;
4457
4457
  }
4458
4458
  if (failFast) {
4459
- const errorMsg = `[FAIL FAST] Dependency rule violation detected:
4460
- Feature: ${v.feature}
4461
- Category: ${v.category}
4462
- Rule: ${v.ruleId}
4463
- Location: ${v.relativePath}:${v.line}
4464
- Code: ${v.code}
4465
- Explanation: ${v.advice}`;
4459
+ const errorMsg = `Dependency rule violation detected in ${v.relativePath}:${v.line}:
4460
+ [${v.category}] ${v.advice}
4461
+ Code: ${v.code}`;
4466
4462
  throw new DependencyRuleError(errorMsg, [v], true);
4467
4463
  }
4468
4464
  };
@@ -4950,87 +4946,23 @@ ${compiledDetails}
4950
4946
  }
4951
4947
 
4952
4948
  // src/commands/lint.ts
4953
- function printLintBanner(mode) {
4954
- console.log("");
4955
- const title = " Mason Clean Architecture Dependency Linter ";
4956
- const line = "\u2501".repeat(title.length + 2);
4957
- console.log(pc15__default.default.cyan(` \u250F${line}\u2513`));
4958
- console.log(` ${pc15__default.default.cyan("\u2503")} ${pc15__default.default.bgCyan(pc15__default.default.black(title))} ${pc15__default.default.cyan("\u2503")}`);
4959
- console.log(pc15__default.default.cyan(` \u2517${line}\u251B`));
4960
- const modeText = mode === "failFast" ? `${pc15__default.default.yellow("Fail-Fast")} ${pc15__default.default.dim("(default: stops at first error)")}` : `${pc15__default.default.magenta("Complete")} ${pc15__default.default.dim("(--complete: compiles all errors)")}`;
4961
- console.log(` Mode: ${modeText}`);
4962
- console.log("");
4963
- }
4964
- function formatViolation(v, showFixHint = true) {
4965
- const lines = [];
4966
- const categoryBadge = pc15__default.default.red(pc15__default.default.bold(`[${v.category}]`));
4967
- const location = pc15__default.default.white(`${v.relativePath}:${pc15__default.default.yellow(String(v.line))}`);
4968
- lines.push(` ${categoryBadge} ${location}`);
4969
- lines.push(` ${pc15__default.default.dim("Rule ID:")} ${pc15__default.default.yellow(v.ruleId)}`);
4970
- lines.push(` ${pc15__default.default.dim("Code:")} ${pc15__default.default.magenta(v.code)}`);
4971
- lines.push(` ${pc15__default.default.dim("Advice:")} ${pc15__default.default.cyan(v.advice)}`);
4972
- if (showFixHint && v.fixExample) {
4973
- lines.push(` ${pc15__default.default.dim("Example:")}`);
4974
- lines.push(` ${pc15__default.default.red(`- ${v.fixExample.bad}`)}`);
4975
- lines.push(` ${pc15__default.default.green(`+ ${v.fixExample.good}`)}`);
4976
- }
4977
- return lines.join("\n");
4978
- }
4979
- function formatFeatureResult(res, options = {}) {
4949
+ function formatViolation(v) {
4980
4950
  const lines = [];
4981
- if (res.passed) {
4982
- lines.push(
4983
- ` ${pc15__default.default.green("\u2714")} ${pc15__default.default.bold(res.featureName)} ${pc15__default.default.dim(
4984
- `(${res.scannedFilesCount} files checked - clean)`
4985
- )}`
4986
- );
4987
- return lines.join("\n");
4988
- }
4989
- const countBadge = pc15__default.default.red(
4990
- `(${res.violations.length} violation${res.violations.length > 1 ? "s" : ""})`
4951
+ lines.push(pc14__default.default.underline(pc14__default.default.cyan(v.relativePath)) + pc14__default.default.dim(":") + pc14__default.default.yellow(String(v.line)));
4952
+ const gutter = `${String(v.line).padStart(4, " ")} | `;
4953
+ lines.push(pc14__default.default.dim(gutter) + v.code);
4954
+ const categoryShort = v.category.replace(" Violation", "");
4955
+ lines.push(
4956
+ " " + pc14__default.default.red(pc14__default.default.bold("\u2716")) + " " + pc14__default.default.red(`[${categoryShort}]`) + " " + v.advice
4991
4957
  );
4992
- lines.push(`
4993
- ${pc15__default.default.red("\u2716")} ${pc15__default.default.bold(pc15__default.default.white(res.featureName))} ${countBadge}`);
4994
- lines.push(` ${pc15__default.default.dim("Path:")} ${res.featureDir}`);
4995
- lines.push("");
4996
- for (const v of res.violations) {
4997
- lines.push(formatViolation(v, options.fixHint !== false));
4998
- lines.push("");
4958
+ if (v.fixExample?.good) {
4959
+ lines.push(" " + pc14__default.default.dim("\u2192") + " " + pc14__default.default.dim(v.fixExample.good));
4999
4960
  }
5000
4961
  return lines.join("\n");
5001
4962
  }
5002
- function printTerminalReport(summary, options = {}) {
5003
- for (const res of summary.results) {
5004
- const formatted = formatFeatureResult(res, options);
5005
- if (formatted.trim()) {
5006
- console.log(formatted);
5007
- }
5008
- }
5009
- console.log("\u2501".repeat(70));
5010
- const statusIcon = summary.totalViolations === 0 ? pc15__default.default.green("\u2714 PASS") : pc15__default.default.red("\u2716 FAIL");
5011
- console.log(
5012
- ` ${statusIcon} ${pc15__default.default.bold("Dependency Rules Audit Result")} ${pc15__default.default.dim(
5013
- `(${summary.durationMs}ms)`
5014
- )}`
5015
- );
5016
- console.log(
5017
- ` ${pc15__default.default.bold("Features:")} ${pc15__default.default.cyan(String(summary.totalFeatures))} total | ${pc15__default.default.green(
5018
- String(summary.cleanFeatures)
5019
- )} clean | ${summary.violatedFeatures > 0 ? pc15__default.default.red(String(summary.violatedFeatures)) : pc15__default.default.green("0")} with violations`
5020
- );
5021
- console.log(
5022
- ` ${pc15__default.default.bold("Violations:")} ${summary.totalViolations > 0 ? pc15__default.default.red(pc15__default.default.bold(String(summary.totalViolations))) : pc15__default.default.green("0")} rule violations found`
5023
- );
5024
- console.log("\u2501".repeat(70));
5025
- console.log("");
5026
- }
5027
4963
  async function handleLint(flags = {}) {
5028
4964
  const complete = Boolean(flags.complete);
5029
- const mode = complete ? "complete" : "failFast";
5030
4965
  const quiet = Boolean(flags.quiet);
5031
- if (!quiet) {
5032
- printLintBanner(mode);
5033
- }
5034
4966
  const options = {
5035
4967
  complete,
5036
4968
  quiet,
@@ -5041,14 +4973,23 @@ async function handleLint(flags = {}) {
5041
4973
  };
5042
4974
  try {
5043
4975
  const summary = lintCodebase(options);
5044
- if (!quiet) {
5045
- printTerminalReport(summary, options);
5046
- }
5047
4976
  if (summary.totalViolations > 0) {
4977
+ if (!quiet) {
4978
+ console.log("");
4979
+ for (const v of summary.allViolations) {
4980
+ console.log(formatViolation(v));
4981
+ console.log("");
4982
+ }
4983
+ console.log(
4984
+ pc14__default.default.red(
4985
+ `\u2716 Dependency rules check failed with ${summary.totalViolations} error${summary.totalViolations > 1 ? "s" : ""} across ${summary.violatedFeatures} feature${summary.violatedFeatures > 1 ? "s" : ""} (${summary.totalFeatures} features scanned).`
4986
+ )
4987
+ );
4988
+ console.log("");
4989
+ }
5048
4990
  const errorHeader = `Dependency rule audit failed with ${summary.totalViolations} violation(s) across ${summary.violatedFeatures} feature(s):`;
5049
4991
  const compiledDetails = summary.allViolations.map(
5050
4992
  (v, i) => `${i + 1}. [${v.category}] ${v.relativePath}:${v.line}
5051
- Rule: ${v.ruleId}
5052
4993
  Code: ${v.code}
5053
4994
  Advice: ${v.advice}`
5054
4995
  ).join("\n\n");
@@ -5059,20 +5000,22 @@ ${compiledDetails}
5059
5000
  }
5060
5001
  if (!quiet) {
5061
5002
  console.log(
5062
- pc15__default.default.green(`\u2714 All dependency rules are being followed! (${summary.totalFeatures} features checked)`)
5003
+ pc14__default.default.green(
5004
+ `\u2714 Dependency rules verified across ${summary.totalFeatures} feature${summary.totalFeatures === 1 ? "" : "s"}.`
5005
+ )
5063
5006
  );
5064
- console.log("");
5065
5007
  }
5066
5008
  return summary;
5067
5009
  } catch (err) {
5068
5010
  if (err instanceof DependencyRuleError && err.isFailFast) {
5069
5011
  if (!quiet) {
5070
- console.log(pc15__default.default.red(`
5071
- \u2716 [FAIL FAST] Terminating on first detected dependency rule violation:`));
5012
+ console.log("");
5072
5013
  const v = err.violations[0];
5073
5014
  if (v) {
5074
- console.log(formatViolation(v, options.fixHint !== false));
5015
+ console.log(formatViolation(v));
5016
+ console.log("");
5075
5017
  }
5018
+ console.log(pc14__default.default.red(`\u2716 Dependency rules check failed (1 error).`));
5076
5019
  console.log("");
5077
5020
  }
5078
5021
  }
@@ -5086,7 +5029,7 @@ function createCli() {
5086
5029
  cli.command("[...args]", "Interactive scaffolding and import wizard").option("-d, --dry-run", "Preview changes without writing to disk").option("-o, --overwrite", "Overwrite existing files").option("-y, --yes", "Accept defaults and skip interactive prompts").option("--registry", "Run in registry mode").option("--point-to <mapping>", "Point a dependency to an existing local module (e.g. --point-to time:mytime)").option("--alias <mapping>", "Import a dependency fresh under an alias name (e.g. --alias time:time-mason)").option("--tests", "Include test files (use --no-tests to exclude)").action(async (args, flags) => {
5087
5030
  if (args && args.length > 0) {
5088
5031
  p14__namespace.log.error(
5089
- pc15__default.default.red(
5032
+ pc14__default.default.red(
5090
5033
  `Unknown command: "${args.join(" ")}". Use --help to list available commands.`
5091
5034
  )
5092
5035
  );
@@ -5205,6 +5148,12 @@ function createCli() {
5205
5148
  targetDir: target || flags.target || flags.dest
5206
5149
  });
5207
5150
  } catch (err) {
5151
+ if (err instanceof DependencyRuleError) {
5152
+ if (process.env.VITEST) {
5153
+ throw err;
5154
+ }
5155
+ process.exit(1);
5156
+ }
5208
5157
  handleCliError(err);
5209
5158
  }
5210
5159
  });
@@ -5239,7 +5188,7 @@ function handleCliError(err) {
5239
5188
  process.exit(0);
5240
5189
  }
5241
5190
  const message = err instanceof Error ? err.message : String(err);
5242
- p14__namespace.log.error(pc15__default.default.red(`Error: ${message}`));
5191
+ p14__namespace.log.error(pc14__default.default.red(`Error: ${message}`));
5243
5192
  if (process.env.VITEST) {
5244
5193
  throw err;
5245
5194
  }