ddd-ts-kit 0.20.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.fr.md +15 -6
  3. package/README.md +12 -4
  4. package/dist/check/catalogue/architecture-rules.d.ts.map +1 -1
  5. package/dist/check/catalogue/architecture-rules.js +2 -0
  6. package/dist/check/catalogue/architecture-rules.js.map +1 -1
  7. package/dist/check/catalogue/default-severities.d.ts.map +1 -1
  8. package/dist/check/catalogue/default-severities.js +1 -0
  9. package/dist/check/catalogue/default-severities.js.map +1 -1
  10. package/dist/check/commands/rules-command.js +2 -2
  11. package/dist/check/commands/rules-command.js.map +1 -1
  12. package/dist/check/configuration/config-inspection.d.ts.map +1 -1
  13. package/dist/check/configuration/config-inspection.js +7 -1
  14. package/dist/check/configuration/config-inspection.js.map +1 -1
  15. package/dist/check/engine/run-check.d.ts.map +1 -1
  16. package/dist/check/engine/run-check.js +17 -1
  17. package/dist/check/engine/run-check.js.map +1 -1
  18. package/dist/check/explain/clean-docs.js +1 -1
  19. package/dist/check/explain/clean-docs.js.map +1 -1
  20. package/dist/check/explain/layout-docs.js +1 -1
  21. package/dist/check/explain/layout-docs.js.map +1 -1
  22. package/dist/check/explain/persistence-docs.js +1 -1
  23. package/dist/check/explain/persistence-docs.js.map +1 -1
  24. package/dist/check/explain/tree-docs.js +2 -2
  25. package/dist/check/explain/tree-docs.js.map +1 -1
  26. package/dist/check/explain/wiring-docs.d.ts.map +1 -1
  27. package/dist/check/explain/wiring-docs.js +7 -0
  28. package/dist/check/explain/wiring-docs.js.map +1 -1
  29. package/dist/check/fixtures/config-fixtures.d.ts.map +1 -1
  30. package/dist/check/fixtures/config-fixtures.js +50 -1
  31. package/dist/check/fixtures/config-fixtures.js.map +1 -1
  32. package/dist/check/fixtures/governance-fixtures.d.ts.map +1 -1
  33. package/dist/check/fixtures/governance-fixtures.js +12 -3
  34. package/dist/check/fixtures/governance-fixtures.js.map +1 -1
  35. package/dist/check/fixtures/layer-fixtures.js +1 -1
  36. package/dist/check/fixtures/layer-fixtures.js.map +1 -1
  37. package/dist/check/fixtures/layout-fixtures.d.ts.map +1 -1
  38. package/dist/check/fixtures/layout-fixtures.js +6 -0
  39. package/dist/check/fixtures/layout-fixtures.js.map +1 -1
  40. package/dist/check/fixtures/persistence-fixtures.d.ts.map +1 -1
  41. package/dist/check/fixtures/persistence-fixtures.js +16 -0
  42. package/dist/check/fixtures/persistence-fixtures.js.map +1 -1
  43. package/dist/check/fixtures/test-fixtures.d.ts.map +1 -1
  44. package/dist/check/fixtures/test-fixtures.js +35 -1
  45. package/dist/check/fixtures/test-fixtures.js.map +1 -1
  46. package/dist/check/fixtures/tree-fixtures.js +1 -1
  47. package/dist/check/fixtures/tree-fixtures.js.map +1 -1
  48. package/dist/check/migrations/working-migration-findings.d.ts +8 -0
  49. package/dist/check/migrations/working-migration-findings.d.ts.map +1 -0
  50. package/dist/check/migrations/working-migration-findings.js +22 -0
  51. package/dist/check/migrations/working-migration-findings.js.map +1 -0
  52. package/dist/check/model/project.d.ts +3 -0
  53. package/dist/check/model/project.d.ts.map +1 -1
  54. package/dist/check/project/assemble-project.d.ts +2 -2
  55. package/dist/check/project/assemble-project.d.ts.map +1 -1
  56. package/dist/check/project/assemble-project.js +16 -6
  57. package/dist/check/project/assemble-project.js.map +1 -1
  58. package/dist/check/rules/clean-file-size.d.ts.map +1 -1
  59. package/dist/check/rules/clean-file-size.js +6 -1
  60. package/dist/check/rules/clean-file-size.js.map +1 -1
  61. package/dist/check/rules/clean-function-size.js +2 -2
  62. package/dist/check/rules/clean-function-size.js.map +1 -1
  63. package/dist/check/rules/clean-one-export-per-file.d.ts.map +1 -1
  64. package/dist/check/rules/clean-one-export-per-file.js +2 -11
  65. package/dist/check/rules/clean-one-export-per-file.js.map +1 -1
  66. package/dist/check/rules/config-rule-off-everywhere.d.ts +3 -0
  67. package/dist/check/rules/config-rule-off-everywhere.d.ts.map +1 -0
  68. package/dist/check/rules/config-rule-off-everywhere.js +21 -0
  69. package/dist/check/rules/config-rule-off-everywhere.js.map +1 -0
  70. package/dist/check/rules/governance-recorded-deviation.js +14 -7
  71. package/dist/check/rules/governance-recorded-deviation.js.map +1 -1
  72. package/dist/check/rules/persistence-migration-history.d.ts.map +1 -1
  73. package/dist/check/rules/persistence-migration-history.js +9 -2
  74. package/dist/check/rules/persistence-migration-history.js.map +1 -1
  75. package/dist/check/rules/test-spec-required.d.ts.map +1 -1
  76. package/dist/check/rules/test-spec-required.js +3 -2
  77. package/dist/check/rules/test-spec-required.js.map +1 -1
  78. package/dist/check/support/is-abstract-base.d.ts +7 -0
  79. package/dist/check/support/is-abstract-base.d.ts.map +1 -0
  80. package/dist/check/support/is-abstract-base.js +11 -0
  81. package/dist/check/support/is-abstract-base.js.map +1 -0
  82. package/dist/check/support/is-generated-context-file.d.ts +4 -0
  83. package/dist/check/support/is-generated-context-file.d.ts.map +1 -0
  84. package/dist/check/support/is-generated-context-file.js +12 -0
  85. package/dist/check/support/is-generated-context-file.js.map +1 -0
  86. package/dist/commands/drizzle-generate.d.ts +4 -0
  87. package/dist/commands/drizzle-generate.d.ts.map +1 -0
  88. package/dist/commands/drizzle-generate.js +14 -0
  89. package/dist/commands/drizzle-generate.js.map +1 -0
  90. package/dist/commands/generate.js +4 -0
  91. package/dist/commands/generate.js.map +1 -1
  92. package/dist/commands/worker-scope.d.ts.map +1 -1
  93. package/dist/commands/worker-scope.js +17 -2
  94. package/dist/commands/worker-scope.js.map +1 -1
  95. package/dist/config/config.d.ts +2 -1
  96. package/dist/config/config.d.ts.map +1 -1
  97. package/dist/config/index.d.ts +1 -0
  98. package/dist/config/index.d.ts.map +1 -1
  99. package/dist/config/index.js +1 -0
  100. package/dist/config/index.js.map +1 -1
  101. package/dist/config/parse-config.d.ts.map +1 -1
  102. package/dist/config/parse-config.js +2 -1
  103. package/dist/config/parse-config.js.map +1 -1
  104. package/dist/config/parse-rule-setting.d.ts +3 -0
  105. package/dist/config/parse-rule-setting.d.ts.map +1 -0
  106. package/dist/config/parse-rule-setting.js +10 -0
  107. package/dist/config/parse-rule-setting.js.map +1 -0
  108. package/dist/config/project-severity.d.ts +4 -0
  109. package/dist/config/project-severity.d.ts.map +1 -0
  110. package/dist/config/project-severity.js +5 -0
  111. package/dist/config/project-severity.js.map +1 -0
  112. package/dist/config/rule-setting.d.ts +10 -0
  113. package/dist/config/rule-setting.d.ts.map +1 -0
  114. package/dist/config/rule-setting.js +2 -0
  115. package/dist/config/rule-setting.js.map +1 -0
  116. package/dist/generate/given-name.d.ts +15 -0
  117. package/dist/generate/given-name.d.ts.map +1 -0
  118. package/dist/generate/given-name.js +21 -0
  119. package/dist/generate/given-name.js.map +1 -0
  120. package/dist/generate/kind.d.ts +4 -0
  121. package/dist/generate/kind.d.ts.map +1 -1
  122. package/dist/generate/kinds/adr-kind.d.ts.map +1 -1
  123. package/dist/generate/kinds/adr-kind.js +8 -4
  124. package/dist/generate/kinds/adr-kind.js.map +1 -1
  125. package/dist/generate/kinds/adr-number.d.ts +8 -0
  126. package/dist/generate/kinds/adr-number.d.ts.map +1 -0
  127. package/dist/generate/kinds/adr-number.js +25 -0
  128. package/dist/generate/kinds/adr-number.js.map +1 -0
  129. package/dist/generate/kinds/event-handler-kind.d.ts.map +1 -1
  130. package/dist/generate/kinds/event-handler-kind.js +7 -4
  131. package/dist/generate/kinds/event-handler-kind.js.map +1 -1
  132. package/dist/generate/kinds/integration-handler-kind.d.ts.map +1 -1
  133. package/dist/generate/kinds/integration-handler-kind.js +8 -2
  134. package/dist/generate/kinds/integration-handler-kind.js.map +1 -1
  135. package/dist/generate/kinds/write-adr.d.ts +3 -1
  136. package/dist/generate/kinds/write-adr.d.ts.map +1 -1
  137. package/dist/generate/kinds/write-adr.js +3 -3
  138. package/dist/generate/kinds/write-adr.js.map +1 -1
  139. package/dist/help/notes.d.ts +1 -1
  140. package/dist/help/notes.d.ts.map +1 -1
  141. package/dist/help/notes.js +8 -2
  142. package/dist/help/notes.js.map +1 -1
  143. package/dist/help/usage.d.ts +1 -1
  144. package/dist/help/usage.d.ts.map +1 -1
  145. package/dist/help/usage.js +2 -1
  146. package/dist/help/usage.js.map +1 -1
  147. package/dist/init/manifest/database-scripts.d.ts.map +1 -1
  148. package/dist/init/manifest/database-scripts.js +2 -1
  149. package/dist/init/manifest/database-scripts.js.map +1 -1
  150. package/dist/init/manifest/scripts-for.js +2 -0
  151. package/dist/init/manifest/scripts-for.js.map +1 -1
  152. package/dist/init/manifest/versions.js +24 -24
  153. package/dist/init/write-agent-settings.d.ts.map +1 -1
  154. package/dist/init/write-agent-settings.js +1 -0
  155. package/dist/init/write-agent-settings.js.map +1 -1
  156. package/dist/migration/drizzle-kit-bin.d.ts +3 -0
  157. package/dist/migration/drizzle-kit-bin.d.ts.map +1 -0
  158. package/dist/migration/drizzle-kit-bin.js +12 -0
  159. package/dist/migration/drizzle-kit-bin.js.map +1 -0
  160. package/dist/migration/drizzle-silent-failures.d.ts +9 -0
  161. package/dist/migration/drizzle-silent-failures.d.ts.map +1 -0
  162. package/dist/migration/drizzle-silent-failures.js +14 -0
  163. package/dist/migration/drizzle-silent-failures.js.map +1 -0
  164. package/dist/migration/generate-drizzle-migration.d.ts +15 -0
  165. package/dist/migration/generate-drizzle-migration.d.ts.map +1 -0
  166. package/dist/migration/generate-drizzle-migration.js +37 -0
  167. package/dist/migration/generate-drizzle-migration.js.map +1 -0
  168. package/dist/migration/index.d.ts +2 -0
  169. package/dist/migration/index.d.ts.map +1 -0
  170. package/dist/migration/index.js +2 -0
  171. package/dist/migration/index.js.map +1 -0
  172. package/dist/presets/preset-decision.js +2 -2
  173. package/dist/presets/preset-decision.js.map +1 -1
  174. package/dist/progress/read-slice-rules.d.ts +8 -0
  175. package/dist/progress/read-slice-rules.d.ts.map +1 -0
  176. package/dist/progress/read-slice-rules.js +20 -0
  177. package/dist/progress/read-slice-rules.js.map +1 -0
  178. package/dist/run.d.ts.map +1 -1
  179. package/dist/run.js +2 -0
  180. package/dist/run.js.map +1 -1
  181. package/dist/version.d.ts +1 -1
  182. package/dist/version.js +1 -1
  183. package/dist/worker/base-of.d.ts +8 -0
  184. package/dist/worker/base-of.d.ts.map +1 -0
  185. package/dist/worker/base-of.js +36 -0
  186. package/dist/worker/base-of.js.map +1 -0
  187. package/dist/worker/briefed-rows.d.ts +14 -0
  188. package/dist/worker/briefed-rows.d.ts.map +1 -0
  189. package/dist/worker/briefed-rows.js +53 -0
  190. package/dist/worker/briefed-rows.js.map +1 -0
  191. package/dist/worker/briefed-slice.d.ts +7 -0
  192. package/dist/worker/briefed-slice.d.ts.map +1 -0
  193. package/dist/worker/briefed-slice.js +2 -0
  194. package/dist/worker/briefed-slice.js.map +1 -0
  195. package/dist/worker/briefing-of.d.ts.map +1 -1
  196. package/dist/worker/briefing-of.js +14 -7
  197. package/dist/worker/briefing-of.js.map +1 -1
  198. package/dist/worker/ensure-contains-base.d.ts +6 -0
  199. package/dist/worker/ensure-contains-base.d.ts.map +1 -0
  200. package/dist/worker/ensure-contains-base.js +13 -0
  201. package/dist/worker/ensure-contains-base.js.map +1 -0
  202. package/dist/worker/open-worker-scope.d.ts +7 -3
  203. package/dist/worker/open-worker-scope.d.ts.map +1 -1
  204. package/dist/worker/open-worker-scope.js +33 -21
  205. package/dist/worker/open-worker-scope.js.map +1 -1
  206. package/dist/worker/worker-place.d.ts +2 -2
  207. package/dist/worker/worker-place.d.ts.map +1 -1
  208. package/dist/worker/worker-scope.d.ts +4 -4
  209. package/dist/worker/worker-scope.d.ts.map +1 -1
  210. package/package.json +2 -2
  211. package/templates/event-handler/event-handler.declared.ts.tpl +1 -1
  212. package/templates/event-handler/event-handler.spec.ts.tpl +2 -2
  213. package/templates/event-handler/event-handler.ts.tpl +1 -1
  214. package/templates/event-handler/wiring.manual.tpl +4 -4
  215. package/templates/event-handler/wiring.tsyringe.tpl +4 -4
  216. package/templates/init/AGENTS.md.tpl +2 -2
  217. package/templates/init/README.md.tpl +1 -0
  218. package/templates/pipeline/package-scripts.json +1 -1
  219. package/templates/pipeline/vitest.config.ts.tpl +10 -1
  220. package/dist/generate/kinds/next-adr-number.d.ts +0 -4
  221. package/dist/generate/kinds/next-adr-number.d.ts.map +0 -1
  222. package/dist/generate/kinds/next-adr-number.js +0 -7
  223. package/dist/generate/kinds/next-adr-number.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,89 @@ What each version changes for someone who uses the kit. The packages of `package
4
4
  together, under one version; the notes of each [GitHub release](https://github.com/gbourgeat/ddd-ts-kit/releases)
5
5
  list the pull requests behind it.
6
6
 
7
+ ## 0.22.0
8
+
9
+ **A context builder keeps its report current and regenerates with each slice.** The
10
+ `context-builder` agent has 150 turns instead of 80, and after each step of a slice it rewrites
11
+ `.ddd-ts-kit/report.md` in its worktree, in the form of its final report: an agent that stops
12
+ early leaves its state there, and `parallel-work` tells the conductor to read it. The guard lets a
13
+ worker write that one file. After each slice the worker runs `npm run regenerate` and commits the
14
+ derived files with it, as the briefing of `worker-scope` now says: they were left to the conductor,
15
+ so a worker stopped on "regenerate" and the run stopped with it. The agent never shortens a
16
+ comment, a test or a written rule to stay under a size limit: it extracts instead.
17
+
18
+ **`generate event-handler` and `generate integration-handler` take `--name <Name>`.** A reaction
19
+ was named after the event it handles; when the design names it after what it does in its context,
20
+ `--name` gives that name to the file, the class, the spec and the registration, and for an
21
+ integration handler to its consumer name and its system actor. The name passes the same checks
22
+ as any concept of the context (`--term`, `--allow-name`). Without it, nothing changes.
23
+
24
+ **`clean/function-size` names the fix.** More than three parameters: group them in a typed props
25
+ object or a value object (`Contestation.create({ ... })`), never a fourth parameter. A `describe`
26
+ past the 100-line ceiling: one top-level `describe` per behaviour, in the same file. The ESLint
27
+ rule no longer takes production code such as `context.run(callback)` for a group of tests: such a
28
+ callback is now held to the limit of a function, and may be reported where it was not.
29
+
30
+ ## 0.21.0
31
+
32
+ **A rule can be set for some files only, and a rule off everywhere is said.** `rules.<id>` in
33
+ `ddd-ts-kit.config.json` also takes `{ "severity": "error" | "warn" | "off", "files": ["<glob>"] }`:
34
+ a finding on a matching file takes that severity, every other file keeps the one of the project.
35
+ The ESLint preset applies the same setting to the same files. A lowered setting still needs its
36
+ `deviations` entry. The new rule `config/rule-off-everywhere` (a warning) reports a bare `"off"`,
37
+ which hides every finding of the rule and not only the ones its exception was about. To move,
38
+ narrow each reported rule to the files it is about, or write `"files": ["**"]` when the whole
39
+ project is meant.
40
+
41
+ **The generated barrel of a context is not judged by `clean/file-size`.** `<context>.declarations.ts`
42
+ and `<context>.dependencies.ts`, at the root of their context, are written by the kit and may grow
43
+ past 350 lines; a project no longer has to turn the rule off for them. A file of the same name
44
+ elsewhere is still judged. To move, remove an exception you wrote for them.
45
+
46
+ **`worker-scope` briefs one batch, from a checked base.** `--base <ref>` cuts the worktree from
47
+ that ref (`origin/main`) and gives it as the trunk of the checks; `--rows <id,...>` limits the
48
+ briefing to those rows of `slices.md`, in that order. Without `--base`, the command refuses to run
49
+ from a worker's worktree, and an existing worktree or branch that does not contain the base is
50
+ refused with the fix. The `rules:` of a row is filled from the line of rules that `plan-slices`
51
+ writes under the table. The `context-builder` agent takes one or two rows, keeps its last turns for
52
+ its report and never ends without it; `architecture-reviewer` keeps turns for its verdict.
53
+
54
+ **A worker may generate a working migration.** `npm run db:generate working-<what>` in a worker's
55
+ worktree is allowed by the guard, and `persistence/migration-history` accepts it there, so a branch
56
+ that changes the stored state is green alone. On the trunk the same file is reported: at the merge
57
+ the conductor deletes it and generates the real one (`parallel-work`, merge step). Any other
58
+ migration stays refused to a worker.
59
+
60
+ **`db:generate` under drizzle-kit no longer waits or pretends.** Without a terminal, drizzle-kit
61
+ refused its rename question, wrote no migration and exited 0; under a pseudo-terminal it waited
62
+ for an answer. `db:generate` is now `ddd-ts-kit drizzle-generate --name`: in a terminal it is
63
+ `drizzle-kit generate` as before; without one, those two silent failures exit 2 with the fix (split
64
+ the rename, or write a custom migration). To move, in a Drizzle project, set the `db:generate`
65
+ script to `ddd-ts-kit drizzle-generate --name`, or run `npx ddd-ts-kit init --force`.
66
+
67
+ **One `regenerate` script for every derived file.** `npm run regenerate` runs
68
+ `ddd-ts-kit depcruise-config --write` then `npm run docs:generate` (the context documents, the
69
+ barrels, the OpenAPI and event documents, the clients): the one step after a change of route,
70
+ schema, event or config. To move, run `npx ddd-ts-kit init --force` after the upgrade, which adds
71
+ the script and allows it to agents.
72
+
73
+ **`generate adr` takes `--number <n>`.** A team that numbers its decision records by block
74
+ (`0401` for one story, `0701` for another) chooses the number instead of taking the highest plus
75
+ one. The number goes to the file, the `# ADR-NNNN` title and the `deviations` entry; a number
76
+ already taken, or one that is not a number, is refused.
77
+
78
+ **Where a shared type, a pure function and a strategy live in the domain.** `docs/ARCHITECTURE.md`
79
+ says it, with no new directory: a side-effect-free function on one value is a method of that value
80
+ object, a computation over several is a domain service, a shape of business data is a value object,
81
+ an interchangeable rule is an abstract class of `domain/services/` with its implementations.
82
+ `test/spec-required` no longer asks a spec of a file that exports abstract classes only; each
83
+ implementation keeps its own.
84
+
85
+ **The integration specs of a generated project give the test database a minute to open.** Their
86
+ hooks had the default 10 seconds of Vitest, which opening PGlite outlasted under coverage on a busy
87
+ machine. To move, add `hookTimeout: 60_000` to the `integration` project of `vitest.config.ts`, or
88
+ run `npx ddd-ts-kit init --force`.
89
+
7
90
  ## 0.20.0
8
91
 
9
92
  **A permission no role holds is said.** In a project whose rights are roles (`stack.authz`
package/README.fr.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [English](README.md) · **Français**
2
- <!-- translation-of: README.md sha256:18321b84fdc49821 -->
2
+ <!-- translation-of: README.md sha256:91cb20f36ff1d090 -->
3
3
 
4
4
  # ddd-ts-kit
5
5
 
@@ -1085,16 +1085,25 @@ un contexte ; `--json` affiche `{ count, remaining: [{ kind, context, file, line
1085
1085
  ## worker-scope
1086
1086
 
1087
1087
  ```
1088
- ddd-ts-kit worker-scope <context> [--worktree <path>] [--branch <name>] [--dry-run]
1088
+ ddd-ts-kit worker-scope <context> [--base <ref>] [--rows <id,...>] [--worktree <path>] [--branch <name>] [--dry-run]
1089
1089
  ```
1090
1090
 
1091
1091
  Prépare la place d'un *worker* d'un build réparti par contexte : crée un *worktree* git du projet
1092
- (`../<project>-<context>` par défaut) sur la branche `build/<context>`, y écrit
1092
+ (`../<project>-<context>` par défaut) sur la branche `build/<context>`, à partir de `--base` (une
1093
+ branche, une étiquette ou un *commit* : `origin/main` ; par défaut la branche courante), y écrit
1093
1094
  `.ddd-ts-kit/worker.json` (`{ "context": "<context>" }` ; `init` ignore `.ddd-ts-kit/`), et
1094
1095
  affiche la consigne du *worker* : son périmètre, les générateurs qu'il peut lancer, ses tranches
1095
- encore à faire d'après `docs/architecture/slices.md`, les langages publiés qu'il consomme. Un
1096
- *worktree* existant est gardé et seul le fichier est réécrit ; `--dry-run` ne crée et n'écrit
1097
- rien. Il faut un dépôt git avec au moins un *commit*. Le *worker* génère ensuite avec
1096
+ encore à faire d'après `docs/architecture/slices.md`, les langages publiés qu'il consomme, et la
1097
+ base comme tronc de ses vérifications (`check --changed-since <base>`). `--rows 4.15,4.16` ne
1098
+ donne que ces lignes, dans cet ordre : un identifiant est lu tel qu'il est écrit, et une ligne
1099
+ absente du fichier, présente deux fois ou confiée à un autre propriétaire est refusée. Chaque
1100
+ ligne porte ses règles, lues sur une ligne `- #<id>: <règles>` sous les tableaux ; au-delà de
1101
+ deux lignes, une note le signale, car un agent en tient une ou deux. Un *worktree* existant, ou
1102
+ une branche existante, est gardé quand il contient la base et refusé sinon, pour qu'aucun
1103
+ *worker* ne construise sur un tronc périmé ; seul le fichier est réécrit. Sans `--base`, lancé
1104
+ depuis le *worktree* d'un *worker* (son `.ddd-ts-kit/worker.json`, ou une branche
1105
+ `build/<context>`), il refuse : cette branche deviendrait le tronc. `--dry-run` ne crée et
1106
+ n'écrit rien. Il faut un dépôt git avec au moins un *commit*. Le *worker* génère ensuite avec
1098
1107
  `--local-only`.
1099
1108
 
1100
1109
  ## affected
package/README.md CHANGED
@@ -1034,15 +1034,23 @@ context; `--json` prints `{ count, remaining: [{ kind, context, file, line, text
1034
1034
  ## worker-scope
1035
1035
 
1036
1036
  ```
1037
- ddd-ts-kit worker-scope <context> [--worktree <path>] [--branch <name>] [--dry-run]
1037
+ ddd-ts-kit worker-scope <context> [--base <ref>] [--rows <id,...>] [--worktree <path>] [--branch <name>] [--dry-run]
1038
1038
  ```
1039
1039
 
1040
1040
  Prepares the place of one worker of a build split by context: creates a git worktree of the
1041
- project (`../<project>-<context>` by default) on the branch `build/<context>`, writes
1041
+ project (`../<project>-<context>` by default) on the branch `build/<context>`, cut from
1042
+ `--base` (a branch, a tag or a commit: `origin/main`; by default the current branch), writes
1042
1043
  `.ddd-ts-kit/worker.json` in it (`{ "context": "<context>" }`; `init` ignores `.ddd-ts-kit/`), and
1043
1044
  prints the briefing of the worker: its scope, the generators it may run, its slices still to do
1044
- from `docs/architecture/slices.md`, the published languages it consumes. An existing worktree is
1045
- kept and only the file is written again; `--dry-run` creates and writes nothing. It needs a git
1045
+ from `docs/architecture/slices.md`, the published languages it consumes, and the base as the
1046
+ trunk of its checks (`check --changed-since <base>`). `--rows 4.15,4.16` briefs those rows only,
1047
+ in that order: an id is read as written, and a row the file does not have, has twice or gives to
1048
+ another owner is refused. Each row carries its rules, from a line `- #<id>: <rules>` under the
1049
+ tables; more than two rows get a note, since an agent holds one or two. An existing worktree, or
1050
+ an existing branch, is kept when it contains the base and refused when it does not, so that no
1051
+ worker builds on a stale trunk; only the file is written again. Without `--base`, run from a
1052
+ worker's worktree (its `.ddd-ts-kit/worker.json`, or a branch `build/<context>`), it refuses:
1053
+ that branch would become the trunk. `--dry-run` creates and writes nothing. It needs a git
1046
1054
  repository with one commit at least. The worker then generates with `--local-only`.
1047
1055
 
1048
1056
  ## affected
@@ -1 +1 @@
1
- {"version":3,"file":"architecture-rules.d.ts","sourceRoot":"","sources":["../../../src/check/catalogue/architecture-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAqF7C,gHAAgH;AAChH,eAAO,MAAM,kBAAkB,EAAE,SAAS,IAAI,EAoF7C,CAAC"}
1
+ {"version":3,"file":"architecture-rules.d.ts","sourceRoot":"","sources":["../../../src/check/catalogue/architecture-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAsF7C,gHAAgH;AAChH,eAAO,MAAM,kBAAkB,EAAE,SAAS,IAAI,EAqF7C,CAAC"}
@@ -17,6 +17,7 @@ import { cleanNoNoiseComment } from '../rules/clean-no-noise-comment.js';
17
17
  import { cleanOneExportPerFile } from '../rules/clean-one-export-per-file.js';
18
18
  import { cleanStepdown } from '../rules/clean-stepdown.js';
19
19
  import { compositionOnlyInModule } from '../rules/composition-only-in-module.js';
20
+ import { configRuleOffEverywhere } from '../rules/config-rule-off-everywhere.js';
20
21
  import { contextDeclaredRelationship } from '../rules/context-declared-relationship.js';
21
22
  import { contextExtractable } from '../rules/context-extractable.js';
22
23
  import { contextNoCycle } from '../rules/context-no-cycle.js';
@@ -145,6 +146,7 @@ export const ARCHITECTURE_RULES = [
145
146
  tenancyScopedStatement,
146
147
  standardNoParallelInterface,
147
148
  governanceRecordedDeviation,
149
+ configRuleOffEverywhere,
148
150
  compositionOnlyInModule,
149
151
  declarationsRoleDeclared,
150
152
  declarationsBarrelCurrent,
@@ -1 +1 @@
1
- {"version":3,"file":"architecture-rules.js","sourceRoot":"","sources":["../../../src/check/catalogue/architecture-rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"architecture-rules.js","sourceRoot":"","sources":["../../../src/check/catalogue/architecture-rules.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"default-severities.d.ts","sourceRoot":"","sources":["../../../src/check/catalogue/default-severities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,0GAA0G;AAC1G,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CASjE,CAAC"}
1
+ {"version":3,"file":"default-severities.d.ts","sourceRoot":"","sources":["../../../src/check/catalogue/default-severities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,0GAA0G;AAC1G,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAUjE,CAAC"}
@@ -8,5 +8,6 @@ export const DEFAULT_SEVERITIES = {
8
8
  'clean/no-flag-argument': 'warn',
9
9
  'application/command-query-separation': 'warn',
10
10
  'standard/no-parallel-interface': 'warn',
11
+ 'config/rule-off-everywhere': 'warn',
11
12
  };
12
13
  //# sourceMappingURL=default-severities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-severities.js","sourceRoot":"","sources":["../../../src/check/catalogue/default-severities.ts"],"names":[],"mappings":"AAEA,0GAA0G;AAC1G,MAAM,CAAC,MAAM,kBAAkB,GAAuC;IACpE,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,MAAM;IACvB,uBAAuB,EAAE,MAAM;IAC/B,qBAAqB,EAAE,MAAM;IAC7B,wBAAwB,EAAE,MAAM;IAChC,wBAAwB,EAAE,MAAM;IAChC,sCAAsC,EAAE,MAAM;IAC9C,gCAAgC,EAAE,MAAM;CACzC,CAAC"}
1
+ {"version":3,"file":"default-severities.js","sourceRoot":"","sources":["../../../src/check/catalogue/default-severities.ts"],"names":[],"mappings":"AAEA,0GAA0G;AAC1G,MAAM,CAAC,MAAM,kBAAkB,GAAuC;IACpE,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,MAAM;IACvB,uBAAuB,EAAE,MAAM;IAC/B,qBAAqB,EAAE,MAAM;IAC7B,wBAAwB,EAAE,MAAM;IAChC,wBAAwB,EAAE,MAAM;IAChC,sCAAsC,EAAE,MAAM;IAC9C,gCAAgC,EAAE,MAAM;IACxC,4BAA4B,EAAE,MAAM;CACrC,CAAC"}
@@ -2,7 +2,7 @@ import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { Arguments } from '../../commands/arguments.js';
4
4
  import {} from '../../commands/command.js';
5
- import { CONFIG_FILE, isOneOf, readConfig, SEVERITIES } from '../../config/index.js';
5
+ import { CONFIG_FILE, isOneOf, projectSeverity, readConfig, SEVERITIES } from '../../config/index.js';
6
6
  import { DEFAULT_SEVERITIES } from '../catalogue/default-severities.js';
7
7
  import { DELEGATED_RULES } from '../catalogue/delegated-rules.js';
8
8
  import { RULES } from '../catalogue/rules.js';
@@ -18,7 +18,7 @@ export const rulesCommand = (argv, io) => {
18
18
  function listedRules(root) {
19
19
  const configured = fs.existsSync(path.join(root, CONFIG_FILE)) ? readConfig(root).config.rules : {};
20
20
  const severityOf = (id) => {
21
- const severity = configured[id];
21
+ const severity = projectSeverity(configured[id]);
22
22
  return isOneOf(SEVERITIES, severity) ? severity : (DEFAULT_SEVERITIES[id] ?? 'error');
23
23
  };
24
24
  const own = [...RULES, SUPPRESSION_RULE].map((rule) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"rules-command.js","sourceRoot":"","sources":["../../../src/check/commands/rules-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules-command.js","sourceRoot":"","sources":["../../../src/check/commands/rules-command.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-inspection.d.ts","sourceRoot":"","sources":["../../../src/check/configuration/config-inspection.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMvD,qGAAqG;AACrG,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFzB,YACmB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EAC7B;IAEJ,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE,CAMjE;IAED,qBAAqB,IAAI,SAAS,EAAE,CAanC;IAED,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,CAoBlD;IAED,SAAS,IAAI,SAAS,EAAE,CAcvB;IAED,6EAA6E;IAC7E,eAAe,IAAI,SAAS,EAAE,CAc7B;IAED,2GAA2G;IAC3G,kBAAkB,IAAI,SAAS,EAAE,CAiBhC;IAED,oHAAoH;IACpH,YAAY,IAAI,SAAS,EAAE,CAI1B;IAED,mHAAmH;IACnH,QAAQ,IAAI,SAAS,EAAE,CAItB;IAED,0EAA0E;IAC1E,eAAe,IAAI,SAAS,EAAE,CAM7B;IAED,0EAA0E;IAC1E,WAAW,IAAI,SAAS,EAAE,CAEzB;IAED,gHAAgH;IAChH,kBAAkB,IAAI,SAAS,EAAE,CAIhC;IAED,qGAAqG;IACrG,oBAAoB,IAAI,SAAS,EAAE,CA4BlC;IAED,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,QAAQ;IAiBhB,qFAAqF;IACrF,OAAO,CAAC,QAAQ;CAGjB"}
1
+ {"version":3,"file":"config-inspection.d.ts","sourceRoot":"","sources":["../../../src/check/configuration/config-inspection.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMvD,qGAAqG;AACrG,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFzB,YACmB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EAC7B;IAEJ,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE,CAMjE;IAED,qBAAqB,IAAI,SAAS,EAAE,CAanC;IAED,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,CAgClD;IAED,SAAS,IAAI,SAAS,EAAE,CAcvB;IAED,6EAA6E;IAC7E,eAAe,IAAI,SAAS,EAAE,CAc7B;IAED,2GAA2G;IAC3G,kBAAkB,IAAI,SAAS,EAAE,CAiBhC;IAED,oHAAoH;IACpH,YAAY,IAAI,SAAS,EAAE,CAI1B;IAED,mHAAmH;IACnH,QAAQ,IAAI,SAAS,EAAE,CAItB;IAED,0EAA0E;IAC1E,eAAe,IAAI,SAAS,EAAE,CAM7B;IAED,0EAA0E;IAC1E,WAAW,IAAI,SAAS,EAAE,CAEzB;IAED,gHAAgH;IAChH,kBAAkB,IAAI,SAAS,EAAE,CAIhC;IAED,qGAAqG;IACrG,oBAAoB,IAAI,SAAS,EAAE,CA4BlC;IAED,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,QAAQ;IAiBhB,qFAAqF;IACrF,OAAO,CAAC,QAAQ;CAGjB"}
@@ -26,17 +26,23 @@ export class ConfigInspection {
26
26
  .map((name) => this.report({ file: `${contextsDir}/${name}`, line: 1 }, `The directory ${contextsDir}/${name} is not a declared context.`, fix));
27
27
  }
28
28
  ruleSettings(known) {
29
- return Object.entries(this.project.config.rules).flatMap(([id, severity]) => {
29
+ return Object.entries(this.project.config.rules).flatMap(([id, setting]) => {
30
30
  if (!known.includes(id)) {
31
31
  return [
32
32
  this.inConfig(id, `The rule "${id}" does not exist.`, 'Fix the id; `ddd-ts-kit rules` lists the valid ones.'),
33
33
  ];
34
34
  }
35
+ const severity = typeof setting === 'string' ? setting : setting.severity;
35
36
  if (!isOneOf(SEVERITIES, severity)) {
36
37
  return [
37
38
  this.inConfig(id, `The rule "${id}" has the severity "${severity}".`, `Use one of: ${SEVERITIES.join(', ')}.`),
38
39
  ];
39
40
  }
41
+ if (typeof setting !== 'string' && setting.files.length === 0) {
42
+ return [
43
+ this.inConfig(id, `The rule "${id}" is set for some files, but "files" names none.`, 'List the files it is for in "files", as globs relative to the project root (`src/contexts/*/*.declarations.ts`), or write the severity alone for the whole project.'),
44
+ ];
45
+ }
40
46
  return [];
41
47
  });
42
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-inspection.js","sourceRoot":"","sources":["../../../src/check/configuration/config-inspection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-inspection.js","sourceRoot":"","sources":["../../../src/check/configuration/config-inspection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-check.d.ts","sourceRoot":"","sources":["../../../src/check/engine/run-check.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAOnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CAiBlF"}
1
+ {"version":3,"file":"run-check.d.ts","sourceRoot":"","sources":["../../../src/check/engine/run-check.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAOnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CAqBlF"}
@@ -8,7 +8,9 @@ export function runCheck(project, options = {}) {
8
8
  const selected = (id) => options.rules === undefined || options.rules.length === 0 || options.rules.includes(id);
9
9
  const suppressions = project.files.flatMap(findSuppressions);
10
10
  const active = RULES.filter((rule) => selected(rule.id) && project.severity(rule.id) !== 'off');
11
- const raw = active.flatMap((rule) => violationsOf(rule, project, options.fileScopeOnly === true));
11
+ const raw = active
12
+ .flatMap((rule) => violationsOf(rule, project, options.fileScopeOnly === true))
13
+ .flatMap((violation) => placed(violation, project));
12
14
  const kept = raw.filter((violation) => !isSuppressed(violation, suppressions));
13
15
  const suppressedCount = raw.length - kept.length;
14
16
  if (selected(SUPPRESSION_RULE_ID)) {
@@ -17,6 +19,20 @@ export function runCheck(project, options = {}) {
17
19
  kept.sort((a, b) => a.file.localeCompare(b.file) || a.line - b.line || a.ruleId.localeCompare(b.ruleId));
18
20
  return summarize(kept, { suppressedCount, suppressionCount: suppressions.length, fileCount: project.files.length });
19
21
  }
22
+ /**
23
+ * A finding on a file a setting names takes its severity, or is dropped where the rule is off. A
24
+ * finding a rule raises above the severity of the project (the ceiling of clean/function-size) keeps it.
25
+ */
26
+ function placed(violation, project) {
27
+ const severity = project.fileSeverity(violation.ruleId, violation.file);
28
+ if (severity === undefined) {
29
+ return [violation];
30
+ }
31
+ if (severity === 'off') {
32
+ return [];
33
+ }
34
+ return [violation.severity === project.severity(violation.ruleId) ? { ...violation, severity } : violation];
35
+ }
20
36
  function violationsOf(rule, project, oneFileOnly) {
21
37
  if (!oneFileOnly) {
22
38
  return [...rule.run(project), ...(rule.acrossProject?.(project) ?? [])];
@@ -1 +1 @@
1
- {"version":3,"file":"run-check.js","sourceRoot":"","sources":["../../../src/check/engine/run-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAS3C,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,OAAO,GAAiB,EAAE;IACnE,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAW,EAAE,CACvC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE1F,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;IAChG,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAC/E,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAEjD,IAAI,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzG,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACtH,CAAC;AAED,SAAS,YAAY,CAAC,IAAU,EAAE,OAAgB,EAAE,WAAoB;IACtE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"run-check.js","sourceRoot":"","sources":["../../../src/check/engine/run-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAS3C,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,OAAO,GAAiB,EAAE;IACnE,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAW,EAAE,CACvC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE1F,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;IAEhG,MAAM,GAAG,GAAG,MAAM;SACf,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC;SAC9E,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAC/E,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAEjD,IAAI,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzG,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACtH,CAAC;AAED;;;GAGG;AACH,SAAS,MAAM,CAAC,SAAoB,EAAE,OAAgB;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAExE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9G,CAAC;AAED,SAAS,YAAY,CAAC,IAAU,EAAE,OAAgB,EAAE,WAAoB;IACtE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC"}
@@ -7,7 +7,7 @@ export function parseFile(text: string) { return text.split('\\n').map(parseLine
7
7
  function parseLine(line: string) {}`,
8
8
  },
9
9
  'clean/function-size': {
10
- why: 'A long function mixes several levels of abstraction, and its parts can be neither named nor tested alone. More than three parameters usually travel together because they are one concept without a type. Small functions with few arguments are what makes the stepdown order readable. The limits are configurable under `limits`, up to a ceiling: no function is longer than 100 lines, describe callbacks, module files and tests included, and that ceiling is an error whatever the severity of the rule.',
10
+ why: 'A long function mixes several levels of abstraction, and its parts can be neither named nor tested alone. More than three parameters usually travel together because they are one concept without a type: name it, as a typed props object or a value object (`Contestation.create({ claim, reason, raisedBy, raisedAt })`), rather than adding a fourth parameter. Small functions with few arguments are what makes the stepdown order readable. The limits are configurable under `limits`, up to a ceiling: no function is longer than 100 lines, describe callbacks, module files and tests included, and that ceiling is an error whatever the severity of the rule. A `describe` longer than that covers several behaviours: the spec file holds one top-level `describe` per behaviour (a nested one counts in its parent), and a second spec file is needed only past the 350 lines of `clean/file-size`.',
11
11
  bad: `function issue(id: string, customer: string, amount: number, currency: string, dueOn: Date) {}`,
12
12
  good: `function issue(id: string, customer: CustomerId, total: Money) {}`,
13
13
  },
@@ -1 +1 @@
1
- {"version":3,"file":"clean-docs.js","sourceRoot":"","sources":["../../../src/check/explain/clean-docs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAsC;IAC3D,gBAAgB,EAAE;QAChB,GAAG,EAAE,4RAA4R;QACjS,GAAG,EAAE;qFAC4E;QACjF,IAAI,EAAE;oCAC0B;KACjC;IACD,qBAAqB,EAAE;QACrB,GAAG,EAAE,kfAAkf;QACvf,GAAG,EAAE,gGAAgG;QACrG,IAAI,EAAE,mEAAmE;KAC1E;IACD,6BAA6B,EAAE;QAC7B,GAAG,EAAE,yOAAyO;QAC9O,GAAG,EAAE,qEAAqE;QAC1E,IAAI,EAAE,8CAA8C;KACrD;IACD,wBAAwB,EAAE;QACxB,GAAG,EAAE,kPAAkP;QACvP,GAAG,EAAE;;iCAEwB;QAC7B,IAAI,EAAE;+BACqB;KAC5B;IACD,uBAAuB,EAAE;QACvB,GAAG,EAAE,6PAA6P;QAClQ,GAAG,EAAE,2DAA2D;QAChE,IAAI,EAAE,uEAAuE;KAC9E;IACD,wBAAwB,EAAE;QACxB,GAAG,EAAE,+NAA+N;QACpO,GAAG,EAAE,kCAAkC;QACvC,IAAI,EAAE;2BACiB;KACxB;CACF,CAAC"}
1
+ {"version":3,"file":"clean-docs.js","sourceRoot":"","sources":["../../../src/check/explain/clean-docs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAsC;IAC3D,gBAAgB,EAAE;QAChB,GAAG,EAAE,4RAA4R;QACjS,GAAG,EAAE;qFAC4E;QACjF,IAAI,EAAE;oCAC0B;KACjC;IACD,qBAAqB,EAAE;QACrB,GAAG,EAAE,o3BAAo3B;QACz3B,GAAG,EAAE,gGAAgG;QACrG,IAAI,EAAE,mEAAmE;KAC1E;IACD,6BAA6B,EAAE;QAC7B,GAAG,EAAE,yOAAyO;QAC9O,GAAG,EAAE,qEAAqE;QAC1E,IAAI,EAAE,8CAA8C;KACrD;IACD,wBAAwB,EAAE;QACxB,GAAG,EAAE,kPAAkP;QACvP,GAAG,EAAE;;iCAEwB;QAC7B,IAAI,EAAE;+BACqB;KAC5B;IACD,uBAAuB,EAAE;QACvB,GAAG,EAAE,6PAA6P;QAClQ,GAAG,EAAE,2DAA2D;QAChE,IAAI,EAAE,uEAAuE;KAC9E;IACD,wBAAwB,EAAE;QACxB,GAAG,EAAE,+NAA+N;QACpO,GAAG,EAAE,kCAAkC;QACvC,IAAI,EAAE;2BACiB;KACxB;CACF,CAAC"}
@@ -63,7 +63,7 @@ export abstract class TaxGateway {}
63
63
  export interface IssueInvoiceResult { readonly invoiceId: string }`,
64
64
  },
65
65
  'clean/file-size': {
66
- why: 'Past a few hundred lines a file holds more than one responsibility: nobody reads it whole, and every change touches something unrelated. The limit is 350 physical lines, for sources and tests alike, and is not configurable. A long test file is split by behaviour, a long source by concept. Generated files (a path segment named generated) and declaration files are not judged.',
66
+ why: 'Past a few hundred lines a file holds more than one responsibility: nobody reads it whole, and every change touches something unrelated. The limit is 350 physical lines, for sources and tests alike, and is not configurable. A long test file is split by behaviour, a long source by concept. Generated files (a path segment named generated, the <context>.declarations.ts and <context>.dependencies.ts at the root of a context) and declaration files are not judged.',
67
67
  bad: `// application/commands/issue-invoice/issue-invoice.handler.ts, 600 lines:
68
68
  // the handler, its validation, its mapping and three helpers`,
69
69
  good: `// issue-invoice.handler.ts orchestrates, in 40 lines;
@@ -1 +1 @@
1
- {"version":3,"file":"layout-docs.js","sourceRoot":"","sources":["../../../src/check/explain/layout-docs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAsC;IAC5D,uBAAuB,EAAE;QACvB,GAAG,EAAE,qXAAqX;QAC1X,GAAG,EAAE;;;;;;EAMP;QACE,IAAI,EAAE;;;;;;EAMR;KACC;IACD,mBAAmB,EAAE;QACnB,GAAG,EAAE,qgBAAqgB;QAC1gB,GAAG,EAAE;;;;EAIP;QACE,IAAI,EAAE;;;;EAIR;KACC;IACD,cAAc,EAAE;QACd,GAAG,EAAE,ieAAie;QACte,GAAG,EAAE;;;;0CAIiC;QACtC,IAAI,EAAE;;;;;;;;;;EAUR;KACC;IACD,2BAA2B,EAAE;QAC3B,GAAG,EAAE,yrBAAyrB;QAC9rB,GAAG,EAAE;;;;iCAIwB;QAC7B,IAAI,EAAE;;;;;mEAKyD;KAChE;IACD,iBAAiB,EAAE;QACjB,GAAG,EAAE,0XAA0X;QAC/X,GAAG,EAAE;8DACqD;QAC1D,IAAI,EAAE;wFAC8E;KACrF;CACF,CAAC"}
1
+ {"version":3,"file":"layout-docs.js","sourceRoot":"","sources":["../../../src/check/explain/layout-docs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAsC;IAC5D,uBAAuB,EAAE;QACvB,GAAG,EAAE,qXAAqX;QAC1X,GAAG,EAAE;;;;;;EAMP;QACE,IAAI,EAAE;;;;;;EAMR;KACC;IACD,mBAAmB,EAAE;QACnB,GAAG,EAAE,qgBAAqgB;QAC1gB,GAAG,EAAE;;;;EAIP;QACE,IAAI,EAAE;;;;EAIR;KACC;IACD,cAAc,EAAE;QACd,GAAG,EAAE,ieAAie;QACte,GAAG,EAAE;;;;0CAIiC;QACtC,IAAI,EAAE;;;;;;;;;;EAUR;KACC;IACD,2BAA2B,EAAE;QAC3B,GAAG,EAAE,yrBAAyrB;QAC9rB,GAAG,EAAE;;;;iCAIwB;QAC7B,IAAI,EAAE;;;;;mEAKyD;KAChE;IACD,iBAAiB,EAAE;QACjB,GAAG,EAAE,gdAAgd;QACrd,GAAG,EAAE;8DACqD;QAC1D,IAAI,EAAE;wFAC8E;KACrF;CACF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export const PERSISTENCE_DOCS = {
2
2
  'persistence/migration-history': {
3
- why: 'Migrations are applied in the order of their names, and several people add them at the same time. Numbered by an index, two branches each write `0002_...` and the order between them is a guess; named by a random word, nobody knows what a migration does. A timestamp and a description, `20261012093000_add-invoices`, keep every branch apart. drizzle-kit adds a journal and a chain of snapshots on top: its migrator applies only the entries newer than the last one a database applied, so an entry merged out of order is skipped without a word, and a snapshot generated from the same parent as another makes the next migration miss a change. After a merge, the migration of the branch is generated again on top of the main branch.',
3
+ why: 'Migrations are applied in the order of their names, and several people add them at the same time. Numbered by an index, two branches each write `0002_...` and the order between them is a guess; named by a random word, nobody knows what a migration does. A timestamp and a description, `20261012093000_add-invoices`, keep every branch apart. drizzle-kit adds a journal and a chain of snapshots on top: its migrator applies only the entries newer than the last one a database applied, so an entry merged out of order is skipped without a word, and a snapshot generated from the same parent as another makes the next migration miss a change. After a merge, the migration of the branch is generated again on top of the main branch. A worker of a parallel build names the migration it needs `working-<what-it-does>`: its branch runs green in its worktree, and the conductor generates the real one on the trunk, so a working migration found outside a worktree is one that was merged as is.',
4
4
  bad: `migrations/
5
5
  0002_brave_falcon.sql # an index, a random name
6
6
  0002_quiet_owl.sql # the same index, from another branch
@@ -1 +1 @@
1
- {"version":3,"file":"persistence-docs.js","sourceRoot":"","sources":["../../../src/check/explain/persistence-docs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAsC;IACjE,+BAA+B,EAAE;QAC/B,GAAG,EAAE,ytBAAytB;QAC9tB,GAAG,EAAE;;;wFAG+E;QACpF,IAAI,EAAE;;;kGAGwF;KAC/F;IACD,6BAA6B,EAAE;QAC7B,GAAG,EAAE,ugBAAugB;QAC5gB,GAAG,EAAE;;;IAGL;QACA,IAAI,EAAE;;;;;IAKN;KACD;IACD,0BAA0B,EAAE;QAC1B,GAAG,EAAE,0YAA0Y;QAC/Y,GAAG,EAAE;;;;EAIP;QACE,IAAI,EAAE;;;;EAIR;KACC;CACF,CAAC"}
1
+ {"version":3,"file":"persistence-docs.js","sourceRoot":"","sources":["../../../src/check/explain/persistence-docs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAsC;IACjE,+BAA+B,EAAE;QAC/B,GAAG,EAAE,y9BAAy9B;QAC99B,GAAG,EAAE;;;wFAG+E;QACpF,IAAI,EAAE;;;kGAGwF;KAC/F;IACD,6BAA6B,EAAE;QAC7B,GAAG,EAAE,ugBAAugB;QAC5gB,GAAG,EAAE;;;IAGL;QACA,IAAI,EAAE;;;;;IAKN;KACD;IACD,0BAA0B,EAAE;QAC1B,GAAG,EAAE,0YAA0Y;QAC/Y,GAAG,EAAE;;;;EAIP;QACE,IAAI,EAAE;;;;EAIR;KACC;CACF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export const TREE_DOCS = {
2
2
  'tree/closed': {
3
- why: 'A fixed tree means every concept has one obvious place, so people and tools find it without reading the code. An ad hoc folder (utils, helpers, common) is where unnamed concepts go to hide; a real new need is declared in extraDirectories with its reason. In the declared style the generated barrel <context>.declarations.ts lives at the root of the context, next to CONTEXT.md; a module file may stay there when the wiring of a context is unusual.',
3
+ why: 'A fixed tree means every concept has one obvious place, so people and tools find it without reading the code. An ad hoc folder (utils, helpers, common, types, functions) is where unnamed concepts go to hide: a function that reads a value is a method of that value object, a decision over several objects a domain service, a shared shape of data a value object, an interchangeable rule an abstract class of domain/services with one service per variant (docs/ARCHITECTURE.md, a concept with no role of its own). A real new need is declared in extraDirectories with its reason. In the declared style the generated barrel <context>.declarations.ts lives at the root of the context, next to CONTEXT.md; a module file may stay there when the wiring of a context is unusual.',
4
4
  bad: `contexts/billing/domain/utils/rounding.ts`,
5
5
  good: `contexts/billing/domain/value-objects/money.vo.ts
6
6
  contexts/billing/billing.declarations.ts // declared style only`,
@@ -60,7 +60,7 @@ export class Invoice {}
60
60
  export class InvoiceLine {}`,
61
61
  },
62
62
  'test/spec-required': {
63
- why: 'Aggregates, value objects, domain services, handlers and jobs hold the business behaviour and what triggers it; an untested one is an unverified rule. Requiring the spec file makes the missing test visible at the moment the code is written.',
63
+ why: 'Aggregates, value objects, domain services, handlers and jobs hold the business behaviour and what triggers it; an untested one is an unverified rule. Requiring the spec file makes the missing test visible at the moment the code is written. An abstract base (every exported class abstract, no exported function), such as a strategy of domain/services, needs none: the specs of its implementations hold its behaviour.',
64
64
  bad: `domain/aggregates/invoice.aggregate.ts with no test/**/invoice.aggregate.spec.ts`,
65
65
  good: `test/unit/invoice.aggregate.spec.ts`,
66
66
  },
@@ -1 +1 @@
1
- {"version":3,"file":"tree-docs.js","sourceRoot":"","sources":["../../../src/check/explain/tree-docs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAsC;IAC1D,aAAa,EAAE;QACb,GAAG,EAAE,icAAic;QACtc,GAAG,EAAE,2CAA2C;QAChD,IAAI,EAAE;kEACwD;KAC/D;IACD,kBAAkB,EAAE;QAClB,GAAG,EAAE,4OAA4O;QACjP,GAAG,EAAE,6GAA6G;QAClH,IAAI,EAAE,6GAA6G;KACpH;IACD,eAAe,EAAE;QACf,GAAG,EAAE,y3BAAy3B;QAC93B,GAAG,EAAE,8BAA8B;QACnC,IAAI,EAAE;;;;qEAI2D;KAClE;IACD,wBAAwB,EAAE;QACxB,GAAG,EAAE,kyBAAkyB;QACvyB,GAAG,EAAE;;;;kCAIyB;QAC9B,IAAI,EAAE;;;;;oCAK0B;KACjC;IACD,sBAAsB,EAAE;QACtB,GAAG,EAAE,svCAAsvC;QAC3vC,GAAG,EAAE;;;EAGP;QACE,IAAI,EAAE;;;EAGR;KACC;IACD,6BAA6B,EAAE;QAC7B,GAAG,EAAE,kYAAkY;QACvY,GAAG,EAAE;;;;;;;2CAOkC;QACvC,IAAI,EAAE;;;4BAGkB;KACzB;IACD,oBAAoB,EAAE;QACpB,GAAG,EAAE,kPAAkP;QACvP,GAAG,EAAE,kFAAkF;QACvF,IAAI,EAAE,qCAAqC;KAC5C;IACD,wBAAwB,EAAE;QACxB,GAAG,EAAE,y9BAAy9B;QAC99B,GAAG,EAAE;;;uBAGc;QACnB,IAAI,EAAE;;;;;;uFAM6E;KACpF;IACD,eAAe,EAAE;QACf,GAAG,EAAE,4SAA4S;QACjT,GAAG,EAAE;gDACuC;QAC5C,IAAI,EAAE;qDAC2C;KAClD;IACD,uBAAuB,EAAE;QACvB,GAAG,EAAE,gUAAgU;QACrU,GAAG,EAAE,iFAAiF;QACtF,IAAI,EAAE;8BACoB;KAC3B;CACF,CAAC"}
1
+ {"version":3,"file":"tree-docs.js","sourceRoot":"","sources":["../../../src/check/explain/tree-docs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAsC;IAC1D,aAAa,EAAE;QACb,GAAG,EAAE,iwBAAiwB;QACtwB,GAAG,EAAE,2CAA2C;QAChD,IAAI,EAAE;kEACwD;KAC/D;IACD,kBAAkB,EAAE;QAClB,GAAG,EAAE,4OAA4O;QACjP,GAAG,EAAE,6GAA6G;QAClH,IAAI,EAAE,6GAA6G;KACpH;IACD,eAAe,EAAE;QACf,GAAG,EAAE,y3BAAy3B;QAC93B,GAAG,EAAE,8BAA8B;QACnC,IAAI,EAAE;;;;qEAI2D;KAClE;IACD,wBAAwB,EAAE;QACxB,GAAG,EAAE,kyBAAkyB;QACvyB,GAAG,EAAE;;;;kCAIyB;QAC9B,IAAI,EAAE;;;;;oCAK0B;KACjC;IACD,sBAAsB,EAAE;QACtB,GAAG,EAAE,svCAAsvC;QAC3vC,GAAG,EAAE;;;EAGP;QACE,IAAI,EAAE;;;EAGR;KACC;IACD,6BAA6B,EAAE;QAC7B,GAAG,EAAE,kYAAkY;QACvY,GAAG,EAAE;;;;;;;2CAOkC;QACvC,IAAI,EAAE;;;4BAGkB;KACzB;IACD,oBAAoB,EAAE;QACpB,GAAG,EAAE,kaAAka;QACva,GAAG,EAAE,kFAAkF;QACvF,IAAI,EAAE,qCAAqC;KAC5C;IACD,wBAAwB,EAAE;QACxB,GAAG,EAAE,y9BAAy9B;QAC99B,GAAG,EAAE;;;uBAGc;QACnB,IAAI,EAAE;;;;;;uFAM6E;KACpF;IACD,eAAe,EAAE;QACf,GAAG,EAAE,4SAA4S;QACjT,GAAG,EAAE;gDACuC;QAC5C,IAAI,EAAE;qDAC2C;KAClD;IACD,uBAAuB,EAAE;QACvB,GAAG,EAAE,gUAAgU;QACrU,GAAG,EAAE,iFAAiF;QACtF,IAAI,EAAE;8BACoB;KAC3B;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wiring-docs.d.ts","sourceRoot":"","sources":["../../../src/check/explain/wiring-docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgFzD,CAAC"}
1
+ {"version":3,"file":"wiring-docs.d.ts","sourceRoot":"","sources":["../../../src/check/explain/wiring-docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuFzD,CAAC"}
@@ -63,6 +63,13 @@ export class IssueInvoiceHandler {
63
63
  private readonly clock: Clock,
64
64
  ) {}
65
65
  }`,
66
+ },
67
+ 'config/rule-off-everywhere': {
68
+ why: 'An exception is decided for some files: generated mappers, a legacy module, a migration script. Written as "off" alone, it silences the rule in every file of the project, and the real findings in the others go unseen; the decision record says why the rule is off, not that the exception grew to the whole project. A rule set for some files keeps judging the rest. When the whole project is really meant, "files": ["**"] says it in so many words.',
69
+ bad: `"rules": { "clean/function-size": "off" },
70
+ "deviations": [{ "what": "rules.clean/function-size", "adr": "0004", "reason": "The generated mappers of the legacy ledger are long." }]`,
71
+ good: `"rules": { "clean/function-size": { "severity": "off", "files": ["src/contexts/ledger/infrastructure/legacy/*.mapper.ts"] } },
72
+ "deviations": [{ "what": "rules.clean/function-size", "adr": "0004", "reason": "The generated mappers of the legacy ledger are long." }]`,
66
73
  },
67
74
  'config/valid': {
68
75
  why: 'Every other rule reads the config: a misspelled upstream or rule id silently disables a check. The contexts on disk and in the config have to be the same set, or part of the code is not checked at all. A function limit above the ceiling of 100 lines and an allowance without a file or a reason are read as something else than what is written, so they are reported too.',
@@ -1 +1 @@
1
- {"version":3,"file":"wiring-docs.js","sourceRoot":"","sources":["../../../src/check/explain/wiring-docs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAsC;IAC5D,4BAA4B,EAAE;QAC5B,GAAG,EAAE,qnBAAqnB;QAC1nB,GAAG,EAAE;;;sCAG6B;QAClC,IAAI,EAAE;;;;;;+CAMqC;KAC5C;IACD,4BAA4B,EAAE;QAC5B,GAAG,EAAE,irBAAirB;QACtrB,GAAG,EAAE;;;;;;wBAMe;QACpB,IAAI,EAAE;;;;;0CAKgC;KACvC;IACD,6BAA6B,EAAE;QAC7B,GAAG,EAAE,60BAA60B;QACl1B,GAAG,EAAE;;;;oDAI2C;QAChD,IAAI,EAAE;;;;;2DAKiD;KACxD;IACD,oCAAoC,EAAE;QACpC,GAAG,EAAE,omCAAomC;QACzmC,GAAG,EAAE;;;;;;;;;iEASwD;QAC7D,IAAI,EAAE;;;;;;;EAOR;KACC;IACD,cAAc,EAAE;QACd,GAAG,EAAE,kXAAkX;QACvX,GAAG,EAAE;;uEAE8D;QACnE,IAAI,EAAE;;2IAEiI;KACxI;IACD,iCAAiC,EAAE;QACjC,GAAG,EAAE,qMAAqM;QAC1M,GAAG,EAAE,qDAAqD;QAC1D,IAAI,EAAE,qGAAqG;KAC5G;CACF,CAAC"}
1
+ {"version":3,"file":"wiring-docs.js","sourceRoot":"","sources":["../../../src/check/explain/wiring-docs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAsC;IAC5D,4BAA4B,EAAE;QAC5B,GAAG,EAAE,qnBAAqnB;QAC1nB,GAAG,EAAE;;;sCAG6B;QAClC,IAAI,EAAE;;;;;;+CAMqC;KAC5C;IACD,4BAA4B,EAAE;QAC5B,GAAG,EAAE,irBAAirB;QACtrB,GAAG,EAAE;;;;;;wBAMe;QACpB,IAAI,EAAE;;;;;0CAKgC;KACvC;IACD,6BAA6B,EAAE;QAC7B,GAAG,EAAE,60BAA60B;QACl1B,GAAG,EAAE;;;;oDAI2C;QAChD,IAAI,EAAE;;;;;2DAKiD;KACxD;IACD,oCAAoC,EAAE;QACpC,GAAG,EAAE,omCAAomC;QACzmC,GAAG,EAAE;;;;;;;;;iEASwD;QAC7D,IAAI,EAAE;;;;;;;EAOR;KACC;IACD,4BAA4B,EAAE;QAC5B,GAAG,EAAE,+bAA+b;QACpc,GAAG,EAAE;yIACgI;QACrI,IAAI,EAAE;yIAC+H;KACtI;IACD,cAAc,EAAE;QACd,GAAG,EAAE,kXAAkX;QACvX,GAAG,EAAE;;uEAE8D;QACnE,IAAI,EAAE;;2IAEiI;KACxI;IACD,iCAAiC,EAAE;QACjC,GAAG,EAAE,qMAAqM;QAC1M,GAAG,EAAE,qDAAqD;QAC1D,IAAI,EAAE,qGAAqG;KAC5G;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-fixtures.d.ts","sourceRoot":"","sources":["../../../src/check/fixtures/config-fixtures.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQ5C,eAAO,MAAM,eAAe,EAAE,SAAS,OAAO,EA8G7C,CAAC"}
1
+ {"version":3,"file":"config-fixtures.d.ts","sourceRoot":"","sources":["../../../src/check/fixtures/config-fixtures.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAU5C,eAAO,MAAM,eAAe,EAAE,SAAS,OAAO,EAkK7C,CAAC"}
@@ -5,7 +5,9 @@ import { contextDoc } from './context-doc.js';
5
5
  import { PATHS } from './paths.js';
6
6
  import { project } from './project.js';
7
7
  import { SAMPLES } from './samples.js';
8
+ import { source } from './source.js';
8
9
  const { AGGREGATE, DECIMAL_ADR } = PATHS;
10
+ const LONG_FILE = 'src/platform/ledger-import.ts';
9
11
  const { RECORD } = SAMPLES;
10
12
  export const CONFIG_FIXTURES = [
11
13
  {
@@ -14,7 +16,11 @@ export const CONFIG_FIXTURES = [
14
16
  expect: 'pass',
15
17
  files: project({}, {
16
18
  [CONFIG_FILE]: config({
17
- rules: { 'naming/suffix': 'warn', 'test/spec-required': 'off', 'domain/no-generic-error': 'warn' },
19
+ rules: {
20
+ 'naming/suffix': 'warn',
21
+ 'test/spec-required': { severity: 'off', files: ['src/contexts/catalog/**'] },
22
+ 'domain/no-generic-error': 'warn',
23
+ },
18
24
  guard: 'advise',
19
25
  limits: { maxFunctionLines: 100 },
20
26
  onePerFile: {
@@ -102,5 +108,48 @@ export const CONFIG_FIXTURES = [
102
108
  also: ['layer/domain-purity'],
103
109
  files: project(aggregate("// ddd-ts-kit-disable-next-line layer/domain-purity\nimport Decimal from 'decimal.js';\nexport class Invoice { total = new Decimal(0); }\n")),
104
110
  },
111
+ {
112
+ ruleId: 'config/valid',
113
+ name: 'a rule set for some files that names none',
114
+ expect: { file: CONFIG_FILE },
115
+ files: project({}, { [CONFIG_FILE]: config({ rules: { 'clean/file-size': { severity: 'off', files: [] } } }) }),
116
+ },
117
+ {
118
+ ruleId: 'config/rule-off-everywhere',
119
+ name: 'a rule off for the files it is meant for, and one off on purpose everywhere',
120
+ expect: 'pass',
121
+ files: project({}, {
122
+ [CONFIG_FILE]: config({
123
+ rules: {
124
+ 'clean/function-size': { severity: 'off', files: ['src/platform/legacy/**'] },
125
+ 'test/builder-required': { severity: 'off', files: ['**'] },
126
+ },
127
+ }),
128
+ }),
129
+ },
130
+ {
131
+ ruleId: 'config/rule-off-everywhere',
132
+ name: 'a rule off for the whole project',
133
+ expect: { file: CONFIG_FILE },
134
+ files: project({}, { [CONFIG_FILE]: config({ rules: { 'clean/function-size': 'off' } }) }),
135
+ },
136
+ {
137
+ ruleId: 'clean/file-size',
138
+ name: 'a long file among the files the rule is off for',
139
+ expect: 'pass',
140
+ files: project({ [LONG_FILE]: longFile() }, { [CONFIG_FILE]: config({ rules: { 'clean/file-size': { severity: 'off', files: ['src/platform/*.ts'] } } }) }),
141
+ },
142
+ {
143
+ ruleId: 'clean/file-size',
144
+ name: 'a long file outside the files the rule is off for',
145
+ expect: { file: LONG_FILE },
146
+ files: project({ [LONG_FILE]: longFile() }, {
147
+ [CONFIG_FILE]: config({ rules: { 'clean/file-size': { severity: 'off', files: ['src/platform/legacy/**'] } } }),
148
+ }),
149
+ },
105
150
  ];
151
+ /** A source of 351 lines, one past the limit of clean/file-size. */
152
+ function longFile() {
153
+ return source('export const lines = [', ...Array.from({ length: 349 }, (_, index) => ` ${index},`), '];');
154
+ }
106
155
  //# sourceMappingURL=config-fixtures.js.map