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.
- package/CHANGELOG.md +83 -0
- package/README.fr.md +15 -6
- package/README.md +12 -4
- package/dist/check/catalogue/architecture-rules.d.ts.map +1 -1
- package/dist/check/catalogue/architecture-rules.js +2 -0
- package/dist/check/catalogue/architecture-rules.js.map +1 -1
- package/dist/check/catalogue/default-severities.d.ts.map +1 -1
- package/dist/check/catalogue/default-severities.js +1 -0
- package/dist/check/catalogue/default-severities.js.map +1 -1
- package/dist/check/commands/rules-command.js +2 -2
- package/dist/check/commands/rules-command.js.map +1 -1
- package/dist/check/configuration/config-inspection.d.ts.map +1 -1
- package/dist/check/configuration/config-inspection.js +7 -1
- package/dist/check/configuration/config-inspection.js.map +1 -1
- package/dist/check/engine/run-check.d.ts.map +1 -1
- package/dist/check/engine/run-check.js +17 -1
- package/dist/check/engine/run-check.js.map +1 -1
- package/dist/check/explain/clean-docs.js +1 -1
- package/dist/check/explain/clean-docs.js.map +1 -1
- package/dist/check/explain/layout-docs.js +1 -1
- package/dist/check/explain/layout-docs.js.map +1 -1
- package/dist/check/explain/persistence-docs.js +1 -1
- package/dist/check/explain/persistence-docs.js.map +1 -1
- package/dist/check/explain/tree-docs.js +2 -2
- package/dist/check/explain/tree-docs.js.map +1 -1
- package/dist/check/explain/wiring-docs.d.ts.map +1 -1
- package/dist/check/explain/wiring-docs.js +7 -0
- package/dist/check/explain/wiring-docs.js.map +1 -1
- package/dist/check/fixtures/config-fixtures.d.ts.map +1 -1
- package/dist/check/fixtures/config-fixtures.js +50 -1
- package/dist/check/fixtures/config-fixtures.js.map +1 -1
- package/dist/check/fixtures/governance-fixtures.d.ts.map +1 -1
- package/dist/check/fixtures/governance-fixtures.js +12 -3
- package/dist/check/fixtures/governance-fixtures.js.map +1 -1
- package/dist/check/fixtures/layer-fixtures.js +1 -1
- package/dist/check/fixtures/layer-fixtures.js.map +1 -1
- package/dist/check/fixtures/layout-fixtures.d.ts.map +1 -1
- package/dist/check/fixtures/layout-fixtures.js +6 -0
- package/dist/check/fixtures/layout-fixtures.js.map +1 -1
- package/dist/check/fixtures/persistence-fixtures.d.ts.map +1 -1
- package/dist/check/fixtures/persistence-fixtures.js +16 -0
- package/dist/check/fixtures/persistence-fixtures.js.map +1 -1
- package/dist/check/fixtures/test-fixtures.d.ts.map +1 -1
- package/dist/check/fixtures/test-fixtures.js +35 -1
- package/dist/check/fixtures/test-fixtures.js.map +1 -1
- package/dist/check/fixtures/tree-fixtures.js +1 -1
- package/dist/check/fixtures/tree-fixtures.js.map +1 -1
- package/dist/check/migrations/working-migration-findings.d.ts +8 -0
- package/dist/check/migrations/working-migration-findings.d.ts.map +1 -0
- package/dist/check/migrations/working-migration-findings.js +22 -0
- package/dist/check/migrations/working-migration-findings.js.map +1 -0
- package/dist/check/model/project.d.ts +3 -0
- package/dist/check/model/project.d.ts.map +1 -1
- package/dist/check/project/assemble-project.d.ts +2 -2
- package/dist/check/project/assemble-project.d.ts.map +1 -1
- package/dist/check/project/assemble-project.js +16 -6
- package/dist/check/project/assemble-project.js.map +1 -1
- package/dist/check/rules/clean-file-size.d.ts.map +1 -1
- package/dist/check/rules/clean-file-size.js +6 -1
- package/dist/check/rules/clean-file-size.js.map +1 -1
- package/dist/check/rules/clean-function-size.js +2 -2
- package/dist/check/rules/clean-function-size.js.map +1 -1
- package/dist/check/rules/clean-one-export-per-file.d.ts.map +1 -1
- package/dist/check/rules/clean-one-export-per-file.js +2 -11
- package/dist/check/rules/clean-one-export-per-file.js.map +1 -1
- package/dist/check/rules/config-rule-off-everywhere.d.ts +3 -0
- package/dist/check/rules/config-rule-off-everywhere.d.ts.map +1 -0
- package/dist/check/rules/config-rule-off-everywhere.js +21 -0
- package/dist/check/rules/config-rule-off-everywhere.js.map +1 -0
- package/dist/check/rules/governance-recorded-deviation.js +14 -7
- package/dist/check/rules/governance-recorded-deviation.js.map +1 -1
- package/dist/check/rules/persistence-migration-history.d.ts.map +1 -1
- package/dist/check/rules/persistence-migration-history.js +9 -2
- package/dist/check/rules/persistence-migration-history.js.map +1 -1
- package/dist/check/rules/test-spec-required.d.ts.map +1 -1
- package/dist/check/rules/test-spec-required.js +3 -2
- package/dist/check/rules/test-spec-required.js.map +1 -1
- package/dist/check/support/is-abstract-base.d.ts +7 -0
- package/dist/check/support/is-abstract-base.d.ts.map +1 -0
- package/dist/check/support/is-abstract-base.js +11 -0
- package/dist/check/support/is-abstract-base.js.map +1 -0
- package/dist/check/support/is-generated-context-file.d.ts +4 -0
- package/dist/check/support/is-generated-context-file.d.ts.map +1 -0
- package/dist/check/support/is-generated-context-file.js +12 -0
- package/dist/check/support/is-generated-context-file.js.map +1 -0
- package/dist/commands/drizzle-generate.d.ts +4 -0
- package/dist/commands/drizzle-generate.d.ts.map +1 -0
- package/dist/commands/drizzle-generate.js +14 -0
- package/dist/commands/drizzle-generate.js.map +1 -0
- package/dist/commands/generate.js +4 -0
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/worker-scope.d.ts.map +1 -1
- package/dist/commands/worker-scope.js +17 -2
- package/dist/commands/worker-scope.js.map +1 -1
- package/dist/config/config.d.ts +2 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/parse-config.d.ts.map +1 -1
- package/dist/config/parse-config.js +2 -1
- package/dist/config/parse-config.js.map +1 -1
- package/dist/config/parse-rule-setting.d.ts +3 -0
- package/dist/config/parse-rule-setting.d.ts.map +1 -0
- package/dist/config/parse-rule-setting.js +10 -0
- package/dist/config/parse-rule-setting.js.map +1 -0
- package/dist/config/project-severity.d.ts +4 -0
- package/dist/config/project-severity.d.ts.map +1 -0
- package/dist/config/project-severity.js +5 -0
- package/dist/config/project-severity.js.map +1 -0
- package/dist/config/rule-setting.d.ts +10 -0
- package/dist/config/rule-setting.d.ts.map +1 -0
- package/dist/config/rule-setting.js +2 -0
- package/dist/config/rule-setting.js.map +1 -0
- package/dist/generate/given-name.d.ts +15 -0
- package/dist/generate/given-name.d.ts.map +1 -0
- package/dist/generate/given-name.js +21 -0
- package/dist/generate/given-name.js.map +1 -0
- package/dist/generate/kind.d.ts +4 -0
- package/dist/generate/kind.d.ts.map +1 -1
- package/dist/generate/kinds/adr-kind.d.ts.map +1 -1
- package/dist/generate/kinds/adr-kind.js +8 -4
- package/dist/generate/kinds/adr-kind.js.map +1 -1
- package/dist/generate/kinds/adr-number.d.ts +8 -0
- package/dist/generate/kinds/adr-number.d.ts.map +1 -0
- package/dist/generate/kinds/adr-number.js +25 -0
- package/dist/generate/kinds/adr-number.js.map +1 -0
- package/dist/generate/kinds/event-handler-kind.d.ts.map +1 -1
- package/dist/generate/kinds/event-handler-kind.js +7 -4
- package/dist/generate/kinds/event-handler-kind.js.map +1 -1
- package/dist/generate/kinds/integration-handler-kind.d.ts.map +1 -1
- package/dist/generate/kinds/integration-handler-kind.js +8 -2
- package/dist/generate/kinds/integration-handler-kind.js.map +1 -1
- package/dist/generate/kinds/write-adr.d.ts +3 -1
- package/dist/generate/kinds/write-adr.d.ts.map +1 -1
- package/dist/generate/kinds/write-adr.js +3 -3
- package/dist/generate/kinds/write-adr.js.map +1 -1
- package/dist/help/notes.d.ts +1 -1
- package/dist/help/notes.d.ts.map +1 -1
- package/dist/help/notes.js +8 -2
- package/dist/help/notes.js.map +1 -1
- package/dist/help/usage.d.ts +1 -1
- package/dist/help/usage.d.ts.map +1 -1
- package/dist/help/usage.js +2 -1
- package/dist/help/usage.js.map +1 -1
- package/dist/init/manifest/database-scripts.d.ts.map +1 -1
- package/dist/init/manifest/database-scripts.js +2 -1
- package/dist/init/manifest/database-scripts.js.map +1 -1
- package/dist/init/manifest/scripts-for.js +2 -0
- package/dist/init/manifest/scripts-for.js.map +1 -1
- package/dist/init/manifest/versions.js +24 -24
- package/dist/init/write-agent-settings.d.ts.map +1 -1
- package/dist/init/write-agent-settings.js +1 -0
- package/dist/init/write-agent-settings.js.map +1 -1
- package/dist/migration/drizzle-kit-bin.d.ts +3 -0
- package/dist/migration/drizzle-kit-bin.d.ts.map +1 -0
- package/dist/migration/drizzle-kit-bin.js +12 -0
- package/dist/migration/drizzle-kit-bin.js.map +1 -0
- package/dist/migration/drizzle-silent-failures.d.ts +9 -0
- package/dist/migration/drizzle-silent-failures.d.ts.map +1 -0
- package/dist/migration/drizzle-silent-failures.js +14 -0
- package/dist/migration/drizzle-silent-failures.js.map +1 -0
- package/dist/migration/generate-drizzle-migration.d.ts +15 -0
- package/dist/migration/generate-drizzle-migration.d.ts.map +1 -0
- package/dist/migration/generate-drizzle-migration.js +37 -0
- package/dist/migration/generate-drizzle-migration.js.map +1 -0
- package/dist/migration/index.d.ts +2 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +2 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/presets/preset-decision.js +2 -2
- package/dist/presets/preset-decision.js.map +1 -1
- package/dist/progress/read-slice-rules.d.ts +8 -0
- package/dist/progress/read-slice-rules.d.ts.map +1 -0
- package/dist/progress/read-slice-rules.js +20 -0
- package/dist/progress/read-slice-rules.js.map +1 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +2 -0
- package/dist/run.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/base-of.d.ts +8 -0
- package/dist/worker/base-of.d.ts.map +1 -0
- package/dist/worker/base-of.js +36 -0
- package/dist/worker/base-of.js.map +1 -0
- package/dist/worker/briefed-rows.d.ts +14 -0
- package/dist/worker/briefed-rows.d.ts.map +1 -0
- package/dist/worker/briefed-rows.js +53 -0
- package/dist/worker/briefed-rows.js.map +1 -0
- package/dist/worker/briefed-slice.d.ts +7 -0
- package/dist/worker/briefed-slice.d.ts.map +1 -0
- package/dist/worker/briefed-slice.js +2 -0
- package/dist/worker/briefed-slice.js.map +1 -0
- package/dist/worker/briefing-of.d.ts.map +1 -1
- package/dist/worker/briefing-of.js +14 -7
- package/dist/worker/briefing-of.js.map +1 -1
- package/dist/worker/ensure-contains-base.d.ts +6 -0
- package/dist/worker/ensure-contains-base.d.ts.map +1 -0
- package/dist/worker/ensure-contains-base.js +13 -0
- package/dist/worker/ensure-contains-base.js.map +1 -0
- package/dist/worker/open-worker-scope.d.ts +7 -3
- package/dist/worker/open-worker-scope.d.ts.map +1 -1
- package/dist/worker/open-worker-scope.js +33 -21
- package/dist/worker/open-worker-scope.js.map +1 -1
- package/dist/worker/worker-place.d.ts +2 -2
- package/dist/worker/worker-place.d.ts.map +1 -1
- package/dist/worker/worker-scope.d.ts +4 -4
- package/dist/worker/worker-scope.d.ts.map +1 -1
- package/package.json +2 -2
- package/templates/event-handler/event-handler.declared.ts.tpl +1 -1
- package/templates/event-handler/event-handler.spec.ts.tpl +2 -2
- package/templates/event-handler/event-handler.ts.tpl +1 -1
- package/templates/event-handler/wiring.manual.tpl +4 -4
- package/templates/event-handler/wiring.tsyringe.tpl +4 -4
- package/templates/init/AGENTS.md.tpl +2 -2
- package/templates/init/README.md.tpl +1 -0
- package/templates/pipeline/package-scripts.json +1 -1
- package/templates/pipeline/vitest.config.ts.tpl +10 -1
- package/dist/generate/kinds/next-adr-number.d.ts +0 -4
- package/dist/generate/kinds/next-adr-number.d.ts.map +0 -1
- package/dist/generate/kinds/next-adr-number.js +0 -7
- 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:
|
|
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>`,
|
|
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
|
|
1096
|
-
|
|
1097
|
-
|
|
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>`,
|
|
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
|
|
1045
|
-
|
|
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;
|
|
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,
|
|
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"}
|
|
@@ -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;
|
|
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":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAgB,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"rules-command.js","sourceRoot":"","sources":["../../../src/check/commands/rules-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAgB,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAUpE,MAAM,CAAC,MAAM,YAAY,GAAY,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;IAChD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAE/G,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpG,MAAM,UAAU,GAAG,CAAC,EAAU,EAAU,EAAE;QACxC,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC;IACxF,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtD,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,kBAAkB;KAC9B,CAAC,CAAC,CAAC;IAEJ,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,GAAG;QACtD,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -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,
|
|
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,
|
|
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":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,UAAU,GAGX,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qGAAqG;AACrG,MAAM,OAAO,gBAAgB;IAER,OAAO;IACP,MAAM;IAFzB,YACmB,OAAgB,EAChB,MAAc;uBADd,OAAO;sBACP,MAAM;IACtB,CAAC;IAEJ,eAAe,CAAC,IAAY,EAAE,OAAsB;QAClD,OAAO;YACL,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;YACrC,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,qBAAqB;QACnB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACtD,MAAM,GAAG,GAAG,kCAAkC,WAAW,yCAAyC,CAAC;QAEnG,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc;aAC/B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;aAC9C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI,CAAC,MAAM,CACT,EAAE,IAAI,EAAE,GAAG,WAAW,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAC3C,iBAAiB,WAAW,IAAI,IAAI,6BAA6B,EACjE,GAAG,CACJ,CACF,CAAC;IACN,CAAC;IAED,YAAY,CAAC,KAAwB;QACnC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,
|
|
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,
|
|
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
|
|
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;
|
|
1
|
+
{"version":3,"file":"run-check.js","sourceRoot":"","sources":["../../../src/check/engine/run-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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;
|
|
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: {
|
|
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
|