ddd-ts-kit 0.1.0 → 0.1.1

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 (215) hide show
  1. package/README.md +43 -3
  2. package/dist/affected/changed-paths.d.ts +8 -0
  3. package/dist/affected/changed-paths.d.ts.map +1 -0
  4. package/dist/affected/changed-paths.js +21 -0
  5. package/dist/affected/changed-paths.js.map +1 -0
  6. package/dist/affected/downstreams-of.d.ts +4 -0
  7. package/dist/affected/downstreams-of.d.ts.map +1 -0
  8. package/dist/affected/downstreams-of.js +16 -0
  9. package/dist/affected/downstreams-of.js.map +1 -0
  10. package/dist/affected/everything.d.ts +5 -0
  11. package/dist/affected/everything.d.ts.map +1 -0
  12. package/dist/affected/everything.js +5 -0
  13. package/dist/affected/everything.js.map +1 -0
  14. package/dist/affected/format-selection.d.ts +10 -0
  15. package/dist/affected/format-selection.d.ts.map +1 -0
  16. package/dist/affected/format-selection.js +45 -0
  17. package/dist/affected/format-selection.js.map +1 -0
  18. package/dist/affected/path-reach.d.ts +12 -0
  19. package/dist/affected/path-reach.d.ts.map +1 -0
  20. package/dist/affected/path-reach.js +2 -0
  21. package/dist/affected/path-reach.js.map +1 -0
  22. package/dist/affected/reach-of.d.ts +10 -0
  23. package/dist/affected/reach-of.d.ts.map +1 -0
  24. package/dist/affected/reach-of.js +30 -0
  25. package/dist/affected/reach-of.js.map +1 -0
  26. package/dist/affected/select-affected.d.ts +11 -0
  27. package/dist/affected/select-affected.d.ts.map +1 -0
  28. package/dist/affected/select-affected.js +39 -0
  29. package/dist/affected/select-affected.js.map +1 -0
  30. package/dist/affected/selection.d.ts +14 -0
  31. package/dist/affected/selection.d.ts.map +1 -0
  32. package/dist/affected/selection.js +2 -0
  33. package/dist/affected/selection.js.map +1 -0
  34. package/dist/commands/affected.d.ts +8 -0
  35. package/dist/commands/affected.d.ts.map +1 -0
  36. package/dist/commands/affected.js +38 -0
  37. package/dist/commands/affected.js.map +1 -0
  38. package/dist/commands/docs.d.ts.map +1 -1
  39. package/dist/commands/docs.js +2 -0
  40. package/dist/commands/docs.js.map +1 -1
  41. package/dist/commands/generate.d.ts.map +1 -1
  42. package/dist/commands/generate.js +5 -0
  43. package/dist/commands/generate.js.map +1 -1
  44. package/dist/commands/init.d.ts.map +1 -1
  45. package/dist/commands/init.js +6 -1
  46. package/dist/commands/init.js.map +1 -1
  47. package/dist/config/index.d.ts +1 -1
  48. package/dist/config/index.d.ts.map +1 -1
  49. package/dist/config/index.js +1 -1
  50. package/dist/config/index.js.map +1 -1
  51. package/dist/config/parse-stack.d.ts.map +1 -1
  52. package/dist/config/parse-stack.js +2 -1
  53. package/dist/config/parse-stack.js.map +1 -1
  54. package/dist/config/serialize-config.js +2 -2
  55. package/dist/config/serialize-config.js.map +1 -1
  56. package/dist/config/stack.d.ts +7 -0
  57. package/dist/config/stack.d.ts.map +1 -1
  58. package/dist/config/stack.js +1 -0
  59. package/dist/config/stack.js.map +1 -1
  60. package/dist/depcruise/cruise-configuration.js +3 -1
  61. package/dist/depcruise/cruise-configuration.js.map +1 -1
  62. package/dist/generate/apply-wiring.js +1 -1
  63. package/dist/generate/apply-wiring.js.map +1 -1
  64. package/dist/generate/kinds/adapter-kind.d.ts.map +1 -1
  65. package/dist/generate/kinds/adapter-kind.js +5 -2
  66. package/dist/generate/kinds/adapter-kind.js.map +1 -1
  67. package/dist/generate/kinds/declare-context-entries.d.ts +10 -0
  68. package/dist/generate/kinds/declare-context-entries.d.ts.map +1 -0
  69. package/dist/generate/kinds/declare-context-entries.js +31 -0
  70. package/dist/generate/kinds/declare-context-entries.js.map +1 -0
  71. package/dist/generate/kinds/generate-context.d.ts.map +1 -1
  72. package/dist/generate/kinds/generate-context.js +2 -0
  73. package/dist/generate/kinds/generate-context.js.map +1 -1
  74. package/dist/generate/kinds/import-assembler.d.ts +9 -0
  75. package/dist/generate/kinds/import-assembler.d.ts.map +1 -0
  76. package/dist/generate/kinds/import-assembler.js +29 -0
  77. package/dist/generate/kinds/import-assembler.js.map +1 -0
  78. package/dist/generate/kinds/write-context-files.d.ts.map +1 -1
  79. package/dist/generate/kinds/write-context-files.js +10 -2
  80. package/dist/generate/kinds/write-context-files.js.map +1 -1
  81. package/dist/generate/kinds/write-own-policy.d.ts +9 -0
  82. package/dist/generate/kinds/write-own-policy.d.ts.map +1 -0
  83. package/dist/generate/kinds/write-own-policy.js +13 -0
  84. package/dist/generate/kinds/write-own-policy.js.map +1 -0
  85. package/dist/generate/shared-writes.d.ts.map +1 -1
  86. package/dist/generate/shared-writes.js +6 -0
  87. package/dist/generate/shared-writes.js.map +1 -1
  88. package/dist/generate/stop-ignoring-validation.d.ts +9 -0
  89. package/dist/generate/stop-ignoring-validation.d.ts.map +1 -0
  90. package/dist/generate/stop-ignoring-validation.js +36 -0
  91. package/dist/generate/stop-ignoring-validation.js.map +1 -0
  92. package/dist/init/files/architecture-files.d.ts +9 -0
  93. package/dist/init/files/architecture-files.d.ts.map +1 -0
  94. package/dist/init/files/architecture-files.js +10 -0
  95. package/dist/init/files/architecture-files.js.map +1 -0
  96. package/dist/init/files/init-files.d.ts.map +1 -1
  97. package/dist/init/files/init-files.js +2 -0
  98. package/dist/init/files/init-files.js.map +1 -1
  99. package/dist/init/files/persistence-files.d.ts.map +1 -1
  100. package/dist/init/files/persistence-files.js +5 -1
  101. package/dist/init/files/persistence-files.js.map +1 -1
  102. package/dist/init/files/pipeline-files.d.ts.map +1 -1
  103. package/dist/init/files/pipeline-files.js +5 -1
  104. package/dist/init/files/pipeline-files.js.map +1 -1
  105. package/dist/init/files/platform-files.d.ts.map +1 -1
  106. package/dist/init/files/platform-files.js +3 -1
  107. package/dist/init/files/platform-files.js.map +1 -1
  108. package/dist/init/files/project-files.d.ts.map +1 -1
  109. package/dist/init/files/project-files.js +3 -1
  110. package/dist/init/files/project-files.js.map +1 -1
  111. package/dist/init/knip-vars.d.ts +3 -3
  112. package/dist/init/knip-vars.d.ts.map +1 -1
  113. package/dist/init/knip-vars.js +27 -5
  114. package/dist/init/knip-vars.js.map +1 -1
  115. package/dist/init/manifest/documentation-scripts.d.ts.map +1 -1
  116. package/dist/init/manifest/documentation-scripts.js +2 -0
  117. package/dist/init/manifest/documentation-scripts.js.map +1 -1
  118. package/dist/init/manifest/scripts-for.d.ts +5 -1
  119. package/dist/init/manifest/scripts-for.d.ts.map +1 -1
  120. package/dist/init/manifest/scripts-for.js +10 -1
  121. package/dist/init/manifest/scripts-for.js.map +1 -1
  122. package/dist/init/manifest/versions.js +23 -23
  123. package/dist/init/manifest/write-manifest.d.ts.map +1 -1
  124. package/dist/init/manifest/write-manifest.js +18 -1
  125. package/dist/init/manifest/write-manifest.js.map +1 -1
  126. package/dist/init/run-init.d.ts.map +1 -1
  127. package/dist/init/run-init.js +24 -4
  128. package/dist/init/run-init.js.map +1 -1
  129. package/dist/init/stack/resolve-stack.d.ts.map +1 -1
  130. package/dist/init/stack/resolve-stack.js +3 -1
  131. package/dist/init/stack/resolve-stack.js.map +1 -1
  132. package/dist/init/stack/stack-options.d.ts +1 -0
  133. package/dist/init/stack/stack-options.d.ts.map +1 -1
  134. package/dist/init/template-vars.d.ts.map +1 -1
  135. package/dist/init/template-vars.js +2 -0
  136. package/dist/init/template-vars.js.map +1 -1
  137. package/dist/init/validation-dependencies.d.ts +10 -0
  138. package/dist/init/validation-dependencies.d.ts.map +1 -0
  139. package/dist/init/validation-dependencies.js +23 -0
  140. package/dist/init/validation-dependencies.js.map +1 -0
  141. package/dist/init/write-contracts.d.ts +10 -0
  142. package/dist/init/write-contracts.d.ts.map +1 -0
  143. package/dist/init/write-contracts.js +33 -0
  144. package/dist/init/write-contracts.js.map +1 -0
  145. package/dist/package-manager/default-package-manager.d.ts +8 -0
  146. package/dist/package-manager/default-package-manager.d.ts.map +1 -0
  147. package/dist/package-manager/default-package-manager.js +7 -0
  148. package/dist/package-manager/default-package-manager.js.map +1 -0
  149. package/dist/package-manager/dialect.d.ts +3 -0
  150. package/dist/package-manager/dialect.d.ts.map +1 -0
  151. package/dist/package-manager/dialect.js +2 -0
  152. package/dist/package-manager/dialect.js.map +1 -0
  153. package/dist/package-manager/dialects.d.ts +5 -0
  154. package/dist/package-manager/dialects.d.ts.map +1 -0
  155. package/dist/package-manager/dialects.js +21 -0
  156. package/dist/package-manager/dialects.js.map +1 -0
  157. package/dist/package-manager/in-dialect.d.ts +8 -0
  158. package/dist/package-manager/in-dialect.d.ts.map +1 -0
  159. package/dist/package-manager/in-dialect.js +10 -0
  160. package/dist/package-manager/in-dialect.js.map +1 -0
  161. package/dist/package-manager/lockfiles.d.ts +4 -0
  162. package/dist/package-manager/lockfiles.d.ts.map +1 -0
  163. package/dist/package-manager/lockfiles.js +6 -0
  164. package/dist/package-manager/lockfiles.js.map +1 -0
  165. package/dist/package-manager/package-manager-of.d.ts +4 -0
  166. package/dist/package-manager/package-manager-of.d.ts.map +1 -0
  167. package/dist/package-manager/package-manager-of.js +15 -0
  168. package/dist/package-manager/package-manager-of.js.map +1 -0
  169. package/dist/package-manager/package-manager-vars.d.ts +5 -0
  170. package/dist/package-manager/package-manager-vars.d.ts.map +1 -0
  171. package/dist/package-manager/package-manager-vars.js +13 -0
  172. package/dist/package-manager/package-manager-vars.js.map +1 -0
  173. package/dist/package-manager/pinned-package-managers.d.ts +7 -0
  174. package/dist/package-manager/pinned-package-managers.d.ts.map +1 -0
  175. package/dist/package-manager/pinned-package-managers.js +9 -0
  176. package/dist/package-manager/pinned-package-managers.js.map +1 -0
  177. package/dist/run.d.ts.map +1 -1
  178. package/dist/run.js +8 -2
  179. package/dist/run.js.map +1 -1
  180. package/dist/templating/render.d.ts.map +1 -1
  181. package/dist/templating/render.js +2 -1
  182. package/dist/templating/render.js.map +1 -1
  183. package/dist/templating/rendering.js +1 -1
  184. package/dist/templating/rendering.js.map +1 -1
  185. package/dist/version.d.ts +1 -1
  186. package/dist/version.js +1 -1
  187. package/dist/workspace/workspace.d.ts +5 -1
  188. package/dist/workspace/workspace.d.ts.map +1 -1
  189. package/dist/workspace/workspace.js +13 -3
  190. package/dist/workspace/workspace.js.map +1 -1
  191. package/package.json +2 -2
  192. package/templates/architecture/extractable.declared.spec.ts.tpl +6 -6
  193. package/templates/architecture/extractable.manual.spec.ts.tpl +4 -0
  194. package/templates/architecture/extractable.tsyringe.spec.ts.tpl +6 -0
  195. package/templates/docs/asyncapi.json.tpl +12 -0
  196. package/templates/docs/event-catalog.md +3 -0
  197. package/templates/docs/openapi.json.tpl +354 -0
  198. package/templates/init/README.md.tpl +1 -0
  199. package/templates/init/docker/Dockerfile.tpl +9 -2
  200. package/templates/init/jest.config.js.tpl +3 -1
  201. package/templates/init/platform/compose-application.tsyringe.ts.tpl +0 -6
  202. package/templates/init/platform/database/journal.drizzle.json +5 -0
  203. package/templates/init/pnpm-workspace.yaml +8 -0
  204. package/templates/init/rules/infrastructure.md.tpl +2 -2
  205. package/templates/init/scripts/events.ts.tpl +1 -1
  206. package/templates/init/scripts/openapi.ts.tpl +1 -1
  207. package/templates/pipeline/biome.json.tpl +2 -1
  208. package/templates/pipeline/github/actions/setup/action.yml.tpl +37 -0
  209. package/templates/pipeline/github/scripts/start-postgres.sh +47 -0
  210. package/templates/pipeline/github/workflows/ci.yml +68 -110
  211. package/templates/pipeline/github/workflows/pr-title.yml +1 -5
  212. package/templates/pipeline/gitlab/{gitlab-ci.yml → gitlab-ci.yml.tpl} +59 -31
  213. package/templates/pipeline/knip.json.tpl +9 -10
  214. package/templates/pipeline/package-scripts.json +1 -1
  215. package/templates/pipeline/vitest.config.ts.tpl +7 -3
@@ -1,9 +1,14 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
+ import { CONFIG_FILE } from '../config/index.js';
4
+ import { inDialect } from '../package-manager/in-dialect.js';
5
+ import { packageManagerOf } from '../package-manager/package-manager-of.js';
3
6
  import { todosIn } from './todos-in.js';
4
7
  /**
5
8
  * Every generator writes through this overlay, so a command either lands as a whole
6
9
  * plan or (with --dry-run) not at all, and later steps see the files of earlier ones.
10
+ * What it writes and notes is said in the dialect of the package manager the config
11
+ * file of the project names: the templates are written for npm.
7
12
  */
8
13
  export class Workspace {
9
14
  root;
@@ -56,10 +61,11 @@ export class Workspace {
56
61
  }
57
62
  return false;
58
63
  }
59
- this.pending.set(file, { content, existed: onDisk });
64
+ this.pending.set(file, { content: this.spoken(content), existed: onDisk });
60
65
  return true;
61
66
  }
62
- update(file, content) {
67
+ update(file, written) {
68
+ const content = this.spoken(written);
63
69
  const pending = this.pending.get(file);
64
70
  if (pending !== undefined) {
65
71
  pending.content = content;
@@ -70,6 +76,10 @@ export class Workspace {
70
76
  }
71
77
  this.pending.set(file, { content, existed: true });
72
78
  }
79
+ /** A text written for npm, as the package manager of the project says it: what is compared with a file is compared in its dialect. */
80
+ spoken(text) {
81
+ return inDialect(text, packageManagerOf(this.read(CONFIG_FILE)));
82
+ }
73
83
  note(message) {
74
84
  if (!this.notes.includes(message)) {
75
85
  this.notes.push(message);
@@ -98,7 +108,7 @@ export class Workspace {
98
108
  skipped: [...this.skipped].sort(),
99
109
  next: todos.map((todo) => `${todo.file}:${todo.line}`),
100
110
  todos,
101
- notes: this.notes,
111
+ notes: this.notes.map((note) => this.spoken(note)),
102
112
  };
103
113
  }
104
114
  located({ file, anchor, text }) {
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/workspace/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/workspace/workspace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ddd-ts-kit",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Bootstrap, scaffold and verify DDD and Clean Architecture TypeScript projects.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -28,6 +28,6 @@
28
28
  "clean:packages": "node dist/bin.js check --clean-only ../kernel/src ../validation/src ../http/src ../tracing/src ../di/src ../events/src ../testing/src ../drizzle/src ../knex/src ../prisma/src ../typeorm/src ../aspects/src ../rabbitmq/src ../auth/src ../audit/src ../redis/src ../scheduling/src ../pino/src ../winston/src ../sentry/src ../kafka/src ../nats/src ../eslint-plugin/src"
29
29
  },
30
30
  "devDependencies": {
31
- "@ddd-ts-kit/kernel": "^0.1.0"
31
+ "@ddd-ts-kit/kernel": "^0.1.1"
32
32
  }
33
33
  }
@@ -1,13 +1,7 @@
1
1
  import { describe, expect, it } from '{{tests.module}}';
2
2
  import { authorizationModule } from '@ddd-ts-kit/auth/di';
3
3
  import { AllowAll } from '@ddd-ts-kit/auth/testing';
4
- {{#if assembly.barrel}}
5
- import { contextModule, createTestApplication, type ContextModule } from '@ddd-ts-kit/di';
6
- {{/if}}
7
- {{#if assembly.discovery}}
8
4
  import { createTestApplication, type ContextModule } from '@ddd-ts-kit/di';
9
- import { discoverContext } from '@ddd-ts-kit/di/discovery';
10
- {{/if}}
11
5
  import { platformTestModule } from '{{alias.platform}}/platform-test.module.js';
12
6
  // ddd-ts-kit:imports
13
7
  // /ddd-ts-kit:imports
@@ -21,6 +15,12 @@ const contexts: readonly (readonly [string, ContextModule])[] = [
21
15
  ];
22
16
 
23
17
  describe('A bounded context is a deployable unit in waiting', () => {
18
+ it('the platform wires alone, before the first context joins it', () => {
19
+ expect(() =>
20
+ createTestApplication({ modules: [platformTestModule, authorization], authorization: 'optional' }),
21
+ ).not.toThrow();
22
+ });
23
+
24
24
  it.each(contexts)(
25
25
  '%s wires alone from its declarations, on the kernel and the platform, with no other context',
26
26
  (_name, module) => {
@@ -12,6 +12,10 @@ const contexts: readonly (readonly [string, (platform: Platform) => { readonly n
12
12
  ];
13
13
 
14
14
  describe('A bounded context is a deployable unit in waiting', () => {
15
+ it('the platform wires alone, before the first context joins it', () => {
16
+ expect(() => createPlatform(inertPersistence(), { events: inProcessEvents() })).not.toThrow();
17
+ });
18
+
15
19
  it.each(contexts)('%s wires alone, on the platform, with no other context', (name, module) => {
16
20
  const platform = createPlatform(inertPersistence(), { events: inProcessEvents() });
17
21
 
@@ -15,6 +15,12 @@ const contexts: readonly (readonly [string, ContextModule])[] = [
15
15
  ];
16
16
 
17
17
  describe('A bounded context is a deployable unit in waiting', () => {
18
+ it('the platform wires alone, before the first context joins it', () => {
19
+ expect(() =>
20
+ createTestApplication({ modules: [platformTestModule, authorization], authorization: 'optional' }),
21
+ ).not.toThrow();
22
+ });
23
+
18
24
  it.each(contexts)('%s wires alone, on the kernel and the platform, with no other context', (_name, module) => {
19
25
  expect(() =>
20
26
  createTestApplication({ modules: [platformTestModule, authorization, module], authorization: 'optional' }),
@@ -0,0 +1,12 @@
1
+ {
2
+ "asyncapi": "3.0.0",
3
+ "info": {
4
+ "title": {{document.title}},
5
+ "version": {{document.version}}
6
+ },
7
+ "channels": {},
8
+ "operations": {},
9
+ "components": {
10
+ "messages": {}
11
+ }
12
+ }
@@ -0,0 +1,3 @@
1
+ # Event catalog
2
+
3
+ Generated from the integration event declarations. Do not edit by hand: regenerate.
@@ -0,0 +1,354 @@
1
+ {
2
+ "openapi": "3.1.0",
3
+ "info": {
4
+ "title": {{document.title}},
5
+ "version": {{document.version}}
6
+ },
7
+ {{#if audit.route}}
8
+ "tags": [
9
+ {
10
+ "name": "audit"
11
+ }
12
+ ],
13
+ "paths": {
14
+ "/audit/entries": {
15
+ "get": {
16
+ "operationId": "searchAuditEntries",
17
+ "summary": "Search the entries of the audit trail",
18
+ "tags": [
19
+ "audit"
20
+ ],
21
+ "security": [
22
+ {
23
+ "{{authn.scheme}}": []
24
+ }
25
+ ],
26
+ "parameters": [
27
+ {
28
+ "name": "limit",
29
+ "in": "query",
30
+ "description": "Size of the page.",
31
+ "required": false,
32
+ "schema": {
33
+ "type": "integer",
34
+ "minimum": 1,
35
+ "maximum": 100,
36
+ "default": 20,
37
+ "description": "Size of the page."
38
+ }
39
+ },
40
+ {
41
+ "name": "offset",
42
+ "in": "query",
43
+ "description": "Items to skip. Not with `cursor`.",
44
+ "required": false,
45
+ "schema": {
46
+ "type": "integer",
47
+ "minimum": 0,
48
+ "description": "Items to skip. Not with `cursor`."
49
+ }
50
+ },
51
+ {
52
+ "name": "cursor",
53
+ "in": "query",
54
+ "description": "The `nextCursor` of the previous page. Not with `offset`.",
55
+ "required": false,
56
+ "schema": {
57
+ "type": "string",
58
+ "minLength": 1,
59
+ "description": "The `nextCursor` of the previous page. Not with `offset`."
60
+ }
61
+ },
62
+ {
63
+ "name": "sort",
64
+ "in": "query",
65
+ "description": "Comma-separated fields, a leading \"-\" for descending. Sortable: occurredAt, sequence.",
66
+ "required": false,
67
+ "schema": {
68
+ "type": "string",
69
+ "description": "Comma-separated fields, a leading \"-\" for descending. Sortable: occurredAt, sequence."
70
+ }
71
+ },
72
+ {
73
+ "name": "actorId",
74
+ "in": "query",
75
+ "description": "Entries about what this actor did.",
76
+ "required": false,
77
+ "schema": {
78
+ "type": "string",
79
+ "description": "Entries about what this actor did."
80
+ }
81
+ },
82
+ {
83
+ "name": "action",
84
+ "in": "query",
85
+ "description": "A permission id, a command name or an event type.",
86
+ "required": false,
87
+ "schema": {
88
+ "type": "string",
89
+ "description": "A permission id, a command name or an event type."
90
+ }
91
+ },
92
+ {
93
+ "name": "outcome",
94
+ "in": "query",
95
+ "required": false,
96
+ "schema": {
97
+ "type": "string",
98
+ "enum": [
99
+ "allowed",
100
+ "denied",
101
+ "succeeded",
102
+ "failed"
103
+ ]
104
+ }
105
+ },
106
+ {
107
+ "name": "correlationId",
108
+ "in": "query",
109
+ "description": "Everything one request or event caused.",
110
+ "required": false,
111
+ "schema": {
112
+ "type": "string",
113
+ "description": "Everything one request or event caused."
114
+ }
115
+ }
116
+ ],
117
+ "responses": {
118
+ "200": {
119
+ "description": "A page of entries.",
120
+ "content": {
121
+ "application/json": {
122
+ "schema": {
123
+ "type": "object",
124
+ "required": [
125
+ "items"
126
+ ],
127
+ "properties": {
128
+ "items": {
129
+ "type": "array",
130
+ "items": {
131
+ "type": "object",
132
+ "required": [
133
+ "id",
134
+ "chain",
135
+ "sequence",
136
+ "occurredAt",
137
+ "category",
138
+ "action",
139
+ "outcome",
140
+ "actorId",
141
+ "actorType",
142
+ "correlationId",
143
+ "origin",
144
+ "previousHash",
145
+ "hash"
146
+ ],
147
+ "properties": {
148
+ "id": {
149
+ "type": "string"
150
+ },
151
+ "chain": {
152
+ "type": "string"
153
+ },
154
+ "sequence": {
155
+ "type": "integer",
156
+ "minimum": 1
157
+ },
158
+ "occurredAt": {
159
+ "type": "string",
160
+ "format": "date-time"
161
+ },
162
+ "category": {
163
+ "type": "string"
164
+ },
165
+ "action": {
166
+ "type": "string"
167
+ },
168
+ "outcome": {
169
+ "type": "string",
170
+ "enum": [
171
+ "allowed",
172
+ "denied",
173
+ "succeeded",
174
+ "failed"
175
+ ]
176
+ },
177
+ "reason": {
178
+ "type": "string"
179
+ },
180
+ "actorId": {
181
+ "type": "string"
182
+ },
183
+ "actorType": {
184
+ "type": "string"
185
+ },
186
+ "tenantId": {
187
+ "type": "string"
188
+ },
189
+ "resourceType": {
190
+ "type": "string"
191
+ },
192
+ "resourceId": {
193
+ "type": "string"
194
+ },
195
+ "context": {
196
+ "type": "string"
197
+ },
198
+ "correlationId": {
199
+ "type": "string"
200
+ },
201
+ "causationId": {
202
+ "type": "string"
203
+ },
204
+ "origin": {
205
+ "type": "string"
206
+ },
207
+ "previousHash": {
208
+ "type": "string"
209
+ },
210
+ "hash": {
211
+ "type": "string"
212
+ }
213
+ }
214
+ }
215
+ },
216
+ "total": {
217
+ "type": "integer",
218
+ "minimum": 0,
219
+ "description": "Present when it is cheap to count."
220
+ },
221
+ "nextCursor": {
222
+ "type": "string",
223
+ "description": "Present when more items follow."
224
+ }
225
+ }
226
+ }
227
+ }
228
+ }
229
+ },
230
+ "401": {
231
+ "description": "Unauthorized. Error codes: UNAUTHORIZED.",
232
+ "content": {
233
+ "application/problem+json": {
234
+ "schema": {
235
+ "$ref": "#/components/schemas/Problem"
236
+ }
237
+ }
238
+ },
239
+ "x-error-codes": [
240
+ "UNAUTHORIZED"
241
+ ]
242
+ },
243
+ "403": {
244
+ "description": "Forbidden. Error codes: FORBIDDEN.",
245
+ "content": {
246
+ "application/problem+json": {
247
+ "schema": {
248
+ "$ref": "#/components/schemas/Problem"
249
+ }
250
+ }
251
+ },
252
+ "x-error-codes": [
253
+ "FORBIDDEN"
254
+ ]
255
+ },
256
+ "422": {
257
+ "description": "Unprocessable Content. Error codes: VALIDATION_FAILED.",
258
+ "content": {
259
+ "application/problem+json": {
260
+ "schema": {
261
+ "$ref": "#/components/schemas/Problem"
262
+ }
263
+ }
264
+ },
265
+ "x-error-codes": [
266
+ "VALIDATION_FAILED"
267
+ ]
268
+ }
269
+ }
270
+ }
271
+ }
272
+ },
273
+ {{/if}}
274
+ {{#unless audit.route}}
275
+ "paths": {},
276
+ {{/unless}}
277
+ "components": {
278
+ "schemas": {
279
+ "Problem": {
280
+ "type": "object",
281
+ "description": "Problem details (RFC 9457) with a stable machine-readable code.",
282
+ "required": [
283
+ "type",
284
+ "title",
285
+ "status",
286
+ "code",
287
+ "requestId"
288
+ ],
289
+ "properties": {
290
+ "type": {
291
+ "type": "string",
292
+ "description": "URI identifying the kind of problem."
293
+ },
294
+ "title": {
295
+ "type": "string"
296
+ },
297
+ "status": {
298
+ "type": "integer"
299
+ },
300
+ "code": {
301
+ "type": "string",
302
+ "description": "Stable error code; branch on this, not on the title."
303
+ },
304
+ "detail": {
305
+ "type": "string"
306
+ },
307
+ "issues": {
308
+ "type": "array",
309
+ "description": "Present when the request failed validation.",
310
+ "items": {
311
+ "type": "object",
312
+ "required": [
313
+ "path",
314
+ "code",
315
+ "message"
316
+ ],
317
+ "properties": {
318
+ "path": {
319
+ "type": "string",
320
+ "description": "Dotted path, for example body.items.0.sku."
321
+ },
322
+ "code": {
323
+ "type": "string"
324
+ },
325
+ "message": {
326
+ "type": "string"
327
+ }
328
+ }
329
+ }
330
+ },
331
+ "requestId": {
332
+ "type": "string"
333
+ }
334
+ }
335
+ }
336
+ },
337
+ "securitySchemes": {
338
+ {{#if authn.tokens}}
339
+ "bearer": {
340
+ "type": "http",
341
+ "scheme": "bearer",
342
+ "bearerFormat": "JWT"
343
+ }
344
+ {{/if}}
345
+ {{#unless authn.tokens}}
346
+ "developmentActor": {
347
+ "type": "apiKey",
348
+ "in": "header",
349
+ "name": "x-development-actor"
350
+ }
351
+ {{/unless}}
352
+ }
353
+ }
354
+ }
@@ -7,6 +7,7 @@ The rules are in `CLAUDE.md` and `.claude/rules/`; `npx ddd-ts-kit explain <rule
7
7
 
8
8
  ```bash
9
9
  npm install
10
+ npm run verify # every gate of the pipeline: green before the first line of business code
10
11
  cp .env.example .env
11
12
  {{#if database.server}}
12
13
  npm run infra:up # the database, in Docker; add --profile observability for Jaeger
@@ -2,14 +2,21 @@
2
2
 
3
3
  FROM node:24-slim AS build
4
4
  WORKDIR /app
5
- COPY package.json package-lock.json ./
5
+ {{#if pm.corepack}}
6
+ # corepack provides the release of the package manager that package.json pins.
7
+ RUN corepack enable
8
+ {{/if}}
9
+ COPY package.json package-lock.json{{#if pm.pnpm}} pnpm-workspace.yaml{{/if}} ./
6
10
  RUN npm ci
7
11
  COPY . .
8
12
  RUN npm run build
9
13
 
10
14
  FROM node:24-slim AS dependencies
11
15
  WORKDIR /app
12
- COPY package.json package-lock.json ./
16
+ {{#if pm.corepack}}
17
+ RUN corepack enable
18
+ {{/if}}
19
+ COPY package.json package-lock.json{{#if pm.pnpm}} pnpm-workspace.yaml{{/if}} ./
13
20
  RUN npm ci --omit=dev
14
21
 
15
22
  FROM node:24-slim
@@ -1,4 +1,4 @@
1
- import { governedJestCoverage } from '@ddd-ts-kit/testing/coverage';
1
+ import { governedJestCoverage, unaffectedContexts } from '@ddd-ts-kit/testing/coverage';
2
2
 
3
3
  export default {
4
4
  testEnvironment: 'node',
@@ -7,6 +7,8 @@ export default {
7
7
  {{alias.jestMapper}}
8
8
  },
9
9
  testMatch: ['<rootDir>/{{config.sourceRoot}}/**/*.spec.ts', '<rootDir>/test/architecture/**/*.spec.ts'],
10
+ // A pull request names the contexts its change reaches (DDD_TS_KIT_AFFECTED, from `ddd-ts-kit affected`): the specs of the others are left to the default branch.
11
+ testPathIgnorePatterns: ['/node_modules/', ...unaffectedContexts().map((directory) => `/${directory}`)],
10
12
  extensionsToTreatAsEsm: ['.ts'],
11
13
  transform: {
12
14
  '^.+\\.ts$': [
@@ -3,18 +3,12 @@ import { installAspectRuntime } from '@ddd-ts-kit/aspects';
3
3
  import { Authenticator } from '@ddd-ts-kit/auth';
4
4
  {{/if}}
5
5
  import {
6
- {{#if assembly.barrel}}
7
- contextModule,
8
- {{/if}}
9
6
  createApplication,
10
7
  kernelModule,
11
8
  type Application as Container,
12
9
  type ContextModule,
13
10
  type JobsOptions,
14
11
  } from '@ddd-ts-kit/di';
15
- {{#if assembly.discovery}}
16
- import { discoverContext } from '@ddd-ts-kit/di/discovery';
17
- {{/if}}
18
12
  {{#if events.outbox}}
19
13
  import { OutboxPublisher } from '@ddd-ts-kit/events';
20
14
  {{/if}}
@@ -0,0 +1,5 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "postgresql",
4
+ "entries": []
5
+ }
@@ -0,0 +1,8 @@
1
+ # No dependency runs a build script at install, as under npm: one whose script the
2
+ # project needs (a native client, for instance) is allowed by name, once its script was read:
3
+ #
4
+ # allowBuilds:
5
+ # '<package>': true
6
+ #
7
+ # Without this line pnpm refuses to install as long as one script is neither allowed nor refused.
8
+ strictDepBuilds: false
@@ -12,11 +12,11 @@ paths:
12
12
  - Audit columns and the tenant column are stamped from the execution scope with the kernel helpers (`stampCreation`, `stampUpdate`, `tenantScopeOf`), never handed over by a use case.
13
13
  {{#if style.declared}}
14
14
  - An adapter declares itself on its class, one per file (`declarations/role-declared`): `@Repository(InvoiceRepository, [{{persistence.tokenOrNone}}, ExecutionScope, Clock])`, `@Gateway(Port, [Ports])` or `@Adapter(Port, { kind }, [Ports])`.
15
- - Retry, timeout and cache go on the declaration (`aspects: [ownPolicy(retry(...), timeout(...))]`) or, when the policy is part of what the adapter is, as decorators of `@ddd-ts-kit/aspects/decorators` (`aspects/outside-in`). Kinds `external` and `gateway` get the default policy of the platform otherwise.
15
+ - Retry, timeout and cache go on the declaration (`aspects: [ownPolicy(retry(...), timeout(...))]`) or, when the policy is part of what the adapter is, as decorators of `@ddd-ts-kit/aspects/decorators` (`aspects/outside-in`). Kinds `external` and `gateway` get the default policy of the platform otherwise. `ownPolicy` is the helper of `{{alias.platform}}/resilience/own-policy.js`, which `generate adapter` writes when the platform does not have it yet.
16
16
  {{/if}}
17
17
  {{#if style.explicit}}
18
18
  - An adapter is bound to its port in `<context>.module.ts` only (`composition/only-in-module`), with its kind (`repository`, `gateway`, `external`).
19
- - Retry, timeout and cache go on the binding (`ownPolicy(retry(...), timeout(...))`) or, when the policy is part of what the adapter is, as decorators of `@ddd-ts-kit/aspects/decorators` (`aspects/outside-in`). Kinds `external` and `gateway` get the default policy of the platform otherwise.
19
+ - Retry, timeout and cache go on the binding (`ownPolicy(retry(...), timeout(...))`) or, when the policy is part of what the adapter is, as decorators of `@ddd-ts-kit/aspects/decorators` (`aspects/outside-in`). Kinds `external` and `gateway` get the default policy of the platform otherwise. `ownPolicy` is the helper of `{{alias.platform}}/resilience/own-policy.js`, which `generate adapter` writes when the platform does not have it yet.
20
20
  {{/if}}
21
21
  - A repository only persists: no `pullEvents()`, no dispatcher (`domain-events/dispatched-on-save`). A removal that announces an event takes the aggregate, not its id.
22
22
  - Infrastructure faults are plain errors (a 5xx, reported from outside); business refusals are `DomainError`s raised by the domain.
@@ -39,7 +39,7 @@ function reportStale(): void {
39
39
  const committed = fs.existsSync(path.join(target, file)) ? fs.readFileSync(path.join(target, file), 'utf8') : '';
40
40
 
41
41
  if (committed.replaceAll('\r\n', '\n') !== content) {
42
- console.error('docs/integration/' + file + ' is out of date: run `npm run docs:generate` and commit the result.');
42
+ console.error('docs/integration/' + file + ' is out of date: run the script `docs:generate` and commit it.');
43
43
  process.exitCode = 1;
44
44
  }
45
45
  }
@@ -40,7 +40,7 @@ function reportDrift(): void {
40
40
  return;
41
41
  }
42
42
 
43
- console.error('openapi/openapi.json is out of date: run `npm run docs:generate` and commit the result.');
43
+ console.error('openapi/openapi.json is out of date: run the script `docs:generate` and commit it.');
44
44
  process.exitCode = 1;
45
45
  }
46
46
 
@@ -17,7 +17,8 @@
17
17
  "!**/package-lock.json",
18
18
  "!**/.dependency-cruiser.cjs",
19
19
  "!**/openapi/*.json",
20
- "!**/asyncapi.json"
20
+ "!**/asyncapi.json",
21
+ "!**/migrations/meta"
21
22
  ]
22
23
  },
23
24
  "formatter": {