@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,74 @@
1
+ import { CommandBus, DomainEventDispatcher, EventSubscribers, IntegrationEventSubscriber, JobScheduler, QueryBus, } from '@ddd-ts-kit/kernel';
2
+ import { describeToken } from '@ddd-ts-kit/kernel/declarations';
3
+ import { WiringError } from '../errors/wiring-error.js';
4
+ import { sameToken } from '../token/same-token.js';
5
+ import { TokenSet } from '../token/token-set.js';
6
+ import { whereOf } from '../wiring/where-of.js';
7
+ import { cycleError } from './cycle-error.js';
8
+ /** Everything that can be known wrong before a single instance is created. */
9
+ export function assertSound(wiring, overridden) {
10
+ assertDependenciesBound(wiring, overridden);
11
+ assertBusesBound(wiring, overridden);
12
+ assertNoCycle(wiring, overridden);
13
+ }
14
+ function assertDependenciesBound({ bindings }, overridden) {
15
+ for (const binding of bindings.values()) {
16
+ for (const dependency of binding.dependencies) {
17
+ if (bindings.has(dependency) || overridden.has(dependency)) {
18
+ continue;
19
+ }
20
+ throw new WiringError('UNBOUND_DEPENDENCY', `"${describeToken(binding.token)}" in ${whereOf(binding)} depends on "${describeToken(dependency)}", which no module binds.`);
21
+ }
22
+ }
23
+ }
24
+ function assertBusesBound(wiring, overridden) {
25
+ for (const { ports, user, module } of needsOf(wiring)) {
26
+ if (ports.some((port) => wiring.bindings.has(port) || overridden.has(port))) {
27
+ continue;
28
+ }
29
+ throw new WiringError('UNBOUND_DEPENDENCY', `Module "${module}" declares ${user}, but no module binds ${ports.map((port) => `"${describeToken(port)}"`).join(' or ')}. Add kernelModule() to the modules.`);
30
+ }
31
+ }
32
+ function needsOf(wiring) {
33
+ return [
34
+ ...wiring.handlings.map(({ kind, message, module }) => ({
35
+ ports: [kind === 'command' ? CommandBus : QueryBus],
36
+ user: `the ${kind} "${message.name}"`,
37
+ module,
38
+ })),
39
+ ...wiring.consumptions.map(({ consumer, module }) => ({
40
+ ports: [IntegrationEventSubscriber, EventSubscribers],
41
+ user: `the consumer "${consumer}"`,
42
+ module,
43
+ })),
44
+ ...wiring.domainEventHandlers.map(({ name, module }) => ({
45
+ ports: [DomainEventDispatcher],
46
+ user: `a handler of the domain event "${name}"`,
47
+ module,
48
+ })),
49
+ ...wiring.jobs.map(({ name, module }) => ({ ports: [JobScheduler], user: `the job "${name}"`, module })),
50
+ ];
51
+ }
52
+ function assertNoCycle({ bindings }, overridden) {
53
+ const done = new TokenSet();
54
+ const path = [];
55
+ const visit = (target) => {
56
+ if (done.has(target) || overridden.has(target)) {
57
+ return;
58
+ }
59
+ const loopStart = path.findIndex((step) => sameToken(step, target));
60
+ if (loopStart !== -1) {
61
+ throw cycleError([...path.slice(loopStart), target]);
62
+ }
63
+ path.push(target);
64
+ for (const dependency of bindings.get(target)?.dependencies ?? []) {
65
+ visit(dependency);
66
+ }
67
+ path.pop();
68
+ done.add(target);
69
+ };
70
+ for (const target of bindings.keys()) {
71
+ visit(target);
72
+ }
73
+ }
74
+ //# sourceMappingURL=assert-sound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-sound.js","sourceRoot":"","sources":["../../src/checks/assert-sound.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type Token } from '@ddd-ts-kit/kernel/declarations';
2
+ import { WiringError } from '../errors/wiring-error.js';
3
+ export declare function cycleError(path: readonly Token<unknown>[]): WiringError;
4
+ //# sourceMappingURL=cycle-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycle-error.d.ts","sourceRoot":"","sources":["../../src/checks/cycle-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,WAAW,CAKvE"}
@@ -0,0 +1,6 @@
1
+ import { describeToken } from '@ddd-ts-kit/kernel/declarations';
2
+ import { WiringError } from '../errors/wiring-error.js';
3
+ export function cycleError(path) {
4
+ return new WiringError('DEPENDENCY_CYCLE', `Dependency cycle: ${path.map((step) => `"${describeToken(step)}"`).join(' -> ')}.`);
5
+ }
6
+ //# sourceMappingURL=cycle-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycle-error.js","sourceRoot":"","sources":["../../src/checks/cycle-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAc,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,UAAU,UAAU,CAAC,IAA+B;IACxD,OAAO,IAAI,WAAW,CACpB,kBAAkB,EAClB,qBAAqB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CACpF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Actor, IntegrationEvent } from '@ddd-ts-kit/kernel';
2
+ export interface ConsumerOptions {
3
+ /**
4
+ * Stable name of the consumer, `<context>.<reaction>`: the idempotency scope, and the system
5
+ * actor the consumer runs as in the `ExecutionScope`.
6
+ */
7
+ readonly consumer: string;
8
+ /**
9
+ * The actor an event names, for a project whose envelopes carry a reference to one. The
10
+ * consumer then runs as that actor instead of `systemActor(consumer)`.
11
+ */
12
+ readonly actorOf?: (event: IntegrationEvent) => Actor | undefined;
13
+ }
14
+ //# sourceMappingURL=consumer-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-options.d.ts","sourceRoot":"","sources":["../../src/consumer/consumer-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,KAAK,GAAG,SAAS,CAAC;CACnE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=consumer-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-options.js","sourceRoot":"","sources":["../../src/consumer/consumer-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { ExecutionScope, ProcessedEventStore, UnitOfWork } from '@ddd-ts-kit/kernel';
2
+ /** What the application gives every consumer when it starts: each is left out when not bound. */
3
+ export interface ConsumerRuntime {
4
+ readonly processed?: ProcessedEventStore;
5
+ readonly scope?: ExecutionScope;
6
+ /** With `processed`: the mark and the work of the handler commit or roll back together. */
7
+ readonly unitOfWork?: UnitOfWork;
8
+ }
9
+ //# sourceMappingURL=consumer-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-runtime.d.ts","sourceRoot":"","sources":["../../src/consumer/consumer-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE1F,iGAAiG;AACjG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;IAChC,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=consumer-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-runtime.js","sourceRoot":"","sources":["../../src/consumer/consumer-runtime.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import type { Resolve } from '../wiring/resolve.js';
2
+ export interface ProjectedEvent {
3
+ /** Name of the projection. */
4
+ readonly projection: string;
5
+ /** Name of the module that declared it. */
6
+ readonly context: string;
7
+ /** The type of the integration event, or the name of the domain event. */
8
+ readonly event: string;
9
+ }
10
+ type Applying = (occurredAt: Date, apply: () => Promise<unknown>) => Promise<void>;
11
+ /**
12
+ * What measures a projection from outside, through the `Metrics` port: `projection_events_total`
13
+ * counts each event by `result` (`applied`, `stale`, `ignored`, `failed`), and
14
+ * `projection_last_event_age_ms` is the age of the last event applied when it was, which is
15
+ * the lag of the projection. Without a bound `Metrics`, nothing is measured.
16
+ */
17
+ export declare function observedProjection(resolve: Resolve, { projection, context, event }: ProjectedEvent): Applying;
18
+ export {};
19
+ //# sourceMappingURL=observed-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observed-projection.d.ts","sourceRoot":"","sources":["../../src/consumer/observed-projection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,KAAK,QAAQ,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAInF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,cAAc,GAAG,QAAQ,CAgC7G"}
@@ -0,0 +1,44 @@
1
+ import { Clock, Metrics } from '@ddd-ts-kit/kernel';
2
+ const SKIPPED = new Set(['stale', 'ignored']);
3
+ /**
4
+ * What measures a projection from outside, through the `Metrics` port: `projection_events_total`
5
+ * counts each event by `result` (`applied`, `stale`, `ignored`, `failed`), and
6
+ * `projection_last_event_age_ms` is the age of the last event applied when it was, which is
7
+ * the lag of the projection. Without a bound `Metrics`, nothing is measured.
8
+ */
9
+ export function observedProjection(resolve, { projection, context, event }) {
10
+ const metrics = bound(resolve, Metrics);
11
+ const clock = bound(resolve, Clock);
12
+ if (metrics === undefined) {
13
+ return unobserved;
14
+ }
15
+ const labels = { context, projection };
16
+ const counted = (result) => {
17
+ metrics.counter('projection_events_total').increment({ ...labels, event, result });
18
+ };
19
+ return async (occurredAt, apply) => {
20
+ const result = await apply().then((outcome) => (SKIPPED.has(outcome) ? String(outcome) : 'applied'), (error) => {
21
+ counted('failed');
22
+ throw error;
23
+ });
24
+ counted(result);
25
+ if (result === 'applied') {
26
+ metrics
27
+ .gauge('projection_last_event_age_ms')
28
+ .set((clock?.now().getTime() ?? Date.now()) - occurredAt.getTime(), labels);
29
+ }
30
+ };
31
+ }
32
+ async function unobserved(_occurredAt, apply) {
33
+ await apply();
34
+ }
35
+ /** A port of the kernel module, or nothing when the application binds none. */
36
+ function bound(resolve, port) {
37
+ try {
38
+ return resolve(port);
39
+ }
40
+ catch {
41
+ return undefined;
42
+ }
43
+ }
44
+ //# sourceMappingURL=observed-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observed-projection.js","sourceRoot":"","sources":["../../src/consumer/observed-projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AAcvE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAkB;IACjG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAErD,MAAM,OAAO,GAAG,CAAC,MAAc,EAAQ,EAAE;QACvC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACrF,CAAC,CAAC;IAEF,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAC/B,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACjE,CAAC,KAAc,EAAE,EAAE;YACjB,OAAO,CAAC,QAAQ,CAAC,CAAC;YAElB,MAAM,KAAK,CAAC;QACd,CAAC,CACF,CAAC;QAEF,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;iBACJ,KAAK,CAAC,8BAA8B,CAAC;iBACrC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QAChF,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,WAAiB,EAAE,KAA6B;IACxE,MAAM,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,SAAS,KAAK,CAAI,OAAgB,EAAE,IAAwC;IAC1E,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { type IntegrationEvent, type IntegrationEventCallback } from '@ddd-ts-kit/kernel';
2
+ import type { EventContract } from '@ddd-ts-kit/kernel/declarations';
3
+ import type { ConsumerOptions } from './consumer-options.js';
4
+ import type { ConsumerRuntime } from './consumer-runtime.js';
5
+ interface Reception<Payload> {
6
+ readonly contract: EventContract<Payload>;
7
+ readonly options: ConsumerOptions;
8
+ readonly runtime: ConsumerRuntime;
9
+ readonly handle: (event: IntegrationEvent<Payload>) => Promise<void>;
10
+ }
11
+ /**
12
+ * The handler to subscribe for one consumer. Another version of the same type is skipped
13
+ * (it has its own contract); an unreadable event throws so that the provider retries or
14
+ * dead-letters it instead of losing it silently. With a scope, the consumer runs in the
15
+ * execution context of the event: origin `event`, its correlation, the event as cause. With a
16
+ * processed-event store and a unit of work, the idempotency mark and the work of the handler
17
+ * are one unit of work: a handler that fails leaves no mark, and its event is handled again.
18
+ */
19
+ export declare function receive<Payload>(reception: Reception<Payload>): IntegrationEventCallback;
20
+ export {};
21
+ //# sourceMappingURL=receive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../src/consumer/receive.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,UAAU,SAAS,CAAC,OAAO;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,wBAAwB,CAmBxF"}
@@ -0,0 +1,40 @@
1
+ import { executionContextOfEvent, idempotent, } from '@ddd-ts-kit/kernel';
2
+ import { UnreadableEventError } from './unreadable-event-error.js';
3
+ /**
4
+ * The handler to subscribe for one consumer. Another version of the same type is skipped
5
+ * (it has its own contract); an unreadable event throws so that the provider retries or
6
+ * dead-letters it instead of losing it silently. With a scope, the consumer runs in the
7
+ * execution context of the event: origin `event`, its correlation, the event as cause. With a
8
+ * processed-event store and a unit of work, the idempotency mark and the work of the handler
9
+ * are one unit of work: a handler that fails leaves no mark, and its event is handled again.
10
+ */
11
+ export function receive(reception) {
12
+ const { contract, options, runtime, handle } = reception;
13
+ const { scope } = runtime;
14
+ return async (event) => {
15
+ const parsed = contract.parse(event);
16
+ if (!parsed.ok) {
17
+ rejectUnlessMeantForAnother(event, parsed.error.reason);
18
+ return;
19
+ }
20
+ // Marked only once the event is known to be valid, so a skipped or rejected delivery
21
+ // never consumes the idempotency key.
22
+ const once = () => handledOnce(event, reception, () => handle(parsed.value));
23
+ await (scope === undefined ? once() : scope.run(executionContextOfEvent(event, options), once));
24
+ };
25
+ }
26
+ const MEANT_FOR_ANOTHER = new Set(['type-mismatch', 'version-mismatch']);
27
+ function rejectUnlessMeantForAnother(event, reason) {
28
+ if (!MEANT_FOR_ANOTHER.has(reason)) {
29
+ throw new UnreadableEventError(event.type, event.version, reason);
30
+ }
31
+ }
32
+ function handledOnce(event, { options, runtime }, deliver) {
33
+ const { processed, unitOfWork } = runtime;
34
+ if (processed === undefined) {
35
+ return deliver();
36
+ }
37
+ const marked = () => idempotent(options.consumer, processed, deliver)(event);
38
+ return unitOfWork === undefined ? marked() : unitOfWork.run(marked);
39
+ }
40
+ //# sourceMappingURL=receive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receive.js","sourceRoot":"","sources":["../../src/consumer/receive.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,UAAU,GAGX,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AASnE;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAU,SAA6B;IAC5D,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1B,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAExD,OAAO;QACT,CAAC;QAED,qFAAqF;QACrF,sCAAsC;QACtC,MAAM,IAAI,GAAG,GAAkB,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5F,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAClG,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAEzE,SAAS,2BAA2B,CAAC,KAAuB,EAAE,MAAc;IAC1E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,KAAuB,EACvB,EAAE,OAAO,EAAE,OAAO,EAAsB,EACxC,OAA4B;IAE5B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE1C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,GAAkB,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;IAE5F,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** An event of the subscribed type and version that its contract refuses. */
2
+ export declare class UnreadableEventError extends Error {
3
+ readonly eventType: string;
4
+ readonly eventVersion: number;
5
+ readonly reason: string;
6
+ readonly code = "UNREADABLE_EVENT";
7
+ constructor(eventType: string, eventVersion: number, reason: string);
8
+ }
9
+ //# sourceMappingURL=unreadable-event-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unreadable-event-error.d.ts","sourceRoot":"","sources":["../../src/consumer/unreadable-event-error.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,qBAAa,oBAAqB,SAAQ,KAAK;IAI3C,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM;IALzB,QAAQ,CAAC,IAAI,sBAAsB;IAEnC,YACW,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EAIxB;CACF"}
@@ -0,0 +1,15 @@
1
+ /** An event of the subscribed type and version that its contract refuses. */
2
+ export class UnreadableEventError extends Error {
3
+ eventType;
4
+ eventVersion;
5
+ reason;
6
+ code = 'UNREADABLE_EVENT';
7
+ constructor(eventType, eventVersion, reason) {
8
+ super(`Cannot read ${eventType} v${eventVersion}: ${reason}`);
9
+ this.eventType = eventType;
10
+ this.eventVersion = eventVersion;
11
+ this.reason = reason;
12
+ this.name = 'UnreadableEventError';
13
+ }
14
+ }
15
+ //# sourceMappingURL=unreadable-event-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unreadable-event-error.js","sourceRoot":"","sources":["../../src/consumer/unreadable-event-error.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAIlC,SAAS;IACT,YAAY;IACZ,MAAM;IALR,IAAI,GAAG,kBAAkB,CAAC;IAEnC,YACW,SAAiB,EACjB,YAAoB,EACpB,MAAc;QAEvB,KAAK,CAAC,eAAe,SAAS,KAAK,YAAY,KAAK,MAAM,EAAE,CAAC,CAAC;yBAJrD,SAAS;4BACT,YAAY;sBACZ,MAAM;QAGf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ /** Calls the method of a projection that applies an event, and answers what it answered. */
2
+ export declare function applyThrough(projection: object, method: string, event: unknown): Promise<unknown>;
3
+ //# sourceMappingURL=apply-through.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-through.d.ts","sourceRoot":"","sources":["../../src/declared/apply-through.ts"],"names":[],"mappings":"AAEA,4FAA4F;AAC5F,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAavG"}
@@ -0,0 +1,11 @@
1
+ import { WiringError } from '../errors/wiring-error.js';
2
+ /** Calls the method of a projection that applies an event, and answers what it answered. */
3
+ export async function applyThrough(projection, method, event) {
4
+ const apply = Reflect.get(projection, method);
5
+ if (typeof apply !== 'function') {
6
+ throw new WiringError('INCOMPLETE_BINDING', `Projection ${projection.constructor.name} declares that "${method}" applies an event, and has no such method.`);
7
+ }
8
+ const outcome = await Reflect.apply(apply, projection, [event]);
9
+ return outcome;
10
+ }
11
+ //# sourceMappingURL=apply-through.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-through.js","sourceRoot":"","sources":["../../src/declared/apply-through.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAkB,EAAE,MAAc,EAAE,KAAc;IACnF,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEvD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,WAAW,CACnB,oBAAoB,EACpB,cAAc,UAAU,CAAC,WAAW,CAAC,IAAI,mBAAmB,MAAM,6CAA6C,CAChH,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAY,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzE,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { EventContract, IntegrationEventHandler, Token } from '@ddd-ts-kit/kernel/declarations';
2
+ import type { ConsumerOptions } from '../consumer/consumer-options.js';
3
+ import type { Declarer } from '../wiring/declarer.js';
4
+ import type { EventConsumption } from '../wiring/event-consumption.js';
5
+ interface Subscribing<Payload> {
6
+ readonly contract: EventContract<Payload>;
7
+ readonly options: ConsumerOptions;
8
+ readonly handler: Token<IntegrationEventHandler<Payload>>;
9
+ readonly module: string;
10
+ readonly declaredBy?: Declarer;
11
+ }
12
+ /** The subscription of one consumer, whether a module wrote it or a class declared it. */
13
+ export declare function consumptionOf<Payload>(subscribing: Subscribing<Payload>): EventConsumption;
14
+ export {};
15
+ //# sourceMappingURL=consumption-of.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumption-of.d.ts","sourceRoot":"","sources":["../../src/declared/consumption-of.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACrG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,UAAU,WAAW,CAAC,OAAO;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;CAChC;AAED,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAa1F"}
@@ -0,0 +1,15 @@
1
+ import { receive } from '../consumer/receive.js';
2
+ /** The subscription of one consumer, whether a module wrote it or a class declared it. */
3
+ export function consumptionOf(subscribing) {
4
+ const { contract, options, handler, module, declaredBy } = subscribing;
5
+ return {
6
+ type: contract.type,
7
+ version: contract.version,
8
+ consumer: options.consumer,
9
+ handler,
10
+ module,
11
+ ...(declaredBy === undefined ? {} : { declaredBy }),
12
+ subscribe: (resolve, runtime) => receive({ contract, options, runtime, handle: (event) => resolve(handler).handle(event) }),
13
+ };
14
+ }
15
+ //# sourceMappingURL=consumption-of.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumption-of.js","sourceRoot":"","sources":["../../src/declared/consumption-of.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAYjD,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAAU,WAAiC;IACtE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;IAEvE,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO;QACP,MAAM;QACN,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QACnD,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAC9B,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;KAC7F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ContextModule } from '../module/context-module.js';
2
+ import type { DeclaredSource } from './declared-source.js';
3
+ /**
4
+ * The module of a bounded context made of classes that declare themselves:
5
+ * `contextModule('billing', [IssueInvoice, IssueInvoiceHandler, KnexInvoiceRepository])`, or
6
+ * `contextModule('billing', billing)` with `import * as billing from './billing.declarations.js'`.
7
+ * Fully static: a bundler and a dead-code analysis follow every class.
8
+ */
9
+ export declare function contextModule(name: string, declared: DeclaredSource): ContextModule;
10
+ //# sourceMappingURL=context-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-module.d.ts","sourceRoot":"","sources":["../../src/declared/context-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,aAAa,CAOnF"}
@@ -0,0 +1,16 @@
1
+ import { defineContextModule } from '../module/define-context-module.js';
2
+ /**
3
+ * The module of a bounded context made of classes that declare themselves:
4
+ * `contextModule('billing', [IssueInvoice, IssueInvoiceHandler, KnexInvoiceRepository])`, or
5
+ * `contextModule('billing', billing)` with `import * as billing from './billing.declarations.js'`.
6
+ * Fully static: a bundler and a dead-code analysis follow every class.
7
+ */
8
+ export function contextModule(name, declared) {
9
+ return defineContextModule({
10
+ name,
11
+ register(builder) {
12
+ builder.include(declared);
13
+ },
14
+ });
15
+ }
16
+ //# sourceMappingURL=context-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-module.js","sourceRoot":"","sources":["../../src/declared/context-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAGzE;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAwB;IAClE,OAAO,mBAAmB,CAAC;QACzB,IAAI;QACJ,QAAQ,CAAC,OAAO;YACd,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { DeclaredClass } from '@ddd-ts-kit/kernel/declarations';
2
+ /**
3
+ * Classes that declare themselves: one class, a list (lists may nest), or a namespace import of
4
+ * a barrel, of which only the declared classes are kept.
5
+ */
6
+ export type DeclaredSource = DeclaredClass | readonly DeclaredSource[] | Readonly<Record<string, unknown>>;
7
+ //# sourceMappingURL=declared-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declared-source.d.ts","sourceRoot":"","sources":["../../src/declared/declared-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,SAAS,cAAc,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=declared-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declared-source.js","sourceRoot":"","sources":["../../src/declared/declared-source.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { DeclaredClass } from '@ddd-ts-kit/kernel/declarations';
2
+ import type { Declarer } from '../wiring/declarer.js';
3
+ /** Remembers the file a class was discovered in, for the error messages and the description. */
4
+ export declare function rememberFile(target: DeclaredClass, file: string): void;
5
+ export declare function declarerOf(target: DeclaredClass): Declarer;
6
+ //# sourceMappingURL=discovered-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovered-files.d.ts","sourceRoot":"","sources":["../../src/declared/discovered-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,gGAAgG;AAChG,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAI1D"}
@@ -0,0 +1,10 @@
1
+ const files = new WeakMap();
2
+ /** Remembers the file a class was discovered in, for the error messages and the description. */
3
+ export function rememberFile(target, file) {
4
+ files.set(target, file);
5
+ }
6
+ export function declarerOf(target) {
7
+ const file = files.get(target);
8
+ return { className: target.name, ...(file === undefined ? {} : { file }) };
9
+ }
10
+ //# sourceMappingURL=discovered-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovered-files.js","sourceRoot":"","sources":["../../src/declared/discovered-files.ts"],"names":[],"mappings":"AAGA,MAAM,KAAK,GAAG,IAAI,OAAO,EAAyB,CAAC;AAEnD,gGAAgG;AAChG,MAAM,UAAU,YAAY,CAAC,MAAqB,EAAE,IAAY;IAC9D,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAqB;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { WiringDraft } from '../wiring/wiring-draft.js';
2
+ import type { DeclaredSource } from './declared-source.js';
3
+ interface Inclusion {
4
+ readonly draft: WiringDraft;
5
+ readonly module: string;
6
+ }
7
+ /** Turns every declaration of the source into bindings of the module, in the order they come. */
8
+ export declare function includeDeclared(inclusion: Inclusion, source: DeclaredSource): void;
9
+ export {};
10
+ //# sourceMappingURL=include-declared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"include-declared.d.ts","sourceRoot":"","sources":["../../src/declared/include-declared.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,UAAU,SAAS;IACjB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAUlF"}