@ddd-ts-kit/di 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +70 -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,19 @@
1
+ import type { AuthorizationMode } from '../authorization/authorization-mode.js';
2
+ import type { JobsOptions } from '../jobs/jobs-options.js';
3
+ import type { ContextModule } from '../module/context-module.js';
4
+ import type { Decorate } from './decorate.js';
5
+ import type { Override } from './override.js';
6
+ export interface ApplicationOptions {
7
+ readonly modules: readonly ContextModule[];
8
+ readonly decorate?: Decorate;
9
+ /** Values that replace bindings, typically fakes in tests. They are not decorated. */
10
+ readonly overrides?: readonly Override[];
11
+ /**
12
+ * `required` refuses to create an application in which a command or a query declares neither
13
+ * `.requires(permission)` nor `.public()`, or in which nothing checks them. Default `optional`.
14
+ */
15
+ readonly authorization?: AuthorizationMode;
16
+ /** Whether this process runs the declared jobs by time, and what configuration changes of each. */
17
+ readonly jobs?: JobsOptions;
18
+ }
19
+ //# sourceMappingURL=application-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-options.d.ts","sourceRoot":"","sources":["../../src/application/application-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,sFAAsF;IACtF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C,mGAAmG;IACnG,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;CAC7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=application-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-options.js","sourceRoot":"","sources":["../../src/application/application-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import type { DependencyContainer } from 'tsyringe';
2
+ import type { WiringDescription } from '../description/wiring-description.js';
3
+ import type { Resolve } from '../wiring/resolve.js';
4
+ export interface Application {
5
+ readonly resolve: Resolve;
6
+ /** Calls `onStart` of every module, in declaration order, subscribes the consumers, then starts the job scheduler. */
7
+ start(): Promise<void>;
8
+ /**
9
+ * Stops the job scheduler, unsubscribes the consumers, calls `onStop` of every started module, in
10
+ * reverse order, gives the `ErrorReporter` two seconds to send what it still holds, then
11
+ * flushes the `Logger`, last. Nothing may log through the application afterwards.
12
+ */
13
+ stop(): Promise<void>;
14
+ /** The wiring as plain data, for diagnostics and generated documentation. */
15
+ describe(): WiringDescription;
16
+ /**
17
+ * The underlying tsyringe child container, for interoperability. A port is registered under
18
+ * `tokenIdentity(port)`, never under the class: tsyringe would build a class it is asked for.
19
+ */
20
+ readonly container: DependencyContainer;
21
+ }
22
+ //# sourceMappingURL=application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/application/application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,sHAAsH;IACtH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,6EAA6E;IAC7E,QAAQ,IAAI,iBAAiB,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;CACzC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/application/application.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { Wiring } from '../wiring/wiring.js';
2
+ import type { ApplicationOptions } from './application-options.js';
3
+ import type { Application } from './application.js';
4
+ /** `createApplication` for callers that already collected the wiring to inspect it. */
5
+ export declare function assemble(wiring: Wiring, options: ApplicationOptions): Application;
6
+ //# sourceMappingURL=assemble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/application/assemble.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,uFAAuF;AACvF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAWjF"}
@@ -0,0 +1,16 @@
1
+ import { assertAuthorizationDeclared } from '../authorization/assert-authorization-declared.js';
2
+ import { assertSound } from '../checks/assert-sound.js';
3
+ import { effectiveJobs } from '../jobs/effective-jobs.js';
4
+ import { TokenSet } from '../token/token-set.js';
5
+ import { ContainerApplication } from './container-application.js';
6
+ /** `createApplication` for callers that already collected the wiring to inspect it. */
7
+ export function assemble(wiring, options) {
8
+ const overrides = options.overrides ?? [];
9
+ const overridden = new TokenSet(overrides.map(([target]) => target));
10
+ assertSound(wiring, overridden);
11
+ if (options.authorization === 'required') {
12
+ assertAuthorizationDeclared(wiring, overridden);
13
+ }
14
+ return new ContainerApplication(wiring, options, effectiveJobs(wiring, options.jobs));
15
+ }
16
+ //# sourceMappingURL=assemble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../src/application/assemble.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,uFAAuF;AACvF,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,OAA2B;IAClE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAErE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEhC,IAAI,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;QACzC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { DependencyKind } from '@ddd-ts-kit/kernel';
2
+ import type { Token } from '@ddd-ts-kit/kernel/declarations';
3
+ export interface BindingInfo {
4
+ readonly token: Token<unknown>;
5
+ /** Name of the module that declared the binding. */
6
+ readonly context: string;
7
+ /** Present when the binding was declared with `.as(kind)`. */
8
+ readonly kind?: DependencyKind;
9
+ }
10
+ //# sourceMappingURL=binding-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-info.d.ts","sourceRoot":"","sources":["../../src/application/binding-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;CAChC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=binding-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-info.js","sourceRoot":"","sources":["../../src/application/binding-info.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { Token } from '@ddd-ts-kit/kernel/declarations';
2
+ import type { Resolve } from '../wiring/resolve.js';
3
+ /** What a part of the application reads of its container: what is bound, and each bound port. */
4
+ export interface BoundPorts {
5
+ readonly resolve: Resolve;
6
+ isBound(target: Token<unknown>): boolean;
7
+ }
8
+ //# sourceMappingURL=bound-ports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bound-ports.d.ts","sourceRoot":"","sources":["../../src/application/bound-ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,iGAAiG;AACjG,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC1C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bound-ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bound-ports.js","sourceRoot":"","sources":["../../src/application/bound-ports.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import type { EventConsumption } from '../wiring/event-consumption.js';
2
+ import type { BoundPorts } from './bound-ports.js';
3
+ /** The integration event handlers of the modules, subscribed while the application runs. */
4
+ export declare class ConsumerSubscriptions {
5
+ private readonly consumptions;
6
+ private readonly ports;
7
+ private subscriptions;
8
+ constructor(consumptions: readonly EventConsumption[], ports: BoundPorts);
9
+ /** Once, however many times the application is started. */
10
+ subscribe(): void;
11
+ /** Answers what failed: one subscription that cannot be released does not keep the others. */
12
+ unsubscribe(): unknown[];
13
+ private subscribed;
14
+ private runtime;
15
+ /** Resolved at each event, as the command bus does at each command: a test may fake it after the start. */
16
+ private unitOfWorkOfEachEvent;
17
+ /** Each context listens through its own subscriber, which is the one bus unless a broker says otherwise. */
18
+ private subscriberOf;
19
+ private resolveIfBound;
20
+ }
21
+ //# sourceMappingURL=consumer-subscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-subscriptions.d.ts","sourceRoot":"","sources":["../../src/application/consumer-subscriptions.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,4FAA4F;AAC5F,qBAAa,qBAAqB;IAI9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO,CAAC,aAAa,CAA6B;IAElD,YACmB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,KAAK,EAAE,UAAU,EAChC;IAEJ,2DAA2D;IAC3D,SAAS,IAAI,IAAI,CAEhB;IAED,8FAA8F;IAC9F,WAAW,IAAI,OAAO,EAAE,CAMvB;IAED,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,OAAO;IAWf,2GAA2G;IAC3G,OAAO,CAAC,qBAAqB;IAI7B,4GAA4G;IAC5G,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,cAAc;CAGvB"}
@@ -0,0 +1,59 @@
1
+ import { EventSubscribers, ExecutionScope, IntegrationEventSubscriber, ProcessedEventStore, UnitOfWork, } from '@ddd-ts-kit/kernel';
2
+ import { Instrumentation } from '../kernel/instrumentation.js';
3
+ import { failuresOf } from './failures-of.js';
4
+ /** The integration event handlers of the modules, subscribed while the application runs. */
5
+ export class ConsumerSubscriptions {
6
+ consumptions;
7
+ ports;
8
+ subscriptions;
9
+ constructor(consumptions, ports) {
10
+ this.consumptions = consumptions;
11
+ this.ports = ports;
12
+ }
13
+ /** Once, however many times the application is started. */
14
+ subscribe() {
15
+ this.subscriptions ??= this.subscribed();
16
+ }
17
+ /** Answers what failed: one subscription that cannot be released does not keep the others. */
18
+ unsubscribe() {
19
+ const subscriptions = this.subscriptions ?? [];
20
+ this.subscriptions = undefined;
21
+ return failuresOf(subscriptions.map((subscription) => () => subscription.unsubscribe()));
22
+ }
23
+ subscribed() {
24
+ if (this.consumptions.length === 0) {
25
+ return [];
26
+ }
27
+ const runtime = this.runtime();
28
+ const instrument = this.resolveIfBound(Instrumentation)?.consumer;
29
+ return this.consumptions.map((consumption) => {
30
+ const handler = consumption.subscribe(this.ports.resolve, runtime);
31
+ return this.subscriberOf(consumption.module).subscribe(consumption.type, instrument === undefined ? handler : instrument(handler, consumerOf(consumption)));
32
+ });
33
+ }
34
+ runtime() {
35
+ const processed = this.resolveIfBound(ProcessedEventStore);
36
+ const scope = this.resolveIfBound(ExecutionScope);
37
+ return {
38
+ ...(processed === undefined ? {} : { processed }),
39
+ ...(scope === undefined ? {} : { scope }),
40
+ ...(this.ports.isBound(UnitOfWork) ? { unitOfWork: this.unitOfWorkOfEachEvent() } : {}),
41
+ };
42
+ }
43
+ /** Resolved at each event, as the command bus does at each command: a test may fake it after the start. */
44
+ unitOfWorkOfEachEvent() {
45
+ return { run: (work) => this.ports.resolve(UnitOfWork).run(work) };
46
+ }
47
+ /** Each context listens through its own subscriber, which is the one bus unless a broker says otherwise. */
48
+ subscriberOf(context) {
49
+ const subscribers = this.resolveIfBound(EventSubscribers);
50
+ return subscribers === undefined ? this.ports.resolve(IntegrationEventSubscriber) : subscribers.forContext(context);
51
+ }
52
+ resolveIfBound(target) {
53
+ return this.ports.isBound(target) ? this.ports.resolve(target) : undefined;
54
+ }
55
+ }
56
+ function consumerOf({ consumer, module, type }) {
57
+ return { consumer, context: module, type };
58
+ }
59
+ //# sourceMappingURL=consumer-subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-subscriptions.js","sourceRoot":"","sources":["../../src/application/consumer-subscriptions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { type Token } from '@ddd-ts-kit/kernel/declarations';
2
+ import type { WiringDescription } from '../description/wiring-description.js';
3
+ import type { EffectiveJob } from '../jobs/effective-job.js';
4
+ import type { Resolve } from '../wiring/resolve.js';
5
+ import type { Wiring } from '../wiring/wiring.js';
6
+ import type { ApplicationOptions } from './application-options.js';
7
+ import type { Application } from './application.js';
8
+ export declare class ContainerApplication implements Application {
9
+ private readonly wiring;
10
+ private readonly options;
11
+ readonly container: import("tsyringe").DependencyContainer;
12
+ private readonly overridden;
13
+ private readonly resolving;
14
+ private readonly started;
15
+ private readonly consumerSubscriptions;
16
+ private readonly jobLifecycle;
17
+ constructor(wiring: Wiring, options: ApplicationOptions, effectiveJobs: readonly EffectiveJob[]);
18
+ readonly resolve: Resolve;
19
+ /** The jobs come after the consumers: a job sends commands whose events must find their handlers subscribed. */
20
+ readonly start: () => Promise<void>;
21
+ /**
22
+ * The jobs go first: the runs in progress end, or are aborted, while everything they use is
23
+ * still up. The error reporter is flushed once everything stopped, so what failed while
24
+ * stopping is sent too; the logger last of all, after the last entry anything wrote.
25
+ */
26
+ readonly stop: () => Promise<void>;
27
+ readonly describe: () => WiringDescription;
28
+ replace(target: Token<unknown>, value: unknown): void;
29
+ private isBound;
30
+ private unboundError;
31
+ private provide;
32
+ private register;
33
+ private aspectsAround;
34
+ private registerValue;
35
+ private registerHandlers;
36
+ private lazily;
37
+ private attachDomainEventHandlers;
38
+ private stopModules;
39
+ /** Left alone, unbuilt, in an application without the kernel module. A reporter that cannot send keeps the stop going. */
40
+ private flushErrorReports;
41
+ /** A logger that cannot be built or flushed keeps the stop going. */
42
+ private flushLogs;
43
+ }
44
+ //# sourceMappingURL=container-application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-application.d.ts","sourceRoot":"","sources":["../../src/application/container-application.ts"],"names":[],"mappings":"AASA,OAAO,EAAoD,KAAK,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAS/G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAO7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAcpD,qBAAa,oBAAqB,YAAW,WAAW;IAgBpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,QAAQ,CAAC,SAAS,yCAAwC;IAE1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAI7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAElD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAE/C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAwB;IAE9D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C,YACmB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,EAC5C,aAAa,EAAE,SAAS,YAAY,EAAE,EAuBvC;IAGD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAkBvB;IAEF,gHAAgH;IAChH,QAAQ,CAAC,KAAK,QAAa,OAAO,CAAC,IAAI,CAAC,CAatC;IAEF;;;;OAIG;IACH,QAAQ,CAAC,IAAI,QAAa,OAAO,CAAC,IAAI,CAAC,CAarC;IAEF,QAAQ,CAAC,QAAQ,QAAO,iBAAiB,CAAyE;IAElH,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAkBpD;IAED,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,QAAQ;IAsBhB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,yBAAyB;YAcnB,WAAW;IAczB,0HAA0H;YAC5G,iBAAiB;IAY/B,qEAAqE;YACvD,SAAS;CAWxB"}
@@ -0,0 +1,224 @@
1
+ import { CommandBus, DomainEventDispatcher, ErrorReporter, JobScheduler, Logger, QueryBus, } from '@ddd-ts-kit/kernel';
2
+ import { describeToken, tokenIdentity } from '@ddd-ts-kit/kernel/declarations';
3
+ import { container as rootContainer, instanceCachingFactory } from 'tsyringe';
4
+ import { DeclaredPolicies } from '../authorization/declared-policies.js';
5
+ import { declarationsOf } from '../authorization/declarations-of.js';
6
+ import { passEveryMessage } from '../authorization/pass-every-message.js';
7
+ import { UseCaseDeclarations } from '../authorization/use-case-declarations.js';
8
+ import { UseCaseGuard } from '../authorization/use-case-guard.js';
9
+ import { cycleError } from '../checks/cycle-error.js';
10
+ import { describeWiring } from '../description/describe-wiring.js';
11
+ import { WiringError } from '../errors/wiring-error.js';
12
+ import { sameToken } from '../token/same-token.js';
13
+ import { TokenSet } from '../token/token-set.js';
14
+ import { ConsumerSubscriptions } from './consumer-subscriptions.js';
15
+ import { isHandlerRegistry } from './is-handler-registry.js';
16
+ import { JobLifecycle } from './job-lifecycle.js';
17
+ import { withBindingAspects } from './with-binding-aspects.js';
18
+ const ERROR_FLUSH_TIMEOUT_MS = 2_000;
19
+ const BUS_OF = {
20
+ command: CommandBus,
21
+ query: QueryBus,
22
+ };
23
+ export class ContainerApplication {
24
+ wiring;
25
+ options;
26
+ container = rootContainer.createChildContainer();
27
+ overridden = new TokenSet();
28
+ // Tokens under construction: a factory asking for one of them is a cycle that the
29
+ // static check cannot see, since factories do not declare their dependencies.
30
+ resolving = [];
31
+ started = [];
32
+ consumerSubscriptions;
33
+ jobLifecycle;
34
+ constructor(wiring, options, effectiveJobs) {
35
+ this.wiring = wiring;
36
+ this.options = options;
37
+ const ports = { resolve: this.resolve, isBound: (target) => this.isBound(target) };
38
+ this.consumerSubscriptions = new ConsumerSubscriptions(wiring.consumptions, ports);
39
+ this.jobLifecycle = new JobLifecycle(effectiveJobs, ports, options.jobs?.start !== false);
40
+ // Registered first: a module binding or an override of the guard comes later and wins.
41
+ this.provide(UseCaseGuard, passEveryMessage);
42
+ this.provide(UseCaseDeclarations, { list: declarationsOf(wiring) });
43
+ this.provide(DeclaredPolicies, { list: wiring.policies });
44
+ for (const binding of wiring.bindings.values()) {
45
+ this.register(binding);
46
+ }
47
+ for (const [target, value] of options.overrides ?? []) {
48
+ this.registerValue(target, value);
49
+ }
50
+ this.registerHandlers('command');
51
+ this.registerHandlers('query');
52
+ this.attachDomainEventHandlers();
53
+ this.jobLifecycle.register();
54
+ }
55
+ // Arrow properties, here and below: callers destructure them and pass them around.
56
+ resolve = (target) => {
57
+ if (!this.isBound(target)) {
58
+ throw this.unboundError(target);
59
+ }
60
+ const loopStart = this.resolving.findIndex((step) => sameToken(step, target));
61
+ if (loopStart !== -1) {
62
+ throw cycleError([...this.resolving.slice(loopStart), target]);
63
+ }
64
+ this.resolving.push(target);
65
+ try {
66
+ return this.container.resolve(tokenIdentity(target));
67
+ }
68
+ finally {
69
+ this.resolving.pop();
70
+ }
71
+ };
72
+ /** The jobs come after the consumers: a job sends commands whose events must find their handlers subscribed. */
73
+ start = async () => {
74
+ for (const module of this.options.modules) {
75
+ if (this.started.includes(module)) {
76
+ continue;
77
+ }
78
+ // Recorded first: a module whose start failed half-way still gets its onStop.
79
+ this.started.push(module);
80
+ await module.onStart?.({ resolve: this.resolve });
81
+ }
82
+ this.consumerSubscriptions.subscribe();
83
+ await this.jobLifecycle.start();
84
+ };
85
+ /**
86
+ * The jobs go first: the runs in progress end, or are aborted, while everything they use is
87
+ * still up. The error reporter is flushed once everything stopped, so what failed while
88
+ * stopping is sent too; the logger last of all, after the last entry anything wrote.
89
+ */
90
+ stop = async () => {
91
+ const failures = [
92
+ ...(await this.jobLifecycle.stop()),
93
+ ...this.consumerSubscriptions.unsubscribe(),
94
+ ...(await this.stopModules()),
95
+ ];
96
+ await this.flushErrorReports();
97
+ await this.flushLogs();
98
+ if (failures.length > 0) {
99
+ throw new AggregateError(failures, `${failures.length} module(s) failed to stop`);
100
+ }
101
+ };
102
+ describe = () => describeWiring(this.wiring, this.overridden, this.jobLifecycle.jobs);
103
+ replace(target, value) {
104
+ this.registerValue(target, value);
105
+ if (sameToken(target, CommandBus)) {
106
+ this.registerHandlers('command');
107
+ }
108
+ if (sameToken(target, QueryBus)) {
109
+ this.registerHandlers('query');
110
+ }
111
+ if (sameToken(target, DomainEventDispatcher)) {
112
+ this.attachDomainEventHandlers();
113
+ }
114
+ if (sameToken(target, JobScheduler)) {
115
+ this.jobLifecycle.register();
116
+ }
117
+ }
118
+ isBound(target) {
119
+ return this.container.isRegistered(tokenIdentity(target));
120
+ }
121
+ unboundError(target) {
122
+ const requester = this.resolving.at(-1);
123
+ const asked = requester === undefined ? '' : `, required by "${describeToken(requester)}"`;
124
+ return new WiringError('UNBOUND_TOKEN', `No module binds "${describeToken(target)}"${asked}.`);
125
+ }
126
+ provide(target, value) {
127
+ this.container.register(tokenIdentity(target), { useValue: value });
128
+ }
129
+ register(binding) {
130
+ const info = {
131
+ token: binding.token,
132
+ context: binding.module,
133
+ ...(binding.kind === undefined ? {} : { kind: binding.kind }),
134
+ };
135
+ const { decorate } = this.options;
136
+ const create = () => {
137
+ const instance = withBindingAspects(binding.create(this.resolve), binding, this.aspectsAround(binding));
138
+ return decorate === undefined ? instance : decorate(instance, info);
139
+ };
140
+ // tsyringe refuses Lifecycle.Singleton on factory providers; its caching factory
141
+ // is the supported way to get one instance per container.
142
+ this.container.register(tokenIdentity(binding.token), {
143
+ useFactory: binding.lifetime === 'singleton' ? instanceCachingFactory(create) : create,
144
+ });
145
+ }
146
+ aspectsAround({ kind }) {
147
+ if (kind === undefined) {
148
+ return [];
149
+ }
150
+ return this.wiring.kindAspects
151
+ .filter((around) => around.kinds.includes(kind))
152
+ .map((around) => around.aspect(this.resolve));
153
+ }
154
+ registerValue(target, value) {
155
+ // tsyringe resolves the most recent registration of a token.
156
+ this.provide(target, value);
157
+ this.overridden.add(target);
158
+ }
159
+ registerHandlers(kind) {
160
+ const handlings = this.wiring.handlings.filter((handling) => handling.kind === kind);
161
+ if (handlings.length === 0) {
162
+ return;
163
+ }
164
+ const bus = this.resolve(BUS_OF[kind]);
165
+ if (!isHandlerRegistry(bus)) {
166
+ throw new WiringError('BUS_WITHOUT_REGISTER', `"${describeToken(BUS_OF[kind])}" has no register(type, handler) method, so the ${handlings.length} ${kind} handler(s) declared by the modules cannot be attached to it. Bind an in-process bus, or register the handlers where the bus runs.`);
167
+ }
168
+ for (const handling of handlings) {
169
+ bus.register(handling.message, this.lazily(handling), { context: handling.module });
170
+ }
171
+ }
172
+ // Async so that a handler failing to be built rejects the execution instead of throwing
173
+ // through the bus middlewares synchronously.
174
+ lazily(handling) {
175
+ return { execute: async (message) => this.resolve(handling.handler).execute(message) };
176
+ }
177
+ attachDomainEventHandlers() {
178
+ const { domainEventHandlers } = this.wiring;
179
+ if (domainEventHandlers.length === 0) {
180
+ return;
181
+ }
182
+ const dispatcher = this.resolve(DomainEventDispatcher);
183
+ for (const handling of domainEventHandlers) {
184
+ handling.attach(this.resolve, dispatcher);
185
+ }
186
+ }
187
+ async stopModules() {
188
+ const failures = [];
189
+ for (const module of this.started.splice(0).reverse()) {
190
+ try {
191
+ await module.onStop?.({ resolve: this.resolve });
192
+ }
193
+ catch (error) {
194
+ failures.push(error);
195
+ }
196
+ }
197
+ return failures;
198
+ }
199
+ /** Left alone, unbuilt, in an application without the kernel module. A reporter that cannot send keeps the stop going. */
200
+ async flushErrorReports() {
201
+ if (!this.isBound(ErrorReporter)) {
202
+ return;
203
+ }
204
+ try {
205
+ await this.resolve(ErrorReporter).flush(ERROR_FLUSH_TIMEOUT_MS);
206
+ }
207
+ catch {
208
+ return;
209
+ }
210
+ }
211
+ /** A logger that cannot be built or flushed keeps the stop going. */
212
+ async flushLogs() {
213
+ if (!this.isBound(Logger)) {
214
+ return;
215
+ }
216
+ try {
217
+ await this.resolve(Logger).flush();
218
+ }
219
+ catch {
220
+ return;
221
+ }
222
+ }
223
+ }
224
+ //# sourceMappingURL=container-application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-application.js","sourceRoot":"","sources":["../../src/application/container-application.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ApplicationOptions } from './application-options.js';
2
+ import type { Application } from './application.js';
3
+ /**
4
+ * Wires the modules into a tsyringe child container (so two applications, or two tests,
5
+ * never share instances) and checks the graph before anything is instantiated. The command
6
+ * and query buses are then resolved to receive the declared handlers; a handler itself is
7
+ * instantiated on the first message it handles.
8
+ */
9
+ export declare function createApplication(options: ApplicationOptions): Application;
10
+ //# sourceMappingURL=create-application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-application.d.ts","sourceRoot":"","sources":["../../src/application/create-application.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAE1E"}
@@ -0,0 +1,12 @@
1
+ import { collectWiring } from '../module/collect-wiring.js';
2
+ import { assemble } from './assemble.js';
3
+ /**
4
+ * Wires the modules into a tsyringe child container (so two applications, or two tests,
5
+ * never share instances) and checks the graph before anything is instantiated. The command
6
+ * and query buses are then resolved to receive the declared handlers; a handler itself is
7
+ * instantiated on the first message it handles.
8
+ */
9
+ export function createApplication(options) {
10
+ return assemble(collectWiring(options.modules), options);
11
+ }
12
+ //# sourceMappingURL=create-application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-application.js","sourceRoot":"","sources":["../../src/application/create-application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { BindingInfo } from './binding-info.js';
2
+ /**
3
+ * Applied to every instance a binding creates, once per creation. This is where a
4
+ * project plugs cross-cutting wrappers (tracing, metrics) without the wrapped class
5
+ * knowing. It must return the instance or a stand-in of the same type.
6
+ */
7
+ export type Decorate = <T>(instance: T, info: BindingInfo) => T;
8
+ //# sourceMappingURL=decorate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorate.d.ts","sourceRoot":"","sources":["../../src/application/decorate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=decorate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorate.js","sourceRoot":"","sources":["../../src/application/decorate.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { Application } from './application.js';
2
+ /**
3
+ * The application behind each object that stands in front of one, as the test application
4
+ * does: what is asked of the front and concerns the container goes to the application itself.
5
+ */
6
+ export declare const delegatingApplications: WeakMap<Application, Application>;
7
+ //# sourceMappingURL=delegating-applications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegating-applications.d.ts","sourceRoot":"","sources":["../../src/application/delegating-applications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,mCAA0C,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The application behind each object that stands in front of one, as the test application
3
+ * does: what is asked of the front and concerns the container goes to the application itself.
4
+ */
5
+ export const delegatingApplications = new WeakMap();
6
+ //# sourceMappingURL=delegating-applications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegating-applications.js","sourceRoot":"","sources":["../../src/application/delegating-applications.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,OAAO,EAA4B,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Runs every attempt, whatever the previous ones did, and answers what they threw. */
2
+ export declare function failuresOf(attempts: readonly (() => void)[]): unknown[];
3
+ //# sourceMappingURL=failures-of.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failures-of.d.ts","sourceRoot":"","sources":["../../src/application/failures-of.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,CAUvE"}