@beignet/cli 0.0.3 → 0.0.4

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 (98) hide show
  1. package/CHANGELOG.md +205 -0
  2. package/README.md +379 -61
  3. package/dist/ansi.d.ts +10 -0
  4. package/dist/ansi.d.ts.map +1 -0
  5. package/dist/ansi.js +20 -0
  6. package/dist/ansi.js.map +1 -0
  7. package/dist/choices.d.ts +72 -0
  8. package/dist/choices.d.ts.map +1 -0
  9. package/dist/choices.js +88 -0
  10. package/dist/choices.js.map +1 -0
  11. package/dist/completion.d.ts +47 -0
  12. package/dist/completion.d.ts.map +1 -0
  13. package/dist/completion.js +123 -0
  14. package/dist/completion.js.map +1 -0
  15. package/dist/config.d.ts +8 -0
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +8 -0
  18. package/dist/config.js.map +1 -1
  19. package/dist/create-prompts.d.ts +42 -0
  20. package/dist/create-prompts.d.ts.map +1 -0
  21. package/dist/create-prompts.js +136 -0
  22. package/dist/create-prompts.js.map +1 -0
  23. package/dist/create.d.ts +4 -1
  24. package/dist/create.d.ts.map +1 -1
  25. package/dist/create.js +16 -26
  26. package/dist/create.js.map +1 -1
  27. package/dist/db.d.ts +1 -0
  28. package/dist/db.d.ts.map +1 -1
  29. package/dist/db.js +37 -2
  30. package/dist/db.js.map +1 -1
  31. package/dist/github-annotations.d.ts +18 -0
  32. package/dist/github-annotations.d.ts.map +1 -0
  33. package/dist/github-annotations.js +22 -0
  34. package/dist/github-annotations.js.map +1 -0
  35. package/dist/index.d.ts +1 -9
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +657 -588
  38. package/dist/index.js.map +1 -1
  39. package/dist/inspect.d.ts +21 -2
  40. package/dist/inspect.d.ts.map +1 -1
  41. package/dist/inspect.js +1938 -131
  42. package/dist/inspect.js.map +1 -1
  43. package/dist/lib.d.ts +20 -0
  44. package/dist/lib.d.ts.map +1 -0
  45. package/dist/lib.js +17 -0
  46. package/dist/lib.js.map +1 -0
  47. package/dist/lint.d.ts +10 -1
  48. package/dist/lint.d.ts.map +1 -1
  49. package/dist/lint.js +340 -33
  50. package/dist/lint.js.map +1 -1
  51. package/dist/make.d.ts +20 -3
  52. package/dist/make.d.ts.map +1 -1
  53. package/dist/make.js +1756 -394
  54. package/dist/make.js.map +1 -1
  55. package/dist/outbox.d.ts +24 -0
  56. package/dist/outbox.d.ts.map +1 -0
  57. package/dist/outbox.js +138 -0
  58. package/dist/outbox.js.map +1 -0
  59. package/dist/schedule.d.ts +36 -0
  60. package/dist/schedule.d.ts.map +1 -0
  61. package/dist/schedule.js +155 -0
  62. package/dist/schedule.js.map +1 -0
  63. package/dist/task.d.ts +26 -0
  64. package/dist/task.d.ts.map +1 -0
  65. package/dist/task.js +106 -0
  66. package/dist/task.js.map +1 -0
  67. package/dist/templates.d.ts +3 -32
  68. package/dist/templates.d.ts.map +1 -1
  69. package/dist/templates.js +1002 -527
  70. package/dist/templates.js.map +1 -1
  71. package/dist/version.d.ts +8 -0
  72. package/dist/version.d.ts.map +1 -0
  73. package/dist/version.js +18 -0
  74. package/dist/version.js.map +1 -0
  75. package/package.json +9 -8
  76. package/src/ansi.ts +30 -0
  77. package/src/choices.ts +137 -0
  78. package/src/completion.ts +169 -0
  79. package/src/config.ts +16 -0
  80. package/src/create-prompts.ts +182 -0
  81. package/src/create.ts +24 -31
  82. package/src/db.ts +60 -4
  83. package/src/github-annotations.ts +37 -0
  84. package/src/index.ts +1067 -803
  85. package/src/inspect.ts +2859 -115
  86. package/src/lib.ts +45 -0
  87. package/src/lint.ts +493 -39
  88. package/src/make.ts +2181 -405
  89. package/src/outbox.ts +249 -0
  90. package/src/schedule.ts +272 -0
  91. package/src/task.ts +169 -0
  92. package/src/templates.ts +1073 -567
  93. package/src/version.ts +20 -0
  94. package/dist/create-bin.d.ts +0 -3
  95. package/dist/create-bin.d.ts.map +0 -1
  96. package/dist/create-bin.js +0 -9
  97. package/dist/create-bin.js.map +0 -1
  98. package/src/create-bin.ts +0 -11
package/dist/lint.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { readdir, readFile, stat } from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { createPainter } from "./ansi.js";
3
4
  import { directoryPath, loadBeignetConfig, normalizePath, resolveConfig, } from "./config.js";
5
+ import { formatGithubAnnotation } from "./github-annotations.js";
4
6
  /**
5
7
  * Inspect app imports and report dependency-direction violations.
6
8
  */
@@ -12,37 +14,98 @@ export async function lintApp(options = {}) {
12
14
  ? resolveConfig(options.config)
13
15
  : await loadBeignetConfig(targetDir, files);
14
16
  const diagnostics = [];
15
- for (const file of lintSourceFiles(files)) {
17
+ const sourceFiles = lintSourceFiles(files);
18
+ const sourceFileSet = new Set(sourceFiles);
19
+ const sourceByFile = new Map();
20
+ const importGraph = new Map();
21
+ for (const file of sourceFiles) {
16
22
  const sourceLayer = classifyPath(file, config);
23
+ const source = await readFile(path.join(targetDir, file), "utf8");
24
+ sourceByFile.set(file, source);
25
+ importGraph.set(file, parseImports(source, file, sourceFileSet));
17
26
  if (sourceLayer === "test" || sourceLayer === "unknown")
18
27
  continue;
19
- const source = await readFile(path.join(targetDir, file), "utf8");
20
- for (const reference of parseImports(source, file)) {
28
+ const lineStarts = computeLineStarts(source);
29
+ for (const reference of importGraph.get(file) ?? []) {
21
30
  const diagnostic = lintImport(file, sourceLayer, reference, config);
22
- if (diagnostic)
23
- diagnostics.push(diagnostic);
31
+ if (diagnostic) {
32
+ diagnostics.push({
33
+ ...diagnostic,
34
+ ...positionFromOffset(lineStarts, reference.offset),
35
+ });
36
+ }
24
37
  }
25
38
  }
39
+ diagnostics.push(...lintRuntimeBoundary({
40
+ config,
41
+ graph: importGraph,
42
+ sourceByFile,
43
+ }));
26
44
  return {
45
+ schemaVersion: 1,
27
46
  targetDir,
28
47
  config,
29
48
  diagnostics: dedupeDiagnostics(diagnostics),
30
49
  };
31
50
  }
51
+ function computeLineStarts(source) {
52
+ const lineStarts = [0];
53
+ for (let index = 0; index < source.length; index++) {
54
+ if (source[index] === "\n") {
55
+ lineStarts.push(index + 1);
56
+ }
57
+ }
58
+ return lineStarts;
59
+ }
60
+ function positionFromOffset(lineStarts, offset) {
61
+ let low = 0;
62
+ let high = lineStarts.length - 1;
63
+ while (low < high) {
64
+ const middle = Math.ceil((low + high) / 2);
65
+ if (lineStarts[middle] <= offset) {
66
+ low = middle;
67
+ }
68
+ else {
69
+ high = middle - 1;
70
+ }
71
+ }
72
+ return { line: low + 1, column: offset - lineStarts[low] + 1 };
73
+ }
32
74
  /**
33
75
  * Format dependency-direction lint diagnostics for CLI output.
34
76
  */
35
- export function formatLint(result) {
77
+ export function formatLint(result, options = {}) {
78
+ const paint = createPainter(options.color);
36
79
  if (result.diagnostics.length === 0) {
37
80
  return `No Beignet lint issues found in ${result.targetDir}.`;
38
81
  }
39
82
  return [
40
83
  `Found ${result.diagnostics.length} Beignet lint issue${result.diagnostics.length === 1 ? "" : "s"} in ${result.targetDir}:`,
41
84
  "",
42
- ...result.diagnostics.map((diagnostic) => `ERROR ${diagnostic.code} ${diagnostic.file}
85
+ ...result.diagnostics.map((diagnostic) => `${paint("ERROR", "red")} ${diagnostic.code} ${lintDiagnosticLocation(diagnostic)}
43
86
  ${diagnostic.message}`),
44
87
  ].join("\n");
45
88
  }
89
+ function lintDiagnosticLocation(diagnostic) {
90
+ if (diagnostic.line === undefined || diagnostic.column === undefined) {
91
+ return diagnostic.file;
92
+ }
93
+ return `${diagnostic.file}:${diagnostic.line}:${diagnostic.column}`;
94
+ }
95
+ /**
96
+ * Format dependency-direction lint diagnostics as GitHub Actions annotations.
97
+ */
98
+ export function formatLintGithub(result) {
99
+ return result.diagnostics
100
+ .map((diagnostic) => formatGithubAnnotation({
101
+ severity: "error",
102
+ file: diagnostic.file,
103
+ line: diagnostic.line,
104
+ col: diagnostic.column,
105
+ message: `${diagnostic.code}: ${diagnostic.message}`,
106
+ }))
107
+ .join("\n");
108
+ }
46
109
  async function assertDirectory(targetDir) {
47
110
  try {
48
111
  const stats = await stat(targetDir);
@@ -92,11 +155,11 @@ function lintSourceFiles(files) {
92
155
  return /\.(c|m)?tsx?$/.test(file);
93
156
  });
94
157
  }
95
- function parseImports(source, importerFile) {
158
+ function parseImports(source, importerFile, files) {
96
159
  const references = parseImportSpecifiers(source);
97
- return references.map((importPath) => ({
98
- importPath,
99
- ...resolveImport(importPath, importerFile),
160
+ return references.map((reference) => ({
161
+ ...reference,
162
+ ...resolveImport(reference.importPath, importerFile, files),
100
163
  }));
101
164
  }
102
165
  function parseImportSpecifiers(source) {
@@ -106,15 +169,25 @@ function parseImportSpecifiers(source) {
106
169
  index = skipNonCode(source, index);
107
170
  if (isKeywordAt(source, index, "import")) {
108
171
  const parsed = parseImportSpecifierAt(source, index + "import".length);
109
- if (parsed?.specifier)
110
- specifiers.push(parsed.specifier);
172
+ if (parsed?.specifier) {
173
+ specifiers.push({
174
+ importPath: parsed.specifier,
175
+ kind: parsed.kind ?? "value",
176
+ offset: index,
177
+ });
178
+ }
111
179
  index = parsed?.end ?? index + "import".length;
112
180
  continue;
113
181
  }
114
182
  if (isKeywordAt(source, index, "export")) {
115
183
  const parsed = parseExportSpecifierAt(source, index + "export".length);
116
- if (parsed?.specifier)
117
- specifiers.push(parsed.specifier);
184
+ if (parsed?.specifier) {
185
+ specifiers.push({
186
+ importPath: parsed.specifier,
187
+ kind: parsed.kind ?? "value",
188
+ offset: index,
189
+ });
190
+ }
118
191
  index = parsed?.end ?? index + "export".length;
119
192
  continue;
120
193
  }
@@ -138,9 +211,16 @@ function parseImportSpecifierAt(source, index) {
138
211
  if (sideEffectImport) {
139
212
  return {
140
213
  specifier: sideEffectImport.value,
214
+ kind: "value",
141
215
  end: sideEffectImport.end,
142
216
  };
143
217
  }
218
+ const importClauseStart = cursor;
219
+ let isImportType = false;
220
+ if (isKeywordAt(source, cursor, "type")) {
221
+ isImportType = true;
222
+ cursor = cursorAfterKeyword("type", cursor);
223
+ }
144
224
  while (cursor < source.length) {
145
225
  cursor = skipWhitespaceAndComments(source, cursor);
146
226
  if (source[cursor] === ";" || source[cursor] === "\n") {
@@ -153,6 +233,9 @@ function parseImportSpecifierAt(source, index) {
153
233
  return { end: fromCursor };
154
234
  return {
155
235
  specifier: stringLiteral.value,
236
+ kind: isImportType
237
+ ? "type"
238
+ : inferImportClauseKind(source.slice(importClauseStart, cursor)),
156
239
  end: stringLiteral.end,
157
240
  };
158
241
  }
@@ -162,8 +245,15 @@ function parseImportSpecifierAt(source, index) {
162
245
  }
163
246
  function parseExportSpecifierAt(source, index) {
164
247
  let cursor = index;
248
+ let isExportType = false;
249
+ const exportClauseStart = cursor;
165
250
  while (cursor < source.length) {
166
251
  cursor = skipWhitespaceAndComments(source, cursor);
252
+ if (isKeywordAt(source, cursor, "type")) {
253
+ isExportType = true;
254
+ cursor = cursorAfterKeyword("type", cursor);
255
+ continue;
256
+ }
167
257
  if (source[cursor] === ";" || source[cursor] === "\n") {
168
258
  return { end: cursor + 1 };
169
259
  }
@@ -174,6 +264,9 @@ function parseExportSpecifierAt(source, index) {
174
264
  return { end: fromCursor };
175
265
  return {
176
266
  specifier: stringLiteral.value,
267
+ kind: isExportType
268
+ ? "type"
269
+ : inferImportClauseKind(source.slice(exportClauseStart, cursor)),
177
270
  end: stringLiteral.end,
178
271
  };
179
272
  }
@@ -181,6 +274,13 @@ function parseExportSpecifierAt(source, index) {
181
274
  }
182
275
  return undefined;
183
276
  }
277
+ function inferImportClauseKind(importClause) {
278
+ const trimmed = importClause.trim();
279
+ if (/^\{\s*type\s+[^,}]+(?:,\s*type\s+[^,}]+)*,?\s*\}$/.test(trimmed)) {
280
+ return "type";
281
+ }
282
+ return "value";
283
+ }
184
284
  function cursorAfterKeyword(keyword, index) {
185
285
  return index + keyword.length;
186
286
  }
@@ -298,21 +398,42 @@ function isKeywordAt(source, index, keyword) {
298
398
  function isIdentifierChar(char) {
299
399
  return Boolean(char && /[A-Za-z0-9_$]/.test(char));
300
400
  }
301
- function resolveImport(importPath, importerFile) {
401
+ function resolveImport(importPath, importerFile, files) {
302
402
  if (importPath.startsWith("@/")) {
303
403
  return {
304
- resolvedPath: stripKnownExtension(importPath.slice(2)),
404
+ resolvedPath: resolveLocalImportPath(stripKnownExtension(importPath.slice(2)), files),
305
405
  };
306
406
  }
307
407
  if (importPath.startsWith(".")) {
308
408
  return {
309
- resolvedPath: stripKnownExtension(normalizePath(path.join(path.dirname(importerFile), importPath))),
409
+ resolvedPath: resolveLocalImportPath(stripKnownExtension(normalizePath(path.join(path.dirname(importerFile), importPath))), files),
310
410
  };
311
411
  }
312
412
  return {
313
413
  packageName: packageName(importPath),
314
414
  };
315
415
  }
416
+ function resolveLocalImportPath(importPath, files) {
417
+ const candidates = [
418
+ importPath,
419
+ `${importPath}.ts`,
420
+ `${importPath}.tsx`,
421
+ `${importPath}.mts`,
422
+ `${importPath}.cts`,
423
+ `${importPath}/index.ts`,
424
+ `${importPath}/index.tsx`,
425
+ `${importPath}/index.mts`,
426
+ `${importPath}/index.cts`,
427
+ ];
428
+ for (const candidate of candidates) {
429
+ for (const file of files) {
430
+ if (stripKnownExtension(file) === stripKnownExtension(candidate)) {
431
+ return file;
432
+ }
433
+ }
434
+ }
435
+ return stripKnownExtension(importPath);
436
+ }
316
437
  function packageName(importPath) {
317
438
  if (!importPath.startsWith("@"))
318
439
  return importPath.split("/")[0];
@@ -323,29 +444,45 @@ function stripKnownExtension(filePath) {
323
444
  return filePath.replace(/\.(c|m)?tsx?$/, "");
324
445
  }
325
446
  function lintImport(file, sourceLayer, reference, config) {
447
+ if (reference.kind === "type")
448
+ return undefined;
326
449
  const targetLayer = reference.resolvedPath
327
450
  ? classifyPath(reference.resolvedPath, config)
328
451
  : undefined;
452
+ const featureImport = reference.resolvedPath
453
+ ? featureImportViolation(file, sourceLayer, reference.resolvedPath, config)
454
+ : undefined;
455
+ if (featureImport) {
456
+ return {
457
+ severity: "error",
458
+ code: "BEIGNET_IMPORT_DIRECTION",
459
+ file,
460
+ importPath: reference.importPath,
461
+ message: featureImport,
462
+ };
463
+ }
329
464
  const appImport = reference.resolvedPath
330
465
  ? appImportViolation(sourceLayer, targetLayer)
331
466
  : undefined;
332
467
  if (appImport) {
333
468
  return {
334
469
  severity: "error",
335
- code: "CK_IMPORT_DIRECTION",
470
+ code: "BEIGNET_IMPORT_DIRECTION",
336
471
  file,
337
472
  importPath: reference.importPath,
338
473
  message: appImportMessage(sourceLayer, reference.importPath, appImport),
339
474
  };
340
475
  }
341
- if (reference.packageName &&
342
- packageImportViolation(sourceLayer, reference.packageName)) {
476
+ const bannedPackage = reference.packageName
477
+ ? packageImportViolation(sourceLayer, reference.importPath)
478
+ : undefined;
479
+ if (bannedPackage) {
343
480
  return {
344
481
  severity: "error",
345
- code: "CK_IMPORT_DIRECTION",
482
+ code: "BEIGNET_IMPORT_DIRECTION",
346
483
  file,
347
484
  importPath: reference.importPath,
348
- message: packageImportMessage(sourceLayer, reference.packageName),
485
+ message: packageImportMessage(sourceLayer, bannedPackage),
349
486
  };
350
487
  }
351
488
  return undefined;
@@ -396,12 +533,16 @@ function appImportViolation(sourceLayer, targetLayer) {
396
533
  ["app", "client", "component", "infra", "workflow"].includes(targetLayer)) {
397
534
  return targetLayer;
398
535
  }
536
+ if (sourceLayer === "infra" &&
537
+ ["app", "client", "component", "route", "server"].includes(targetLayer)) {
538
+ return targetLayer;
539
+ }
399
540
  return undefined;
400
541
  }
401
- function packageImportViolation(sourceLayer, packageName) {
542
+ function packageImportViolation(sourceLayer, importPath) {
402
543
  if (sourceLayer === "domain") {
403
- return (domainBannedPackages.has(packageName) ||
404
- packageName.startsWith("@beignet/provider-"));
544
+ return (matchBannedPackage(domainBannedPackages, importPath) ??
545
+ matchBeignetProviderPackage(importPath));
405
546
  }
406
547
  if ([
407
548
  "contract",
@@ -411,15 +552,164 @@ function packageImportViolation(sourceLayer, packageName) {
411
552
  "use-case",
412
553
  "workflow",
413
554
  ].includes(sourceLayer)) {
414
- return (coreBannedPackages.has(packageName) ||
415
- serverRuntimePackages.has(packageName) ||
416
- packageName.startsWith("@beignet/provider-"));
555
+ return (matchBannedPackage(coreBannedPackages, importPath) ??
556
+ matchBannedPackage(serverRuntimePackages, importPath) ??
557
+ matchBeignetProviderPackage(importPath));
417
558
  }
418
559
  if (sourceLayer === "route") {
419
- return (coreBannedPackages.has(packageName) ||
420
- packageName.startsWith("@beignet/provider-"));
560
+ return (matchBannedPackage(coreBannedPackages, importPath) ??
561
+ matchBeignetProviderPackage(importPath));
421
562
  }
422
- return false;
563
+ return undefined;
564
+ }
565
+ function matchBannedPackage(bannedPackages, importPath) {
566
+ let candidate = importPath;
567
+ while (candidate.length > 0) {
568
+ if (bannedPackages.has(candidate))
569
+ return candidate;
570
+ const separator = candidate.lastIndexOf("/");
571
+ if (separator === -1)
572
+ return undefined;
573
+ candidate = candidate.slice(0, separator);
574
+ }
575
+ return undefined;
576
+ }
577
+ function matchBeignetProviderPackage(importPath) {
578
+ const name = packageName(importPath);
579
+ return name.startsWith("@beignet/provider-") ? name : undefined;
580
+ }
581
+ function lintRuntimeBoundary({ config, graph, sourceByFile, }) {
582
+ const diagnostics = [];
583
+ for (const file of graph.keys()) {
584
+ const rootKind = runtimeBoundaryRootKind(file, sourceByFile.get(file) ?? "", config);
585
+ if (!rootKind)
586
+ continue;
587
+ diagnostics.push(...lintRuntimeBoundaryRoot({
588
+ root: file,
589
+ rootKind,
590
+ config,
591
+ graph,
592
+ }));
593
+ }
594
+ return diagnostics;
595
+ }
596
+ function lintRuntimeBoundaryRoot({ root, rootKind, config, graph, }) {
597
+ const diagnostics = [];
598
+ const visited = new Set();
599
+ const queue = [
600
+ { file: root, chain: [root] },
601
+ ];
602
+ while (queue.length > 0) {
603
+ const current = queue.shift();
604
+ if (!current)
605
+ continue;
606
+ if (visited.has(current.file))
607
+ continue;
608
+ visited.add(current.file);
609
+ for (const reference of graph.get(current.file) ?? []) {
610
+ if (reference.kind === "type" &&
611
+ reference.importPath !== "@beignet/core/server-only") {
612
+ continue;
613
+ }
614
+ const chain = reference.resolvedPath
615
+ ? [...current.chain, reference.resolvedPath]
616
+ : current.chain;
617
+ const violation = runtimeBoundaryViolation(reference, config);
618
+ if (violation) {
619
+ diagnostics.push({
620
+ severity: "error",
621
+ code: "BEIGNET_RUNTIME_BOUNDARY",
622
+ file: root,
623
+ importPath: reference.importPath,
624
+ message: runtimeBoundaryMessage(rootKind, violation, chain),
625
+ });
626
+ continue;
627
+ }
628
+ if (reference.resolvedPath && graph.has(reference.resolvedPath)) {
629
+ queue.push({
630
+ file: reference.resolvedPath,
631
+ chain,
632
+ });
633
+ }
634
+ }
635
+ }
636
+ return diagnostics;
637
+ }
638
+ function runtimeBoundaryRootKind(file, source, config) {
639
+ const layer = classifyPath(file, config);
640
+ if (layer === "contract")
641
+ return "contract";
642
+ if (layer === "client")
643
+ return "client";
644
+ if (hasUseClientDirective(source))
645
+ return "client";
646
+ if (isGeneratedClientAdapter(file))
647
+ return "client";
648
+ return undefined;
649
+ }
650
+ function hasUseClientDirective(source) {
651
+ const trimmed = source.trimStart();
652
+ return (trimmed.startsWith('"use client";') ||
653
+ trimmed.startsWith('"use client"') ||
654
+ trimmed.startsWith("'use client';") ||
655
+ trimmed.startsWith("'use client'"));
656
+ }
657
+ function isGeneratedClientAdapter(file) {
658
+ return (file === "client/index.ts" ||
659
+ file === "client/api-client.ts" ||
660
+ file === "client/rhf.ts" ||
661
+ file === "client/rq.ts" ||
662
+ file === "client/uploads.ts");
663
+ }
664
+ function runtimeBoundaryViolation(reference, config) {
665
+ if (reference.resolvedPath) {
666
+ const targetLayer = classifyPath(reference.resolvedPath, config);
667
+ if (targetLayer === "use-case" ||
668
+ targetLayer === "route" ||
669
+ targetLayer === "infra" ||
670
+ targetLayer === "server") {
671
+ return `${layerLabel(targetLayer)} module ${reference.resolvedPath}`;
672
+ }
673
+ if (targetLayer === "app-context") {
674
+ return `app context module ${reference.resolvedPath}`;
675
+ }
676
+ }
677
+ if (reference.importPath === "@beignet/core/server-only") {
678
+ return "server-only marker @beignet/core/server-only";
679
+ }
680
+ if (reference.importPath.startsWith("node:")) {
681
+ return `Node runtime module ${reference.importPath}`;
682
+ }
683
+ if (serverRuntimePackages.has(reference.importPath) ||
684
+ reference.importPath.startsWith("@beignet/provider-")) {
685
+ return `server runtime package ${reference.importPath}`;
686
+ }
687
+ return undefined;
688
+ }
689
+ function runtimeBoundaryMessage(rootKind, violation, chain) {
690
+ return `${rootKindLabel(rootKind)} roots must not value-import server-only code. Reached ${violation} through ${formatImportChain(chain)}. Move shared DTO and validation schemas to features/<feature>/schemas.ts, keep use cases/routes/infra/server modules behind server entrypoints, or import server-shaped modules with import type only.`;
691
+ }
692
+ function rootKindLabel(rootKind) {
693
+ return rootKind === "contract" ? "contract" : "client";
694
+ }
695
+ function formatImportChain(chain) {
696
+ return chain.join(" -> ");
697
+ }
698
+ function featureImportViolation(file, sourceLayer, resolvedPath, config) {
699
+ if (sourceLayer !== "domain")
700
+ return undefined;
701
+ const sourceFeature = featureLayerInfo(file, config);
702
+ const targetFeature = featureLayerInfo(resolvedPath, config);
703
+ if (!sourceFeature || !targetFeature)
704
+ return undefined;
705
+ if (sourceFeature.layer !== "domain" || targetFeature.layer !== "domain") {
706
+ return undefined;
707
+ }
708
+ if (sourceFeature.feature === targetFeature.feature)
709
+ return undefined;
710
+ if (targetFeature.feature === "shared")
711
+ return undefined;
712
+ return `feature-specific domain files must not import another feature's domain (${stripKnownExtension(resolvedPath)}). Move shared concepts to features/shared/domain.`;
423
713
  }
424
714
  const domainBannedPackages = new Set([
425
715
  "@aws-sdk/client-s3",
@@ -542,7 +832,14 @@ function classifyPath(filePath, config) {
542
832
  return "policy";
543
833
  if (layerSegment === "use-cases")
544
834
  return "use-case";
545
- if (["jobs", "listeners", "notifications", "schedules", "uploads"].includes(layerSegment)) {
835
+ if ([
836
+ "jobs",
837
+ "listeners",
838
+ "notifications",
839
+ "schedules",
840
+ "tasks",
841
+ "uploads",
842
+ ].includes(layerSegment)) {
546
843
  return "workflow";
547
844
  }
548
845
  if (layerSegment === "components")
@@ -576,6 +873,16 @@ function featureRelativePath(filePath, featuresPath) {
576
873
  const prefix = `${directoryPath(featuresPath)}/`;
577
874
  return filePath.slice(prefix.length);
578
875
  }
876
+ function featureLayerInfo(filePath, config) {
877
+ const normalizedPath = stripKnownExtension(normalizePath(filePath));
878
+ const relativePath = featureRelativePath(normalizedPath, directoryPath(config.paths.features));
879
+ if (!relativePath)
880
+ return undefined;
881
+ const [feature, layer] = relativePath.split("/");
882
+ if (!feature)
883
+ return undefined;
884
+ return { feature, layer };
885
+ }
579
886
  function sharedDomainPath(config) {
580
887
  const featuresDir = directoryPath(config.paths.features);
581
888
  const featuresParent = directoryPath(path.dirname(featuresDir));
package/dist/lint.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lint.js","sourceRoot":"","sources":["../src/lint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../src/lint.ts"],"names":[],"mappings":"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"}