@bett3r-dev/pv3 1.0.0 → 2.5.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 (648) hide show
  1. package/CHANGELOG.md +329 -0
  2. package/build/adapters/cache/memory/index.d.ts.map +1 -1
  3. package/build/adapters/cache/memory/index.js +93 -20
  4. package/build/adapters/cache/memory/index.js.map +1 -1
  5. package/build/adapters/cache/memory/index.test.d.ts +2 -0
  6. package/build/adapters/cache/memory/index.test.d.ts.map +1 -0
  7. package/build/adapters/cache/memory/index.test.js +98 -0
  8. package/build/adapters/cache/memory/index.test.js.map +1 -0
  9. package/build/adapters/configuration/dotEnv.d.ts.map +1 -1
  10. package/build/adapters/configuration/dotEnv.js.map +1 -1
  11. package/build/adapters/database/memory/index.d.ts +5 -1
  12. package/build/adapters/database/memory/index.d.ts.map +1 -1
  13. package/build/adapters/database/memory/index.js +336 -44
  14. package/build/adapters/database/memory/index.js.map +1 -1
  15. package/build/adapters/database/memory/index.test.d.ts +2 -0
  16. package/build/adapters/database/memory/index.test.d.ts.map +1 -0
  17. package/build/adapters/database/memory/index.test.js +167 -0
  18. package/build/adapters/database/memory/index.test.js.map +1 -0
  19. package/build/adapters/database/memory/pagingCursorZero.test.d.ts +2 -0
  20. package/build/adapters/database/memory/pagingCursorZero.test.d.ts.map +1 -0
  21. package/build/adapters/database/memory/pagingCursorZero.test.js +60 -0
  22. package/build/adapters/database/memory/pagingCursorZero.test.js.map +1 -0
  23. package/build/adapters/database/memory/pagingVanishedCursor.test.d.ts +2 -0
  24. package/build/adapters/database/memory/pagingVanishedCursor.test.d.ts.map +1 -0
  25. package/build/adapters/database/memory/pagingVanishedCursor.test.js +72 -0
  26. package/build/adapters/database/memory/pagingVanishedCursor.test.js.map +1 -0
  27. package/build/adapters/endpoints/addAuthUser/index.d.ts +6 -4
  28. package/build/adapters/endpoints/addAuthUser/index.d.ts.map +1 -1
  29. package/build/adapters/endpoints/addAuthUser/index.js +12 -31
  30. package/build/adapters/endpoints/addAuthUser/index.js.map +1 -1
  31. package/build/adapters/endpoints/addDevAuthUser/index.d.ts +32 -0
  32. package/build/adapters/endpoints/addDevAuthUser/index.d.ts.map +1 -0
  33. package/build/adapters/endpoints/addDevAuthUser/index.js +39 -0
  34. package/build/adapters/endpoints/addDevAuthUser/index.js.map +1 -0
  35. package/build/adapters/endpoints/asyncLocalStorage/__tests__/asyncLocalStorage.test.d.ts +2 -0
  36. package/build/adapters/endpoints/asyncLocalStorage/__tests__/asyncLocalStorage.test.d.ts.map +1 -0
  37. package/build/adapters/endpoints/asyncLocalStorage/__tests__/asyncLocalStorage.test.js +97 -0
  38. package/build/adapters/endpoints/asyncLocalStorage/__tests__/asyncLocalStorage.test.js.map +1 -0
  39. package/build/adapters/endpoints/asyncLocalStorage/index.d.ts +22 -0
  40. package/build/adapters/endpoints/asyncLocalStorage/index.d.ts.map +1 -0
  41. package/build/adapters/endpoints/asyncLocalStorage/index.js +62 -0
  42. package/build/adapters/endpoints/asyncLocalStorage/index.js.map +1 -0
  43. package/build/adapters/endpoints/endpointValidation/__tests__/endpointValidation.test.d.ts +2 -0
  44. package/build/adapters/endpoints/endpointValidation/__tests__/endpointValidation.test.d.ts.map +1 -0
  45. package/build/adapters/endpoints/endpointValidation/__tests__/endpointValidation.test.js +98 -0
  46. package/build/adapters/endpoints/endpointValidation/__tests__/endpointValidation.test.js.map +1 -0
  47. package/build/adapters/endpoints/endpointValidation/index.d.ts +2 -2
  48. package/build/adapters/endpoints/endpointValidation/index.d.ts.map +1 -1
  49. package/build/adapters/endpoints/endpointValidation/index.js +19 -9
  50. package/build/adapters/endpoints/endpointValidation/index.js.map +1 -1
  51. package/build/adapters/endpoints/genericMiddleware/index.d.ts +23 -0
  52. package/build/adapters/endpoints/genericMiddleware/index.d.ts.map +1 -0
  53. package/build/adapters/endpoints/genericMiddleware/index.js +30 -0
  54. package/build/adapters/endpoints/genericMiddleware/index.js.map +1 -0
  55. package/build/adapters/endpoints/httpMethodOverride/index.d.ts +8 -0
  56. package/build/adapters/endpoints/httpMethodOverride/index.d.ts.map +1 -0
  57. package/build/adapters/endpoints/httpMethodOverride/index.js +44 -0
  58. package/build/adapters/endpoints/httpMethodOverride/index.js.map +1 -0
  59. package/build/adapters/endpoints/index.d.ts +5 -0
  60. package/build/adapters/endpoints/index.d.ts.map +1 -1
  61. package/build/adapters/endpoints/index.js +5 -1
  62. package/build/adapters/endpoints/index.js.map +1 -1
  63. package/build/adapters/endpoints/localAuthorization/index.d.ts +1 -0
  64. package/build/adapters/endpoints/localAuthorization/index.js +2 -0
  65. package/build/adapters/endpoints/localAuthorization/index.js.map +1 -1
  66. package/build/adapters/endpoints/mapQueryFromHeaders/index.d.ts +8 -0
  67. package/build/adapters/endpoints/mapQueryFromHeaders/index.d.ts.map +1 -0
  68. package/build/adapters/endpoints/mapQueryFromHeaders/index.js +36 -0
  69. package/build/adapters/endpoints/mapQueryFromHeaders/index.js.map +1 -0
  70. package/build/adapters/endpoints/tcpConsumer/index.d.ts.map +1 -1
  71. package/build/adapters/endpoints/tcpConsumer/index.js +8 -7
  72. package/build/adapters/endpoints/tcpConsumer/index.js.map +1 -1
  73. package/build/adapters/endpoints/userSession/__tests__/userSession.test.d.ts +2 -0
  74. package/build/adapters/endpoints/userSession/__tests__/userSession.test.d.ts.map +1 -0
  75. package/build/adapters/endpoints/userSession/__tests__/userSession.test.js +175 -0
  76. package/build/adapters/endpoints/userSession/__tests__/userSession.test.js.map +1 -0
  77. package/build/adapters/endpoints/userSession/index.d.ts +2 -2
  78. package/build/adapters/endpoints/userSession/index.d.ts.map +1 -1
  79. package/build/adapters/endpoints/userSession/index.js +36 -2
  80. package/build/adapters/endpoints/userSession/index.js.map +1 -1
  81. package/build/adapters/eventstore/database.d.ts.map +1 -1
  82. package/build/adapters/eventstore/database.js +261 -58
  83. package/build/adapters/eventstore/database.js.map +1 -1
  84. package/build/adapters/eventstore/database.test.d.ts +2 -0
  85. package/build/adapters/eventstore/database.test.d.ts.map +1 -0
  86. package/build/adapters/eventstore/database.test.js +123 -0
  87. package/build/adapters/eventstore/database.test.js.map +1 -0
  88. package/build/adapters/infrastructure/local/index.d.ts +2 -2
  89. package/build/adapters/infrastructure/local/index.d.ts.map +1 -1
  90. package/build/adapters/infrastructure/local/index.js +3 -3
  91. package/build/adapters/infrastructure/local/index.js.map +1 -1
  92. package/build/adapters/logger/__tests__/json.test.d.ts +2 -0
  93. package/build/adapters/logger/__tests__/json.test.d.ts.map +1 -0
  94. package/build/adapters/logger/__tests__/json.test.js +125 -0
  95. package/build/adapters/logger/__tests__/json.test.js.map +1 -0
  96. package/build/adapters/logger/console.d.ts.map +1 -1
  97. package/build/adapters/logger/console.js +4 -2
  98. package/build/adapters/logger/console.js.map +1 -1
  99. package/build/adapters/logger/http.d.ts +3 -0
  100. package/build/adapters/logger/http.d.ts.map +1 -0
  101. package/build/adapters/logger/http.js +49 -0
  102. package/build/adapters/logger/http.js.map +1 -0
  103. package/build/adapters/logger/index.d.ts +3 -0
  104. package/build/adapters/logger/index.d.ts.map +1 -1
  105. package/build/adapters/logger/index.js +3 -0
  106. package/build/adapters/logger/index.js.map +1 -1
  107. package/build/adapters/logger/json.d.ts +3 -0
  108. package/build/adapters/logger/json.d.ts.map +1 -0
  109. package/build/adapters/logger/json.js +41 -0
  110. package/build/adapters/logger/json.js.map +1 -0
  111. package/build/adapters/logger/stdout.d.ts +3 -0
  112. package/build/adapters/logger/stdout.d.ts.map +1 -0
  113. package/build/adapters/logger/stdout.js +52 -0
  114. package/build/adapters/logger/stdout.js.map +1 -0
  115. package/build/index.d.ts +3 -1
  116. package/build/index.d.ts.map +1 -1
  117. package/build/index.js +3 -1
  118. package/build/index.js.map +1 -1
  119. package/build/libraries/deployment-units/computeMDUs.d.ts +11 -0
  120. package/build/libraries/deployment-units/computeMDUs.d.ts.map +1 -0
  121. package/build/libraries/deployment-units/computeMDUs.js +695 -0
  122. package/build/libraries/deployment-units/computeMDUs.js.map +1 -0
  123. package/build/libraries/deployment-units/computeMDUs.test.d.ts +2 -0
  124. package/build/libraries/deployment-units/computeMDUs.test.d.ts.map +1 -0
  125. package/build/libraries/deployment-units/computeMDUs.test.js +996 -0
  126. package/build/libraries/deployment-units/computeMDUs.test.js.map +1 -0
  127. package/build/libraries/deployment-units/index.d.ts +6 -0
  128. package/build/libraries/deployment-units/index.d.ts.map +1 -0
  129. package/build/libraries/deployment-units/index.js +8 -0
  130. package/build/libraries/deployment-units/index.js.map +1 -0
  131. package/build/libraries/deployment-units/manifestWriter.d.ts +11 -0
  132. package/build/libraries/deployment-units/manifestWriter.d.ts.map +1 -0
  133. package/build/libraries/deployment-units/manifestWriter.js +28 -0
  134. package/build/libraries/deployment-units/manifestWriter.js.map +1 -0
  135. package/build/libraries/deployment-units/types.d.ts +43 -0
  136. package/build/libraries/deployment-units/types.d.ts.map +1 -0
  137. package/build/libraries/deployment-units/types.js +3 -0
  138. package/build/libraries/deployment-units/types.js.map +1 -0
  139. package/build/libraries/eventsourcing/__tests__/fixtures/defaultVisibilityThings.readmodel.d.ts +2 -0
  140. package/build/libraries/eventsourcing/__tests__/fixtures/defaultVisibilityThings.readmodel.d.ts.map +1 -0
  141. package/build/libraries/eventsourcing/__tests__/fixtures/defaultVisibilityThings.readmodel.js +17 -0
  142. package/build/libraries/eventsourcing/__tests__/fixtures/defaultVisibilityThings.readmodel.js.map +1 -0
  143. package/build/libraries/eventsourcing/__tests__/fixtures/dupA/things.readmodel.d.ts +2 -0
  144. package/build/libraries/eventsourcing/__tests__/fixtures/dupA/things.readmodel.d.ts.map +1 -0
  145. package/build/libraries/eventsourcing/__tests__/fixtures/dupA/things.readmodel.js +13 -0
  146. package/build/libraries/eventsourcing/__tests__/fixtures/dupA/things.readmodel.js.map +1 -0
  147. package/build/libraries/eventsourcing/__tests__/fixtures/dupB/things.readmodel.d.ts +2 -0
  148. package/build/libraries/eventsourcing/__tests__/fixtures/dupB/things.readmodel.d.ts.map +1 -0
  149. package/build/libraries/eventsourcing/__tests__/fixtures/dupB/things.readmodel.js +12 -0
  150. package/build/libraries/eventsourcing/__tests__/fixtures/dupB/things.readmodel.js.map +1 -0
  151. package/build/libraries/eventsourcing/__tests__/fixtures/publicThings.readmodel.d.ts +2 -0
  152. package/build/libraries/eventsourcing/__tests__/fixtures/publicThings.readmodel.d.ts.map +1 -0
  153. package/build/libraries/eventsourcing/__tests__/fixtures/publicThings.readmodel.js +21 -0
  154. package/build/libraries/eventsourcing/__tests__/fixtures/publicThings.readmodel.js.map +1 -0
  155. package/build/libraries/eventsourcing/__tests__/fixtures/queryOnlyThings.readmodel.d.ts +2 -0
  156. package/build/libraries/eventsourcing/__tests__/fixtures/queryOnlyThings.readmodel.d.ts.map +1 -0
  157. package/build/libraries/eventsourcing/__tests__/fixtures/queryOnlyThings.readmodel.js +16 -0
  158. package/build/libraries/eventsourcing/__tests__/fixtures/queryOnlyThings.readmodel.js.map +1 -0
  159. package/build/libraries/eventsourcing/__tests__/fixtures/subscribingThings.readmodel.d.ts +2 -0
  160. package/build/libraries/eventsourcing/__tests__/fixtures/subscribingThings.readmodel.d.ts.map +1 -0
  161. package/build/libraries/eventsourcing/__tests__/fixtures/subscribingThings.readmodel.js +14 -0
  162. package/build/libraries/eventsourcing/__tests__/fixtures/subscribingThings.readmodel.js.map +1 -0
  163. package/build/libraries/eventsourcing/__tests__/queryOnlyReadmodel.test.d.ts +2 -0
  164. package/build/libraries/eventsourcing/__tests__/queryOnlyReadmodel.test.d.ts.map +1 -0
  165. package/build/libraries/eventsourcing/__tests__/queryOnlyReadmodel.test.js +88 -0
  166. package/build/libraries/eventsourcing/__tests__/queryOnlyReadmodel.test.js.map +1 -0
  167. package/build/libraries/eventsourcing/__tests__/queryVisibility.test.d.ts +2 -0
  168. package/build/libraries/eventsourcing/__tests__/queryVisibility.test.d.ts.map +1 -0
  169. package/build/libraries/eventsourcing/__tests__/queryVisibility.test.js +82 -0
  170. package/build/libraries/eventsourcing/__tests__/queryVisibility.test.js.map +1 -0
  171. package/build/libraries/eventsourcing/commandHandlers/index.d.ts +40 -0
  172. package/build/libraries/eventsourcing/commandHandlers/index.d.ts.map +1 -0
  173. package/build/libraries/eventsourcing/commandHandlers/index.js +1065 -0
  174. package/build/libraries/eventsourcing/commandHandlers/index.js.map +1 -0
  175. package/build/libraries/eventsourcing/commandTemplates/index.d.ts.map +1 -0
  176. package/build/libraries/eventsourcing/commandTemplates/index.js.map +1 -0
  177. package/build/libraries/eventsourcing/commandTemplates/multiStream.d.ts +7 -0
  178. package/build/libraries/eventsourcing/commandTemplates/multiStream.d.ts.map +1 -0
  179. package/build/libraries/eventsourcing/commandTemplates/multiStream.js +116 -0
  180. package/build/libraries/eventsourcing/commandTemplates/multiStream.js.map +1 -0
  181. package/build/libraries/eventsourcing/commandTemplates/snapshot.d.ts +108 -0
  182. package/build/libraries/eventsourcing/commandTemplates/snapshot.d.ts.map +1 -0
  183. package/build/libraries/eventsourcing/commandTemplates/snapshot.js +127 -0
  184. package/build/libraries/eventsourcing/commandTemplates/snapshot.js.map +1 -0
  185. package/build/libraries/eventsourcing/eventHandlers/__tests__/queryResponseFormatterCaller.test.d.ts +2 -0
  186. package/build/libraries/eventsourcing/eventHandlers/__tests__/queryResponseFormatterCaller.test.d.ts.map +1 -0
  187. package/build/libraries/eventsourcing/eventHandlers/__tests__/queryResponseFormatterCaller.test.js +77 -0
  188. package/build/libraries/eventsourcing/eventHandlers/__tests__/queryResponseFormatterCaller.test.js.map +1 -0
  189. package/build/libraries/eventsourcing/eventHandlers/index.d.ts +52 -0
  190. package/build/libraries/eventsourcing/eventHandlers/index.d.ts.map +1 -0
  191. package/build/libraries/eventsourcing/eventHandlers/index.js +474 -0
  192. package/build/libraries/eventsourcing/eventHandlers/index.js.map +1 -0
  193. package/build/libraries/eventsourcing/executionContext.d.ts +50 -0
  194. package/build/libraries/eventsourcing/executionContext.d.ts.map +1 -0
  195. package/build/libraries/eventsourcing/executionContext.js +10 -0
  196. package/build/libraries/eventsourcing/executionContext.js.map +1 -0
  197. package/build/libraries/eventsourcing/idempotencyChecks/index.d.ts +5 -0
  198. package/build/libraries/eventsourcing/idempotencyChecks/index.d.ts.map +1 -0
  199. package/build/libraries/eventsourcing/idempotencyChecks/index.js +26 -0
  200. package/build/libraries/eventsourcing/idempotencyChecks/index.js.map +1 -0
  201. package/build/libraries/eventsourcing/index.d.ts +14 -0
  202. package/build/libraries/eventsourcing/index.d.ts.map +1 -0
  203. package/build/{ports → libraries}/eventsourcing/index.js +50 -15
  204. package/build/{ports → libraries}/eventsourcing/index.js.map +1 -1
  205. package/build/libraries/eventsourcing/invariants/combinators.d.ts +4 -0
  206. package/build/libraries/eventsourcing/invariants/combinators.d.ts.map +1 -0
  207. package/build/{ports → libraries}/eventsourcing/invariants/combinators.js +3 -3
  208. package/build/libraries/eventsourcing/invariants/combinators.js.map +1 -0
  209. package/build/libraries/eventsourcing/invariants/common.d.ts +15 -0
  210. package/build/libraries/eventsourcing/invariants/common.d.ts.map +1 -0
  211. package/build/libraries/eventsourcing/invariants/common.js +27 -0
  212. package/build/libraries/eventsourcing/invariants/common.js.map +1 -0
  213. package/build/libraries/eventsourcing/invariants/comparisons.d.ts +16 -0
  214. package/build/libraries/eventsourcing/invariants/comparisons.d.ts.map +1 -0
  215. package/build/libraries/eventsourcing/invariants/comparisons.js +35 -0
  216. package/build/libraries/eventsourcing/invariants/comparisons.js.map +1 -0
  217. package/build/libraries/eventsourcing/invariants/comparisons.test.d.ts +2 -0
  218. package/build/libraries/eventsourcing/invariants/comparisons.test.d.ts.map +1 -0
  219. package/build/libraries/eventsourcing/invariants/comparisons.test.js +25 -0
  220. package/build/libraries/eventsourcing/invariants/comparisons.test.js.map +1 -0
  221. package/build/libraries/eventsourcing/invariants/index.d.ts +17 -0
  222. package/build/libraries/eventsourcing/invariants/index.d.ts.map +1 -0
  223. package/build/libraries/eventsourcing/invariants/index.js +47 -0
  224. package/build/libraries/eventsourcing/invariants/index.js.map +1 -0
  225. package/build/libraries/eventsourcing/invariants/stateExistance.d.ts +4 -0
  226. package/build/libraries/eventsourcing/invariants/stateExistance.d.ts.map +1 -0
  227. package/build/libraries/eventsourcing/invariants/stateExistance.js +22 -0
  228. package/build/libraries/eventsourcing/invariants/stateExistance.js.map +1 -0
  229. package/build/libraries/eventsourcing/subscriptions/__tests__/sseSubscriptions.test.d.ts +2 -0
  230. package/build/libraries/eventsourcing/subscriptions/__tests__/sseSubscriptions.test.d.ts.map +1 -0
  231. package/build/libraries/eventsourcing/subscriptions/__tests__/sseSubscriptions.test.js +563 -0
  232. package/build/libraries/eventsourcing/subscriptions/__tests__/sseSubscriptions.test.js.map +1 -0
  233. package/build/libraries/eventsourcing/subscriptions/index.d.ts.map +1 -0
  234. package/build/libraries/eventsourcing/subscriptions/index.js.map +1 -0
  235. package/build/libraries/eventsourcing/subscriptions/sseSubscriptions.d.ts +5 -0
  236. package/build/libraries/eventsourcing/subscriptions/sseSubscriptions.d.ts.map +1 -0
  237. package/build/libraries/eventsourcing/subscriptions/sseSubscriptions.js +198 -0
  238. package/build/libraries/eventsourcing/subscriptions/sseSubscriptions.js.map +1 -0
  239. package/build/libraries/eventsourcing/utils/aggregateBuilder.d.ts +5 -0
  240. package/build/libraries/eventsourcing/utils/aggregateBuilder.d.ts.map +1 -0
  241. package/build/{ports → libraries}/eventsourcing/utils/aggregateBuilder.js +17 -3
  242. package/build/libraries/eventsourcing/utils/aggregateBuilder.js.map +1 -0
  243. package/build/libraries/eventsourcing/utils/commandBuilder.d.ts +3 -0
  244. package/build/libraries/eventsourcing/utils/commandBuilder.d.ts.map +1 -0
  245. package/build/{ports → libraries}/eventsourcing/utils/commandBuilder.js +44 -1
  246. package/build/libraries/eventsourcing/utils/commandBuilder.js.map +1 -0
  247. package/build/{ports → libraries}/eventsourcing/utils/eventHandlerBuilder.d.ts +2 -2
  248. package/build/libraries/eventsourcing/utils/eventHandlerBuilder.d.ts.map +1 -0
  249. package/build/libraries/eventsourcing/utils/eventHandlerBuilder.js.map +1 -0
  250. package/build/libraries/eventsourcing/utils/externalSystemBuilder.d.ts +5 -0
  251. package/build/libraries/eventsourcing/utils/externalSystemBuilder.d.ts.map +1 -0
  252. package/build/libraries/eventsourcing/utils/externalSystemBuilder.js +43 -0
  253. package/build/libraries/eventsourcing/utils/externalSystemBuilder.js.map +1 -0
  254. package/build/libraries/eventsourcing/utils/index.d.ts +22 -0
  255. package/build/libraries/eventsourcing/utils/index.d.ts.map +1 -0
  256. package/build/libraries/eventsourcing/utils/index.js +88 -0
  257. package/build/libraries/eventsourcing/utils/index.js.map +1 -0
  258. package/build/libraries/eventsourcing/utils/policyBuilder.d.ts +4 -0
  259. package/build/libraries/eventsourcing/utils/policyBuilder.d.ts.map +1 -0
  260. package/build/libraries/eventsourcing/utils/policyBuilder.js +53 -0
  261. package/build/libraries/eventsourcing/utils/policyBuilder.js.map +1 -0
  262. package/build/libraries/eventsourcing/utils/readmodelBuilder.d.ts +6 -0
  263. package/build/libraries/eventsourcing/utils/readmodelBuilder.d.ts.map +1 -0
  264. package/build/libraries/eventsourcing/utils/readmodelBuilder.js +68 -0
  265. package/build/libraries/eventsourcing/utils/readmodelBuilder.js.map +1 -0
  266. package/build/libraries/localOutbox/index.d.ts +6 -0
  267. package/build/libraries/localOutbox/index.d.ts.map +1 -0
  268. package/build/libraries/localOutbox/index.js +72 -0
  269. package/build/libraries/localOutbox/index.js.map +1 -0
  270. package/build/libraries/modulePath.d.ts +14 -0
  271. package/build/libraries/modulePath.d.ts.map +1 -0
  272. package/build/libraries/modulePath.js +21 -0
  273. package/build/libraries/modulePath.js.map +1 -0
  274. package/build/libraries/modules/fs.d.ts +2 -4
  275. package/build/libraries/modules/fs.d.ts.map +1 -1
  276. package/build/libraries/modules/fs.js +21 -84
  277. package/build/libraries/modules/fs.js.map +1 -1
  278. package/build/libraries/modules/index.d.ts +2 -0
  279. package/build/libraries/modules/index.d.ts.map +1 -1
  280. package/build/libraries/modules/index.js +2 -0
  281. package/build/libraries/modules/index.js.map +1 -1
  282. package/build/libraries/modules/scopedPortsView.d.ts +42 -0
  283. package/build/libraries/modules/scopedPortsView.d.ts.map +1 -0
  284. package/build/libraries/modules/scopedPortsView.js +55 -0
  285. package/build/libraries/modules/scopedPortsView.js.map +1 -0
  286. package/build/libraries/modules/scopedPortsView.test.d.ts +10 -0
  287. package/build/libraries/modules/scopedPortsView.test.d.ts.map +1 -0
  288. package/build/libraries/modules/scopedPortsView.test.js +103 -0
  289. package/build/libraries/modules/scopedPortsView.test.js.map +1 -0
  290. package/build/libraries/modules/selectiveLoader.d.ts +21 -0
  291. package/build/libraries/modules/selectiveLoader.d.ts.map +1 -0
  292. package/build/libraries/modules/selectiveLoader.js +164 -0
  293. package/build/libraries/modules/selectiveLoader.js.map +1 -0
  294. package/build/libraries/modules/selectiveLoader.test.d.ts +2 -0
  295. package/build/libraries/modules/selectiveLoader.test.d.ts.map +1 -0
  296. package/build/libraries/modules/selectiveLoader.test.js +471 -0
  297. package/build/libraries/modules/selectiveLoader.test.js.map +1 -0
  298. package/build/libraries/openApi/pruneUnusedRef.d.ts.map +1 -1
  299. package/build/libraries/openApi/pruneUnusedRef.js.map +1 -1
  300. package/build/libraries/tcp/index.d.ts +0 -1
  301. package/build/libraries/tcp/index.d.ts.map +1 -1
  302. package/build/libraries/tcp/index.js +32 -9
  303. package/build/libraries/tcp/index.js.map +1 -1
  304. package/build/libraries/tcp/types.d.ts +0 -1
  305. package/build/libraries/tcp/types.d.ts.map +1 -1
  306. package/build/libraries/validation/__tests__/readmodelQuerySchema.test.d.ts +2 -0
  307. package/build/libraries/validation/__tests__/readmodelQuerySchema.test.d.ts.map +1 -0
  308. package/build/libraries/validation/__tests__/readmodelQuerySchema.test.js +100 -0
  309. package/build/libraries/validation/__tests__/readmodelQuerySchema.test.js.map +1 -0
  310. package/build/libraries/validation/__tests__/validation.test.js +17 -7
  311. package/build/libraries/validation/__tests__/validation.test.js.map +1 -1
  312. package/build/libraries/validation/index.d.ts +3 -3
  313. package/build/libraries/validation/index.d.ts.map +1 -1
  314. package/build/libraries/validation/index.js +49 -15
  315. package/build/libraries/validation/index.js.map +1 -1
  316. package/build/ports/authentication/index.js.map +1 -1
  317. package/build/ports/authentication/index.test.d.ts +2 -0
  318. package/build/ports/authentication/index.test.d.ts.map +1 -0
  319. package/build/ports/authentication/index.test.js +38 -0
  320. package/build/ports/authentication/index.test.js.map +1 -0
  321. package/build/ports/base.d.ts.map +1 -1
  322. package/build/ports/base.js +39 -5
  323. package/build/ports/base.js.map +1 -1
  324. package/build/ports/base.test.d.ts +2 -0
  325. package/build/ports/base.test.d.ts.map +1 -0
  326. package/build/ports/base.test.js +92 -0
  327. package/build/ports/base.test.js.map +1 -0
  328. package/build/ports/cache/index.js.map +1 -1
  329. package/build/ports/cache/index.test.d.ts +2 -0
  330. package/build/ports/cache/index.test.d.ts.map +1 -0
  331. package/build/ports/cache/index.test.js +43 -0
  332. package/build/ports/cache/index.test.js.map +1 -0
  333. package/build/ports/configuration/__tests__/cliArgs.test.d.ts +2 -0
  334. package/build/ports/configuration/__tests__/cliArgs.test.d.ts.map +1 -0
  335. package/build/ports/configuration/__tests__/cliArgs.test.js +158 -0
  336. package/build/ports/configuration/__tests__/cliArgs.test.js.map +1 -0
  337. package/build/ports/configuration/__tests__/configurationPortEmitter.test.d.ts +2 -0
  338. package/build/ports/configuration/__tests__/configurationPortEmitter.test.d.ts.map +1 -0
  339. package/build/ports/configuration/__tests__/configurationPortEmitter.test.js +63 -0
  340. package/build/ports/configuration/__tests__/configurationPortEmitter.test.js.map +1 -0
  341. package/build/ports/configuration/__tests__/getArgsSync.test.d.ts +2 -0
  342. package/build/ports/configuration/__tests__/getArgsSync.test.d.ts.map +1 -0
  343. package/build/ports/configuration/__tests__/getArgsSync.test.js +85 -0
  344. package/build/ports/configuration/__tests__/getArgsSync.test.js.map +1 -0
  345. package/build/ports/configuration/args.d.ts +50 -43
  346. package/build/ports/configuration/args.d.ts.map +1 -1
  347. package/build/ports/configuration/args.js +76 -13
  348. package/build/ports/configuration/args.js.map +1 -1
  349. package/build/ports/configuration/common.js +1 -2
  350. package/build/ports/configuration/common.js.map +1 -1
  351. package/build/ports/configuration/index.d.ts +1 -1
  352. package/build/ports/configuration/index.d.ts.map +1 -1
  353. package/build/ports/configuration/index.js +85 -17
  354. package/build/ports/configuration/index.js.map +1 -1
  355. package/build/ports/configuration/localConfig.d.ts.map +1 -1
  356. package/build/ports/configuration/localConfig.js +46 -27
  357. package/build/ports/configuration/localConfig.js.map +1 -1
  358. package/build/ports/database/index.d.ts +1 -2
  359. package/build/ports/database/index.d.ts.map +1 -1
  360. package/build/ports/database/index.js +23 -17
  361. package/build/ports/database/index.js.map +1 -1
  362. package/build/ports/database/index.test.d.ts +2 -0
  363. package/build/ports/database/index.test.d.ts.map +1 -0
  364. package/build/ports/database/index.test.js +43 -0
  365. package/build/ports/database/index.test.js.map +1 -0
  366. package/build/ports/endpoints/__tests__/declarationSite.test.d.ts +2 -0
  367. package/build/ports/endpoints/__tests__/declarationSite.test.d.ts.map +1 -0
  368. package/build/ports/endpoints/__tests__/declarationSite.test.js +165 -0
  369. package/build/ports/endpoints/__tests__/declarationSite.test.js.map +1 -0
  370. package/build/ports/endpoints/__tests__/fixtures/modules/sales/appLoginUrl.d.ts +9 -0
  371. package/build/ports/endpoints/__tests__/fixtures/modules/sales/appLoginUrl.d.ts.map +1 -0
  372. package/build/ports/endpoints/__tests__/fixtures/modules/sales/appLoginUrl.js +20 -0
  373. package/build/ports/endpoints/__tests__/fixtures/modules/sales/appLoginUrl.js.map +1 -0
  374. package/build/ports/endpoints/__tests__/fixtures/modules/sales/index.d.ts +10 -0
  375. package/build/ports/endpoints/__tests__/fixtures/modules/sales/index.d.ts.map +1 -0
  376. package/build/ports/endpoints/__tests__/fixtures/modules/sales/index.js +21 -0
  377. package/build/ports/endpoints/__tests__/fixtures/modules/sales/index.js.map +1 -0
  378. package/build/ports/endpoints/__tests__/fixtures/modules/sales/orders.endpoints.d.ts +15 -0
  379. package/build/ports/endpoints/__tests__/fixtures/modules/sales/orders.endpoints.d.ts.map +1 -0
  380. package/build/ports/endpoints/__tests__/fixtures/modules/sales/orders.endpoints.js +46 -0
  381. package/build/ports/endpoints/__tests__/fixtures/modules/sales/orders.endpoints.js.map +1 -0
  382. package/build/ports/endpoints/__tests__/manifestEndpoints.test.d.ts +2 -0
  383. package/build/ports/endpoints/__tests__/manifestEndpoints.test.d.ts.map +1 -0
  384. package/build/ports/endpoints/__tests__/manifestEndpoints.test.js +117 -0
  385. package/build/ports/endpoints/__tests__/manifestEndpoints.test.js.map +1 -0
  386. package/build/ports/endpoints/declarationSite.d.ts +63 -0
  387. package/build/ports/endpoints/declarationSite.d.ts.map +1 -0
  388. package/build/ports/endpoints/declarationSite.js +126 -0
  389. package/build/ports/endpoints/declarationSite.js.map +1 -0
  390. package/build/ports/endpoints/health.d.ts +26 -0
  391. package/build/ports/endpoints/health.d.ts.map +1 -0
  392. package/build/ports/endpoints/health.js +96 -0
  393. package/build/ports/endpoints/health.js.map +1 -0
  394. package/build/ports/endpoints/index.d.ts +43 -7
  395. package/build/ports/endpoints/index.d.ts.map +1 -1
  396. package/build/ports/endpoints/index.js +317 -67
  397. package/build/ports/endpoints/index.js.map +1 -1
  398. package/build/ports/endpoints/openApi.d.ts +3 -2
  399. package/build/ports/endpoints/openApi.d.ts.map +1 -1
  400. package/build/ports/endpoints/openApi.js +184 -55
  401. package/build/ports/endpoints/openApi.js.map +1 -1
  402. package/build/ports/endpoints/utils.d.ts.map +1 -1
  403. package/build/ports/endpoints/utils.js.map +1 -1
  404. package/build/ports/eventstore/index.d.ts.map +1 -1
  405. package/build/ports/eventstore/index.js +37 -5
  406. package/build/ports/eventstore/index.js.map +1 -1
  407. package/build/ports/eventstore/index.test.d.ts +2 -0
  408. package/build/ports/eventstore/index.test.d.ts.map +1 -0
  409. package/build/ports/eventstore/index.test.js +68 -0
  410. package/build/ports/eventstore/index.test.js.map +1 -0
  411. package/build/ports/infrastructure/index.d.ts +61 -23
  412. package/build/ports/infrastructure/index.d.ts.map +1 -1
  413. package/build/ports/infrastructure/index.js +187 -37
  414. package/build/ports/infrastructure/index.js.map +1 -1
  415. package/build/ports/infrastructure/index.test.d.ts +2 -0
  416. package/build/ports/infrastructure/index.test.d.ts.map +1 -0
  417. package/build/ports/infrastructure/index.test.js +228 -0
  418. package/build/ports/infrastructure/index.test.js.map +1 -0
  419. package/build/ports/infrastructure/utils.d.ts +2 -1
  420. package/build/ports/infrastructure/utils.d.ts.map +1 -1
  421. package/build/ports/infrastructure/utils.js +48 -22
  422. package/build/ports/infrastructure/utils.js.map +1 -1
  423. package/build/ports/logger/__tests__/logger.test.d.ts +2 -0
  424. package/build/ports/logger/__tests__/logger.test.d.ts.map +1 -0
  425. package/build/ports/logger/__tests__/logger.test.js +69 -0
  426. package/build/ports/logger/__tests__/logger.test.js.map +1 -0
  427. package/build/ports/logger/index.d.ts.map +1 -1
  428. package/build/ports/logger/index.js +3 -2
  429. package/build/ports/logger/index.js.map +1 -1
  430. package/build/utils/__tests__/applyCollectionFilterInMemory.test.d.ts +2 -0
  431. package/build/utils/__tests__/applyCollectionFilterInMemory.test.d.ts.map +1 -0
  432. package/build/utils/__tests__/applyCollectionFilterInMemory.test.js +33 -0
  433. package/build/utils/__tests__/applyCollectionFilterInMemory.test.js.map +1 -0
  434. package/build/utils/__tests__/decodeObjectQueryParams.test.d.ts +2 -0
  435. package/build/utils/__tests__/decodeObjectQueryParams.test.d.ts.map +1 -0
  436. package/build/utils/__tests__/decodeObjectQueryParams.test.js +118 -0
  437. package/build/utils/__tests__/decodeObjectQueryParams.test.js.map +1 -0
  438. package/build/utils/index.d.ts +26 -34
  439. package/build/utils/index.d.ts.map +1 -1
  440. package/build/utils/index.js +159 -170
  441. package/build/utils/index.js.map +1 -1
  442. package/package.json +31 -11
  443. package/build/adapters/cache/memory/__tests__/memoryCache.test.d.ts +0 -1
  444. package/build/adapters/cache/memory/__tests__/memoryCache.test.d.ts.map +0 -1
  445. package/build/adapters/cache/memory/__tests__/memoryCache.test.js +0 -6
  446. package/build/adapters/cache/memory/__tests__/memoryCache.test.js.map +0 -1
  447. package/build/adapters/database/memory/__tests__/memoryDb.test.d.ts +0 -1
  448. package/build/adapters/database/memory/__tests__/memoryDb.test.d.ts.map +0 -1
  449. package/build/adapters/database/memory/__tests__/memoryDb.test.js +0 -36
  450. package/build/adapters/database/memory/__tests__/memoryDb.test.js.map +0 -1
  451. package/build/ports/endpoints/__tests__/endpointsCall.test.d.ts +0 -2
  452. package/build/ports/endpoints/__tests__/endpointsCall.test.d.ts.map +0 -1
  453. package/build/ports/endpoints/__tests__/endpointsCall.test.js +0 -21
  454. package/build/ports/endpoints/__tests__/endpointsCall.test.js.map +0 -1
  455. package/build/ports/endpoints/__tests__/test-client-library/base.d.ts +0 -77
  456. package/build/ports/endpoints/__tests__/test-client-library/base.d.ts.map +0 -1
  457. package/build/ports/endpoints/__tests__/test-client-library/base.js +0 -91
  458. package/build/ports/endpoints/__tests__/test-client-library/base.js.map +0 -1
  459. package/build/ports/endpoints/__tests__/test-client-library/index.d.ts +0 -29
  460. package/build/ports/endpoints/__tests__/test-client-library/index.d.ts.map +0 -1
  461. package/build/ports/endpoints/__tests__/test-client-library/index.js +0 -43
  462. package/build/ports/endpoints/__tests__/test-client-library/index.js.map +0 -1
  463. package/build/ports/endpoints/__tests__/test-client-library/services/service.d.ts +0 -106
  464. package/build/ports/endpoints/__tests__/test-client-library/services/service.d.ts.map +0 -1
  465. package/build/ports/endpoints/__tests__/test-client-library/services/service.js +0 -62
  466. package/build/ports/endpoints/__tests__/test-client-library/services/service.js.map +0 -1
  467. package/build/ports/endpoints/__tests__/utils.test.d.ts +0 -1
  468. package/build/ports/endpoints/__tests__/utils.test.d.ts.map +0 -1
  469. package/build/ports/endpoints/__tests__/utils.test.js +0 -53
  470. package/build/ports/endpoints/__tests__/utils.test.js.map +0 -1
  471. package/build/ports/eventsourcing/__tests__/eventhandlers.test.d.ts +0 -2
  472. package/build/ports/eventsourcing/__tests__/eventhandlers.test.d.ts.map +0 -1
  473. package/build/ports/eventsourcing/__tests__/eventhandlers.test.js +0 -35
  474. package/build/ports/eventsourcing/__tests__/eventhandlers.test.js.map +0 -1
  475. package/build/ports/eventsourcing/__tests__/invariants.test.d.ts +0 -2
  476. package/build/ports/eventsourcing/__tests__/invariants.test.d.ts.map +0 -1
  477. package/build/ports/eventsourcing/__tests__/invariants.test.js +0 -210
  478. package/build/ports/eventsourcing/__tests__/invariants.test.js.map +0 -1
  479. package/build/ports/eventsourcing/commandHandlers/index.d.ts +0 -25
  480. package/build/ports/eventsourcing/commandHandlers/index.d.ts.map +0 -1
  481. package/build/ports/eventsourcing/commandHandlers/index.js +0 -392
  482. package/build/ports/eventsourcing/commandHandlers/index.js.map +0 -1
  483. package/build/ports/eventsourcing/commandTemplates/index.d.ts.map +0 -1
  484. package/build/ports/eventsourcing/commandTemplates/index.js.map +0 -1
  485. package/build/ports/eventsourcing/commandTemplates/multiStream.d.ts +0 -4
  486. package/build/ports/eventsourcing/commandTemplates/multiStream.d.ts.map +0 -1
  487. package/build/ports/eventsourcing/commandTemplates/multiStream.js +0 -73
  488. package/build/ports/eventsourcing/commandTemplates/multiStream.js.map +0 -1
  489. package/build/ports/eventsourcing/commandTemplates/snapshot.d.ts +0 -9
  490. package/build/ports/eventsourcing/commandTemplates/snapshot.d.ts.map +0 -1
  491. package/build/ports/eventsourcing/commandTemplates/snapshot.js +0 -39
  492. package/build/ports/eventsourcing/commandTemplates/snapshot.js.map +0 -1
  493. package/build/ports/eventsourcing/eventHandlers/index.d.ts +0 -33
  494. package/build/ports/eventsourcing/eventHandlers/index.d.ts.map +0 -1
  495. package/build/ports/eventsourcing/eventHandlers/index.js +0 -276
  496. package/build/ports/eventsourcing/eventHandlers/index.js.map +0 -1
  497. package/build/ports/eventsourcing/index.d.ts +0 -9
  498. package/build/ports/eventsourcing/index.d.ts.map +0 -1
  499. package/build/ports/eventsourcing/invariants/combinators.d.ts +0 -4
  500. package/build/ports/eventsourcing/invariants/combinators.d.ts.map +0 -1
  501. package/build/ports/eventsourcing/invariants/combinators.js.map +0 -1
  502. package/build/ports/eventsourcing/invariants/common.d.ts +0 -10
  503. package/build/ports/eventsourcing/invariants/common.d.ts.map +0 -1
  504. package/build/ports/eventsourcing/invariants/common.js +0 -37
  505. package/build/ports/eventsourcing/invariants/common.js.map +0 -1
  506. package/build/ports/eventsourcing/invariants/comparisons.d.ts +0 -19
  507. package/build/ports/eventsourcing/invariants/comparisons.d.ts.map +0 -1
  508. package/build/ports/eventsourcing/invariants/comparisons.js +0 -83
  509. package/build/ports/eventsourcing/invariants/comparisons.js.map +0 -1
  510. package/build/ports/eventsourcing/invariants/index.d.ts +0 -5
  511. package/build/ports/eventsourcing/invariants/index.d.ts.map +0 -1
  512. package/build/ports/eventsourcing/invariants/index.js +0 -21
  513. package/build/ports/eventsourcing/invariants/index.js.map +0 -1
  514. package/build/ports/eventsourcing/invariants/stateExistance.d.ts +0 -4
  515. package/build/ports/eventsourcing/invariants/stateExistance.d.ts.map +0 -1
  516. package/build/ports/eventsourcing/invariants/stateExistance.js +0 -33
  517. package/build/ports/eventsourcing/invariants/stateExistance.js.map +0 -1
  518. package/build/ports/eventsourcing/subscriptions/index.d.ts.map +0 -1
  519. package/build/ports/eventsourcing/subscriptions/index.js.map +0 -1
  520. package/build/ports/eventsourcing/subscriptions/sseSubscriptions.d.ts +0 -3
  521. package/build/ports/eventsourcing/subscriptions/sseSubscriptions.d.ts.map +0 -1
  522. package/build/ports/eventsourcing/subscriptions/sseSubscriptions.js +0 -81
  523. package/build/ports/eventsourcing/subscriptions/sseSubscriptions.js.map +0 -1
  524. package/build/ports/eventsourcing/utils/aggregateBuilder.d.ts +0 -4
  525. package/build/ports/eventsourcing/utils/aggregateBuilder.d.ts.map +0 -1
  526. package/build/ports/eventsourcing/utils/aggregateBuilder.js.map +0 -1
  527. package/build/ports/eventsourcing/utils/commandBuilder.d.ts +0 -3
  528. package/build/ports/eventsourcing/utils/commandBuilder.d.ts.map +0 -1
  529. package/build/ports/eventsourcing/utils/commandBuilder.js.map +0 -1
  530. package/build/ports/eventsourcing/utils/eventHandlerBuilder.d.ts.map +0 -1
  531. package/build/ports/eventsourcing/utils/eventHandlerBuilder.js.map +0 -1
  532. package/build/ports/eventsourcing/utils/externalSystemBuilder.d.ts +0 -4
  533. package/build/ports/eventsourcing/utils/externalSystemBuilder.d.ts.map +0 -1
  534. package/build/ports/eventsourcing/utils/externalSystemBuilder.js +0 -34
  535. package/build/ports/eventsourcing/utils/externalSystemBuilder.js.map +0 -1
  536. package/build/ports/eventsourcing/utils/index.d.ts +0 -13
  537. package/build/ports/eventsourcing/utils/index.d.ts.map +0 -1
  538. package/build/ports/eventsourcing/utils/index.js +0 -45
  539. package/build/ports/eventsourcing/utils/index.js.map +0 -1
  540. package/build/ports/eventsourcing/utils/policyBuilder.d.ts +0 -3
  541. package/build/ports/eventsourcing/utils/policyBuilder.d.ts.map +0 -1
  542. package/build/ports/eventsourcing/utils/policyBuilder.js +0 -29
  543. package/build/ports/eventsourcing/utils/policyBuilder.js.map +0 -1
  544. package/build/ports/eventsourcing/utils/readmodelBuilder.d.ts +0 -5
  545. package/build/ports/eventsourcing/utils/readmodelBuilder.d.ts.map +0 -1
  546. package/build/ports/eventsourcing/utils/readmodelBuilder.js +0 -45
  547. package/build/ports/eventsourcing/utils/readmodelBuilder.js.map +0 -1
  548. package/build/ports/infrastructure/__tests__/fixture/index.d.ts +0 -3
  549. package/build/ports/infrastructure/__tests__/fixture/index.d.ts.map +0 -1
  550. package/build/ports/infrastructure/__tests__/fixture/index.js +0 -19
  551. package/build/ports/infrastructure/__tests__/fixture/index.js.map +0 -1
  552. package/build/ports/infrastructure/__tests__/fixture/infrastructureServices.d.ts +0 -19
  553. package/build/ports/infrastructure/__tests__/fixture/infrastructureServices.d.ts.map +0 -1
  554. package/build/ports/infrastructure/__tests__/fixture/infrastructureServices.js +0 -76
  555. package/build/ports/infrastructure/__tests__/fixture/infrastructureServices.js.map +0 -1
  556. package/build/ports/infrastructure/__tests__/fixture/structureState.d.ts +0 -177
  557. package/build/ports/infrastructure/__tests__/fixture/structureState.d.ts.map +0 -1
  558. package/build/ports/infrastructure/__tests__/fixture/structureState.js +0 -258
  559. package/build/ports/infrastructure/__tests__/fixture/structureState.js.map +0 -1
  560. package/build/ports/infrastructure/__tests__/infrastructure.test.d.ts +0 -2
  561. package/build/ports/infrastructure/__tests__/infrastructure.test.d.ts.map +0 -1
  562. package/build/ports/infrastructure/__tests__/infrastructure.test.js +0 -11
  563. package/build/ports/infrastructure/__tests__/infrastructure.test.js.map +0 -1
  564. package/src/adapters/cache/index.ts +0 -1
  565. package/src/adapters/cache/memory/__tests__/memoryCache.test.ts +0 -6
  566. package/src/adapters/cache/memory/index.ts +0 -142
  567. package/src/adapters/configuration/__tests__/.env +0 -4
  568. package/src/adapters/configuration/__tests__/dotEnv.test.ts +0 -38
  569. package/src/adapters/configuration/dotEnv.ts +0 -33
  570. package/src/adapters/configuration/index.ts +0 -1
  571. package/src/adapters/database/index.ts +0 -1
  572. package/src/adapters/database/memory/__tests__/memoryDb.test.ts +0 -37
  573. package/src/adapters/database/memory/index.ts +0 -279
  574. package/src/adapters/endpoints/addAuthUser/index.ts +0 -55
  575. package/src/adapters/endpoints/endpointValidation/index.ts +0 -26
  576. package/src/adapters/endpoints/index.ts +0 -4
  577. package/src/adapters/endpoints/localAuthorization/index.ts +0 -75
  578. package/src/adapters/endpoints/tcpConsumer/index.ts +0 -69
  579. package/src/adapters/endpoints/userSession/index.ts +0 -40
  580. package/src/adapters/eventstore/database.ts +0 -178
  581. package/src/adapters/eventstore/index.ts +0 -1
  582. package/src/adapters/infrastructure/index.ts +0 -1
  583. package/src/adapters/infrastructure/local/index.ts +0 -40
  584. package/src/adapters/logger/console.ts +0 -42
  585. package/src/adapters/logger/index.ts +0 -1
  586. package/src/index.ts +0 -25
  587. package/src/libraries/modules/fs.ts +0 -88
  588. package/src/libraries/modules/index.ts +0 -1
  589. package/src/libraries/openApi/index.ts +0 -1
  590. package/src/libraries/openApi/pruneUnusedRef.ts +0 -35
  591. package/src/libraries/tcp/index.ts +0 -98
  592. package/src/libraries/tcp/types.ts +0 -43
  593. package/src/libraries/validation/__tests__/validation.test.ts +0 -25
  594. package/src/libraries/validation/index.ts +0 -48
  595. package/src/ports/authentication/index.ts +0 -25
  596. package/src/ports/base.ts +0 -20
  597. package/src/ports/cache/index.ts +0 -17
  598. package/src/ports/configuration/__tests__/configurationPort.test.ts +0 -47
  599. package/src/ports/configuration/args.ts +0 -39
  600. package/src/ports/configuration/common.ts +0 -12
  601. package/src/ports/configuration/index.ts +0 -110
  602. package/src/ports/configuration/localConfig.ts +0 -117
  603. package/src/ports/database/index.ts +0 -25
  604. package/src/ports/endpoints/__tests__/endpointsCall.test.ts +0 -20
  605. package/src/ports/endpoints/__tests__/test-client-library/base.ts +0 -167
  606. package/src/ports/endpoints/__tests__/test-client-library/index.ts +0 -23
  607. package/src/ports/endpoints/__tests__/test-client-library/services/service.ts +0 -181
  608. package/src/ports/endpoints/__tests__/utils.test.ts +0 -54
  609. package/src/ports/endpoints/index.ts +0 -272
  610. package/src/ports/endpoints/openApi.ts +0 -191
  611. package/src/ports/endpoints/utils.ts +0 -31
  612. package/src/ports/eventsourcing/__tests__/eventhandlers.test.ts +0 -30
  613. package/src/ports/eventsourcing/__tests__/invariants.test.ts +0 -213
  614. package/src/ports/eventsourcing/commandHandlers/index.ts +0 -625
  615. package/src/ports/eventsourcing/commandTemplates/index.ts +0 -2
  616. package/src/ports/eventsourcing/commandTemplates/multiStream.ts +0 -70
  617. package/src/ports/eventsourcing/commandTemplates/snapshot.ts +0 -43
  618. package/src/ports/eventsourcing/eventHandlers/index.ts +0 -429
  619. package/src/ports/eventsourcing/index.ts +0 -98
  620. package/src/ports/eventsourcing/invariants/combinators.ts +0 -25
  621. package/src/ports/eventsourcing/invariants/common.ts +0 -42
  622. package/src/ports/eventsourcing/invariants/comparisons.ts +0 -90
  623. package/src/ports/eventsourcing/invariants/index.ts +0 -4
  624. package/src/ports/eventsourcing/invariants/stateExistance.ts +0 -34
  625. package/src/ports/eventsourcing/subscriptions/index.ts +0 -1
  626. package/src/ports/eventsourcing/subscriptions/sseSubscriptions.ts +0 -103
  627. package/src/ports/eventsourcing/utils/aggregateBuilder.ts +0 -49
  628. package/src/ports/eventsourcing/utils/commandBuilder.ts +0 -113
  629. package/src/ports/eventsourcing/utils/eventHandlerBuilder.ts +0 -22
  630. package/src/ports/eventsourcing/utils/externalSystemBuilder.ts +0 -42
  631. package/src/ports/eventsourcing/utils/index.ts +0 -25
  632. package/src/ports/eventsourcing/utils/policyBuilder.ts +0 -31
  633. package/src/ports/eventsourcing/utils/readmodelBuilder.ts +0 -52
  634. package/src/ports/eventstore/index.ts +0 -11
  635. package/src/ports/infrastructure/__tests__/fixture/index.ts +0 -2
  636. package/src/ports/infrastructure/__tests__/fixture/infrastructureServices.ts +0 -72
  637. package/src/ports/infrastructure/__tests__/fixture/structureState.ts +0 -254
  638. package/src/ports/infrastructure/__tests__/infrastructure.test.ts +0 -11
  639. package/src/ports/infrastructure/index.ts +0 -162
  640. package/src/ports/infrastructure/utils.ts +0 -130
  641. package/src/ports/logger/index.ts +0 -34
  642. package/src/utils/index.ts +0 -186
  643. package/tsconfig.json +0 -19
  644. /package/build/{ports → libraries}/eventsourcing/commandTemplates/index.d.ts +0 -0
  645. /package/build/{ports → libraries}/eventsourcing/commandTemplates/index.js +0 -0
  646. /package/build/{ports → libraries}/eventsourcing/subscriptions/index.d.ts +0 -0
  647. /package/build/{ports → libraries}/eventsourcing/subscriptions/index.js +0 -0
  648. /package/build/{ports → libraries}/eventsourcing/utils/eventHandlerBuilder.js +0 -0
@@ -1,625 +0,0 @@
1
- import { ensureArray, map, reduce } from '@bett3r-dev/bett3r-utils';
2
- import S, { ObjectSchema } from '@bett3r-dev/jsonschema-definer';
3
- import {
4
- Aggregate,
5
- AggregateReducedState, Builder, Command,
6
- CommandEndpointQuerySchema,
7
- CommandExecutionResponse,
8
- CommandHandlerFunction,
9
- CommandHandlerState, CommittedEvent,
10
- CommittedEventSchema, DatabasePort, DatabaseTransaction, EndpointActionParams,
11
- EndpointSchemas,
12
- EndpointsPort, EventFactory, EventSourcingCommandHandlers, EventStorePort, EventToCommit, InvariantType, LoggerType, ReadStreamOptions, System,
13
- SystemEndpointParamsSchema,
14
- SystemGetQuerySchema,
15
- SystemGetQueryType
16
- } from '@bett3r-dev/pv3-types';
17
- import { paramCase, pascalCase } from 'change-case';
18
- import { randomUUID } from 'crypto';
19
- import { assoc, clone, mergeRight, objOf, omit, path, pick } from 'ramda';
20
- import { validateSchema, validateEndpoint } from '../../../libraries/validation';
21
- import { formatStream } from '../utils';
22
-
23
- export const formatAggregateGetQueryParams = (
24
- params: SystemGetQueryType
25
- ): ReadStreamOptions => ({
26
- stream: params.stream,
27
- events: params.names,
28
- direction: params.backward ? 'backwards' : 'forwards',
29
- from: params.from,
30
- limit: params.limit,
31
- after: params.after,
32
- before: params.before,
33
- });
34
-
35
- export const getEventReducers =
36
- (
37
- aggregate: Aggregate,
38
- reducedState: AggregateReducedState = { state: aggregate.initialValue() }
39
- ) =>
40
- ( event: EventToCommit ): AggregateReducedState => {
41
- return ( reducedState = {
42
- state: aggregate.eventReducers[event.name as string](
43
- reducedState.state,
44
- event.data,
45
- event.metadata
46
- ),
47
- lastEvent: pick([ 'id', 'version' ], event ),
48
- });
49
- };
50
-
51
- export const appendEventsToStream =
52
- (
53
- eventstore: EventStorePort,
54
- expectedVersion?: number,
55
- transaction?: DatabaseTransaction
56
- ) =>
57
- ( events: EventToCommit[]) => {
58
- const stream = events[0].stream;
59
- return events.length
60
- ? eventstore.appendToStream( stream, events, expectedVersion, transaction )
61
- : Promise.resolve([]);
62
- };
63
-
64
- export const addMetadata =
65
- ({ metadata, context, stream }: CommandHandlerState ) =>
66
- ( event: ReturnType<EventFactory> ): EventToCommit =>
67
- ({
68
- stream,
69
- metadata: {
70
- ...metadata,
71
- ...( context?.user ? { user: context.user } : {}),
72
- },
73
- ...event,
74
- } as EventToCommit );
75
-
76
- export const prepareEventsToCommit = (
77
- handlerState: CommandHandlerState
78
- ): Promise<EventToCommit[]> => {
79
- return Promise.resolve( handlerState.events )
80
- .then( ensureArray )
81
- .then(
82
- map(( eventFactory: EventFactory ) => {
83
- return { ...( eventFactory() as ReturnType<EventFactory> ) };
84
- })
85
- )
86
- .then( map( addMetadata( handlerState ))) as Promise<EventToCommit[]>;
87
- };
88
-
89
- export const commitEvents =
90
- ( eventstore: EventStorePort ) =>
91
- (
92
- handlerState: CommandHandlerState,
93
- transaction?: DatabaseTransaction
94
- ): Promise<CommandHandlerState> => {
95
- if ( !handlerState.events.length ) return Promise.resolve( handlerState );
96
- return prepareEventsToCommit( handlerState )
97
- .then(
98
- appendEventsToStream(
99
- eventstore,
100
- handlerState.expectedVersion,
101
- transaction
102
- )
103
- )
104
- .then( objOf( 'committedEvents' ))
105
- .then( mergeRight( handlerState ));
106
- };
107
-
108
- export const getStreamReducer =
109
- ( state: Record<string, any> = {}) =>
110
- ( event: CommittedEvent ) => {
111
- state[event.stream] ||= { events: [], state: null };
112
- state[event.stream].events?.push( event );
113
- return state;
114
- };
115
-
116
- export const loadStream =
117
- ( eventstore: EventStorePort ) =>
118
- ( stream: string, options?: ReadStreamOptions ) => {
119
- return eventstore
120
- .readStream(
121
- {
122
- ...options,
123
- stream,
124
- },
125
- getStreamReducer()
126
- )
127
- .then(( state ) =>
128
- !Object.keys( state ).length
129
- ? undefined
130
- : ( state[stream].events as CommittedEvent[])
131
- );
132
- };
133
- export const loadAggregateState =
134
- ( eventstore: EventStorePort ) =>
135
- (
136
- system: Aggregate,
137
- stream: string,
138
- options?: ReadStreamOptions,
139
- state?: any
140
- ): Promise<AggregateReducedState | null> => {
141
- return !stream || !system.isAggregate
142
- ? Promise.resolve( null )
143
- : eventstore
144
- .readStream(
145
- { ...options, stream },
146
- getEventReducers( system, { state })
147
- )
148
- .then(( _state ) => {
149
- return _state || { state };
150
- });
151
- };
152
-
153
- export const domainModelLoad =
154
- ( database: DatabasePort, collection: string ) =>
155
- ( handlerState: CommandHandlerState ) => {
156
- return database
157
- .getCollection( collection )
158
- .readById( handlerState.params.id )
159
- .then(( state ) => {
160
- return assoc(
161
- 'state',
162
- state
163
- ? omit(['id'], state )
164
- : ( handlerState.commandHandler as Aggregate ).initialValue(),
165
- handlerState
166
- );
167
- });
168
- };
169
-
170
- export const domainModelCommit =
171
- ( eventstore: EventStorePort ) =>
172
- ( database: DatabasePort, collection: string ) =>
173
- ( handlerState: CommandHandlerState ): Promise<CommandHandlerState> => {
174
- return database.initTransaction( async ( getCollection ) => {
175
- const { params, expectedVersion } = handlerState;
176
- // console.log( 'EXPECTED VERSION AT COMMIT', expectedVersion );
177
- const initialValue = (
178
- handlerState.commandHandler as Aggregate
179
- ).initialValue();
180
- const eventsToCommit = await prepareEventsToCommit( handlerState );
181
- if ( eventsToCommit.length === 0 ) {
182
- return handlerState;
183
- }
184
- const { state, events } = reduceEventsIntoState(
185
- handlerState.state || initialValue,
186
- handlerState.commandHandler as Aggregate,
187
- eventsToCommit
188
- );
189
-
190
- let lastCommittedVersion = 0;
191
- if ( eventstore._adapter._adapter() === database ) {
192
- const state = await ( commitEvents( eventstore )( handlerState, { getCollection }));
193
- lastCommittedVersion = state.committedEvents?.at( -1 )?.version || 1;
194
- } else {
195
- // TODO: Determine how to get the lastCommittedVersion in the outbox scenario
196
- await getCollection( `${collection}_outbox` ).createMany(
197
- events.map(( e ) => assoc( 'id', randomUUID(), e ))
198
- );
199
- }
200
- if ( expectedVersion )
201
- await getCollection( collection ).updateMany(
202
- [
203
- { field: 'id', op: 'eq', value: params.id },
204
- { field: 'version', op: 'eq', value: expectedVersion },
205
- ],
206
- { ...state, version: lastCommittedVersion }
207
- );
208
- else {
209
- if ( state !== null ) {
210
- await getCollection( collection ).upsert( handlerState.params.id, { ...state, version: lastCommittedVersion });
211
- } else {
212
- await getCollection( collection ).destroyById( handlerState.params.id );
213
- }
214
- }
215
- return {
216
- ...handlerState,
217
- state,
218
- } as CommandHandlerState;
219
- });
220
- };
221
-
222
- export const defaultHandler =
223
- ( eventsProducedByCommand: string[]): CommandHandlerFunction =>
224
- ( _, data ) => {
225
- return Promise.all(
226
- ( eventsProducedByCommand || []).map(( e ) => () => ({
227
- name: e,
228
- data,
229
- }))
230
- );
231
- };
232
-
233
- export const defaultCommit =
234
- ( eventstore: EventStorePort ) => ( state: CommandHandlerState ) =>
235
- commitEvents( eventstore )( state );
236
-
237
- export const reduceEventsIntoState = (
238
- initialState: any,
239
- commandHandler: Aggregate,
240
- events: EventToCommit[]
241
- ) => {
242
- const reducer = getEventReducers( commandHandler as Aggregate, {
243
- state: initialState,
244
- });
245
- const _state = events.reduce(
246
- ( _, event ) => reducer( event ),
247
- {} as AggregateReducedState
248
- );
249
- return { events, state: _state.state };
250
- };
251
-
252
- export const formatDomainModelCommandResponse = (
253
- handlerState: CommandHandlerState
254
- ): Promise<CommandExecutionResponse> => {
255
- return Promise.resolve({
256
- state: handlerState.state,
257
- } as CommandExecutionResponse );
258
- };
259
-
260
- export const formatEventSourcedCommandResponse = async (
261
- handlerState: CommandHandlerState
262
- ): Promise<CommandExecutionResponse> => {
263
- const { committedEvents, commandHandler, state } = handlerState;
264
- if ( !committedEvents || !committedEvents.length )
265
- return Promise.resolve({ state } as CommandExecutionResponse );
266
- if ( !commandHandler.isAggregate ) {
267
- return Promise.resolve({ events: committedEvents });
268
- }
269
- return reduceEventsIntoState(
270
- state,
271
- commandHandler as Aggregate,
272
- committedEvents
273
- ) as CommandExecutionResponse;
274
- };
275
-
276
- export const validateInvariants =
277
- ( invariants: InvariantType[]) => ( state: CommandHandlerState ) => {
278
- return invariants.reduce(( success, invariant ) => {
279
- return success
280
- .then(( state ) => invariant.check( state ))
281
- .then(( resultState ) => resultState || state );
282
- }, Promise.resolve( state ));
283
- };
284
-
285
- export const defaultEventsourcingLoad =
286
- ( eventstore: EventStorePort ) =>
287
- (
288
- handlerState: CommandHandlerState,
289
- options?: ReadStreamOptions,
290
- state?: any
291
- ) => {
292
- return loadAggregateState( eventstore )(
293
- handlerState.commandHandler as Aggregate,
294
- handlerState.stream,
295
- options,
296
- state ||
297
- handlerState.state ||
298
- ( handlerState.commandHandler as Aggregate ).initialValue()
299
- ).then(
300
- ( reducedState ) =>
301
- ({
302
- ...handlerState,
303
- state: reducedState?.state,
304
- expectedVersion: reducedState?.lastEvent?.version,
305
- } as CommandHandlerState )
306
- );
307
- };
308
-
309
- export const handleCommand =
310
- ( handler: CommandHandlerFunction ) =>
311
- async ( handlerState: CommandHandlerState ): Promise<CommandHandlerState> => {
312
- const { state, data } = handlerState;
313
- handlerState.events = await Promise.resolve()
314
- .then(() =>
315
- ( handler as CommandHandlerFunction )(
316
- state ? clone( state ) : null,
317
- clone( data ),
318
- handlerState
319
- )
320
- )
321
- .then(( events ) => {
322
- return [ ...handlerState.events, ...events ];
323
- });
324
- return handlerState;
325
- };
326
-
327
- export function createCommandHandlers(
328
- logger: LoggerType,
329
- endpoint: EndpointsPort,
330
- eventstore: EventStorePort
331
- ): EventSourcingCommandHandlers {
332
- const internalExecuteCommand =
333
- <SYSTEM extends System, COMMAND extends keyof SYSTEM['commands']>(
334
- commandHandler: SYSTEM,
335
- commandName: COMMAND
336
- ) =>
337
- async (
338
- actionParams: EndpointActionParams
339
- ): Promise<
340
- CommandExecutionResponse | Record<string, CommandExecutionResponse>
341
- > => {
342
- const command: Command = ( commandHandler.commands[commandName] as Builder )
343
- .build
344
- ? commandHandler.commands[commandName].build()
345
- : commandHandler.commands[commandName];
346
- command.name = commandName as string;
347
- logger.log(
348
- 'Processing Command',
349
- commandName,
350
- 'in',
351
- commandHandler.isAggregate ? 'Aggregate' : 'External System',
352
- commandHandler.name
353
- );
354
- logger.debug(
355
- 'with payload:',
356
- pick([ 'body', 'params', 'query' ], actionParams )
357
- );
358
- const { body, params, query, context } = actionParams;
359
- const id = command.dataPropertyId
360
- ? path( command.dataPropertyId.split( '.' ), body )
361
- : params.id;
362
- const stream = formatStream( commandHandler.name, id );
363
- const handlerState = {
364
- command,
365
- data: body,
366
- query,
367
- params,
368
- context,
369
- stream,
370
- events: [],
371
- commandHandler,
372
- expectedVersion: query?.expectedVersion,
373
- state: undefined,
374
- metadata: {
375
- correlationId: query?.correlationId || randomUUID(),
376
- ...( query?.causationId ? { causationId: query?.causationId } : {}),
377
- },
378
- } as CommandHandlerState;
379
-
380
- const loadFunction =
381
- command.load ||
382
- ( commandHandler.isEventsourced
383
- ? defaultEventsourcingLoad( eventstore )
384
- : domainModelLoad(
385
- ( commandHandler as any ).outboxDatabase,
386
- ( commandHandler as any ).outboxCollection
387
- ));
388
- const commitFunction =
389
- command.commit ||
390
- ( commandHandler.isEventsourced
391
- ? defaultCommit( eventstore )
392
- : domainModelCommit( eventstore )(
393
- ( commandHandler as any ).outboxDatabase,
394
- ( commandHandler as any ).outboxCollection
395
- ));
396
- const formatFunction =
397
- command.format ||
398
- ( commandHandler.isEventsourced
399
- ? formatEventSourcedCommandResponse
400
- : formatDomainModelCommandResponse );
401
-
402
- return Promise.resolve( handlerState )
403
- .then( loadFunction )
404
- .then( validateInvariants( command.invariants || []))
405
- .then(
406
- handleCommand(
407
- command.handler || defaultHandler( command.events as string[])
408
- )
409
- )
410
- .then( commitFunction )
411
- .then( formatFunction );
412
- };
413
-
414
- const executeCommand =
415
- <SYSTEM extends System, COMMAND extends keyof SYSTEM['commands']>(
416
- commandHandler: SYSTEM,
417
- commandName: COMMAND,
418
- schemas?: EndpointSchemas<any, any, any>
419
- ) =>
420
- async (
421
- actionParams: EndpointActionParams
422
- ): Promise<
423
- CommandExecutionResponse | Record<string, CommandExecutionResponse>
424
- > => {
425
- const command: Command = ( commandHandler.commands[commandName] as Builder )
426
- .build
427
- ? commandHandler.commands[commandName].build()
428
- : commandHandler.commands[commandName];
429
- schemas = schemas || getCommandSchemas( commandHandler, command );
430
- command.name = commandName as string;
431
- return Promise.resolve( actionParams )
432
- .then( validateEndpoint( validateSchema, schemas ))
433
- .then( internalExecuteCommand( commandHandler, commandName ))
434
- .catch(( err ) => {
435
- if ( command.onErrorHandler )
436
- return command.onErrorHandler( err, actionParams.body );
437
- return Promise.reject( err );
438
- });
439
- };
440
-
441
- const getCommandSchemas = ( commandHandler: System, command: Command ) => {
442
- const eventsSchemas: Record<string, ObjectSchema> = command.events?.reduce(
443
- ( schemas, eventName ) => {
444
- if ( !!commandHandler.events[eventName])
445
- schemas[eventName] = commandHandler.events[eventName]().schema;
446
- if ( schemas[eventName])
447
- schemas[eventName] = schemas[eventName].id( eventName );
448
- return schemas;
449
- },
450
- {} as Record<string, ObjectSchema>
451
- );
452
- const responses =
453
- !eventsSchemas || Object.keys( eventsSchemas ).length === 0
454
- ? {
455
- 200: [
456
- {
457
- schema: S.shape({
458
- state: ( commandHandler as Aggregate ).schema.id(
459
- `${commandHandler.name}State`
460
- ),
461
- }),
462
- name: 'OK',
463
- },
464
- ],
465
- }
466
- : {
467
- 200: [
468
- {
469
- schema: commandHandler.isAggregate
470
- ? S.shape({
471
- state: ( commandHandler as Aggregate ).schema.id(
472
- `${commandHandler.name}State`
473
- ),
474
- events: CommittedEventSchema(
475
- S.anyOf(
476
- ...Object.values( eventsSchemas )
477
- ) as ObjectSchema,
478
- Object.keys( eventsSchemas )
479
- ),
480
- })
481
- : S.shape({
482
- events: CommittedEventSchema(
483
- S.anyOf(
484
- ...Object.values( eventsSchemas )
485
- ) as ObjectSchema,
486
- Object.keys( eventsSchemas )
487
- ),
488
- }),
489
- name: 'OK',
490
- },
491
- ],
492
- };
493
- return {
494
- query: CommandEndpointQuerySchema,
495
- body: command.schema?.copyWith({ plain: { $id: command.name }}),
496
- responses,
497
- ...( commandHandler.isStreamable && !command.dataPropertyId
498
- ? { params: SystemEndpointParamsSchema }
499
- : {}),
500
- };
501
- };
502
-
503
- const formatCommandRoute = (
504
- commandName: string,
505
- transformFn: ( x: string ) => string
506
- ) => {
507
- return `${commandName.startsWith( '_' ) ? '_' : ''}${transformFn(
508
- commandName
509
- )}`;
510
- };
511
-
512
- const registerCommandHandlerGetEndpoints = (
513
- commandHandler: System,
514
- name = commandHandler.name
515
- ): string[] => {
516
- const isStreamable =
517
- !!( commandHandler as Aggregate ).eventReducers ||
518
- ( commandHandler as System ).isStreamable;
519
- const idRoute = `/${formatCommandRoute( name, paramCase )}/:id/state`;
520
- const streamRoute = isStreamable
521
- ? `/${formatCommandRoute( name, paramCase )}/:id/stream`
522
- : `/${formatCommandRoute( name, paramCase )}/stream`;
523
- if (
524
- !commandHandler.isEventsourced &&
525
- !( commandHandler as Aggregate ).outboxDatabase
526
- )
527
- throw Error(
528
- 'Aggregate declared as Not Eventsourced without Outbox database.'
529
- );
530
- isStreamable &&
531
- endpoint.registerEndpoint({
532
- name: `Get ${name} state by Id`,
533
- description: `Get current reduced ${name} state by Id`,
534
- method: 'GET',
535
- module: name,
536
- route: idRoute,
537
- schemas: {
538
- params: SystemEndpointParamsSchema,
539
- query: SystemGetQuerySchema,
540
- },
541
- action: ({ params, query }) =>
542
- loadAggregateState( eventstore )(
543
- commandHandler as Aggregate,
544
- formatStream( commandHandler.name, params?.id ),
545
- formatAggregateGetQueryParams( query )
546
- ).then(( response ) => response && Object.values( response )[0]),
547
- });
548
- endpoint.registerEndpoint({
549
- name: formatCommandRoute( name, pascalCase ),
550
- description: `Get the stream of events for ${name} by Id`,
551
- method: 'GET',
552
- module: name,
553
- route: streamRoute,
554
- schemas: {
555
- params: isStreamable ? SystemEndpointParamsSchema : undefined,
556
- query: SystemGetQuerySchema,
557
- },
558
- action: ({ params, query }) =>
559
- ( isStreamable
560
- ? loadStream( eventstore )(
561
- formatStream( commandHandler.name, params?.id ),
562
- query
563
- )
564
- : loadStream( eventstore )( name, formatAggregateGetQueryParams( query ))
565
- ).then(( response ) => ( Array.isArray( response ) ? response : [])),
566
- });
567
-
568
- return [ idRoute, streamRoute ];
569
- };
570
-
571
- const registerCommandHandlerPostEndpoints = (
572
- commandHandler: System
573
- ): Record<string, string> => {
574
- const commandHandlerName: string = commandHandler.name;
575
- const isStreamable = commandHandler.isStreamable;
576
- return !commandHandler.commands
577
- ? {}
578
- : reduce(
579
- ( result, name ) => {
580
- const command: Command = commandHandler.commands[name]?.build
581
- ? commandHandler.commands[name]?.build()
582
- : commandHandler.commands[name];
583
- const route =
584
- !isStreamable || !!command.dataPropertyId === true
585
- ? `/${paramCase( commandHandlerName )}/${formatCommandRoute(
586
- name,
587
- paramCase
588
- )}`
589
- : `/${paramCase( commandHandlerName )}/:id/${formatCommandRoute(
590
- name,
591
- paramCase
592
- )}`;
593
- const schemas = getCommandSchemas( commandHandler, command );
594
- endpoint.registerEndpoint({
595
- module: commandHandlerName,
596
- name: formatCommandRoute( name, pascalCase ),
597
- description: command.description,
598
- multipartProperties: command.multipartProperties,
599
- route,
600
- tags: commandHandler.isAggregate ? ['aggregate'] : ['system'],
601
- schemas,
602
- shouldValidate: false,
603
- method: 'POST',
604
- action: executeCommand(
605
- commandHandler as Aggregate,
606
- name,
607
- schemas
608
- ),
609
- });
610
- result[name] = route;
611
- return result;
612
- },
613
- {},
614
- Object.keys( commandHandler.commands )
615
- );
616
- };
617
-
618
- return {
619
- loadStream: loadStream( eventstore ),
620
- loadAggregateState: loadAggregateState( eventstore ),
621
- executeCommand,
622
- registerCommandHandlerGetEndpoints,
623
- registerCommandHandlerPostEndpoints,
624
- };
625
- }
@@ -1,2 +0,0 @@
1
- export * from './multiStream';
2
- export * from './snapshot';
@@ -1,70 +0,0 @@
1
- import { map } from '@bett3r-dev/bett3r-utils';
2
- import { Ports, Aggregate, Command, CommandExecutionResponse, CommandHandlerState, CommittedEvent } from '@bett3r-dev/pv3-types';
3
- import { InternalServerError, createError } from '../../../utils';
4
- import { objOf, path, pick, prop } from 'ramda';
5
- import { formatStream } from '..';
6
-
7
- const getStreams = ( dataPropertyId: string, data: any, formatStream: ( id: string ) => string ): any[] => {
8
- const pathParts = dataPropertyId.split( '.' );
9
-
10
- const recursiveExtractor = ( currentObj: any, currentPath: string[]): any[] => {
11
- if ( !currentObj || currentPath.length === 0 ) return [];
12
- const part = currentPath[0];
13
- if ( Array.isArray( currentObj )) {
14
- return currentObj.flatMap( childObj => recursiveExtractor( childObj, currentPath ));
15
- }
16
- if ( currentPath.length === 1 ) {
17
- return [formatStream( currentObj[part])];
18
- }
19
- return recursiveExtractor( currentObj[part], currentPath.slice( 1 ));
20
- };
21
-
22
- return recursiveExtractor( data, pathParts );
23
- };
24
-
25
- export const getMultipleEventReducers = ( aggregate: Aggregate, reducedState = {}) => ( event: CommittedEvent ): any => {
26
- reducedState[event.stream] = {
27
- lastEvent: pick([ 'id', 'version' ], event ),
28
- state: aggregate.eventReducers[event.name as string](( reducedState && reducedState[event.stream]?.state ) || aggregate.initialValue(), event.data, event.metadata )
29
- };
30
- return reducedState;
31
- };
32
-
33
- export const multiStream = ( ports: Pick<Ports, 'eventstore'>, dataPropertyId: string, ): Command => {
34
- return {
35
- dataPropertyId,
36
- load: async <Model, Payload>( commandHandlerState: CommandHandlerState<Model,Payload> ): Promise<CommandHandlerState<Model, Payload>> => {
37
- if ( !ports.eventstore.readMultipleStream ) throw createError( InternalServerError(), { details: { command: commandHandlerState.command.name }, description: 'MultiStream Command: The Eventstore in use does not Support Multiple Streams' });
38
- const streams = getStreams( dataPropertyId, commandHandlerState.data, formatStream( commandHandlerState.commandHandler.name ));
39
- return ports.eventstore.readMultipleStream({ streams }, getMultipleEventReducers( commandHandlerState.commandHandler as Aggregate ))
40
- .then( state => {
41
- return {
42
- ...commandHandlerState,
43
- state: !state || !Object.keys( state ).length ? undefined : map( prop( 'state' ), state ),
44
- expectedVersion: !state || !Object.keys( state ).length ? undefined : map( path([ 'lastEvent', 'version' ]), state ) as any,
45
- };
46
- });
47
- },
48
- commit: async <Model, Payload>( commandHandlerState: CommandHandlerState<Model,Payload> ): Promise<CommandHandlerState<Model, Payload>> => {
49
- if ( !ports.eventstore.appendToMultipleStreams ) throw createError( InternalServerError(), { details: { command: commandHandlerState.command.name }, description: 'MultiStream Command: The Eventstore in use does not Support Multiple Streams' });
50
- const eventsToCommit = commandHandlerState.events.reduce(( streams, e: any ) => {
51
- streams[e().stream] ||= { events:[], expectedVersion: commandHandlerState.expectedVersion![e().stream] };
52
- streams[e().stream].events.push( e());
53
- return streams;
54
- }, {} as Record<string, {events: any[], expectedVersion?: number}> );
55
- const events = await ports.eventstore.appendToMultipleStreams( eventsToCommit );
56
- const formatedState = map( objOf( 'state' ), commandHandlerState.state );
57
- const state = events.reduce(( _, event ) => {
58
- return getMultipleEventReducers( commandHandlerState.commandHandler as Aggregate, formatedState )( event );
59
- }, {});
60
- return {
61
- ...commandHandlerState,
62
- state: map( prop( 'state' ), state ),
63
- events
64
- } as any;
65
- },
66
- format: async <Model, Payload>( state: CommandHandlerState<Model,Payload> ): Promise<CommandExecutionResponse<Model>> => {
67
- return pick([ 'state', 'events' ], state ) as CommandExecutionResponse<Model>;
68
- }
69
- } as Command;
70
- };