ddd-ts-kit 0.19.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.fr.md +24 -11
  3. package/README.md +20 -9
  4. package/dist/check/authz/is-granted.d.ts +8 -0
  5. package/dist/check/authz/is-granted.d.ts.map +1 -0
  6. package/dist/check/authz/is-granted.js +11 -0
  7. package/dist/check/authz/is-granted.js.map +1 -0
  8. package/dist/check/authz/permission-sets.d.ts +13 -0
  9. package/dist/check/authz/permission-sets.d.ts.map +1 -0
  10. package/dist/check/authz/permission-sets.js +19 -0
  11. package/dist/check/authz/permission-sets.js.map +1 -0
  12. package/dist/check/catalogue/architecture-rules.d.ts.map +1 -1
  13. package/dist/check/catalogue/architecture-rules.js +4 -0
  14. package/dist/check/catalogue/architecture-rules.js.map +1 -1
  15. package/dist/check/catalogue/default-severities.d.ts.map +1 -1
  16. package/dist/check/catalogue/default-severities.js +2 -0
  17. package/dist/check/catalogue/default-severities.js.map +1 -1
  18. package/dist/check/commands/rules-command.js +2 -2
  19. package/dist/check/commands/rules-command.js.map +1 -1
  20. package/dist/check/configuration/config-inspection.d.ts.map +1 -1
  21. package/dist/check/configuration/config-inspection.js +7 -1
  22. package/dist/check/configuration/config-inspection.js.map +1 -1
  23. package/dist/check/engine/run-check.d.ts.map +1 -1
  24. package/dist/check/engine/run-check.js +17 -1
  25. package/dist/check/engine/run-check.js.map +1 -1
  26. package/dist/check/explain/authz-docs.d.ts.map +1 -1
  27. package/dist/check/explain/authz-docs.js +15 -0
  28. package/dist/check/explain/authz-docs.js.map +1 -1
  29. package/dist/check/explain/layout-docs.js +1 -1
  30. package/dist/check/explain/layout-docs.js.map +1 -1
  31. package/dist/check/explain/persistence-docs.js +1 -1
  32. package/dist/check/explain/persistence-docs.js.map +1 -1
  33. package/dist/check/explain/tree-docs.js +2 -2
  34. package/dist/check/explain/tree-docs.js.map +1 -1
  35. package/dist/check/explain/wiring-docs.d.ts.map +1 -1
  36. package/dist/check/explain/wiring-docs.js +7 -0
  37. package/dist/check/explain/wiring-docs.js.map +1 -1
  38. package/dist/check/fixtures/authz-granted-fixtures.d.ts +3 -0
  39. package/dist/check/fixtures/authz-granted-fixtures.d.ts.map +1 -0
  40. package/dist/check/fixtures/authz-granted-fixtures.js +71 -0
  41. package/dist/check/fixtures/authz-granted-fixtures.js.map +1 -0
  42. package/dist/check/fixtures/config-fixtures.d.ts.map +1 -1
  43. package/dist/check/fixtures/config-fixtures.js +50 -1
  44. package/dist/check/fixtures/config-fixtures.js.map +1 -1
  45. package/dist/check/fixtures/fixtures.d.ts.map +1 -1
  46. package/dist/check/fixtures/fixtures.js +2 -0
  47. package/dist/check/fixtures/fixtures.js.map +1 -1
  48. package/dist/check/fixtures/governance-fixtures.d.ts.map +1 -1
  49. package/dist/check/fixtures/governance-fixtures.js +12 -3
  50. package/dist/check/fixtures/governance-fixtures.js.map +1 -1
  51. package/dist/check/fixtures/layer-fixtures.js +1 -1
  52. package/dist/check/fixtures/layer-fixtures.js.map +1 -1
  53. package/dist/check/fixtures/layout-fixtures.d.ts.map +1 -1
  54. package/dist/check/fixtures/layout-fixtures.js +6 -0
  55. package/dist/check/fixtures/layout-fixtures.js.map +1 -1
  56. package/dist/check/fixtures/persistence-fixtures.d.ts.map +1 -1
  57. package/dist/check/fixtures/persistence-fixtures.js +16 -0
  58. package/dist/check/fixtures/persistence-fixtures.js.map +1 -1
  59. package/dist/check/fixtures/test-fixtures.d.ts.map +1 -1
  60. package/dist/check/fixtures/test-fixtures.js +35 -1
  61. package/dist/check/fixtures/test-fixtures.js.map +1 -1
  62. package/dist/check/fixtures/tree-fixtures.js +1 -1
  63. package/dist/check/fixtures/tree-fixtures.js.map +1 -1
  64. package/dist/check/fixtures/vocabulary-fixtures.d.ts.map +1 -1
  65. package/dist/check/fixtures/vocabulary-fixtures.js +4 -0
  66. package/dist/check/fixtures/vocabulary-fixtures.js.map +1 -1
  67. package/dist/check/language/declared-vocabularies.d.ts.map +1 -1
  68. package/dist/check/language/declared-vocabularies.js +8 -28
  69. package/dist/check/language/declared-vocabularies.js.map +1 -1
  70. package/dist/check/migrations/working-migration-findings.d.ts +8 -0
  71. package/dist/check/migrations/working-migration-findings.d.ts.map +1 -0
  72. package/dist/check/migrations/working-migration-findings.js +22 -0
  73. package/dist/check/migrations/working-migration-findings.js.map +1 -0
  74. package/dist/check/model/project.d.ts +3 -0
  75. package/dist/check/model/project.d.ts.map +1 -1
  76. package/dist/check/project/assemble-project.d.ts +2 -2
  77. package/dist/check/project/assemble-project.d.ts.map +1 -1
  78. package/dist/check/project/assemble-project.js +16 -6
  79. package/dist/check/project/assemble-project.js.map +1 -1
  80. package/dist/check/rules/authz-granted.d.ts +11 -0
  81. package/dist/check/rules/authz-granted.d.ts.map +1 -0
  82. package/dist/check/rules/authz-granted.js +45 -0
  83. package/dist/check/rules/authz-granted.js.map +1 -0
  84. package/dist/check/rules/clean-file-size.d.ts.map +1 -1
  85. package/dist/check/rules/clean-file-size.js +6 -1
  86. package/dist/check/rules/clean-file-size.js.map +1 -1
  87. package/dist/check/rules/clean-one-export-per-file.d.ts.map +1 -1
  88. package/dist/check/rules/clean-one-export-per-file.js +2 -11
  89. package/dist/check/rules/clean-one-export-per-file.js.map +1 -1
  90. package/dist/check/rules/config-rule-off-everywhere.d.ts +3 -0
  91. package/dist/check/rules/config-rule-off-everywhere.d.ts.map +1 -0
  92. package/dist/check/rules/config-rule-off-everywhere.js +21 -0
  93. package/dist/check/rules/config-rule-off-everywhere.js.map +1 -0
  94. package/dist/check/rules/governance-recorded-deviation.js +14 -7
  95. package/dist/check/rules/governance-recorded-deviation.js.map +1 -1
  96. package/dist/check/rules/persistence-migration-history.d.ts.map +1 -1
  97. package/dist/check/rules/persistence-migration-history.js +9 -2
  98. package/dist/check/rules/persistence-migration-history.js.map +1 -1
  99. package/dist/check/rules/test-spec-required.d.ts.map +1 -1
  100. package/dist/check/rules/test-spec-required.js +3 -2
  101. package/dist/check/rules/test-spec-required.js.map +1 -1
  102. package/dist/check/support/is-abstract-base.d.ts +7 -0
  103. package/dist/check/support/is-abstract-base.d.ts.map +1 -0
  104. package/dist/check/support/is-abstract-base.js +11 -0
  105. package/dist/check/support/is-abstract-base.js.map +1 -0
  106. package/dist/check/support/is-generated-context-file.d.ts +4 -0
  107. package/dist/check/support/is-generated-context-file.d.ts.map +1 -0
  108. package/dist/check/support/is-generated-context-file.js +12 -0
  109. package/dist/check/support/is-generated-context-file.js.map +1 -0
  110. package/dist/check/text/depth-at.d.ts +3 -0
  111. package/dist/check/text/depth-at.d.ts.map +1 -0
  112. package/dist/check/text/depth-at.js +11 -0
  113. package/dist/check/text/depth-at.js.map +1 -0
  114. package/dist/commands/drizzle-generate.d.ts +4 -0
  115. package/dist/commands/drizzle-generate.d.ts.map +1 -0
  116. package/dist/commands/drizzle-generate.js +14 -0
  117. package/dist/commands/drizzle-generate.js.map +1 -0
  118. package/dist/commands/generate.js +4 -0
  119. package/dist/commands/generate.js.map +1 -1
  120. package/dist/commands/worker-scope.d.ts.map +1 -1
  121. package/dist/commands/worker-scope.js +17 -2
  122. package/dist/commands/worker-scope.js.map +1 -1
  123. package/dist/config/config.d.ts +2 -1
  124. package/dist/config/config.d.ts.map +1 -1
  125. package/dist/config/index.d.ts +1 -0
  126. package/dist/config/index.d.ts.map +1 -1
  127. package/dist/config/index.js +1 -0
  128. package/dist/config/index.js.map +1 -1
  129. package/dist/config/parse-config.d.ts.map +1 -1
  130. package/dist/config/parse-config.js +2 -1
  131. package/dist/config/parse-config.js.map +1 -1
  132. package/dist/config/parse-rule-setting.d.ts +3 -0
  133. package/dist/config/parse-rule-setting.d.ts.map +1 -0
  134. package/dist/config/parse-rule-setting.js +10 -0
  135. package/dist/config/parse-rule-setting.js.map +1 -0
  136. package/dist/config/project-severity.d.ts +4 -0
  137. package/dist/config/project-severity.d.ts.map +1 -0
  138. package/dist/config/project-severity.js +5 -0
  139. package/dist/config/project-severity.js.map +1 -0
  140. package/dist/config/rule-setting.d.ts +10 -0
  141. package/dist/config/rule-setting.d.ts.map +1 -0
  142. package/dist/config/rule-setting.js +2 -0
  143. package/dist/config/rule-setting.js.map +1 -0
  144. package/dist/generate/access-vars.d.ts.map +1 -1
  145. package/dist/generate/access-vars.js +5 -0
  146. package/dist/generate/access-vars.js.map +1 -1
  147. package/dist/generate/grant-permission.d.ts +9 -0
  148. package/dist/generate/grant-permission.d.ts.map +1 -0
  149. package/dist/generate/grant-permission.js +111 -0
  150. package/dist/generate/grant-permission.js.map +1 -0
  151. package/dist/generate/kind.d.ts +4 -0
  152. package/dist/generate/kind.d.ts.map +1 -1
  153. package/dist/generate/kinds/adr-kind.d.ts.map +1 -1
  154. package/dist/generate/kinds/adr-kind.js +8 -4
  155. package/dist/generate/kinds/adr-kind.js.map +1 -1
  156. package/dist/generate/kinds/adr-number.d.ts +8 -0
  157. package/dist/generate/kinds/adr-number.d.ts.map +1 -0
  158. package/dist/generate/kinds/adr-number.js +25 -0
  159. package/dist/generate/kinds/adr-number.js.map +1 -0
  160. package/dist/generate/kinds/command-kind.js +1 -1
  161. package/dist/generate/kinds/command-kind.js.map +1 -1
  162. package/dist/generate/kinds/file-upload-kind.js +2 -2
  163. package/dist/generate/kinds/file-upload-kind.js.map +1 -1
  164. package/dist/generate/kinds/query-kind.js +2 -2
  165. package/dist/generate/kinds/query-kind.js.map +1 -1
  166. package/dist/generate/kinds/write-adr.d.ts +3 -1
  167. package/dist/generate/kinds/write-adr.d.ts.map +1 -1
  168. package/dist/generate/kinds/write-adr.js +3 -3
  169. package/dist/generate/kinds/write-adr.js.map +1 -1
  170. package/dist/generate/shared-writes.d.ts.map +1 -1
  171. package/dist/generate/shared-writes.js +10 -3
  172. package/dist/generate/shared-writes.js.map +1 -1
  173. package/dist/help/notes.d.ts +1 -1
  174. package/dist/help/notes.d.ts.map +1 -1
  175. package/dist/help/notes.js +8 -2
  176. package/dist/help/notes.js.map +1 -1
  177. package/dist/help/usage.d.ts +1 -1
  178. package/dist/help/usage.d.ts.map +1 -1
  179. package/dist/help/usage.js +2 -1
  180. package/dist/help/usage.js.map +1 -1
  181. package/dist/init/manifest/database-scripts.d.ts.map +1 -1
  182. package/dist/init/manifest/database-scripts.js +2 -1
  183. package/dist/init/manifest/database-scripts.js.map +1 -1
  184. package/dist/init/manifest/scripts-for.js +2 -0
  185. package/dist/init/manifest/scripts-for.js.map +1 -1
  186. package/dist/init/manifest/versions.js +24 -24
  187. package/dist/init/run-init.js +1 -1
  188. package/dist/init/run-init.js.map +1 -1
  189. package/dist/init/write-agent-settings.d.ts.map +1 -1
  190. package/dist/init/write-agent-settings.js +1 -0
  191. package/dist/init/write-agent-settings.js.map +1 -1
  192. package/dist/migration/drizzle-kit-bin.d.ts +3 -0
  193. package/dist/migration/drizzle-kit-bin.d.ts.map +1 -0
  194. package/dist/migration/drizzle-kit-bin.js +12 -0
  195. package/dist/migration/drizzle-kit-bin.js.map +1 -0
  196. package/dist/migration/drizzle-silent-failures.d.ts +9 -0
  197. package/dist/migration/drizzle-silent-failures.d.ts.map +1 -0
  198. package/dist/migration/drizzle-silent-failures.js +14 -0
  199. package/dist/migration/drizzle-silent-failures.js.map +1 -0
  200. package/dist/migration/generate-drizzle-migration.d.ts +15 -0
  201. package/dist/migration/generate-drizzle-migration.d.ts.map +1 -0
  202. package/dist/migration/generate-drizzle-migration.js +37 -0
  203. package/dist/migration/generate-drizzle-migration.js.map +1 -0
  204. package/dist/migration/index.d.ts +2 -0
  205. package/dist/migration/index.d.ts.map +1 -0
  206. package/dist/migration/index.js +2 -0
  207. package/dist/migration/index.js.map +1 -0
  208. package/dist/presets/preset-decision.js +2 -2
  209. package/dist/presets/preset-decision.js.map +1 -1
  210. package/dist/progress/read-slice-rules.d.ts +8 -0
  211. package/dist/progress/read-slice-rules.d.ts.map +1 -0
  212. package/dist/progress/read-slice-rules.js +20 -0
  213. package/dist/progress/read-slice-rules.js.map +1 -0
  214. package/dist/run.d.ts.map +1 -1
  215. package/dist/run.js +2 -0
  216. package/dist/run.js.map +1 -1
  217. package/dist/version.d.ts +1 -1
  218. package/dist/version.js +1 -1
  219. package/dist/worker/base-of.d.ts +8 -0
  220. package/dist/worker/base-of.d.ts.map +1 -0
  221. package/dist/worker/base-of.js +36 -0
  222. package/dist/worker/base-of.js.map +1 -0
  223. package/dist/worker/briefed-rows.d.ts +14 -0
  224. package/dist/worker/briefed-rows.d.ts.map +1 -0
  225. package/dist/worker/briefed-rows.js +53 -0
  226. package/dist/worker/briefed-rows.js.map +1 -0
  227. package/dist/worker/briefed-slice.d.ts +7 -0
  228. package/dist/worker/briefed-slice.d.ts.map +1 -0
  229. package/dist/worker/briefed-slice.js +2 -0
  230. package/dist/worker/briefed-slice.js.map +1 -0
  231. package/dist/worker/briefing-of.d.ts.map +1 -1
  232. package/dist/worker/briefing-of.js +7 -5
  233. package/dist/worker/briefing-of.js.map +1 -1
  234. package/dist/worker/ensure-contains-base.d.ts +6 -0
  235. package/dist/worker/ensure-contains-base.d.ts.map +1 -0
  236. package/dist/worker/ensure-contains-base.js +13 -0
  237. package/dist/worker/ensure-contains-base.js.map +1 -0
  238. package/dist/worker/open-worker-scope.d.ts +7 -3
  239. package/dist/worker/open-worker-scope.d.ts.map +1 -1
  240. package/dist/worker/open-worker-scope.js +33 -21
  241. package/dist/worker/open-worker-scope.js.map +1 -1
  242. package/dist/worker/worker-place.d.ts +2 -2
  243. package/dist/worker/worker-place.d.ts.map +1 -1
  244. package/dist/worker/worker-scope.d.ts +4 -4
  245. package/dist/worker/worker-scope.d.ts.map +1 -1
  246. package/package.json +3 -3
  247. package/templates/init/AGENTS.md.tpl +2 -2
  248. package/templates/init/README.md.tpl +1 -0
  249. package/templates/init/rules/application.md.tpl +2 -2
  250. package/templates/pipeline/package-scripts.json +1 -1
  251. package/templates/pipeline/vitest.config.ts.tpl +10 -1
  252. package/dist/generate/kinds/next-adr-number.d.ts +0 -4
  253. package/dist/generate/kinds/next-adr-number.d.ts.map +0 -1
  254. package/dist/generate/kinds/next-adr-number.js +0 -7
  255. package/dist/generate/kinds/next-adr-number.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"access-vars.js","sourceRoot":"","sources":["../../src/generate/access-vars.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access-vars.js","sourceRoot":"","sources":["../../src/generate/access-vars.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Scope } from './scope.js';
2
+ /**
3
+ * Who holds a new permission, in a project whose rights are roles. With `--grant <role>`, the role
4
+ * holds it in the roles of the platform, by the entry of the permission set: the role joins the
5
+ * role vocabulary when it is new. Without it, the next steps say the grant is left to do, since
6
+ * only the super-admin wildcard reaches the permission until then (rule authz/granted).
7
+ */
8
+ export declare function grantPermission(scope: Scope, permission: string): void;
9
+ //# sourceMappingURL=grant-permission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grant-permission.d.ts","sourceRoot":"","sources":["../../src/generate/grant-permission.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAOxC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAwCtE"}
@@ -0,0 +1,111 @@
1
+ import { specifierOf } from '../alias/index.js';
2
+ import { isGranted } from '../check/authz/is-granted.js';
3
+ import { scan } from '../check/scan/scan.js';
4
+ import { matchingBracket } from '../check/text/matching-bracket.js';
5
+ import { CliError } from '../cli-error.js';
6
+ import { fitStatement } from '../layout/index.js';
7
+ import { permissionsFile } from './permissions-file.js';
8
+ import { declareRole } from './vocabulary/declare-role.js';
9
+ import { withImport } from './with-import.js';
10
+ const ROLES = /export\s+const\s+roles\b[^=]*=\s*\{/;
11
+ const IMPORTS_ROLE = /import\s*\{[^}]*\bRole\b[^}]*\}\s*from/;
12
+ /**
13
+ * Who holds a new permission, in a project whose rights are roles. With `--grant <role>`, the role
14
+ * holds it in the roles of the platform, by the entry of the permission set: the role joins the
15
+ * role vocabulary when it is new. Without it, the next steps say the grant is left to do, since
16
+ * only the super-admin wildcard reaches the permission until then (rule authz/granted).
17
+ */
18
+ export function grantPermission(scope, permission) {
19
+ const role = scope.flags.grant;
20
+ const file = `${scope.config.platformDir}/auth/roles.ts`;
21
+ if (scope.config.stack.authz !== 'rbac') {
22
+ refuseGrantOutsideRoles(scope, role);
23
+ return;
24
+ }
25
+ const content = scope.ws.read(file);
26
+ const set = `${scope.context.camel}Permissions`;
27
+ const entry = `${set}['${permission}']`;
28
+ if (content === undefined) {
29
+ if (role !== undefined) {
30
+ throw new CliError(`--grant writes in ${file}, which this project does not have.`, 'Grant the permission where your project keeps its roles, then run the command again without --grant.');
31
+ }
32
+ return;
33
+ }
34
+ if (role === undefined) {
35
+ const holders = [content, scope.ws.read(`${scope.config.platformDir}/auth/signed-in-grants.ts`) ?? ''];
36
+ if (!holders.some((holder) => isGranted(scan(holder), { set, context: scope.context.kebab }, permission))) {
37
+ scope.ws.step({
38
+ file,
39
+ anchor: 'export const roles',
40
+ text: `grant ${entry} by name to the roles that hold it (or generate with --grant <role>): until then only the super-admin wildcard '*' reaches it (rule authz/granted).`,
41
+ });
42
+ }
43
+ return;
44
+ }
45
+ write(scope, { file, content, entry, set, role, permission });
46
+ }
47
+ function refuseGrantOutsideRoles(scope, role) {
48
+ if (role === undefined) {
49
+ return;
50
+ }
51
+ throw new CliError(`--grant writes a grant of the roles of the platform, and the rights of this project are not roles (stack.authz is "${scope.config.stack.authz}").`, 'Give the right in the model of the project (the attribute policies, a relationship, or the authorizer of the project), and run the command again without --grant.');
52
+ }
53
+ function write(scope, { file, content, entry, set, role, permission }) {
54
+ const declared = declareRole(scope, role);
55
+ const key = `[Role.${declared.key}]`;
56
+ const granted = withGrant(content, key, entry);
57
+ if (granted === undefined) {
58
+ throw new CliError(`${file} holds no \`export const roles = { ... }\` the generator can read.`, `Grant ${entry} to the role ${role} by hand, then run the command again without --grant.`);
59
+ }
60
+ const permissions = `${scope.config.contextsDir}/${scope.context.kebab}/${permissionsFile(scope.context)}`;
61
+ const withSet = new RegExp(`import\\s*\\{[^}]*\\b${set}\\b`).test(granted)
62
+ ? granted
63
+ : withImport(granted, `import { ${set} } from '${specifierOf(scope.config, permissions)}';`);
64
+ const next = IMPORTS_ROLE.test(withSet)
65
+ ? withSet
66
+ : withImport(withSet, `import { Role } from '${declared.specifier}';`);
67
+ scope.ws.update(file, next);
68
+ scope.ws.step({
69
+ file,
70
+ anchor: key,
71
+ text: `check this grant: the role ${role} now holds ${scope.context.kebab}:${permission}.`,
72
+ });
73
+ }
74
+ /** The roles with the entry granted to the role of the key: in its list when it has one, else on a line of its own before the role of system actors or at the end. */
75
+ function withGrant(content, key, entry) {
76
+ const found = ROLES.exec(content);
77
+ if (found === null) {
78
+ return undefined;
79
+ }
80
+ const open = found.index + found[0].length - 1;
81
+ const close = matchingBracket(content, open);
82
+ const at = content.indexOf(key, open);
83
+ if (at !== -1 && at < close) {
84
+ return inList(content, content.indexOf('[', at + key.length), entry);
85
+ }
86
+ const system = content.indexOf('[Role.System]', open);
87
+ const before = system !== -1 && system < close ? content.lastIndexOf('\n', system) + 1 : content.lastIndexOf('\n', close) + 1;
88
+ const indent = /^[ \t]*/.exec(content.slice(before))?.[0] || ' ';
89
+ return `${content.slice(0, before)}${fitStatement(`${key}: [${entry}],`, indent).join('\n')}\n${content.slice(before)}`;
90
+ }
91
+ /** The list with the entry last: on a line of its own when the list already takes several, else on its line, laid out again when it no longer fits. */
92
+ function inList(content, open, entry) {
93
+ const close = matchingBracket(content, open);
94
+ const inside = content.slice(open + 1, close);
95
+ if (inside.includes(entry)) {
96
+ return content;
97
+ }
98
+ if (inside.includes('\n')) {
99
+ const closeLine = content.lastIndexOf('\n', close) + 1;
100
+ const indent = /^[ \t]*/.exec(content.slice(closeLine))?.[0] ?? '';
101
+ return `${content.slice(0, closeLine)}${indent} ${entry},\n${content.slice(closeLine)}`;
102
+ }
103
+ const items = inside.trim().replace(/,\s*$/, '');
104
+ const lineStart = content.lastIndexOf('\n', open) + 1;
105
+ const lineEnd = content.indexOf('\n', close);
106
+ const end = lineEnd === -1 ? content.length : lineEnd;
107
+ const indent = /^[ \t]*/.exec(content.slice(lineStart))?.[0] ?? '';
108
+ const line = `${content.slice(lineStart, open + 1)}${items === '' ? entry : `${items}, ${entry}`}${content.slice(close, end)}`;
109
+ return `${content.slice(0, lineStart)}${fitStatement(line.trim(), indent).join('\n')}${content.slice(end)}`;
110
+ }
111
+ //# sourceMappingURL=grant-permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grant-permission.js","sourceRoot":"","sources":["../../src/generate/grant-permission.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,8 @@ export interface KindFlags {
29
29
  readonly allowName: boolean;
30
30
  /** The permission a use case requires, as `<aggregate>.<action>`. */
31
31
  readonly permission?: string;
32
+ /** The role that holds the new permission, written in the roles of the platform. */
33
+ readonly grant?: string;
32
34
  /** The use case is reachable by anybody, on purpose. */
33
35
  readonly public: boolean;
34
36
  readonly tenantScoped: boolean;
@@ -41,6 +43,8 @@ export interface KindFlags {
41
43
  /** What an ADR deviates from, as a config key such as `rules.clean/stepdown`. */
42
44
  readonly deviation?: string;
43
45
  readonly reason?: string;
46
+ /** The number of a decision record, as `--number <n>`, when the project numbers by block. */
47
+ readonly number?: string;
44
48
  /** When a domain event handler runs: `before-commit`, the default, or `after-commit`. */
45
49
  readonly phase?: string;
46
50
  /** The route group of a controller, or the parent of a group, by its name. */
@@ -1 +1 @@
1
- {"version":3,"file":"kind.d.ts","sourceRoot":"","sources":["../../src/generate/kind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kind.d.ts","sourceRoot":"","sources":["../../src/generate/kind.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"adr-kind.d.ts","sourceRoot":"","sources":["../../../src/generate/kinds/adr-kind.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,eAAO,MAAM,OAAO,EAAE,IAgBrB,CAAC"}
1
+ {"version":3,"file":"adr-kind.d.ts","sourceRoot":"","sources":["../../../src/generate/kinds/adr-kind.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,eAAO,MAAM,OAAO,EAAE,IAsBrB,CAAC"}
@@ -3,14 +3,18 @@ import { writeAdr } from './write-adr.js';
3
3
  export const adrKind = {
4
4
  name: 'adr',
5
5
  aliases: [],
6
- usage: 'adr "<title>" [--deviation <what>] [--reason "<why>"]',
7
- summary: 'A decision record in docs/adr/; with --deviation, the entry of the config that points to it.',
6
+ usage: 'adr "<title>" [--number <n>] [--deviation <what>] [--reason "<why>"]',
7
+ summary: 'A decision record in docs/adr/, numbered after the highest or by --number; with --deviation, the entry of the config that points to it.',
8
8
  positionals: ['title'],
9
9
  writesShared: true,
10
10
  run: ({ ws, args, flags }) => {
11
11
  const title = (args[0] ?? '').trim();
12
- const { deviation: what, reason = title } = flags;
13
- const number = writeAdr(ws, { title, ...(what === undefined ? {} : { deviation: { what, reason } }) });
12
+ const { deviation: what, reason = title, number: asked } = flags;
13
+ const number = writeAdr(ws, {
14
+ title,
15
+ ...(asked === undefined ? {} : { number: asked }),
16
+ ...(what === undefined ? {} : { deviation: { what, reason } }),
17
+ });
14
18
  if (what !== undefined) {
15
19
  declareDeviation(ws, { what, adr: number, reason });
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adr-kind.js","sourceRoot":"","sources":["../../../src/generate/kinds/adr-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAkB,MAAM,uBAAuB,CAAC;AAGpF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,MAAM,OAAO,GAAS;IAC3B,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,uDAAuD;IAC9D,OAAO,EAAE,8FAA8F;IACvG,WAAW,EAAE,CAAC,OAAO,CAAC;IACtB,YAAY,EAAE,IAAI;IAClB,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;QAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAEvG,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF,CAAC;AAEF,SAAS,gBAAgB,CAAC,EAAa,EAAE,SAAoB;IAC3D,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAElC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,EAAE,CAAC,MAAM,CACP,WAAW,EACX,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAc,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAErF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"adr-kind.js","sourceRoot":"","sources":["../../../src/generate/kinds/adr-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAkB,MAAM,uBAAuB,CAAC;AAGpF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,MAAM,OAAO,GAAS;IAC3B,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,sEAAsE;IAC7E,OAAO,EACL,yIAAyI;IAC3I,WAAW,EAAE,CAAC,OAAO,CAAC;IACtB,YAAY,EAAE,IAAI;IAClB,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QAEjE,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE;YAC1B,KAAK;YACL,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;SAC/D,CAAC,CAAC;QAEH,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF,CAAC;AAEF,SAAS,gBAAgB,CAAC,EAAa,EAAE,SAAoB;IAC3D,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAElC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,EAAE,CAAC,MAAM,CACP,WAAW,EACX,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAc,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAErF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Workspace } from '../../workspace/index.js';
2
+ /**
3
+ * The number of the new decision record of the project, on four digits: the one asked with
4
+ * `--number`, when it is free in `docs/adr/`, otherwise one after the highest. Teams that work in
5
+ * parallel number by block (`0401`, `0701`), so the highest plus one is not theirs to take.
6
+ */
7
+ export declare function adrNumber(ws: Workspace, asked: string | undefined): string;
8
+ //# sourceMappingURL=adr-number.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-number.d.ts","sourceRoot":"","sources":["../../../src/generate/kinds/adr-number.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAwB1E"}
@@ -0,0 +1,25 @@
1
+ import { ADR_DIRECTORY } from '../../check/governance/adr-directory.js';
2
+ import { CliError } from '../../cli-error.js';
3
+ /**
4
+ * The number of the new decision record of the project, on four digits: the one asked with
5
+ * `--number`, when it is free in `docs/adr/`, otherwise one after the highest. Teams that work in
6
+ * parallel number by block (`0401`, `0701`), so the highest plus one is not theirs to take.
7
+ */
8
+ export function adrNumber(ws, asked) {
9
+ const taken = ws.list(ADR_DIRECTORY).map((file) => Number(/^(\d+)-/.exec(file)?.[1] ?? '0'));
10
+ if (asked === undefined) {
11
+ return padded(Math.max(0, ...taken) + 1);
12
+ }
13
+ const number = Number(asked);
14
+ if (!/^\d+$/.test(asked) || number === 0) {
15
+ throw new CliError(`--number ${asked} is not the number of a decision record.`, 'Pass a positive whole number, for example --number 401: it is written on four digits, 0401.');
16
+ }
17
+ if (taken.includes(number)) {
18
+ throw new CliError(`ADR-${padded(number)} already exists in ${ADR_DIRECTORY}/.`, 'Pass a free number with --number, or leave it out to take the one after the highest.');
19
+ }
20
+ return padded(number);
21
+ }
22
+ function padded(number) {
23
+ return String(number).padStart(4, '0');
24
+ }
25
+ //# sourceMappingURL=adr-number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-number.js","sourceRoot":"","sources":["../../../src/generate/kinds/adr-number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,EAAa,EAAE,KAAyB;IAChE,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAE7F,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,QAAQ,CAChB,YAAY,KAAK,0CAA0C,EAC3D,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAChB,OAAO,MAAM,CAAC,MAAM,CAAC,sBAAsB,aAAa,IAAI,EAC5D,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,MAAM,CAAC,MAAc;IAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC"}
@@ -11,7 +11,7 @@ import { generateRepository } from './generate-repository.js';
11
11
  export const commandKind = {
12
12
  name: 'command',
13
13
  aliases: [],
14
- usage: 'command <context> <UseCaseName> (--permission <aggregate>.<action> | --public) [--aggregate <Name>] [--term "<Term>=<meaning>"]...',
14
+ usage: 'command <context> <UseCaseName> (--permission <aggregate>.<action> [--grant <role>] | --public) [--aggregate <Name>] [--term "<Term>=<meaning>"]...',
15
15
  summary: 'A command, its handler with injected ports, its spec and its registration on the command bus.',
16
16
  positionals: ['context', 'UseCaseName'],
17
17
  writesShared: true,
@@ -1 +1 @@
1
- {"version":3,"file":"command-kind.js","sourceRoot":"","sources":["../../../src/generate/kinds/command-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,EAAE;IACX,KAAK,EACH,oIAAoI;IACtI,OAAO,EAAE,+FAA+F;IACxG,WAAW,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;IACvC,YAAY,EAAE,IAAI;IAClB,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAEjC,UAAU,CAAC,KAAK,CAAC,CAAC;QAElB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAExG,MAAM,SAAS,GACb,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAExG,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QAEnC,MAAM,OAAO,GAAG,cAAc,CAC5B,KAAK,EACL,EAAE,IAAI,EAAE,SAAS,EAAE,EACnB,UAAU,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAC/D,CAAC;QAEF,IACE,SAAS,KAAK,SAAS;YACvB,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,wBAAwB,SAAS,CAAC,KAAK,gBAAgB,CAAC,EACrF,CAAC;YACD,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"command-kind.js","sourceRoot":"","sources":["../../../src/generate/kinds/command-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,EAAE;IACX,KAAK,EACH,qJAAqJ;IACvJ,OAAO,EAAE,+FAA+F;IACxG,WAAW,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;IACvC,YAAY,EAAE,IAAI;IAClB,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAEjC,UAAU,CAAC,KAAK,CAAC,CAAC;QAElB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAExG,MAAM,SAAS,GACb,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAExG,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QAEnC,MAAM,OAAO,GAAG,cAAc,CAC5B,KAAK,EACL,EAAE,IAAI,EAAE,SAAS,EAAE,EACnB,UAAU,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAC/D,CAAC;QAEF,IACE,SAAS,KAAK,SAAS;YACvB,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,wBAAwB,SAAS,CAAC,KAAK,gBAAgB,CAAC,EACrF,CAAC;YACD,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;CACF,CAAC"}
@@ -16,10 +16,10 @@ import { planController } from './route/plan-controller.js';
16
16
  export const fileUploadKind = {
17
17
  name: 'file-upload',
18
18
  aliases: [],
19
- usage: 'file-upload <context> <UseCaseName> --path <path> (--permission <aggregate>.<action> | --public) [--method <POST|PUT>] [--group <Name>]',
19
+ usage: 'file-upload <context> <UseCaseName> --path <path> (--permission <aggregate>.<action> [--grant <role>] | --public) [--method <POST|PUT>] [--group <Name>]',
20
20
  summary: 'An upload: a controller that declares the file it receives (size and media types in the contract, checked as it streams), the command that carries it as a FileUpload (staged by the command bus before the transaction), the handler that records it and promotes it with the commit, and their specs. Needs "stack.storage".',
21
21
  positionals: ['context', 'UseCaseName'],
22
- writesShared: false,
22
+ writesShared: true,
23
23
  run: (request) => {
24
24
  const scope = openScope(request);
25
25
  assertFileStack(scope);
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload-kind.js","sourceRoot":"","sources":["../../../src/generate/kinds/file-upload-kind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-upload-kind.js","sourceRoot":"","sources":["../../../src/generate/kinds/file-upload-kind.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,10 @@ import { queryOutputs } from './query-outputs.js';
11
11
  export const queryKind = {
12
12
  name: 'query',
13
13
  aliases: [],
14
- usage: 'query <context> <UseCaseName> (--permission <aggregate>.<action> | --public) [--search] [--term "<Term>=<meaning>"]...',
14
+ usage: 'query <context> <UseCaseName> (--permission <aggregate>.<action> [--grant <role>] | --public) [--search] [--term "<Term>=<meaning>"]...',
15
15
  summary: 'A query, its result, its handler, its read port with an in-memory adapter and a fake, its spec and its registration on the query bus; with --search, one page of a search filtered by the access scope of the actor.',
16
16
  positionals: ['context', 'UseCaseName'],
17
- writesShared: false,
17
+ writesShared: true,
18
18
  run: (request) => {
19
19
  const scope = openScope(request);
20
20
  learnTerms(scope);
@@ -1 +1 @@
1
- {"version":3,"file":"query-kind.js","sourceRoot":"","sources":["../../../src/generate/kinds/query-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAErE,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,EAAE;IACX,KAAK,EACH,wHAAwH;IAC1H,OAAO,EACL,sNAAsN;IACxN,WAAW,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;IACvC,YAAY,EAAE,KAAK;IACnB,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAEjC,UAAU,CAAC,KAAK,CAAC,CAAC;QAElB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QACtG,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QACnC,MAAM,UAAU,GAAG,OAAO,KAAK,EAAE,IAAI,UAAU,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACpG,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEhE,mHAAmH;QACnH,IAAI,OAAO,KAAK,EAAE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC/C,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,iIAAiI;AACjI,SAAS,YAAY,CAAC,KAAY;IAChC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,QAAQ,CAChB,4CAA4C,EAC5C,6LAA6L,CAC9L,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"query-kind.js","sourceRoot":"","sources":["../../../src/generate/kinds/query-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAErE,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,EAAE;IACX,KAAK,EACH,yIAAyI;IAC3I,OAAO,EACL,sNAAsN;IACxN,WAAW,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;IACvC,YAAY,EAAE,IAAI;IAClB,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAEjC,UAAU,CAAC,KAAK,CAAC,CAAC;QAElB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QACtG,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QACnC,MAAM,UAAU,GAAG,OAAO,KAAK,EAAE,IAAI,UAAU,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACpG,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEhE,mHAAmH;QACnH,IAAI,OAAO,KAAK,EAAE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC/C,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,iIAAiI;AACjI,SAAS,YAAY,CAAC,KAAY;IAChC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,QAAQ,CAChB,4CAA4C,EAC5C,6LAA6L,CAC9L,CAAC;AACJ,CAAC"}
@@ -4,7 +4,9 @@ export interface AdrRequest {
4
4
  readonly title: string;
5
5
  /** What the decision relaxes, as the key the config names it by, and why. */
6
6
  readonly deviation?: Pick<Deviation, 'what' | 'reason'>;
7
+ /** The number asked with `--number`; by default, one after the highest in `docs/adr/`. */
8
+ readonly number?: string;
7
9
  }
8
- /** Writes the record under the next free number and answers that number. */
10
+ /** Writes the record under the number asked, or the next free one, and answers that number. */
9
11
  export declare function writeAdr(ws: Workspace, request: AdrRequest): string;
10
12
  //# sourceMappingURL=write-adr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"write-adr.d.ts","sourceRoot":"","sources":["../../../src/generate/kinds/write-adr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAI1D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;CACzD;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAyBnE"}
1
+ {"version":3,"file":"write-adr.d.ts","sourceRoot":"","sources":["../../../src/generate/kinds/write-adr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAI1D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IACxD,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAyBnE"}
@@ -2,14 +2,14 @@ import { CliError } from '../../cli-error.js';
2
2
  import { toName } from '../../naming/index.js';
3
3
  import { renderTemplate } from '../../templating/index.js';
4
4
  import { ADR_DIRECTORY } from '../../check/governance/adr-directory.js';
5
- import { nextAdrNumber } from './next-adr-number.js';
6
- /** Writes the record under the next free number and answers that number. */
5
+ import { adrNumber } from './adr-number.js';
6
+ /** Writes the record under the number asked, or the next free one, and answers that number. */
7
7
  export function writeAdr(ws, request) {
8
8
  const slug = toName(request.title).kebab;
9
9
  if (slug === '') {
10
10
  throw new CliError('A decision record needs a title.', 'Pass it as the first argument, for example: ddd-ts-kit generate adr "Read the catalog without a gateway".');
11
11
  }
12
- const number = nextAdrNumber(ws);
12
+ const number = adrNumber(ws, request.number);
13
13
  const { deviation } = request;
14
14
  const adr = {
15
15
  number,
@@ -1 +1 @@
1
- {"version":3,"file":"write-adr.js","sourceRoot":"","sources":["../../../src/generate/kinds/write-adr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAQrD,4EAA4E;AAC5E,MAAM,UAAU,QAAQ,CAAC,EAAa,EAAE,OAAmB;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IAEzC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,QAAQ,CAChB,kCAAkC,EAClC,2GAA2G,CAC5G,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE9B,MAAM,GAAG,GAAG;QACV,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,KAAK,EAAE;QACb,SAAS,EAAE,SAAS,KAAK,SAAS;QAClC,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE;QAC3B,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,EAAE;KAChC,CAAC;IAEF,EAAE,CAAC,MAAM,CAAC,GAAG,aAAa,IAAI,MAAM,IAAI,IAAI,KAAK,EAAE,cAAc,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAE9F,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"write-adr.js","sourceRoot":"","sources":["../../../src/generate/kinds/write-adr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAU5C,+FAA+F;AAC/F,MAAM,UAAU,QAAQ,CAAC,EAAa,EAAE,OAAmB;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IAEzC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,QAAQ,CAChB,kCAAkC,EAClC,2GAA2G,CAC5G,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE9B,MAAM,GAAG,GAAG;QACV,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,KAAK,EAAE;QACb,SAAS,EAAE,SAAS,KAAK,SAAS;QAClC,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE;QAC3B,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,EAAE;KAChC,CAAC;IAEF,EAAE,CAAC,MAAM,CAAC,GAAG,aAAa,IAAI,MAAM,IAAI,IAAI,KAAK,EAAE,cAAc,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAE9F,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shared-writes.d.ts","sourceRoot":"","sources":["../../src/generate/shared-writes.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAOD,uJAAuJ;AACvJ,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAqE/D,CAAC"}
1
+ {"version":3,"file":"shared-writes.d.ts","sourceRoot":"","sources":["../../src/generate/shared-writes.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAcD,uJAAuJ;AACvJ,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAuE/D,CAAC"}
@@ -1,4 +1,9 @@
1
1
  const STORAGE = ['the schema index of the platform (<platformDir>/database/schema.ts)', 'prisma/schema.prisma'];
2
+ const GRANTS = [
3
+ 'the roles of the platform (<platformDir>/auth/roles.ts)',
4
+ 'the role vocabulary of the platform (<platformDir>/auth/role.ts)',
5
+ ];
6
+ const GRANTED = '--grant <role> names the role that holds the permission (stack.authz rbac)';
2
7
  const STORED = 'the repository is the first of its context with drizzle, knex or typeorm (the tables file of the context joins the schema index), or stack.orm is prisma (every model joins the one schema)';
3
8
  /** One entry per kind whose `writesShared` is true: `--local-only` refuses those writes, the conductor of a parallel build makes them on the trunk. */
4
9
  export const SHARED_WRITES = {
@@ -16,10 +21,12 @@ export const SHARED_WRITES = {
16
21
  },
17
22
  repository: { files: STORAGE, when: STORED },
18
23
  command: {
19
- files: STORAGE,
20
- when: `--aggregate names an aggregate without a repository, which is created with the command, and ${STORED}`,
21
- worker: 'on an aggregate that has its repository',
24
+ files: [...STORAGE, ...GRANTS],
25
+ when: `--aggregate names an aggregate without a repository, which is created with the command, and ${STORED}; or ${GRANTED}`,
26
+ worker: 'on an aggregate that has its repository, without --grant',
22
27
  },
28
+ query: { files: GRANTS, when: GRANTED, worker: 'without --grant' },
29
+ 'file-upload': { files: GRANTS, when: GRANTED, worker: 'without --grant' },
23
30
  'integration-event': {
24
31
  files: ['the audited events registry (<platformDir>/audit/audited-events.ts)', 'docs/context-map.md'],
25
32
  when: 'the audit trail is wired, or the event type is new',
@@ -1 +1 @@
1
- {"version":3,"file":"shared-writes.js","sourceRoot":"","sources":["../../src/generate/shared-writes.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,GAAG,CAAC,qEAAqE,EAAE,sBAAsB,CAAC,CAAC;AAEhH,MAAM,MAAM,GACV,6LAA6L,CAAC;AAEhM,uJAAuJ;AACvJ,MAAM,CAAC,MAAM,aAAa,GAA0C;IAClE,OAAO,EAAE;QACP,KAAK,EAAE;YACL,wBAAwB;YACxB,6DAA6D;YAC7D,uCAAuC;YACvC,8DAA8D;YAC9D,iCAAiC;YACjC,qBAAqB;YACrB,yBAAyB;YACzB,+BAA+B;SAChC;KACF;IACD,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,OAAO,EAAE;QACP,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,+FAA+F,MAAM,EAAE;QAC7G,MAAM,EAAE,yCAAyC;KAClD;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,CAAC,qEAAqE,EAAE,qBAAqB,CAAC;QACrG,IAAI,EAAE,oDAAoD;KAC3D;IACD,OAAO,EAAE;QACP,KAAK,EAAE,CAAC,wCAAwC,CAAC;QACjD,IAAI,EAAE,iHAAiH;QACvH,MAAM,EAAE,wCAAwC;KACjD;IACD,aAAa,EAAE;QACb,KAAK,EAAE,CAAC,kEAAkE,CAAC;QAC3E,IAAI,EAAE,sDAAsD;QAC5D,MAAM,EAAE,6DAA6D;KACtE;IACD,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,+BAA+B,EAAE,qDAAqD,CAAC,EAAE;IACxG,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,sEAAsE,CAAC;QAC/E,IAAI,EAAE,yBAAyB;KAChC;IACD,OAAO,EAAE;QACP,KAAK,EAAE;YACL,2EAA2E;YAC3E,+EAA+E;SAChF;KACF;IACD,OAAO,EAAE;QACP,KAAK,EAAE;YACL,qCAAqC;YACrC,cAAc;YACd,WAAW;YACX,wBAAwB;YACxB,oBAAoB;YACpB,qBAAqB;SACtB;KACF;IACD,MAAM,EAAE;QACN,KAAK,EAAE;YACL,kCAAkC;YAClC,cAAc;YACd,wBAAwB;YACxB,oBAAoB;YACpB,qCAAqC;SACtC;KACF;IACD,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,2CAA2C,CAAC,EAAE;IAC1E,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,iDAAiD,CAAC;QAC1D,IAAI,EAAE,4EAA4E;QAClF,MAAM,EAAE,sDAAsD;KAC/D;CACF,CAAC"}
1
+ {"version":3,"file":"shared-writes.js","sourceRoot":"","sources":["../../src/generate/shared-writes.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,GAAG,CAAC,qEAAqE,EAAE,sBAAsB,CAAC,CAAC;AAEhH,MAAM,MAAM,GAAG;IACb,yDAAyD;IACzD,kEAAkE;CACnE,CAAC;AAEF,MAAM,OAAO,GAAG,4EAA4E,CAAC;AAE7F,MAAM,MAAM,GACV,6LAA6L,CAAC;AAEhM,uJAAuJ;AACvJ,MAAM,CAAC,MAAM,aAAa,GAA0C;IAClE,OAAO,EAAE;QACP,KAAK,EAAE;YACL,wBAAwB;YACxB,6DAA6D;YAC7D,uCAAuC;YACvC,8DAA8D;YAC9D,iCAAiC;YACjC,qBAAqB;YACrB,yBAAyB;YACzB,+BAA+B;SAChC;KACF;IACD,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,OAAO,EAAE;QACP,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,+FAA+F,MAAM,QAAQ,OAAO,EAAE;QAC5H,MAAM,EAAE,0DAA0D;KACnE;IACD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE;IAClE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE;IAC1E,mBAAmB,EAAE;QACnB,KAAK,EAAE,CAAC,qEAAqE,EAAE,qBAAqB,CAAC;QACrG,IAAI,EAAE,oDAAoD;KAC3D;IACD,OAAO,EAAE;QACP,KAAK,EAAE,CAAC,wCAAwC,CAAC;QACjD,IAAI,EAAE,iHAAiH;QACvH,MAAM,EAAE,wCAAwC;KACjD;IACD,aAAa,EAAE;QACb,KAAK,EAAE,CAAC,kEAAkE,CAAC;QAC3E,IAAI,EAAE,sDAAsD;QAC5D,MAAM,EAAE,6DAA6D;KACtE;IACD,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,+BAA+B,EAAE,qDAAqD,CAAC,EAAE;IACxG,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,sEAAsE,CAAC;QAC/E,IAAI,EAAE,yBAAyB;KAChC;IACD,OAAO,EAAE;QACP,KAAK,EAAE;YACL,2EAA2E;YAC3E,+EAA+E;SAChF;KACF;IACD,OAAO,EAAE;QACP,KAAK,EAAE;YACL,qCAAqC;YACrC,cAAc;YACd,WAAW;YACX,wBAAwB;YACxB,oBAAoB;YACpB,qBAAqB;SACtB;KACF;IACD,MAAM,EAAE;QACN,KAAK,EAAE;YACL,kCAAkC;YAClC,cAAc;YACd,wBAAwB;YACxB,oBAAoB;YACpB,qCAAqC;SACtC;KACF;IACD,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,2CAA2C,CAAC,EAAE;IAC1E,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,iDAAiD,CAAC;QAC1D,IAAI,EAAE,4EAA4E;QAClF,MAAM,EAAE,sDAAsD;KAC/D;CACF,CAAC"}
@@ -1,3 +1,3 @@
1
1
  /** What a line of the usage cannot say about a command or a flag. */
2
- export declare const NOTES = " affected what a pull request has to run: the contexts a change set reaches through the context\n map (a changed context and the contexts downstream of it), as filters for the test\n runner and the linter; everything when a shared path changed or without --base\n build-aliases after the compiler: rewrites the import aliases left in the emitted .js and .d.ts files\n into relative paths, so that plain node runs the output (tsconfig.build.json by default)\n error-factories moves a project from one class per error to static factories on one error class per\n concept: --plan writes error-factories.plan.json, where each class is given its concept;\n --apply follows it (classes, specs, every usage, \"stack.refusals\" in the config)\n value-objects moves the value objects of a project from a Result to factories that return the value or\n throw: every create returning Result<T, E> returns T, err(..) is thrown, unwrap(..) of\n them goes, specs assert expectRefusal(() => ..), \"stack.valueObjects\" becomes throwing\n controllers moves the function routes of a project, or of one context, to controller classes: each\n <name>.route.ts becomes <resource>/<name>/<name>.controller.ts behind the route group of\n its resource, its schema files and its spec follow; a context is turned whole or not at all\n describe one context as facts: use cases, routes, events, ports, policies, gateways, dependencies\n status the next step of docs/architecture/plan.md, the slices of docs/architecture/slices.md by\n status and by owner, and the TODO(domain), TODO(platform) and it.todo left in each context\n sdk the typed client of each document of the contract, a workspace package under\n clients/<document> without runtime dependency: typed errors keyed by the error codes,\n credentials per security scheme; records \"sdk\" in the config the first time, wires the\n scripts (docs:generate regenerates it, docs:check compares it, ci:build builds it);\n --check writes nothing and exits 1 while a client differs from its contract\n todo those markers as file:line, in the project or in one context\n worker-scope a git worktree on the branch build/<context> (by default ../<project>-<context>), its\n .ddd-ts-kit/worker.json, and the briefing of the worker of that context\n --commit-size the files and lines about to be committed against \"commit\" in the config (20 files and\n 600 lines by default, generated files not counted); --staged reads the index only;\n advisory, --strict exits 1 when over\n --stored-events docs records the shape of each version of the stored events in stored-events.lock.json,\n never rewriting a recorded one: run it once the shape of a version is the one to store;\n docs --check fails while a declared version is not recorded\n --sdk init records \"sdk\" in the config and generates the clients with the project\n --local-only generate refuses, and writes nothing, when the kind would write outside its context;\n \"generate --help --json\" says which kinds do";
2
+ export declare const NOTES = " affected what a pull request has to run: the contexts a change set reaches through the context\n map (a changed context and the contexts downstream of it), as filters for the test\n runner and the linter; everything when a shared path changed or without --base\n build-aliases after the compiler: rewrites the import aliases left in the emitted .js and .d.ts files\n into relative paths, so that plain node runs the output (tsconfig.build.json by default)\n drizzle-generate the db:generate of a Drizzle project: drizzle-kit generate --name, which without a terminal\n fails and names the fix when drizzle-kit would ask whether a column or table is renamed,\n where drizzle-kit alone writes nothing and exits 0\n error-factories moves a project from one class per error to static factories on one error class per\n concept: --plan writes error-factories.plan.json, where each class is given its concept;\n --apply follows it (classes, specs, every usage, \"stack.refusals\" in the config)\n value-objects moves the value objects of a project from a Result to factories that return the value or\n throw: every create returning Result<T, E> returns T, err(..) is thrown, unwrap(..) of\n them goes, specs assert expectRefusal(() => ..), \"stack.valueObjects\" becomes throwing\n controllers moves the function routes of a project, or of one context, to controller classes: each\n <name>.route.ts becomes <resource>/<name>/<name>.controller.ts behind the route group of\n its resource, its schema files and its spec follow; a context is turned whole or not at all\n describe one context as facts: use cases, routes, events, ports, policies, gateways, dependencies\n status the next step of docs/architecture/plan.md, the slices of docs/architecture/slices.md by\n status and by owner, and the TODO(domain), TODO(platform) and it.todo left in each context\n sdk the typed client of each document of the contract, a workspace package under\n clients/<document> without runtime dependency: typed errors keyed by the error codes,\n credentials per security scheme; records \"sdk\" in the config the first time, wires the\n scripts (docs:generate regenerates it, docs:check compares it, ci:build builds it);\n --check writes nothing and exits 1 while a client differs from its contract\n todo those markers as file:line, in the project or in one context\n worker-scope a git worktree on the branch build/<context> (by default ../<project>-<context>), cut from\n --base <ref> (by default the current branch, refused from a worker's worktree), its\n .ddd-ts-kit/worker.json, and the briefing of the worker of that context; --rows <id,...>\n briefs those rows of slices.md only, with their rules; an existing worktree or branch\n that does not contain the base is refused\n --commit-size the files and lines about to be committed against \"commit\" in the config (20 files and\n 600 lines by default, generated files not counted); --staged reads the index only;\n advisory, --strict exits 1 when over\n --stored-events docs records the shape of each version of the stored events in stored-events.lock.json,\n never rewriting a recorded one: run it once the shape of a version is the one to store;\n docs --check fails while a declared version is not recorded\n --sdk init records \"sdk\" in the config and generates the clients with the project\n --local-only generate refuses, and writes nothing, when the kind would write outside its context;\n \"generate --help --json\" says which kinds do";
3
3
  //# sourceMappingURL=notes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../src/help/notes.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,eAAO,MAAM,KAAK,43GAiC8C,CAAC"}
1
+ {"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../src/help/notes.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,eAAO,MAAM,KAAK,s8HAuC8C,CAAC"}
@@ -4,6 +4,9 @@ export const NOTES = ` affected what a pull request has to run: the con
4
4
  runner and the linter; everything when a shared path changed or without --base
5
5
  build-aliases after the compiler: rewrites the import aliases left in the emitted .js and .d.ts files
6
6
  into relative paths, so that plain node runs the output (tsconfig.build.json by default)
7
+ drizzle-generate the db:generate of a Drizzle project: drizzle-kit generate --name, which without a terminal
8
+ fails and names the fix when drizzle-kit would ask whether a column or table is renamed,
9
+ where drizzle-kit alone writes nothing and exits 0
7
10
  error-factories moves a project from one class per error to static factories on one error class per
8
11
  concept: --plan writes error-factories.plan.json, where each class is given its concept;
9
12
  --apply follows it (classes, specs, every usage, "stack.refusals" in the config)
@@ -22,8 +25,11 @@ export const NOTES = ` affected what a pull request has to run: the con
22
25
  scripts (docs:generate regenerates it, docs:check compares it, ci:build builds it);
23
26
  --check writes nothing and exits 1 while a client differs from its contract
24
27
  todo those markers as file:line, in the project or in one context
25
- worker-scope a git worktree on the branch build/<context> (by default ../<project>-<context>), its
26
- .ddd-ts-kit/worker.json, and the briefing of the worker of that context
28
+ worker-scope a git worktree on the branch build/<context> (by default ../<project>-<context>), cut from
29
+ --base <ref> (by default the current branch, refused from a worker's worktree), its
30
+ .ddd-ts-kit/worker.json, and the briefing of the worker of that context; --rows <id,...>
31
+ briefs those rows of slices.md only, with their rules; an existing worktree or branch
32
+ that does not contain the base is refused
27
33
  --commit-size the files and lines about to be committed against "commit" in the config (20 files and
28
34
  600 lines by default, generated files not counted); --staged reads the index only;
29
35
  advisory, --strict exits 1 when over
@@ -1 +1 @@
1
- {"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/help/notes.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAiC2C,CAAC"}
1
+ {"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/help/notes.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAuC2C,CAAC"}
@@ -1,3 +1,3 @@
1
1
  /** Every command of the CLI and its flags, as `--help` prints them and docs/guides/commands.md shows them. */
2
- export declare const USAGE = "Usage\n ddd-ts-kit init [--http express|fastify|hono|nest|none]\n [--validation zod|class-validator|typebox|standard-schema|none]\n [--di tsyringe|nest|manual] [--tests vitest|jest]\n [--orm drizzle|knex|prisma|typeorm|custom|none] [--database postgres|mysql|sqlite|none]\n [--events in-memory|outbox] [--docs-ui swagger|scalar|redoc|none]\n [--ci github|gitlab|both|none] [--ci-extras <extra>,...|none]\n [--authn jwt|keycloak|none] [--authz rbac|abac|rebac|custom]\n [--broker none|rabbitmq|kafka|nats|redis|custom] [--cache none|redis] [--http-cache none|varnish]\n [--storage local|s3|none]\n [--audit on|off]\n [--errors none|sentry] [--logger stdout|pino|winston] [--style declared|explicit] [--assembly barrel|discovery]\n [--dependencies signature|listed] [--refusals factories|classes]\n [--routes controllers|functions] [--representations negotiated|json] [--forms on|off]\n [--value-objects throwing|result] [--literals named|free] [--values classes|free] [--tenancy none|shared-table] [--queue database|redis|memory]\n [--schemas shared|per-route]\n [--package-manager npm|pnpm] [--allow-no-outbox \"<reason>\"] [--import-alias '$<name>/']\n [--import-extension none|js] [--sdk]\n [--context <name>:<core|supporting|generic>]... [--preset identity]... [--dry-run] [--force]\n ddd-ts-kit generate <kind> ... [--term \"<Term>=<meaning>\"]... [--allow-name] [--local-only] [--dry-run] [--force] (alias: g)\n ddd-ts-kit generate --help --json\n ddd-ts-kit list [--context <name>]\n ddd-ts-kit describe <context>\n ddd-ts-kit status\n ddd-ts-kit todo [<context>]\n ddd-ts-kit worker-scope <context> [--worktree <path>] [--branch <name>] [--dry-run]\n ddd-ts-kit docs [--check] [--stored-events]\n ddd-ts-kit sdk [--check] [--dry-run]\n ddd-ts-kit depcruise-config [--check|--write]\n ddd-ts-kit build-aliases [--project <tsconfig>]\n ddd-ts-kit error-factories --plan | --apply [--dry-run]\n ddd-ts-kit controllers [<context>] [--dry-run]\n ddd-ts-kit value-objects [--dry-run]\n ddd-ts-kit affected [--base <git-ref>] [--head <git-ref>] [--format text|json|github|env]\n ddd-ts-kit check [paths...] [--rule <id>]... [--format text|json|github|gitlab] [--changed-since <git-ref>] [--self]\n ddd-ts-kit check --clean-only <dir>... [--rule <id>]... [--format text|json|github]\n ddd-ts-kit check --commit-size [--staged] [--strict]\n ddd-ts-kit check-file <path>\n ddd-ts-kit rules\n ddd-ts-kit explain <rule-id>\n\nEvery command accepts --json (machine-readable output) and --cwd <dir> (project root).";
2
+ export declare const USAGE = "Usage\n ddd-ts-kit init [--http express|fastify|hono|nest|none]\n [--validation zod|class-validator|typebox|standard-schema|none]\n [--di tsyringe|nest|manual] [--tests vitest|jest]\n [--orm drizzle|knex|prisma|typeorm|custom|none] [--database postgres|mysql|sqlite|none]\n [--events in-memory|outbox] [--docs-ui swagger|scalar|redoc|none]\n [--ci github|gitlab|both|none] [--ci-extras <extra>,...|none]\n [--authn jwt|keycloak|none] [--authz rbac|abac|rebac|custom]\n [--broker none|rabbitmq|kafka|nats|redis|custom] [--cache none|redis] [--http-cache none|varnish]\n [--storage local|s3|none]\n [--audit on|off]\n [--errors none|sentry] [--logger stdout|pino|winston] [--style declared|explicit] [--assembly barrel|discovery]\n [--dependencies signature|listed] [--refusals factories|classes]\n [--routes controllers|functions] [--representations negotiated|json] [--forms on|off]\n [--value-objects throwing|result] [--literals named|free] [--values classes|free] [--tenancy none|shared-table] [--queue database|redis|memory]\n [--schemas shared|per-route]\n [--package-manager npm|pnpm] [--allow-no-outbox \"<reason>\"] [--import-alias '$<name>/']\n [--import-extension none|js] [--sdk]\n [--context <name>:<core|supporting|generic>]... [--preset identity]... [--dry-run] [--force]\n ddd-ts-kit generate <kind> ... [--term \"<Term>=<meaning>\"]... [--allow-name] [--local-only] [--dry-run] [--force] (alias: g)\n ddd-ts-kit generate --help --json\n ddd-ts-kit list [--context <name>]\n ddd-ts-kit describe <context>\n ddd-ts-kit status\n ddd-ts-kit todo [<context>]\n ddd-ts-kit worker-scope <context> [--base <ref>] [--rows <id,...>] [--worktree <path>] [--branch <name>] [--dry-run]\n ddd-ts-kit docs [--check] [--stored-events]\n ddd-ts-kit sdk [--check] [--dry-run]\n ddd-ts-kit depcruise-config [--check|--write]\n ddd-ts-kit build-aliases [--project <tsconfig>]\n ddd-ts-kit drizzle-generate --name <what-it-does> [--custom]\n ddd-ts-kit error-factories --plan | --apply [--dry-run]\n ddd-ts-kit controllers [<context>] [--dry-run]\n ddd-ts-kit value-objects [--dry-run]\n ddd-ts-kit affected [--base <git-ref>] [--head <git-ref>] [--format text|json|github|env]\n ddd-ts-kit check [paths...] [--rule <id>]... [--format text|json|github|gitlab] [--changed-since <git-ref>] [--self]\n ddd-ts-kit check --clean-only <dir>... [--rule <id>]... [--format text|json|github]\n ddd-ts-kit check --commit-size [--staged] [--strict]\n ddd-ts-kit check-file <path>\n ddd-ts-kit rules\n ddd-ts-kit explain <rule-id>\n\nEvery command accepts --json (machine-readable output) and --cwd <dir> (project root).";
3
3
  //# sourceMappingURL=usage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/help/usage.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,eAAO,MAAM,KAAK,2wFAyCqE,CAAC"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/help/usage.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,eAAO,MAAM,KAAK,42FA0CqE,CAAC"}
@@ -24,11 +24,12 @@ export const USAGE = `Usage
24
24
  ddd-ts-kit describe <context>
25
25
  ddd-ts-kit status
26
26
  ddd-ts-kit todo [<context>]
27
- ddd-ts-kit worker-scope <context> [--worktree <path>] [--branch <name>] [--dry-run]
27
+ ddd-ts-kit worker-scope <context> [--base <ref>] [--rows <id,...>] [--worktree <path>] [--branch <name>] [--dry-run]
28
28
  ddd-ts-kit docs [--check] [--stored-events]
29
29
  ddd-ts-kit sdk [--check] [--dry-run]
30
30
  ddd-ts-kit depcruise-config [--check|--write]
31
31
  ddd-ts-kit build-aliases [--project <tsconfig>]
32
+ ddd-ts-kit drizzle-generate --name <what-it-does> [--custom]
32
33
  ddd-ts-kit error-factories --plan | --apply [--dry-run]
33
34
  ddd-ts-kit controllers [<context>] [--dry-run]
34
35
  ddd-ts-kit value-objects [--dry-run]
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/help/usage.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFAyCkE,CAAC"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/help/usage.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFA0CkE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"database-scripts.d.ts","sourceRoot":"","sources":["../../../src/init/manifest/database-scripts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AA0BpD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAItE"}
1
+ {"version":3,"file":"database-scripts.d.ts","sourceRoot":"","sources":["../../../src/init/manifest/database-scripts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AA2BpD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAItE"}
@@ -4,7 +4,8 @@ const DATABASE_SCRIPTS = {
4
4
  custom: { 'db:migrate': 'echo "Custom persistence: run your own migrations here."' },
5
5
  // drizzle-kit loads the TypeScript schema, which re-exports the tables of each context by their alias: it reads the `paths` of tsconfig.json itself.
6
6
  // Every `db:generate` takes what the migration does (`npm run db:generate add-invoices`) and refuses to run without it: the tool prefixes it with a timestamp.
7
- drizzle: { 'db:generate': 'drizzle-kit generate --name', 'db:migrate': 'drizzle-kit migrate' },
7
+ // Through the CLI: without a terminal drizzle-kit cannot ask whether a column is renamed, writes nothing and exits 0; `drizzle-generate` fails then, with the fix.
8
+ drizzle: { 'db:generate': 'ddd-ts-kit drizzle-generate --name', 'db:migrate': 'drizzle-kit migrate' },
8
9
  knex: { 'db:generate': 'knex migrate:make', 'db:migrate': 'npm run build && knex migrate:latest' },
9
10
  // The client and the schema of the tests are build products of prisma/schema.prisma: every entry point refreshes them.
10
11
  prisma: {
@@ -1 +1 @@
1
- {"version":3,"file":"database-scripts.js","sourceRoot":"","sources":["../../../src/init/manifest/database-scripts.ts"],"names":[],"mappings":"AAEA,+HAA+H;AAC/H,MAAM,gBAAgB,GAAqD;IACzE,IAAI,EAAE,EAAE,YAAY,EAAE,gCAAgC,EAAE;IACxD,MAAM,EAAE,EAAE,YAAY,EAAE,0DAA0D,EAAE;IACpF,qJAAqJ;IACrJ,+JAA+J;IAC/J,OAAO,EAAE,EAAE,aAAa,EAAE,6BAA6B,EAAE,YAAY,EAAE,qBAAqB,EAAE;IAC9F,IAAI,EAAE,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,sCAAsC,EAAE;IAClG,uHAAuH;IACvH,MAAM,EAAE;QACN,WAAW,EACT,uHAAuH;QACzH,aAAa,EAAE,yCAAyC;QACxD,YAAY,EAAE,uBAAuB;QACrC,YAAY,EAAE,mBAAmB;QACjC,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,mBAAmB;QAC5B,aAAa,EAAE,mBAAmB;KACnC;CACF,CAAC;AAEF,4IAA4I;AAC5I,MAAM,WAAW,GAAG,+JAA+J,CAAC;AAEpL,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAEpC,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACrH,CAAC;AAED,uMAAuM;AACvM,SAAS,SAAS,CAAC,MAAc;IAC/B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7B,MAAM,UAAU,GAAG,QAAQ,MAAM,CAAC,WAAW,0BAA0B,CAAC;IAExE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,OAAO;QACL,aAAa,EAAE,iCAAiC,UAAU,EAAE;QAC5D,YAAY,EAAE,4BAA4B,UAAU,EAAE;KACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"database-scripts.js","sourceRoot":"","sources":["../../../src/init/manifest/database-scripts.ts"],"names":[],"mappings":"AAEA,+HAA+H;AAC/H,MAAM,gBAAgB,GAAqD;IACzE,IAAI,EAAE,EAAE,YAAY,EAAE,gCAAgC,EAAE;IACxD,MAAM,EAAE,EAAE,YAAY,EAAE,0DAA0D,EAAE;IACpF,qJAAqJ;IACrJ,+JAA+J;IAC/J,mKAAmK;IACnK,OAAO,EAAE,EAAE,aAAa,EAAE,oCAAoC,EAAE,YAAY,EAAE,qBAAqB,EAAE;IACrG,IAAI,EAAE,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,sCAAsC,EAAE;IAClG,uHAAuH;IACvH,MAAM,EAAE;QACN,WAAW,EACT,uHAAuH;QACzH,aAAa,EAAE,yCAAyC;QACxD,YAAY,EAAE,uBAAuB;QACrC,YAAY,EAAE,mBAAmB;QACjC,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,mBAAmB;QAC5B,aAAa,EAAE,mBAAmB;KACnC;CACF,CAAC;AAEF,4IAA4I;AAC5I,MAAM,WAAW,GAAG,+JAA+J,CAAC;AAEpL,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAEpC,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACrH,CAAC;AAED,uMAAuM;AACvM,SAAS,SAAS,CAAC,MAAc;IAC/B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7B,MAAM,UAAU,GAAG,QAAQ,MAAM,CAAC,WAAW,0BAA0B,CAAC;IAExE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,OAAO;QACL,aAAa,EAAE,iCAAiC,UAAU,EAAE;QAC5D,YAAY,EAAE,4BAA4B,UAAU,EAAE;KACvD,CAAC;AACJ,CAAC"}
@@ -29,6 +29,8 @@ function scriptsOf(config) {
29
29
  quality: 'npm run format:check && npm run lint && npm run check:arch && npm run depcruise && npm run deadcode',
30
30
  ...testScripts(config),
31
31
  ...documentationScripts(config),
32
+ // Every derived file in one step after a change: the dependency rules from the config, then what `docs:generate` writes.
33
+ regenerate: 'ddd-ts-kit depcruise-config --write && npm run docs:generate',
32
34
  ...databaseScripts(config),
33
35
  'infra:up': 'docker compose up -d --wait',
34
36
  'infra:down': 'docker compose down',