@ddd-ts-kit/di 0.0.0-stage → 0.1.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 (446) hide show
  1. package/README.md +1075 -2
  2. package/dist/application/application-options.d.ts +19 -0
  3. package/dist/application/application-options.d.ts.map +1 -0
  4. package/dist/application/application-options.js +2 -0
  5. package/dist/application/application-options.js.map +1 -0
  6. package/dist/application/application.d.ts +22 -0
  7. package/dist/application/application.d.ts.map +1 -0
  8. package/dist/application/application.js +2 -0
  9. package/dist/application/application.js.map +1 -0
  10. package/dist/application/assemble.d.ts +6 -0
  11. package/dist/application/assemble.d.ts.map +1 -0
  12. package/dist/application/assemble.js +16 -0
  13. package/dist/application/assemble.js.map +1 -0
  14. package/dist/application/binding-info.d.ts +10 -0
  15. package/dist/application/binding-info.d.ts.map +1 -0
  16. package/dist/application/binding-info.js +2 -0
  17. package/dist/application/binding-info.js.map +1 -0
  18. package/dist/application/bound-ports.d.ts +8 -0
  19. package/dist/application/bound-ports.d.ts.map +1 -0
  20. package/dist/application/bound-ports.js +2 -0
  21. package/dist/application/bound-ports.js.map +1 -0
  22. package/dist/application/consumer-subscriptions.d.ts +21 -0
  23. package/dist/application/consumer-subscriptions.d.ts.map +1 -0
  24. package/dist/application/consumer-subscriptions.js +59 -0
  25. package/dist/application/consumer-subscriptions.js.map +1 -0
  26. package/dist/application/container-application.d.ts +44 -0
  27. package/dist/application/container-application.d.ts.map +1 -0
  28. package/dist/application/container-application.js +224 -0
  29. package/dist/application/container-application.js.map +1 -0
  30. package/dist/application/create-application.d.ts +10 -0
  31. package/dist/application/create-application.d.ts.map +1 -0
  32. package/dist/application/create-application.js +12 -0
  33. package/dist/application/create-application.js.map +1 -0
  34. package/dist/application/decorate.d.ts +8 -0
  35. package/dist/application/decorate.d.ts.map +1 -0
  36. package/dist/application/decorate.js +2 -0
  37. package/dist/application/decorate.js.map +1 -0
  38. package/dist/application/delegating-applications.d.ts +7 -0
  39. package/dist/application/delegating-applications.d.ts.map +1 -0
  40. package/dist/application/delegating-applications.js +6 -0
  41. package/dist/application/delegating-applications.js.map +1 -0
  42. package/dist/application/failures-of.d.ts +3 -0
  43. package/dist/application/failures-of.d.ts.map +1 -0
  44. package/dist/application/failures-of.js +13 -0
  45. package/dist/application/failures-of.js.map +1 -0
  46. package/dist/application/is-handler-registry.d.ts +9 -0
  47. package/dist/application/is-handler-registry.d.ts.map +1 -0
  48. package/dist/application/is-handler-registry.js +5 -0
  49. package/dist/application/is-handler-registry.js.map +1 -0
  50. package/dist/application/job-lifecycle.d.ts +16 -0
  51. package/dist/application/job-lifecycle.d.ts.map +1 -0
  52. package/dist/application/job-lifecycle.js +48 -0
  53. package/dist/application/job-lifecycle.js.map +1 -0
  54. package/dist/application/override-for-tests.d.ts +8 -0
  55. package/dist/application/override-for-tests.d.ts.map +1 -0
  56. package/dist/application/override-for-tests.js +14 -0
  57. package/dist/application/override-for-tests.js.map +1 -0
  58. package/dist/application/override.d.ts +5 -0
  59. package/dist/application/override.d.ts.map +1 -0
  60. package/dist/application/override.js +5 -0
  61. package/dist/application/override.js.map +1 -0
  62. package/dist/application/with-binding-aspects.d.ts +8 -0
  63. package/dist/application/with-binding-aspects.d.ts.map +1 -0
  64. package/dist/application/with-binding-aspects.js +26 -0
  65. package/dist/application/with-binding-aspects.js.map +1 -0
  66. package/dist/authorization/assert-authorization-declared.d.ts +5 -0
  67. package/dist/authorization/assert-authorization-declared.d.ts.map +1 -0
  68. package/dist/authorization/assert-authorization-declared.js +28 -0
  69. package/dist/authorization/assert-authorization-declared.js.map +1 -0
  70. package/dist/authorization/authorization-mode.d.ts +3 -0
  71. package/dist/authorization/authorization-mode.d.ts.map +1 -0
  72. package/dist/authorization/authorization-mode.js +2 -0
  73. package/dist/authorization/authorization-mode.js.map +1 -0
  74. package/dist/authorization/declarations-of.d.ts +4 -0
  75. package/dist/authorization/declarations-of.d.ts.map +1 -0
  76. package/dist/authorization/declarations-of.js +4 -0
  77. package/dist/authorization/declarations-of.js.map +1 -0
  78. package/dist/authorization/declared-policies.d.ts +10 -0
  79. package/dist/authorization/declared-policies.d.ts.map +1 -0
  80. package/dist/authorization/declared-policies.js +8 -0
  81. package/dist/authorization/declared-policies.js.map +1 -0
  82. package/dist/authorization/declared-requirement.d.ts +5 -0
  83. package/dist/authorization/declared-requirement.d.ts.map +1 -0
  84. package/dist/authorization/declared-requirement.js +16 -0
  85. package/dist/authorization/declared-requirement.js.map +1 -0
  86. package/dist/authorization/pass-every-message.d.ts +3 -0
  87. package/dist/authorization/pass-every-message.d.ts.map +1 -0
  88. package/dist/authorization/pass-every-message.js +2 -0
  89. package/dist/authorization/pass-every-message.js.map +1 -0
  90. package/dist/authorization/protected-requirement.d.ts +6 -0
  91. package/dist/authorization/protected-requirement.d.ts.map +1 -0
  92. package/dist/authorization/protected-requirement.js +9 -0
  93. package/dist/authorization/protected-requirement.js.map +1 -0
  94. package/dist/authorization/requirement-options.d.ts +8 -0
  95. package/dist/authorization/requirement-options.d.ts.map +1 -0
  96. package/dist/authorization/requirement-options.js +2 -0
  97. package/dist/authorization/requirement-options.js.map +1 -0
  98. package/dist/authorization/requirement.d.ts +5 -0
  99. package/dist/authorization/requirement.d.ts.map +1 -0
  100. package/dist/authorization/requirement.js +2 -0
  101. package/dist/authorization/requirement.js.map +1 -0
  102. package/dist/authorization/use-case-access.d.ts +2 -0
  103. package/dist/authorization/use-case-access.d.ts.map +1 -0
  104. package/dist/authorization/use-case-access.js +2 -0
  105. package/dist/authorization/use-case-access.js.map +1 -0
  106. package/dist/authorization/use-case-declaration.d.ts +14 -0
  107. package/dist/authorization/use-case-declaration.d.ts.map +1 -0
  108. package/dist/authorization/use-case-declaration.js +2 -0
  109. package/dist/authorization/use-case-declaration.js.map +1 -0
  110. package/dist/authorization/use-case-declarations.d.ts +7 -0
  111. package/dist/authorization/use-case-declarations.d.ts.map +1 -0
  112. package/dist/authorization/use-case-declarations.js +5 -0
  113. package/dist/authorization/use-case-declarations.js.map +1 -0
  114. package/dist/authorization/use-case-guard-middleware.d.ts +5 -0
  115. package/dist/authorization/use-case-guard-middleware.d.ts.map +1 -0
  116. package/dist/authorization/use-case-guard-middleware.js +6 -0
  117. package/dist/authorization/use-case-guard-middleware.js.map +1 -0
  118. package/dist/authorization/use-case-guard.d.ts +10 -0
  119. package/dist/authorization/use-case-guard.d.ts.map +1 -0
  120. package/dist/authorization/use-case-guard.js +8 -0
  121. package/dist/authorization/use-case-guard.js.map +1 -0
  122. package/dist/checks/assert-sound.d.ts +5 -0
  123. package/dist/checks/assert-sound.d.ts.map +1 -0
  124. package/dist/checks/assert-sound.js +74 -0
  125. package/dist/checks/assert-sound.js.map +1 -0
  126. package/dist/checks/cycle-error.d.ts +4 -0
  127. package/dist/checks/cycle-error.d.ts.map +1 -0
  128. package/dist/checks/cycle-error.js +6 -0
  129. package/dist/checks/cycle-error.js.map +1 -0
  130. package/dist/consumer/consumer-options.d.ts +14 -0
  131. package/dist/consumer/consumer-options.d.ts.map +1 -0
  132. package/dist/consumer/consumer-options.js +2 -0
  133. package/dist/consumer/consumer-options.js.map +1 -0
  134. package/dist/consumer/consumer-runtime.d.ts +9 -0
  135. package/dist/consumer/consumer-runtime.d.ts.map +1 -0
  136. package/dist/consumer/consumer-runtime.js +2 -0
  137. package/dist/consumer/consumer-runtime.js.map +1 -0
  138. package/dist/consumer/observed-projection.d.ts +19 -0
  139. package/dist/consumer/observed-projection.d.ts.map +1 -0
  140. package/dist/consumer/observed-projection.js +44 -0
  141. package/dist/consumer/observed-projection.js.map +1 -0
  142. package/dist/consumer/receive.d.ts +21 -0
  143. package/dist/consumer/receive.d.ts.map +1 -0
  144. package/dist/consumer/receive.js +40 -0
  145. package/dist/consumer/receive.js.map +1 -0
  146. package/dist/consumer/unreadable-event-error.d.ts +9 -0
  147. package/dist/consumer/unreadable-event-error.d.ts.map +1 -0
  148. package/dist/consumer/unreadable-event-error.js +15 -0
  149. package/dist/consumer/unreadable-event-error.js.map +1 -0
  150. package/dist/declared/apply-through.d.ts +3 -0
  151. package/dist/declared/apply-through.d.ts.map +1 -0
  152. package/dist/declared/apply-through.js +11 -0
  153. package/dist/declared/apply-through.js.map +1 -0
  154. package/dist/declared/consumption-of.d.ts +15 -0
  155. package/dist/declared/consumption-of.d.ts.map +1 -0
  156. package/dist/declared/consumption-of.js +15 -0
  157. package/dist/declared/consumption-of.js.map +1 -0
  158. package/dist/declared/context-module.d.ts +10 -0
  159. package/dist/declared/context-module.d.ts.map +1 -0
  160. package/dist/declared/context-module.js +16 -0
  161. package/dist/declared/context-module.js.map +1 -0
  162. package/dist/declared/declared-source.d.ts +7 -0
  163. package/dist/declared/declared-source.d.ts.map +1 -0
  164. package/dist/declared/declared-source.js +2 -0
  165. package/dist/declared/declared-source.js.map +1 -0
  166. package/dist/declared/discovered-files.d.ts +6 -0
  167. package/dist/declared/discovered-files.d.ts.map +1 -0
  168. package/dist/declared/discovered-files.js +10 -0
  169. package/dist/declared/discovered-files.js.map +1 -0
  170. package/dist/declared/include-declared.d.ts +10 -0
  171. package/dist/declared/include-declared.d.ts.map +1 -0
  172. package/dist/declared/include-declared.js +173 -0
  173. package/dist/declared/include-declared.js.map +1 -0
  174. package/dist/declared/projection-of.d.ts +24 -0
  175. package/dist/declared/projection-of.d.ts.map +1 -0
  176. package/dist/declared/projection-of.js +73 -0
  177. package/dist/declared/projection-of.js.map +1 -0
  178. package/dist/description/describe-wiring.d.ts +6 -0
  179. package/dist/description/describe-wiring.d.ts.map +1 -0
  180. package/dist/description/describe-wiring.js +77 -0
  181. package/dist/description/describe-wiring.js.map +1 -0
  182. package/dist/description/wiring-description.d.ts +98 -0
  183. package/dist/description/wiring-description.d.ts.map +1 -0
  184. package/dist/description/wiring-description.js +2 -0
  185. package/dist/description/wiring-description.js.map +1 -0
  186. package/dist/discovery/discover-context.d.ts +27 -0
  187. package/dist/discovery/discover-context.d.ts.map +1 -0
  188. package/dist/discovery/discover-context.js +69 -0
  189. package/dist/discovery/discover-context.js.map +1 -0
  190. package/dist/discovery/role-files-of.d.ts +16 -0
  191. package/dist/discovery/role-files-of.d.ts.map +1 -0
  192. package/dist/discovery/role-files-of.js +63 -0
  193. package/dist/discovery/role-files-of.js.map +1 -0
  194. package/dist/discovery/role-rule.d.ts +10 -0
  195. package/dist/discovery/role-rule.d.ts.map +1 -0
  196. package/dist/discovery/role-rule.js +23 -0
  197. package/dist/discovery/role-rule.js.map +1 -0
  198. package/dist/discovery.d.ts +2 -0
  199. package/dist/discovery.d.ts.map +1 -0
  200. package/dist/discovery.js +2 -0
  201. package/dist/discovery.js.map +1 -0
  202. package/dist/errors/wiring-error.d.ts +7 -0
  203. package/dist/errors/wiring-error.d.ts.map +1 -0
  204. package/dist/errors/wiring-error.js +10 -0
  205. package/dist/errors/wiring-error.js.map +1 -0
  206. package/dist/index.d.ts +52 -0
  207. package/dist/index.d.ts.map +1 -0
  208. package/dist/index.js +20 -0
  209. package/dist/index.js.map +1 -0
  210. package/dist/jobs/definition-of.d.ts +7 -0
  211. package/dist/jobs/definition-of.d.ts.map +1 -0
  212. package/dist/jobs/definition-of.js +11 -0
  213. package/dist/jobs/definition-of.js.map +1 -0
  214. package/dist/jobs/effective-job.d.ts +7 -0
  215. package/dist/jobs/effective-job.d.ts.map +1 -0
  216. package/dist/jobs/effective-job.js +2 -0
  217. package/dist/jobs/effective-job.js.map +1 -0
  218. package/dist/jobs/effective-jobs.d.ts +6 -0
  219. package/dist/jobs/effective-jobs.d.ts.map +1 -0
  220. package/dist/jobs/effective-jobs.js +33 -0
  221. package/dist/jobs/effective-jobs.js.map +1 -0
  222. package/dist/jobs/jobs-options.d.ts +16 -0
  223. package/dist/jobs/jobs-options.d.ts.map +1 -0
  224. package/dist/jobs/jobs-options.js +2 -0
  225. package/dist/jobs/jobs-options.js.map +1 -0
  226. package/dist/jobs/readable.d.ts +3 -0
  227. package/dist/jobs/readable.d.ts.map +1 -0
  228. package/dist/jobs/readable.js +15 -0
  229. package/dist/jobs/readable.js.map +1 -0
  230. package/dist/jobs/written-job.d.ts +11 -0
  231. package/dist/jobs/written-job.d.ts.map +1 -0
  232. package/dist/jobs/written-job.js +8 -0
  233. package/dist/jobs/written-job.js.map +1 -0
  234. package/dist/kernel/guarded-query-bus.d.ts +5 -0
  235. package/dist/kernel/guarded-query-bus.d.ts.map +1 -0
  236. package/dist/kernel/guarded-query-bus.js +9 -0
  237. package/dist/kernel/guarded-query-bus.js.map +1 -0
  238. package/dist/kernel/instrumentation.d.ts +37 -0
  239. package/dist/kernel/instrumentation.d.ts.map +1 -0
  240. package/dist/kernel/instrumentation.js +9 -0
  241. package/dist/kernel/instrumentation.js.map +1 -0
  242. package/dist/kernel/kernel-module-options.d.ts +57 -0
  243. package/dist/kernel/kernel-module-options.d.ts.map +1 -0
  244. package/dist/kernel/kernel-module-options.js +2 -0
  245. package/dist/kernel/kernel-module-options.js.map +1 -0
  246. package/dist/kernel/kernel-module.d.ts +14 -0
  247. package/dist/kernel/kernel-module.d.ts.map +1 -0
  248. package/dist/kernel/kernel-module.js +133 -0
  249. package/dist/kernel/kernel-module.js.map +1 -0
  250. package/dist/kernel/kernel-ports.d.ts +4 -0
  251. package/dist/kernel/kernel-ports.d.ts.map +1 -0
  252. package/dist/kernel/kernel-ports.js +25 -0
  253. package/dist/kernel/kernel-ports.js.map +1 -0
  254. package/dist/kernel/lazy-error-reporter.d.ts +8 -0
  255. package/dist/kernel/lazy-error-reporter.d.ts.map +1 -0
  256. package/dist/kernel/lazy-error-reporter.js +14 -0
  257. package/dist/kernel/lazy-error-reporter.js.map +1 -0
  258. package/dist/kernel/provided.d.ts +4 -0
  259. package/dist/kernel/provided.d.ts.map +1 -0
  260. package/dist/kernel/provided.js +2 -0
  261. package/dist/kernel/provided.js.map +1 -0
  262. package/dist/kernel/reported-failures.d.ts +5 -0
  263. package/dist/kernel/reported-failures.d.ts.map +1 -0
  264. package/dist/kernel/reported-failures.js +9 -0
  265. package/dist/kernel/reported-failures.js.map +1 -0
  266. package/dist/kernel/transactional-command-bus.d.ts +10 -0
  267. package/dist/kernel/transactional-command-bus.d.ts.map +1 -0
  268. package/dist/kernel/transactional-command-bus.js +17 -0
  269. package/dist/kernel/transactional-command-bus.js.map +1 -0
  270. package/dist/module/binding-options-of.d.ts +5 -0
  271. package/dist/module/binding-options-of.d.ts.map +1 -0
  272. package/dist/module/binding-options-of.js +23 -0
  273. package/dist/module/binding-options-of.js.map +1 -0
  274. package/dist/module/binding-options.d.ts +8 -0
  275. package/dist/module/binding-options.d.ts.map +1 -0
  276. package/dist/module/binding-options.js +2 -0
  277. package/dist/module/binding-options.js.map +1 -0
  278. package/dist/module/binding-target.d.ts +15 -0
  279. package/dist/module/binding-target.d.ts.map +1 -0
  280. package/dist/module/binding-target.js +2 -0
  281. package/dist/module/binding-target.js.map +1 -0
  282. package/dist/module/collect-wiring.d.ts +5 -0
  283. package/dist/module/collect-wiring.d.ts.map +1 -0
  284. package/dist/module/collect-wiring.js +13 -0
  285. package/dist/module/collect-wiring.js.map +1 -0
  286. package/dist/module/context-module.d.ts +10 -0
  287. package/dist/module/context-module.d.ts.map +1 -0
  288. package/dist/module/context-module.js +2 -0
  289. package/dist/module/context-module.js.map +1 -0
  290. package/dist/module/define-context-module.d.ts +4 -0
  291. package/dist/module/define-context-module.d.ts.map +1 -0
  292. package/dist/module/define-context-module.js +5 -0
  293. package/dist/module/define-context-module.js.map +1 -0
  294. package/dist/module/factory-made-handlers.d.ts +6 -0
  295. package/dist/module/factory-made-handlers.d.ts.map +1 -0
  296. package/dist/module/factory-made-handlers.js +24 -0
  297. package/dist/module/factory-made-handlers.js.map +1 -0
  298. package/dist/module/handler-target.d.ts +11 -0
  299. package/dist/module/handler-target.d.ts.map +1 -0
  300. package/dist/module/handler-target.js +2 -0
  301. package/dist/module/handler-target.js.map +1 -0
  302. package/dist/module/module-builder.d.ts +50 -0
  303. package/dist/module/module-builder.d.ts.map +1 -0
  304. package/dist/module/module-builder.js +2 -0
  305. package/dist/module/module-builder.js.map +1 -0
  306. package/dist/module/module-context.d.ts +5 -0
  307. package/dist/module/module-context.d.ts.map +1 -0
  308. package/dist/module/module-context.js +2 -0
  309. package/dist/module/module-context.js.map +1 -0
  310. package/dist/module/module-recorder.d.ts +31 -0
  311. package/dist/module/module-recorder.d.ts.map +1 -0
  312. package/dist/module/module-recorder.js +133 -0
  313. package/dist/module/module-recorder.js.map +1 -0
  314. package/dist/module/protected-use-case-target.d.ts +14 -0
  315. package/dist/module/protected-use-case-target.d.ts.map +1 -0
  316. package/dist/module/protected-use-case-target.js +2 -0
  317. package/dist/module/protected-use-case-target.js.map +1 -0
  318. package/dist/module/use-case-target.d.ts +8 -0
  319. package/dist/module/use-case-target.d.ts.map +1 -0
  320. package/dist/module/use-case-target.js +2 -0
  321. package/dist/module/use-case-target.js.map +1 -0
  322. package/dist/module/value-binding-options.d.ts +13 -0
  323. package/dist/module/value-binding-options.d.ts.map +1 -0
  324. package/dist/module/value-binding-options.js +2 -0
  325. package/dist/module/value-binding-options.js.map +1 -0
  326. package/dist/testing/create-test-application.d.ts +12 -0
  327. package/dist/testing/create-test-application.d.ts.map +1 -0
  328. package/dist/testing/create-test-application.js +89 -0
  329. package/dist/testing/create-test-application.js.map +1 -0
  330. package/dist/testing/create-test-kernel.d.ts +6 -0
  331. package/dist/testing/create-test-kernel.d.ts.map +1 -0
  332. package/dist/testing/create-test-kernel.js +65 -0
  333. package/dist/testing/create-test-kernel.js.map +1 -0
  334. package/dist/testing/fake.d.ts +5 -0
  335. package/dist/testing/fake.d.ts.map +1 -0
  336. package/dist/testing/fake.js +6 -0
  337. package/dist/testing/fake.js.map +1 -0
  338. package/dist/testing/test-application-of.d.ts +10 -0
  339. package/dist/testing/test-application-of.d.ts.map +1 -0
  340. package/dist/testing/test-application-of.js +49 -0
  341. package/dist/testing/test-application-of.js.map +1 -0
  342. package/dist/testing/test-application-options.d.ts +35 -0
  343. package/dist/testing/test-application-options.d.ts.map +1 -0
  344. package/dist/testing/test-application-options.js +2 -0
  345. package/dist/testing/test-application-options.js.map +1 -0
  346. package/dist/testing/test-application.d.ts +15 -0
  347. package/dist/testing/test-application.d.ts.map +1 -0
  348. package/dist/testing/test-application.js +2 -0
  349. package/dist/testing/test-application.js.map +1 -0
  350. package/dist/testing/test-jobs.d.ts +16 -0
  351. package/dist/testing/test-jobs.d.ts.map +1 -0
  352. package/dist/testing/test-jobs.js +2 -0
  353. package/dist/testing/test-jobs.js.map +1 -0
  354. package/dist/testing/test-kernel.d.ts +39 -0
  355. package/dist/testing/test-kernel.d.ts.map +1 -0
  356. package/dist/testing/test-kernel.js +2 -0
  357. package/dist/testing/test-kernel.js.map +1 -0
  358. package/dist/token/same-token.d.ts +3 -0
  359. package/dist/token/same-token.d.ts.map +1 -0
  360. package/dist/token/same-token.js +5 -0
  361. package/dist/token/same-token.js.map +1 -0
  362. package/dist/token/token-map.d.ts +14 -0
  363. package/dist/token/token-map.d.ts.map +1 -0
  364. package/dist/token/token-map.js +24 -0
  365. package/dist/token/token-map.js.map +1 -0
  366. package/dist/token/token-set.d.ts +9 -0
  367. package/dist/token/token-set.d.ts.map +1 -0
  368. package/dist/token/token-set.js +19 -0
  369. package/dist/token/token-set.js.map +1 -0
  370. package/dist/wiring/any-message-handler.d.ts +5 -0
  371. package/dist/wiring/any-message-handler.d.ts.map +1 -0
  372. package/dist/wiring/any-message-handler.js +2 -0
  373. package/dist/wiring/any-message-handler.js.map +1 -0
  374. package/dist/wiring/assert-port.d.ts +4 -0
  375. package/dist/wiring/assert-port.d.ts.map +1 -0
  376. package/dist/wiring/assert-port.js +10 -0
  377. package/dist/wiring/assert-port.js.map +1 -0
  378. package/dist/wiring/binding-source.d.ts +2 -0
  379. package/dist/wiring/binding-source.d.ts.map +1 -0
  380. package/dist/wiring/binding-source.js +2 -0
  381. package/dist/wiring/binding-source.js.map +1 -0
  382. package/dist/wiring/binding.d.ts +22 -0
  383. package/dist/wiring/binding.d.ts.map +1 -0
  384. package/dist/wiring/binding.js +2 -0
  385. package/dist/wiring/binding.js.map +1 -0
  386. package/dist/wiring/declarer.d.ts +6 -0
  387. package/dist/wiring/declarer.d.ts.map +1 -0
  388. package/dist/wiring/declarer.js +2 -0
  389. package/dist/wiring/declarer.js.map +1 -0
  390. package/dist/wiring/domain-event-handling.d.ts +20 -0
  391. package/dist/wiring/domain-event-handling.d.ts.map +1 -0
  392. package/dist/wiring/domain-event-handling.js +2 -0
  393. package/dist/wiring/domain-event-handling.js.map +1 -0
  394. package/dist/wiring/event-consumption.d.ts +17 -0
  395. package/dist/wiring/event-consumption.d.ts.map +1 -0
  396. package/dist/wiring/event-consumption.js +2 -0
  397. package/dist/wiring/event-consumption.js.map +1 -0
  398. package/dist/wiring/job-registration.d.ts +14 -0
  399. package/dist/wiring/job-registration.d.ts.map +1 -0
  400. package/dist/wiring/job-registration.js +2 -0
  401. package/dist/wiring/job-registration.js.map +1 -0
  402. package/dist/wiring/kind-aspect.d.ts +11 -0
  403. package/dist/wiring/kind-aspect.d.ts.map +1 -0
  404. package/dist/wiring/kind-aspect.js +2 -0
  405. package/dist/wiring/kind-aspect.js.map +1 -0
  406. package/dist/wiring/lifetime.d.ts +2 -0
  407. package/dist/wiring/lifetime.d.ts.map +1 -0
  408. package/dist/wiring/lifetime.js +2 -0
  409. package/dist/wiring/lifetime.js.map +1 -0
  410. package/dist/wiring/message-handling.d.ts +15 -0
  411. package/dist/wiring/message-handling.d.ts.map +1 -0
  412. package/dist/wiring/message-handling.js +2 -0
  413. package/dist/wiring/message-handling.js.map +1 -0
  414. package/dist/wiring/natural-kind.d.ts +9 -0
  415. package/dist/wiring/natural-kind.d.ts.map +1 -0
  416. package/dist/wiring/natural-kind.js +11 -0
  417. package/dist/wiring/natural-kind.js.map +1 -0
  418. package/dist/wiring/policy-binding.d.ts +11 -0
  419. package/dist/wiring/policy-binding.d.ts.map +1 -0
  420. package/dist/wiring/policy-binding.js +2 -0
  421. package/dist/wiring/policy-binding.js.map +1 -0
  422. package/dist/wiring/projection-registration.d.ts +22 -0
  423. package/dist/wiring/projection-registration.d.ts.map +1 -0
  424. package/dist/wiring/projection-registration.js +2 -0
  425. package/dist/wiring/projection-registration.js.map +1 -0
  426. package/dist/wiring/recipe.d.ts +9 -0
  427. package/dist/wiring/recipe.d.ts.map +1 -0
  428. package/dist/wiring/recipe.js +15 -0
  429. package/dist/wiring/recipe.js.map +1 -0
  430. package/dist/wiring/resolve.d.ts +3 -0
  431. package/dist/wiring/resolve.d.ts.map +1 -0
  432. package/dist/wiring/resolve.js +2 -0
  433. package/dist/wiring/resolve.js.map +1 -0
  434. package/dist/wiring/where-of.d.ts +9 -0
  435. package/dist/wiring/where-of.d.ts.map +1 -0
  436. package/dist/wiring/where-of.js +9 -0
  437. package/dist/wiring/where-of.js.map +1 -0
  438. package/dist/wiring/wiring-draft.d.ts +31 -0
  439. package/dist/wiring/wiring-draft.d.ts.map +1 -0
  440. package/dist/wiring/wiring-draft.js +83 -0
  441. package/dist/wiring/wiring-draft.js.map +1 -0
  442. package/dist/wiring/wiring.d.ts +23 -0
  443. package/dist/wiring/wiring.d.ts.map +1 -0
  444. package/dist/wiring/wiring.js +2 -0
  445. package/dist/wiring/wiring.js.map +1 -0
  446. package/package.json +42 -4
@@ -0,0 +1,173 @@
1
+ import { declarationOf, } from '@ddd-ts-kit/kernel/declarations';
2
+ import { declaredRequirement } from '../authorization/declared-requirement.js';
3
+ import { WiringError } from '../errors/wiring-error.js';
4
+ import { assertPort } from '../wiring/assert-port.js';
5
+ import { classRecipe } from '../wiring/recipe.js';
6
+ import { consumptionOf } from './consumption-of.js';
7
+ import { declarerOf } from './discovered-files.js';
8
+ import { projectionOf } from './projection-of.js';
9
+ /** Turns every declaration of the source into bindings of the module, in the order they come. */
10
+ export function includeDeclared(inclusion, source) {
11
+ for (const target of new Set(classesOf(source))) {
12
+ const declaration = declarationOf(target);
13
+ if (declaration === undefined) {
14
+ throw undeclaredClass(target, inclusion.module);
15
+ }
16
+ register({ ...inclusion, declaredBy: declarerOf(target) }, declaration);
17
+ }
18
+ }
19
+ function classesOf(source) {
20
+ if (typeof source === 'function') {
21
+ return [source];
22
+ }
23
+ if (isList(source)) {
24
+ return source.flatMap((part) => classesOf(part));
25
+ }
26
+ return Object.values(source).filter(isDeclaredClass);
27
+ }
28
+ function isList(source) {
29
+ return Array.isArray(source);
30
+ }
31
+ function isDeclaredClass(value) {
32
+ return declarationOf(value) !== undefined;
33
+ }
34
+ function undeclaredClass(target, module) {
35
+ return new WiringError('UNDECLARED_CLASS', `Class ${target.name} is listed in module "${module}" and carries no declaration decorator of @ddd-ts-kit/kernel/declarations. Decorate it, or bind it explicitly in a module.`);
36
+ }
37
+ function register(registration, declaration) {
38
+ switch (declaration.role) {
39
+ case 'message':
40
+ return;
41
+ case 'command-handler':
42
+ case 'query-handler':
43
+ registerHandler(registration, declaration);
44
+ return;
45
+ case 'integration-event-handler':
46
+ registerIntegrationEventHandler(registration, declaration);
47
+ return;
48
+ case 'domain-event-handler':
49
+ registerDomainEventHandler(registration, declaration);
50
+ return;
51
+ case 'policy':
52
+ registerPolicy(registration, declaration);
53
+ return;
54
+ case 'job':
55
+ registerJob(registration, declaration);
56
+ return;
57
+ case 'projection':
58
+ registerProjection(registration, declaration);
59
+ return;
60
+ default:
61
+ registerPort(registration, declaration);
62
+ }
63
+ }
64
+ function registerHandler(registration, declaration) {
65
+ const { draft, module, declaredBy } = registration;
66
+ const { message, implementation, dependencies } = declaration;
67
+ draft.addHandling({
68
+ kind: declaration.role === 'command-handler' ? 'command' : 'query',
69
+ message,
70
+ handler: implementation,
71
+ module,
72
+ requirement: declaredRequirement(message),
73
+ declaredBy,
74
+ });
75
+ draft.addBinding(underItself(registration, { implementation, dependencies, kind: 'use-case' }));
76
+ }
77
+ /** A declared class is bound under itself: the class is the token of what it builds. */
78
+ function underItself({ module, declaredBy }, { implementation, dependencies, kind }) {
79
+ return {
80
+ ...classRecipe(implementation, dependencies),
81
+ token: implementation,
82
+ module,
83
+ declaredBy,
84
+ lifetime: 'singleton',
85
+ aspects: [],
86
+ ...(kind === undefined ? {} : { kind }),
87
+ };
88
+ }
89
+ function registerIntegrationEventHandler(registration, declaration) {
90
+ const { draft, module, declaredBy } = registration;
91
+ const { consumer, actorOf, dependencies } = declaration;
92
+ const options = { consumer, ...(actorOf === undefined ? {} : { actorOf }) };
93
+ declaration.pair((contract, implementation) => {
94
+ draft.addConsumption(consumptionOf({ contract, options, handler: implementation, module, declaredBy }));
95
+ draft.addBinding(underItself(registration, { implementation, dependencies, kind: 'consumer' }));
96
+ });
97
+ }
98
+ function registerDomainEventHandler(registration, declaration) {
99
+ const { draft, module, declaredBy } = registration;
100
+ const { name, phase, dependencies } = declaration;
101
+ declaration.pair((event, implementation) => {
102
+ draft.addBinding(underItself(registration, { implementation, dependencies, kind: 'domain-event-handler' }));
103
+ draft.addDomainEventHandler({
104
+ name,
105
+ phase,
106
+ event: event.name,
107
+ handler: implementation,
108
+ module,
109
+ declaredBy,
110
+ attach: attaching({ name, phase }, event, implementation),
111
+ });
112
+ });
113
+ }
114
+ /*
115
+ * An event dispatched under the name and built from another class is left alone, as a
116
+ * hand-written subscription would leave it: the handler is typed by the class it declared.
117
+ */
118
+ function attaching({ name, phase }, event, handler) {
119
+ return (resolve, dispatcher) => {
120
+ const handle = async (occurred) => {
121
+ if (occurred instanceof event) {
122
+ await resolve(handler).handle(occurred);
123
+ }
124
+ };
125
+ dispatcher.on(name, handle, { phase });
126
+ };
127
+ }
128
+ function registerPolicy(registration, declaration) {
129
+ const { draft, module, declaredBy } = registration;
130
+ const { name, permission, implementation, dependencies } = declaration;
131
+ draft.addBinding(underItself(registration, { implementation, dependencies }));
132
+ draft.addPolicy({ name, permission, policy: implementation, module, declaredBy });
133
+ }
134
+ function registerJob(registration, declaration) {
135
+ const { draft, module, declaredBy } = registration;
136
+ const { name, schedule, options, implementation, dependencies } = declaration;
137
+ draft.addJob({ name, schedule, options, job: implementation, module, declaredBy });
138
+ draft.addBinding(underItself(registration, { implementation, dependencies, kind: 'job' }));
139
+ }
140
+ function registerProjection(registration, declaration) {
141
+ const { draft, module, declaredBy } = registration;
142
+ const { implementation, dependencies } = declaration;
143
+ const wired = projectionOf({ declaration, module, declaredBy });
144
+ draft.addProjection(wired.registration);
145
+ draft.addBinding(underItself(registration, { implementation, dependencies, kind: 'consumer' }));
146
+ for (const consumption of wired.consumptions) {
147
+ draft.addConsumption(consumption);
148
+ }
149
+ for (const handling of wired.domainEventHandlers) {
150
+ draft.addDomainEventHandler(handling);
151
+ }
152
+ }
153
+ function registerPort(registration, declaration) {
154
+ const { draft, module, declaredBy } = registration;
155
+ const { implementation, dependencies, lifetime, kind, aspects } = declaration;
156
+ const binding = {
157
+ ...classRecipe(implementation, dependencies),
158
+ token: declaration.token,
159
+ module,
160
+ declaredBy,
161
+ lifetime,
162
+ kind,
163
+ aspects,
164
+ };
165
+ assertPort(declaration.token, implementation, module);
166
+ if (declaration.replaces) {
167
+ draft.replaceBinding(binding);
168
+ }
169
+ else {
170
+ draft.addBinding(binding);
171
+ }
172
+ }
173
+ //# sourceMappingURL=include-declared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"include-declared.js","sourceRoot":"","sources":["../../src/declared/include-declared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { ProjectionDeclaration } from '@ddd-ts-kit/kernel/declarations';
2
+ import type { Declarer } from '../wiring/declarer.js';
3
+ import type { DomainEventHandling } from '../wiring/domain-event-handling.js';
4
+ import type { EventConsumption } from '../wiring/event-consumption.js';
5
+ import type { ProjectionRegistration } from '../wiring/projection-registration.js';
6
+ interface Declared {
7
+ readonly declaration: ProjectionDeclaration;
8
+ readonly module: string;
9
+ readonly declaredBy: Declarer;
10
+ }
11
+ export interface WiredProjection {
12
+ readonly registration: ProjectionRegistration;
13
+ readonly consumptions: readonly EventConsumption[];
14
+ readonly domainEventHandlers: readonly DomainEventHandling[];
15
+ }
16
+ /**
17
+ * What a declared projection adds to the wiring. Each integration event it applies is a
18
+ * consumption under the name of the projection: the same execution scope, unit of work and
19
+ * processed mark as a handler of integration events, and the same `process <consumer>` span. Each domain
20
+ * event of its own context is applied where it is dispatched, inside the save.
21
+ */
22
+ export declare function projectionOf(declared: Declared): WiredProjection;
23
+ export {};
24
+ //# sourceMappingURL=projection-of.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-of.d.ts","sourceRoot":"","sources":["../../src/declared/projection-of.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,qBAAqB,EACtB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAGnF,UAAU,QAAQ;IAChB,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnD,QAAQ,CAAC,mBAAmB,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC9D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA4BhE"}
@@ -0,0 +1,73 @@
1
+ import { observedProjection } from '../consumer/observed-projection.js';
2
+ import { receive } from '../consumer/receive.js';
3
+ import { applyThrough } from './apply-through.js';
4
+ /**
5
+ * What a declared projection adds to the wiring. Each integration event it applies is a
6
+ * consumption under the name of the projection: the same execution scope, unit of work and
7
+ * processed mark as a handler of integration events, and the same `process <consumer>` span. Each domain
8
+ * event of its own context is applied where it is dispatched, inside the save.
9
+ */
10
+ export function projectionOf(declared) {
11
+ const { declaration, module, declaredBy } = declared;
12
+ const { name, implementation, applies } = declaration;
13
+ return {
14
+ registration: {
15
+ name,
16
+ projection: implementation,
17
+ module,
18
+ declaredBy,
19
+ applies: applies.map((application) => application.kind === 'integration'
20
+ ? {
21
+ kind: 'integration',
22
+ event: application.contract.type,
23
+ version: application.contract.version,
24
+ method: application.method,
25
+ }
26
+ : { kind: 'domain', event: application.name, method: application.method }),
27
+ },
28
+ consumptions: applies.flatMap((application) => application.kind === 'integration' ? [consumptionOf(declared, application)] : []),
29
+ domainEventHandlers: applies.flatMap((application) => application.kind === 'domain' ? [handlingOf(declared, application)] : []),
30
+ };
31
+ }
32
+ function consumptionOf({ declaration, module, declaredBy }, { contract, method }) {
33
+ const { name, implementation } = declaration;
34
+ return {
35
+ type: contract.type,
36
+ version: contract.version,
37
+ consumer: name,
38
+ handler: implementation,
39
+ module,
40
+ declaredBy,
41
+ projection: name,
42
+ subscribe: (resolve, runtime) => {
43
+ const observed = observedProjection(resolve, { projection: name, context: module, event: contract.type });
44
+ return receive({
45
+ contract,
46
+ options: { consumer: name },
47
+ runtime,
48
+ handle: (event) => observed(new Date(event.occurredAt), () => applyThrough(resolve(implementation), method, event)),
49
+ });
50
+ },
51
+ };
52
+ }
53
+ function handlingOf({ declaration, module, declaredBy }, { event, name, method }) {
54
+ const { implementation } = declaration;
55
+ return {
56
+ name,
57
+ phase: 'before-commit',
58
+ event: event.name,
59
+ handler: implementation,
60
+ module,
61
+ declaredBy,
62
+ projection: declaration.name,
63
+ attach: (resolve, dispatcher) => {
64
+ const observed = observedProjection(resolve, { projection: declaration.name, context: module, event: name });
65
+ dispatcher.on(name, async (occurred) => {
66
+ if (occurred instanceof event) {
67
+ await observed(occurred.occurredAt, () => applyThrough(resolve(implementation), method, occurred));
68
+ }
69
+ });
70
+ },
71
+ };
72
+ }
73
+ //# sourceMappingURL=projection-of.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-of.js","sourceRoot":"","sources":["../../src/declared/projection-of.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { EffectiveJob } from '../jobs/effective-job.js';
2
+ import type { TokenSet } from '../token/token-set.js';
3
+ import type { Wiring } from '../wiring/wiring.js';
4
+ import type { WiringDescription } from './wiring-description.js';
5
+ export declare function describeWiring(wiring: Wiring, overridden: TokenSet, jobs: readonly EffectiveJob[]): WiringDescription;
6
+ //# sourceMappingURL=describe-wiring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-wiring.d.ts","sourceRoot":"","sources":["../../src/description/describe-wiring.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EASV,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAEjC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,YAAY,EAAE,GAAG,iBAAiB,CAiBrH"}
@@ -0,0 +1,77 @@
1
+ import { describeJobSchedule } from '@ddd-ts-kit/kernel';
2
+ import { describeToken } from '@ddd-ts-kit/kernel/declarations';
3
+ export function describeWiring(wiring, overridden, jobs) {
4
+ return {
5
+ modules: wiring.modules,
6
+ bindings: wiring.bindings.values().map((binding) => describeBinding(binding, overridden)),
7
+ commands: describeHandlers(wiring, 'command'),
8
+ queries: describeHandlers(wiring, 'query'),
9
+ integrationEventHandlers: wiring.consumptions
10
+ .filter(({ projection }) => projection === undefined)
11
+ .map(describeConsumption),
12
+ domainEventHandlers: wiring.domainEventHandlers
13
+ .filter(({ projection }) => projection === undefined)
14
+ .map(describeDomainEventHandler),
15
+ policies: wiring.policies.map(describePolicy),
16
+ jobs: jobs.map(describeJob),
17
+ projections: wiring.projections.map(describeProjection),
18
+ overrides: overridden.tokens().map(describeToken),
19
+ };
20
+ }
21
+ function describeBinding(binding, overridden) {
22
+ return {
23
+ token: describeToken(binding.token),
24
+ module: binding.module,
25
+ ...(binding.kind === undefined ? {} : { kind: binding.kind }),
26
+ lifetime: binding.lifetime,
27
+ source: binding.source,
28
+ ...(binding.implementation === undefined ? {} : { implementation: binding.implementation }),
29
+ dependencies: binding.dependencies.map(describeToken),
30
+ overridden: overridden.has(binding.token),
31
+ ...originOf(binding.declaredBy),
32
+ };
33
+ }
34
+ function originOf(declaredBy) {
35
+ if (declaredBy === undefined) {
36
+ return {};
37
+ }
38
+ const { className, file } = declaredBy;
39
+ return { origin: 'declared', declaredBy: className, ...(file === undefined ? {} : { file }) };
40
+ }
41
+ function describeHandlers(wiring, kind) {
42
+ return wiring.handlings
43
+ .filter((handling) => handling.kind === kind)
44
+ .map(({ message, handler, module, requirement, declaredBy }) => ({
45
+ message: message.name,
46
+ handler: describeToken(handler),
47
+ module,
48
+ ...(requirement.access === undefined ? {} : { access: requirement.access }),
49
+ ...(requirement.permission === undefined ? {} : { permission: requirement.permission.id }),
50
+ ...originOf(declaredBy),
51
+ }));
52
+ }
53
+ function describeConsumption(consumption) {
54
+ const { type, version, consumer, handler, module, declaredBy } = consumption;
55
+ return { event: type, version, consumer, handler: describeToken(handler), module, ...originOf(declaredBy) };
56
+ }
57
+ function describeDomainEventHandler(handling) {
58
+ const { event, name, phase, handler, module, declaredBy } = handling;
59
+ return { event, name, phase, handler: describeToken(handler), module, ...originOf(declaredBy) };
60
+ }
61
+ function describePolicy({ name, permission, policy, module, declaredBy }) {
62
+ return { name, permission: permission.id, policy: describeToken(policy), module, ...originOf(declaredBy) };
63
+ }
64
+ function describeJob({ name, schedule, policy, job, module, declaredBy }) {
65
+ return {
66
+ name,
67
+ schedule: describeJobSchedule(schedule),
68
+ ...policy,
69
+ job: describeToken(job),
70
+ module,
71
+ ...originOf(declaredBy),
72
+ };
73
+ }
74
+ function describeProjection({ name, projection, module, applies, declaredBy, }) {
75
+ return { name, projection: describeToken(projection), module, applies, ...originOf(declaredBy) };
76
+ }
77
+ //# sourceMappingURL=describe-wiring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-wiring.js","sourceRoot":"","sources":["../../src/description/describe-wiring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import type { DependencyKind, JobPolicy } from '@ddd-ts-kit/kernel';
2
+ import type { BindingSource } from '../wiring/binding-source.js';
3
+ import type { Lifetime } from '../wiring/lifetime.js';
4
+ /**
5
+ * Where a binding comes from. A binding written in a module is `explicit` and carries none of
6
+ * these fields; one made by a declaration decorator carries `origin: 'declared'`, the class
7
+ * that declared it and, when discovery loaded it, the file.
8
+ */
9
+ export interface OriginDescription {
10
+ readonly origin?: 'declared';
11
+ readonly declaredBy?: string;
12
+ readonly file?: string;
13
+ }
14
+ export interface BindingDescription extends OriginDescription {
15
+ readonly token: string;
16
+ readonly module: string;
17
+ readonly kind?: DependencyKind;
18
+ readonly lifetime: Lifetime;
19
+ readonly source: BindingSource;
20
+ /** Class name, for a `class` source. */
21
+ readonly implementation?: string;
22
+ /** Declared by classes only: a factory resolves what it wants at run time. */
23
+ readonly dependencies: readonly string[];
24
+ /** True when an override stands in for this binding. */
25
+ readonly overridden: boolean;
26
+ }
27
+ export interface HandlerDescription extends OriginDescription {
28
+ readonly message: string;
29
+ readonly handler: string;
30
+ readonly module: string;
31
+ /** Absent when the module declared no access for the use case. */
32
+ readonly access?: 'public' | 'protected';
33
+ /** The id of the required permission, for a protected use case. */
34
+ readonly permission?: string;
35
+ }
36
+ export interface IntegrationEventHandlerDescription extends OriginDescription {
37
+ readonly event: string;
38
+ readonly version: number;
39
+ readonly consumer: string;
40
+ readonly handler: string;
41
+ readonly module: string;
42
+ }
43
+ /** A handler of a domain event of its own context. */
44
+ export interface DomainEventHandlerDescription extends OriginDescription {
45
+ readonly event: string;
46
+ readonly name: string;
47
+ /** `before-commit`: inside the transaction of the unit of work; `after-commit`: once it has committed. */
48
+ readonly phase: 'before-commit' | 'after-commit';
49
+ readonly handler: string;
50
+ readonly module: string;
51
+ }
52
+ export interface PolicyDescription extends OriginDescription {
53
+ readonly name: string;
54
+ readonly permission: string;
55
+ readonly policy: string;
56
+ readonly module: string;
57
+ }
58
+ /** A job as it will run: the settings of the application applied, the defaults filled in. */
59
+ export interface ScheduledJobDescription extends OriginDescription, JobPolicy {
60
+ readonly name: string;
61
+ /** `every 15m`, `cron 0 7 * * 1-5 (Europe/Paris)`. */
62
+ readonly schedule: string;
63
+ readonly job: string;
64
+ readonly module: string;
65
+ }
66
+ /** One event a projection applies: an integration event with its version, or a domain event of its own context. */
67
+ export interface AppliedEventDescription {
68
+ readonly kind: 'integration' | 'domain';
69
+ readonly event: string;
70
+ readonly version?: number;
71
+ readonly method: string;
72
+ }
73
+ /** A declared projection. Its events are subscribed under its name, and are not listed among the handlers. */
74
+ export interface ProjectionDescription extends OriginDescription {
75
+ readonly name: string;
76
+ readonly projection: string;
77
+ readonly module: string;
78
+ readonly applies: readonly AppliedEventDescription[];
79
+ }
80
+ /** The wiring as plain, serializable data: ports and classes appear by name. */
81
+ export interface WiringDescription {
82
+ readonly modules: readonly string[];
83
+ readonly bindings: readonly BindingDescription[];
84
+ readonly commands: readonly HandlerDescription[];
85
+ readonly queries: readonly HandlerDescription[];
86
+ readonly integrationEventHandlers: readonly IntegrationEventHandlerDescription[];
87
+ /** The declared handlers of domain events. */
88
+ readonly domainEventHandlers: readonly DomainEventHandlerDescription[];
89
+ /** The declared policy classes. */
90
+ readonly policies: readonly PolicyDescription[];
91
+ /** The declared jobs. What they did last and when they run next is asked to the job scheduler. */
92
+ readonly jobs: readonly ScheduledJobDescription[];
93
+ /** The declared projections, each with the events it applies. */
94
+ readonly projections: readonly ProjectionDescription[];
95
+ /** Every overridden token, including those no module binds. */
96
+ readonly overrides: readonly string[];
97
+ }
98
+ //# sourceMappingURL=wiring-description.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiring-description.d.ts","sourceRoot":"","sources":["../../src/description/wiring-description.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,wDAAwD;IACxD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IACzC,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kCAAmC,SAAQ,iBAAiB;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,sDAAsD;AACtD,MAAM,WAAW,6BAA8B,SAAQ,iBAAiB;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0GAA0G;IAC1G,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,6FAA6F;AAC7F,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB,EAAE,SAAS;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,mHAAmH;AACnH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,8GAA8G;AAC9G,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACtD;AAED,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,QAAQ,CAAC,wBAAwB,EAAE,SAAS,kCAAkC,EAAE,CAAC;IACjF,8CAA8C;IAC9C,QAAQ,CAAC,mBAAmB,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACvE,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,kGAAkG;IAClG,QAAQ,CAAC,IAAI,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAClD,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wiring-description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiring-description.js","sourceRoot":"","sources":["../../src/description/wiring-description.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import type { ContextModule } from '../module/context-module.js';
2
+ export interface DiscoveryOptions {
3
+ /**
4
+ * How a file is loaded. Default: `import()`, which follows whatever runs the process (compiled
5
+ * JavaScript, or TypeScript under a loader or a test runner).
6
+ */
7
+ readonly load?: (file: URL) => Promise<unknown>;
8
+ /** Leaves a file out: it receives the path relative to the context, with forward slashes. */
9
+ readonly ignore?: (file: string) => boolean;
10
+ /**
11
+ * The extensions that are loaded, the preferred first when a file exists under two of them.
12
+ * Default: `.js`, `.mjs`, `.ts`, `.mts`. Declaration files (`.d.ts`) are never loaded.
13
+ */
14
+ readonly extensions?: readonly string[];
15
+ }
16
+ /**
17
+ * The module of a bounded context, found by loading every file of its `application/` and
18
+ * `infrastructure/` folders that carries a role suffix (`*.handler`, `*.repository`, ...) and
19
+ * keeping the classes that declare themselves:
20
+ * `await discoverContext('billing', new URL('.', import.meta.url))`.
21
+ *
22
+ * It reads the disk and imports at startup, and what it finds is reachable by no import: use
23
+ * `contextModule` with a list or a barrel wherever a bundler or a dead-code analysis must
24
+ * follow the classes.
25
+ */
26
+ export declare function discoverContext(name: string, directory: URL | string, options?: DiscoveryOptions): Promise<ContextModule>;
27
+ //# sourceMappingURL=discover-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover-context.d.ts","sourceRoot":"","sources":["../../src/discovery/discover-context.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAMD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,GAAG,GAAG,MAAM,EACvB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,aAAa,CAAC,CAYxB"}
@@ -0,0 +1,69 @@
1
+ import path from 'node:path';
2
+ import { fileURLToPath, pathToFileURL } from 'node:url';
3
+ import { declarationOf } from '@ddd-ts-kit/kernel/declarations';
4
+ import { contextModule } from '../declared/context-module.js';
5
+ import { rememberFile } from '../declared/discovered-files.js';
6
+ import { WiringError } from '../errors/wiring-error.js';
7
+ import { roleFilesOf } from './role-files-of.js';
8
+ const DEFAULT_EXTENSIONS = ['.js', '.mjs', '.ts', '.mts'];
9
+ /**
10
+ * The module of a bounded context, found by loading every file of its `application/` and
11
+ * `infrastructure/` folders that carries a role suffix (`*.handler`, `*.repository`, ...) and
12
+ * keeping the classes that declare themselves:
13
+ * `await discoverContext('billing', new URL('.', import.meta.url))`.
14
+ *
15
+ * It reads the disk and imports at startup, and what it finds is reachable by no import: use
16
+ * `contextModule` with a list or a barrel wherever a bundler or a dead-code analysis must
17
+ * follow the classes.
18
+ */
19
+ export async function discoverContext(name, directory, options = {}) {
20
+ const root = typeof directory === 'string' ? path.resolve(directory) : fileURLToPath(directory);
21
+ const load = options.load ?? ((file) => import(file.href));
22
+ const { ignore, extensions = DEFAULT_EXTENSIONS } = options;
23
+ const declared = [];
24
+ for (const file of await roleFilesOf(root, { extensions, ...(ignore === undefined ? {} : { ignore }) })) {
25
+ assertInItsFolder(file, name);
26
+ declared.push(...declaredIn(file, await loaded(file, load), name));
27
+ }
28
+ return contextModule(name, declared);
29
+ }
30
+ function assertInItsFolder({ relative, rule }, context) {
31
+ if (rule.folders.some((folder) => relative.startsWith(`${folder}/`))) {
32
+ return;
33
+ }
34
+ throw new WiringError('MISPLACED_DECLARATION', `${relative} of context "${context}" is outside its canonical folder: a *.${rule.suffix} file belongs in ${rule.folders.map((folder) => `${folder}/`).join(' or ')}.`);
35
+ }
36
+ async function loaded(file, load) {
37
+ try {
38
+ return await load(pathToFileURL(file.absolute));
39
+ }
40
+ catch (error) {
41
+ throw new WiringError('DISCOVERY_FAILED', `${file.absolute} could not be loaded: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
42
+ }
43
+ }
44
+ function declaredIn(file, namespace, context) {
45
+ const exported = typeof namespace === 'object' && namespace !== null ? Object.values(namespace) : [];
46
+ const declared = exported.filter(isDeclaredClass);
47
+ if (declared.length === 0) {
48
+ throw nothingDeclared(file, context);
49
+ }
50
+ for (const target of declared) {
51
+ assertRoleOfItsFile(target, file);
52
+ rememberFile(target, file.absolute);
53
+ }
54
+ return declared;
55
+ }
56
+ function isDeclaredClass(value) {
57
+ return declarationOf(value) !== undefined;
58
+ }
59
+ function nothingDeclared({ absolute, rule }, context) {
60
+ return new WiringError('NOTHING_DECLARED', `${absolute} of context "${context}" is a *.${rule.suffix} file and exports no class that declares itself. Decorate its class, or leave the file out with the ignore option and bind it in a module.`);
61
+ }
62
+ function assertRoleOfItsFile(target, { absolute, rule }) {
63
+ const role = declarationOf(target)?.role;
64
+ if (role === undefined || rule.roles.includes(role)) {
65
+ return;
66
+ }
67
+ throw new WiringError('MISPLACED_DECLARATION', `Class ${target.name} declares itself as ${role} in ${absolute}, a *.${rule.suffix} file: that suffix is for ${rule.roles.join(' or ')}.`);
68
+ }
69
+ //# sourceMappingURL=discover-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover-context.js","sourceRoot":"","sources":["../../src/discovery/discover-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type RoleRule } from './role-rule.js';
2
+ export interface RoleFile {
3
+ readonly absolute: string;
4
+ /** Relative to the context, with forward slashes. */
5
+ readonly relative: string;
6
+ readonly rule: RoleRule;
7
+ }
8
+ interface Selection {
9
+ /** The extensions that are loaded, the preferred first. */
10
+ readonly extensions: readonly string[];
11
+ readonly ignore?: (file: string) => boolean;
12
+ }
13
+ /** The role files of a context, sorted by path, so that two machines and two runs wire it in the same order. */
14
+ export declare function roleFilesOf(root: string, selection: Selection): Promise<RoleFile[]>;
15
+ export {};
16
+ //# sourceMappingURL=role-files-of.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-files-of.d.ts","sourceRoot":"","sources":["../../src/discovery/role-files-of.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB;AAED,UAAU,SAAS;IACjB,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C;AAUD,gHAAgH;AAChH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAkBzF"}