@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
@@ -0,0 +1,474 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createEventHandlers = exports.defaultQueryParamsTranslator = exports.formatAggregate = exports.formatSelect = exports.formatSort = exports.formatFilter = exports.coerceFilterType = void 0;
7
+ const bett3r_utils_1 = require("@bett3r-dev/bett3r-utils");
8
+ const jsonschema_definer_1 = __importDefault(require("@bett3r-dev/jsonschema-definer"));
9
+ const pv3_dev_utils_1 = require("@bett3r-dev/pv3-dev-utils");
10
+ const pv3_types_1 = require("@bett3r-dev/pv3-types");
11
+ const rison_1 = __importDefault(require("@bett3r-dev/rison"));
12
+ const change_case_1 = require("change-case");
13
+ const validation_1 = require("../../../libraries/validation");
14
+ const utils_1 = require("../../../utils");
15
+ const executionContext_1 = require("../executionContext");
16
+ //TODO: Consider Objects
17
+ const coerceFilterType = (value, targetType, op) => {
18
+ const inOrNin = op === 'in' || op === 'nin';
19
+ if (!value.length || ['exists', 'notExists'].includes(op))
20
+ return undefined;
21
+ if (targetType === 'string')
22
+ return !inOrNin ? value[0] : value;
23
+ else if (targetType === 'number')
24
+ return !inOrNin ? Number(value[0]) : value.map((v) => Number(v));
25
+ else if (targetType === 'boolean')
26
+ return !inOrNin ? value[0] === 'true' : value.map((v) => v === 'true');
27
+ };
28
+ exports.coerceFilterType = coerceFilterType;
29
+ const formatFilter = (filter) => {
30
+ const decoded = typeof filter === 'string' ? rison_1.default.decode(decodeURIComponent(filter)) : filter;
31
+ const filterArray = (0, bett3r_utils_1.ensureArray)(decoded);
32
+ const result = (0, validation_1.validateSchema)(jsonschema_definer_1.default.array().items(pv3_types_1.CollectionFilterSchema), true)(filterArray);
33
+ return result;
34
+ };
35
+ exports.formatFilter = formatFilter;
36
+ const formatSort = (sort) => {
37
+ const sortDecoded = typeof sort === 'string' ? rison_1.default.decode(decodeURIComponent(sort)) : sort;
38
+ const sortArray = (0, validation_1.validateSchema)(jsonschema_definer_1.default.array().items(pv3_types_1.CollectionSortSchema), true)((0, bett3r_utils_1.ensureArray)(sortDecoded));
39
+ return sortArray;
40
+ };
41
+ exports.formatSort = formatSort;
42
+ const formatSelect = (select, schema) => {
43
+ const selectDecoded = typeof select === 'string' ? rison_1.default.decode(decodeURIComponent(select)) : select;
44
+ const selectArray = (0, validation_1.validateSchema)(jsonschema_definer_1.default.array().items(jsonschema_definer_1.default.string()), true)((0, bett3r_utils_1.ensureArray)(selectDecoded));
45
+ const omit = selectArray.filter((s) => s[0] === '!').map((s) => s.slice(1));
46
+ if (omit?.length) {
47
+ return Object.keys(schema.plain.properties).filter((key) => !omit.includes(key));
48
+ }
49
+ return selectArray;
50
+ };
51
+ exports.formatSelect = formatSelect;
52
+ /**
53
+ * TV1-2342 slice 7 — decodes and RE-VALIDATES an aggregation spec arriving in the query string.
54
+ *
55
+ * The encoding path is `filter`'s, deliberately and verbatim: rison in the query string, decoded
56
+ * with `rison.decode( decodeURIComponent( ... ))`, then validated with `validateSchema`. A second
57
+ * wire format for the same kind of value is a thing that drifts, and `filter` already crosses this
58
+ * boundary — including inside this very spec, where `spec.filter` is validated by the SAME filter
59
+ * DEFINITION `formatFilter` uses, under its own `$id` (`AggregateFilterSchema`) because both
60
+ * filters are materialised in one document — see `collectionFilterSchemaWithId`.
61
+ *
62
+ * The three checks run in this ORDER, and the order is load-bearing:
63
+ * 1. STATIC (I5) — a runtime-supplied identifier makes the row shape underivable. Checked first
64
+ * so a `{ from: 'input.x' }` reports that, rather than a confusing type error.
65
+ * 2. SAFE IDENTIFIERS — `as`/`groupBy`/`field` are interpolated into SQL. Checked before the
66
+ * model-membership check, so an injection attempt does not get reported as "not a property
67
+ * of the model".
68
+ * 3. `deriveAggregateSchema` — the FULL slice-3 semantic validation. Not re-implemented here:
69
+ * calling the same derivation is what makes an HTTP caller inherit exactly the guarantees an
70
+ * in-process caller and teselly's authoring-time validator get, with no second rule set to
71
+ * drift. Its rejections are already `ValidationError` (400), which is why this path is a 4xx
72
+ * naming the offending field rather than a 500 or a silently empty result.
73
+ */
74
+ const formatAggregate = (aggregate, schema) => {
75
+ const decoded = typeof aggregate === 'string' ? rison_1.default.decode(decodeURIComponent(aggregate)) : aggregate;
76
+ (0, pv3_types_1.assertStaticAggregateSpec)(decoded);
77
+ (0, pv3_types_1.assertSafeAggregateIdentifiers)(decoded);
78
+ // `rison.decode` returns `unknown`, and `validateSchema<T>` takes the schema's own `T`. The two
79
+ // assertions below are NARROWING, not erasure — no `any` — and each is discharged immediately:
80
+ // - `decoded` is asserted to the SCHEMA's type and then handed straight to the validator that
81
+ // PROVES it at runtime (the two guards above have already established it is an object with a
82
+ // literal groupBy/aggregates);
83
+ // - the validated value is asserted to `AggregateSpec<Model>` because `Model` is erased at
84
+ // runtime, so `string & keyof Model` is unprovable HERE by construction; it is proven one
85
+ // line later by `deriveAggregateSchema`, which checks every key against the model SCHEMA.
86
+ // This mirrors `formatFilter`'s `result as CollectionFilter<Model>[]` exactly.
87
+ const validated = (0, validation_1.validateSchema)(pv3_types_1.AggregateSpecSchema, true)(decoded);
88
+ const spec = validated;
89
+ // Derive and DISCARD: the derivation is called for its VALIDATION here. The schema it returns is
90
+ // the response shape, which under Option B varies per request and is therefore recovered at
91
+ // authoring time in teselly (see the response-schema note at the endpoint registration).
92
+ (0, pv3_types_1.deriveAggregateSchema)(schema, spec);
93
+ return spec;
94
+ };
95
+ exports.formatAggregate = formatAggregate;
96
+ const defaultQueryParamsTranslator = (schema, { params, query, body }, idProperty = 'id') => {
97
+ return {
98
+ ...(Object.fromEntries(Object.entries(params || {}).filter(([k, v]) => k !== idProperty))),
99
+ idValue: params?.[idProperty],
100
+ limit: query?.limit ? Number(query.limit) : undefined,
101
+ offset: query?.offset ? Number(query.offset) : undefined,
102
+ after: query?.after,
103
+ select: query?.select
104
+ ? (0, exports.formatSelect)(query?.select, schema)
105
+ : undefined,
106
+ filter: query?.filter
107
+ ? (0, exports.formatFilter)(query?.filter)
108
+ : undefined,
109
+ sort: query?.sort
110
+ ? (0, exports.formatSort)(query?.sort)
111
+ : undefined,
112
+ aggregate: query?.aggregate
113
+ ? (0, exports.formatAggregate)(query?.aggregate, schema)
114
+ : undefined,
115
+ ...(body ? { body } : {})
116
+ };
117
+ };
118
+ exports.defaultQueryParamsTranslator = defaultQueryParamsTranslator;
119
+ const identityDecrypt = (event) => Promise.resolve(event);
120
+ const createEventHandlers = (logger, endpoints, decryptEvent = identityDecrypt) => {
121
+ const activeSubscriptions = {};
122
+ const closeHandlersBySubscriptionManager = new Map();
123
+ const eventHandlerMap = {};
124
+ /**
125
+ * Every event-handler name this instance has registered — SUBSCRIPTION OR NOT.
126
+ *
127
+ * `eventHandlerMap` cannot answer this (TV1-2275): it is only written for a handler
128
+ * that has events, so a query-only readmodel is invisible to it. Since a readmodel
129
+ * with no subscription now yields an MDU node keyed by NAME, two same-named ones in
130
+ * different modules would silently overwrite each other's node and one artifact would
131
+ * quietly leave the deployment manifest. Names are file-derived, so that collision is
132
+ * reachable. This set is what makes it loud.
133
+ */
134
+ const registeredEventHandlerNames = new Set();
135
+ const processEvent = (eventHandlerName) => (event) => {
136
+ const { eventHandler, executeCommand } = eventHandlerMap[eventHandlerName];
137
+ const label = getEventHandlerLabel(eventHandler);
138
+ const start = Date.now();
139
+ if (!eventHandler.events[event.name || ''])
140
+ return Promise.reject(Error(`Event ${event.name} Not recognized for ${label} ${eventHandler.name}`));
141
+ logger.log('Handling Event', event.name, 'with position:', event.position, 'in', label, eventHandler.name);
142
+ return Promise.resolve(event)
143
+ .then(handleEvent(eventHandler, executeCommand))
144
+ .then((result) => {
145
+ logger.log('Event', event.name, ' with position', event.position, ` Processed at ${eventHandler.name} in`, ((Date.now() - start) / 1000).toFixed(2), 's');
146
+ return result;
147
+ });
148
+ };
149
+ const getEventHandlerLabel = (eventHandler) => `${eventHandler.eventHandlers ? 'Policy' : 'Projector'}`;
150
+ const checkIsReadmodel = (eventHandler) => !!eventHandler.isReadmodel;
151
+ const handleEvent = (eventHandler, executeCommand) => (event) => {
152
+ const _isReadmodel = checkIsReadmodel(eventHandler);
153
+ const handler = (eventHandler.eventProjectors || {})[event.name] || eventHandler.eventHandlers[event.name];
154
+ const executeHandler = () => Promise.resolve(event)
155
+ // Decrypt at the consumer seam BEFORE schema validation: the WAL-reader
156
+ // outbox delivers on-disk encrypted envelopes (it bypasses the
157
+ // eventstore decorator), and validation would reject an envelope object
158
+ // where a `string` field is declared. No-op when encryption is unwired
159
+ // or the event is already plaintext.
160
+ .then(decryptEvent)
161
+ .then((0, validation_1.validateSchema)(getEventSchema(eventHandler)(event.name), true))
162
+ .then(handler)
163
+ .then((response) => {
164
+ //FIXME: Typings for handleEVENTS
165
+ if (!response || _isReadmodel)
166
+ return Promise.resolve();
167
+ const policy = eventHandler;
168
+ if (policy.commandHandler && response.name) {
169
+ return executeCommand(policy.commandHandler, response.name)({
170
+ body: response.data,
171
+ params: { id: response.id }
172
+ });
173
+ }
174
+ })
175
+ .catch((error) => {
176
+ logger.debug('Handling error for event', event.name, 'with position', event.position, 'in event handler', eventHandler.name);
177
+ if (eventHandler.errorHandlers && eventHandler.errorHandlers[event.name] && typeof eventHandler.errorHandlers[event.name] === 'function')
178
+ return eventHandler.errorHandlers[event.name](error, event);
179
+ if (error instanceof pv3_types_1.ValidationError) {
180
+ logger.error('Validation Error handling event', event.name, 'with position', event.position, 'in event handler', eventHandler.name, error);
181
+ }
182
+ return Promise.reject(error);
183
+ });
184
+ // Wrap in ALS context from event metadata
185
+ const ctx = {
186
+ accountId: event.metadata?.accountId,
187
+ userId: event.metadata?.userId,
188
+ correlationId: event.metadata?.correlationId,
189
+ causationId: event.id,
190
+ impersonatedBy: event.metadata?.impersonatedBy
191
+ };
192
+ if (ctx.accountId || ctx.userId) {
193
+ return (0, executionContext_1.runWithExecutionContext)(ctx, executeHandler);
194
+ }
195
+ return executeHandler();
196
+ };
197
+ const addEventHandlerToMap = (eventHandler, executeCommand) => {
198
+ eventHandlerMap[eventHandler.name] = {
199
+ eventHandler: {
200
+ ...eventHandler
201
+ },
202
+ events: Object.keys(eventHandler.events),
203
+ executeCommand
204
+ };
205
+ };
206
+ const getEventSchema = (eventHandler) => (eventName) => {
207
+ if (typeof eventHandler.events[eventName] !== 'function') {
208
+ throw new Error(`Event ${eventName} not found in ${eventHandler.name}`);
209
+ }
210
+ const definition = eventHandler.events[eventName]();
211
+ return (0, pv3_types_1.CommittedEventSchema)((definition.schema || jsonschema_definer_1.default.null()).copyWith({
212
+ plain: {
213
+ $id: eventName,
214
+ ...(definition.friendlyName ? { 'x-friendly-name': definition.friendlyName } : {}),
215
+ ...(definition.description ? { description: definition.description } : {})
216
+ }
217
+ }), eventName)
218
+ .required(['name', 'id']);
219
+ };
220
+ const registerEventHandlerEndpoint = (eventHandler, route, label, isReadmodel, tags) => {
221
+ endpoints.registerEndpoint({
222
+ loggingModule: (0, change_case_1.paramCase)(eventHandler.name),
223
+ subdomain: eventHandler.subdomain,
224
+ visibility: 'internal',
225
+ artifact: {
226
+ type: (isReadmodel ? 'readmodel' : 'policy'),
227
+ name: eventHandler.name
228
+ },
229
+ name: `Subscription endpoint for ${eventHandler.name}`,
230
+ description: `Process events sent to the ${label}`,
231
+ tags,
232
+ schemas: {
233
+ body: jsonschema_definer_1.default.anyOf(...Object.keys(eventHandler.events).map(getEventSchema(eventHandler)))
234
+ },
235
+ // It is not validated because the event handler will validate it as part of the event handling process. That way the error can be handled by the event handler.
236
+ shouldValidate: false,
237
+ route,
238
+ method: 'POST',
239
+ action: ({ body }) => processEvent(eventHandler.name)(body)
240
+ });
241
+ return route;
242
+ };
243
+ const defaultQueryHandler = async (repository, { idValue, limit, after, filter, sort, select, aggregate }, _query, readModel) => {
244
+ if (aggregate) {
245
+ // A DIFFERENT OPERATION, not a modified query — `aggregate` returns grouped rows, not model
246
+ // rows, which is precisely why it is not an option on `query`.
247
+ //
248
+ // The query-string `filter` and `idValue` are folded into the spec's own `filter` rather
249
+ // than being dropped: `filter` is PRE-grouping on both operations (slice 4), so narrowing
250
+ // the input rows means the same thing whichever of the two ways the caller expressed it.
251
+ // The teselly node contract passes `aggregate` and `filter` as SEPARATE inputs, so both
252
+ // arriving at once is the expected shape, not an error case.
253
+ const idFilter = idValue ? [{ field: readModel.idProperty, op: 'eq', value: idValue }] : [];
254
+ const combined = [...(aggregate.filter || []), ...(filter || []), ...idFilter];
255
+ return repository.aggregate({ ...aggregate, ...(combined.length ? { filter: combined } : {}) });
256
+ }
257
+ if (idValue) {
258
+ const idFilter = [...(filter || []), { field: readModel.idProperty, op: 'eq', value: idValue }];
259
+ const data = await repository.query({ limit, after, filter: idFilter, sort, select });
260
+ return data[0] || null;
261
+ }
262
+ return repository.query({ limit, after, filter, sort, select });
263
+ };
264
+ const wireSubscriptions = ({ snapshot, count, projectionParams, params, query, readmodelName }) => {
265
+ if (!query.subscriptions?.length)
266
+ return false;
267
+ const snapshotHeader = params.context?.req?.headers?.['x-subscription-snapshot'];
268
+ const wantsSnapshot = snapshotHeader !== 'false';
269
+ const items = snapshot == null ? [] : (0, bett3r_utils_1.ensureArray)(snapshot);
270
+ let subscribed = false;
271
+ query.subscriptions.forEach((s) => {
272
+ const manager = 'type' in s ? s : s.manager;
273
+ const id = manager.startSubscription(projectionParams, params.context?.req, params.context?.res, params.context?.user,
274
+ // Pass the authoritative route-derived name so the registration key matches the
275
+ // notify key (EventSource can't send the x-realtime-session-subscription header).
276
+ readmodelName,
277
+ // Retain the opening request as the subscription's `caller`, so per-subscriber
278
+ // shaping can use the same `EndpointActionParams` the query path passes.
279
+ params);
280
+ if (!id)
281
+ return;
282
+ subscribed = true;
283
+ activeSubscriptions[id] = readmodelName;
284
+ endpoints.callEventConnectionsActive();
285
+ if (wantsSnapshot) {
286
+ manager.send(id, {
287
+ type: 'realtime-session-subscription',
288
+ ref: readmodelName,
289
+ data: {
290
+ type: 'snapshot',
291
+ data: { items, count }
292
+ }
293
+ });
294
+ }
295
+ });
296
+ return subscribed;
297
+ };
298
+ const registerReadmodelQueryEndpoint = (query, readModel, route) => {
299
+ //TODO: Eliminar el idProperty del readmodel y sacarlo de la database
300
+ const idProperty = route.indexOf(`:${readModel.idProperty || 'id'}`) !== -1 ? readModel.idProperty || 'id' : '';
301
+ const readmodelName = (0, pv3_dev_utils_1.getReadmodelNameFromRoute)(route);
302
+ const readmodelSchema = readModel.schema.id(readModel.name);
303
+ const paramsSchemas = idProperty ? jsonschema_definer_1.default.shape({
304
+ [readModel.idProperty]: jsonschema_definer_1.default.string().optional()
305
+ }) : jsonschema_definer_1.default.shape({});
306
+ if (query.schemas?.responseQuerySchemaRef) {
307
+ query.schemas.response = query.schemas.response?.copyWith({
308
+ plain: {
309
+ ['x-response-query-schema']: query.schemas?.responseQuerySchemaRef
310
+ }
311
+ });
312
+ }
313
+ const schemas = {
314
+ query: query.schemas?.query || pv3_types_1.defaultQuerySchemas.query,
315
+ params: query.schemas?.params || paramsSchemas,
316
+ responses: {
317
+ 200: [
318
+ {
319
+ name: 'OK',
320
+ /**
321
+ * THE THIRD BRANCH IS THE AGGREGATE RESPONSE, AND IT IS DELIBERATELY PERMISSIVE.
322
+ *
323
+ * This is the one visible consequence of the resolved fork (Option B, authoring-time):
324
+ * the aggregation spec arrives PER REQUEST, and the row shape is a function of that
325
+ * spec — `{ accountId, netDelta }` for one caller, `{ currency, entryCount }` for the
326
+ * next. A concrete response schema is therefore impossible BY CONSTRUCTION, not
327
+ * merely unwritten. Do not "tighten" it; there is nothing to tighten it to.
328
+ *
329
+ * Tightness is not lost, it RELOCATES: teselly's authoring-time validator calls the
330
+ * exported `deriveAggregateSchema( modelSchema, spec )` on the concrete spec when a
331
+ * rule is SAVED, and gets the exact row schema — facets included — for the node's
332
+ * output ports. That export (slice 8) is the mechanism, which is why it is a
333
+ * deliverable rather than a convenience.
334
+ *
335
+ * Kept as `oneOf` rather than `anyOf` on purpose: `endpoints/index.ts` and the client
336
+ * library generator both read `plain.oneOf[0]` / `oneOf[1]` POSITIONALLY, so this
337
+ * branch is APPENDED and those two indices are unchanged. Response schemas are
338
+ * documentation here — neither the express nor the fastify adapter validates or
339
+ * serialises a response against them — so the strict "exactly one" reading of `oneOf`
340
+ * has no runtime consequence.
341
+ */
342
+ schema: query.schemas?.response || jsonschema_definer_1.default.oneOf(readmodelSchema, jsonschema_definer_1.default.array().items(readmodelSchema), jsonschema_definer_1.default.array().items(jsonschema_definer_1.default.object().additionalProperties(true)))
343
+ }
344
+ ]
345
+ }
346
+ };
347
+ query.subscriptions && query.subscriptions.forEach((subscription) => {
348
+ if ('notificationSchema' in subscription && subscription.notificationSchema) {
349
+ schemas.responses[206] ||= [];
350
+ schemas.responses[206]?.push({
351
+ name: 'Subscription',
352
+ schema: subscription.notificationSchema
353
+ });
354
+ }
355
+ });
356
+ //FIXME: #TECHDEBT abstraer esto para soportar analytics
357
+ if (query.subscriptions) {
358
+ query.subscriptions.forEach((subscriptionManager) => {
359
+ const isWrapped = !('type' in subscriptionManager);
360
+ const manager = isWrapped ? subscriptionManager.manager : subscriptionManager;
361
+ const watchCollection = (isWrapped && subscriptionManager.collection) || readModel.collection;
362
+ if (!closeHandlersBySubscriptionManager.has(manager.type)) {
363
+ closeHandlersBySubscriptionManager.set(manager.type, (idValue) => {
364
+ logger.silly(`Subscription Closed for ${idProperty}`, idValue, 'in subscription');
365
+ delete activeSubscriptions[idValue];
366
+ if (Object.keys(activeSubscriptions).length === 0)
367
+ endpoints.callEventConnectionsInactive();
368
+ });
369
+ manager.readModelSubscriptionCloseEmitter.on('close', closeHandlersBySubscriptionManager.get(manager.type));
370
+ }
371
+ // Carry the formatter down to the manager: it is applied once per matching SUBSCRIBER
372
+ // (with that subscriber's retained `caller`), not once per change up here (TV1-2282).
373
+ const notifier = manager.notifySubscriptions(logger, watchCollection, readmodelName, query.responseFormatter);
374
+ if (readModel.database) {
375
+ readModel.database.onStarted(() => {
376
+ (readModel.sessionDatabase || readModel.database).getCollection(watchCollection)
377
+ // Forward the RAW change. Formatting here ran once per change, upstream of the
378
+ // subscriber fan-out, so a caller-dependent formatter had to leak to everyone or
379
+ // break everyone — and it also handed `subscriptionIncludes` and the account
380
+ // routing a row shape their filters were not built against.
381
+ .watch(['delete', 'insert', 'update', 'invalidate'], (data) => notifier(data));
382
+ });
383
+ }
384
+ });
385
+ }
386
+ endpoints.registerEndpoint({
387
+ method: 'GET',
388
+ loggingModule: (0, change_case_1.paramCase)(readModel.name),
389
+ subdomain: readModel.subdomain,
390
+ artifact: {
391
+ type: 'readmodel',
392
+ name: readModel.name
393
+ },
394
+ subscription: !!query.subscriptions,
395
+ name: `Readmodel Query endpoint for ${readModel.name}`,
396
+ description: query.description,
397
+ // Forwarded, not defaulted — `registerEndpoint` supplies `'private'` when
398
+ // absent, so spreading only when set preserves that default exactly.
399
+ // Mirrors the command path (`commandHandlers/index.ts`, `command.visibility`).
400
+ // Both were declared on the config type and only ONE was ever read here:
401
+ // `visibility` had no home at all, and `permissions` was silently dropped
402
+ // despite `Endpoint.permissions` existing and being emitted as
403
+ // `x-permissions`. A field a caller can set and nothing consumes is worse
404
+ // than no field, because the caller believes the route is configured.
405
+ ...(query.visibility ? { visibility: query.visibility } : {}),
406
+ ...(query.permissions ? { permissions: query.permissions } : {}),
407
+ schemas,
408
+ route,
409
+ action: async (params) => {
410
+ const projectionParams = (query.translator || exports.defaultQueryParamsTranslator)(readModel.schema, params, idProperty);
411
+ const transformedProjectionParams = !query.transformers
412
+ ? projectionParams
413
+ : await query.transformers.reduce((promise, transformer) => {
414
+ return promise.then((projectionParams) => transformer(projectionParams, params));
415
+ }, Promise.resolve(projectionParams));
416
+ const repository = readModel.database?.getCollection(readModel.collection || readModel.name);
417
+ const handler = query.queryHandler || defaultQueryHandler;
418
+ const rawData = await handler(repository, { ...transformedProjectionParams, params }, query, readModel, readmodelName);
419
+ // Pass the live request as the `caller` so the formatter can shape the response
420
+ // for whoever is asking.
421
+ const data = query.responseFormatter ? query.responseFormatter(rawData, params) : rawData;
422
+ if (query.subscriptions?.length) {
423
+ const isDefaultListResult = !query.queryHandler && Array.isArray(rawData);
424
+ const count = isDefaultListResult
425
+ ? await repository.count({ filter: transformedProjectionParams.filter })
426
+ : (data == null ? 0 : (0, bett3r_utils_1.ensureArray)(data).length);
427
+ const subscribed = wireSubscriptions({
428
+ snapshot: data,
429
+ count,
430
+ projectionParams: transformedProjectionParams,
431
+ params,
432
+ query,
433
+ readmodelName
434
+ });
435
+ if (subscribed)
436
+ return;
437
+ }
438
+ return data;
439
+ }
440
+ });
441
+ return route;
442
+ };
443
+ const registerEventHandler = (eventHandler, executeCommand) => {
444
+ const isReadmodel = checkIsReadmodel(eventHandler);
445
+ let eventHandlerRoute = '';
446
+ // HOISTED out of the `events.length` branch below (TV1-2275). Inside it, the guard
447
+ // could not fire for a subscription-less readmodel — precisely the handler whose
448
+ // duplicate name is now able to drop an artifact from the deployment manifest.
449
+ if (registeredEventHandlerNames.has(eventHandler.name)) {
450
+ (0, validation_1.dieOnError)(logger)(`A policy or projector with the name ${eventHandler.name} already exists on this instance.`);
451
+ }
452
+ registeredEventHandlerNames.add(eventHandler.name);
453
+ if (eventHandler.events && Object.keys(eventHandler.events).length) {
454
+ const label = getEventHandlerLabel(eventHandler);
455
+ addEventHandlerToMap(eventHandler, executeCommand);
456
+ eventHandlerRoute = (0, utils_1.getEventHandlerPostRoute)(isReadmodel ? 'readmodel' : 'policy', eventHandler);
457
+ registerEventHandlerEndpoint(eventHandler, eventHandlerRoute, label, isReadmodel, []);
458
+ }
459
+ if (isReadmodel) {
460
+ const qs = eventHandler.queries || [{}];
461
+ qs.forEach((q) => {
462
+ registerReadmodelQueryEndpoint(q, eventHandler, q.route || (0, utils_1.getReadmodelQueryRoute)(eventHandler));
463
+ });
464
+ }
465
+ return eventHandlerRoute;
466
+ };
467
+ return {
468
+ handleEvent,
469
+ defaultQueryHandler,
470
+ registerEventHandler
471
+ };
472
+ };
473
+ exports.createEventHandlers = createEventHandlers;
474
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/libraries/eventsourcing/eventHandlers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ export type ExecutionContext = {
3
+ accountId: string;
4
+ userId: string;
5
+ correlationId?: string;
6
+ causationId?: string;
7
+ impersonatedBy?: string;
8
+ /**
9
+ * AMBIENT, STRING-ONLY key/value pairs stamped onto the metadata of every event the
10
+ * commands running inside this context emit, NESTED under `metadata.tags` — never
11
+ * spread. Set only by an in-process `runWithExecutionContext`; there is deliberately
12
+ * NO transport (no header, no query param, no `INFRA_QUERY_PARAMS` entry) that can
13
+ * populate it from outside the process.
14
+ *
15
+ * `Record<string, string>` is a SECURITY constraint, not a style choice. Event
16
+ * metadata is `additionalProperties: true`, so an open `Record<string, unknown>`
17
+ * envelope merged into it would let anything that can set a tag forge metadata that
18
+ * consumers treat as infrastructure truth — most sharply `isRedelivery: true`, which
19
+ * makes an at-most-once egress guard skip its side effect entirely. String-only kills
20
+ * that class (`"true" !== true`); the `tags` nesting makes a collision with a reserved
21
+ * metadata key structurally impossible.
22
+ */
23
+ tags?: Readonly<Record<string, string>>;
24
+ /**
25
+ * HOST-DEFINED attributes of the acting identity, merged into `context.user` for
26
+ * commands dispatched from inside this context. Exists so a host can carry an
27
+ * identity or authorization tier pv3 has no vocabulary for — an authorization-scope
28
+ * map, an "executed by" principal — across an in-process hop WITHOUT inventing a
29
+ * request header for it.
30
+ *
31
+ * That distinction is the point. A hop's identity is otherwise serialized into
32
+ * `x-auth-*` headers on a synthetic request, and a header is forgeable by anything
33
+ * that can set one. An `ExecutionContext` field is not: it is ambient, in-process,
34
+ * and reachable only through `runWithExecutionContext`. Authorization tiers belong
35
+ * here; identity a downstream service must independently verify does not.
36
+ *
37
+ * The RESERVED keys (`id`, `accountId`) always win over this bag — see the merge in
38
+ * `commandHandlers`. Otherwise a host attribute could redefine the acting user's
39
+ * identity by name collision, which is the same forgery hazard `tags` avoids by
40
+ * nesting.
41
+ *
42
+ * Unlike `tags` this is NOT stamped onto event metadata, so it needs no string-only
43
+ * constraint: it never reaches the `additionalProperties: true` metadata envelope.
44
+ */
45
+ userAttributes?: Readonly<Record<string, unknown>>;
46
+ };
47
+ export declare const executionContext: AsyncLocalStorage<ExecutionContext>;
48
+ export declare const getExecutionContext: () => ExecutionContext | undefined;
49
+ export declare const runWithExecutionContext: <T>(ctx: ExecutionContext, fn: () => T) => T;
50
+ //# sourceMappingURL=executionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executionContext.d.ts","sourceRoot":"","sources":["../../../src/libraries/eventsourcing/executionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,qCAA4C,CAAC;AAE1E,eAAO,MAAM,mBAAmB,QAAO,gBAAgB,GAAG,SAC7B,CAAC;AAE9B,eAAO,MAAM,uBAAuB,GAAI,CAAC,OAAQ,gBAAgB,MAAM,MAAM,CAAC,KAAI,CACjD,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runWithExecutionContext = exports.getExecutionContext = exports.executionContext = void 0;
4
+ const node_async_hooks_1 = require("node:async_hooks");
5
+ exports.executionContext = new node_async_hooks_1.AsyncLocalStorage();
6
+ const getExecutionContext = () => exports.executionContext.getStore();
7
+ exports.getExecutionContext = getExecutionContext;
8
+ const runWithExecutionContext = (ctx, fn) => exports.executionContext.run(ctx, fn);
9
+ exports.runWithExecutionContext = runWithExecutionContext;
10
+ //# sourceMappingURL=executionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executionContext.js","sourceRoot":"","sources":["../../../src/libraries/eventsourcing/executionContext.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAgDxC,QAAA,gBAAgB,GAAG,IAAI,oCAAiB,EAAoB,CAAC;AAEnE,MAAM,mBAAmB,GAAG,GAAiC,EAAE,CACpE,QAAA,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AADjB,QAAA,mBAAmB,GAAnB,mBAAmB,CACF;AAEvB,MAAM,uBAAuB,GAAG,CAAK,GAAqB,EAAE,EAAW,EAAM,EAAE,CACpF,QAAA,gBAAgB,CAAC,GAAG,CAAE,GAAG,EAAE,EAAE,CAAE,CAAC;AADrB,QAAA,uBAAuB,GAAvB,uBAAuB,CACF"}
@@ -0,0 +1,5 @@
1
+ import { CommandHandlerState, DatabaseOps, IdempotencyCheckType } from '@bett3r-dev/pv3-types';
2
+ export declare const idempotency: {
3
+ check: <Model, CommandPayload>(value1: ((state: CommandHandlerState<any, CommandPayload, Model>) => any), op: DatabaseOps, value2?: ((state: CommandHandlerState<any, CommandPayload, Model>) => any)) => IdempotencyCheckType<Model, CommandPayload>;
4
+ };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libraries/eventsourcing/idempotencyChecks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAsB/F,eAAO,MAAM,WAAW;YATT,KAAK,EAAE,cAAc,UAAW,CAAC,CAAE,KAAK,EAAC,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,KAAM,GAAG,CAAE,MAAM,WAAW,WAAW,CAAC,CAAE,KAAK,EAAC,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,KAAM,GAAG,CAAE,KAAG,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC;CAW9P,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.idempotency = void 0;
4
+ const ramda_1 = require("ramda");
5
+ const common_1 = require("../invariants/common");
6
+ function createIdempotencyCheck(check) {
7
+ return {
8
+ check: async (handlerState) => {
9
+ return check(handlerState)
10
+ .then((0, ramda_1.always)(handlerState));
11
+ }
12
+ };
13
+ }
14
+ const check = (value1, op, value2) => {
15
+ return createIdempotencyCheck(async (handlerState) => {
16
+ const path1Value = await value1(handlerState);
17
+ const path2Value = value2 && await value2(handlerState);
18
+ const result = (0, common_1.compareCheck)(path1Value, path2Value, op);
19
+ if (result)
20
+ return Promise.reject({ ignore: '--IdempotencyCheck--', handlerState });
21
+ });
22
+ };
23
+ exports.idempotency = {
24
+ check
25
+ };
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/libraries/eventsourcing/idempotencyChecks/index.ts"],"names":[],"mappings":";;;AACA,iCAA+B;AAC/B,iDAAoD;AAEpD,SAAS,sBAAsB,CAAkB,KAAkF;IACjI,OAAO;QACL,KAAK,EAAE,KAAK,EAAG,YAAY,EAAG,EAAE;YAC9B,OAAO,KAAK,CAAE,YAAY,CAAE;iBACzB,IAAI,CAAE,IAAA,cAAM,EAAE,YAAY,CAAE,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,CAAyB,MAA2E,EAAE,EAAe,EAAE,MAA4E,EAA+C,EAAE;IAChQ,OAAO,sBAAsB,CAAE,KAAK,EAAG,YAA6D,EAAG,EAAE;QACvG,MAAM,UAAU,GAAG,MAAM,MAAM,CAAE,YAAY,CAAE,CAAC;QAChD,MAAM,UAAU,GAAG,MAAM,IAAI,MAAM,MAAM,CAAE,YAAY,CAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAE,CAAC;QAC1D,IAAK,MAAM;YAAG,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,YAAY,EAAE,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEW,QAAA,WAAW,GAAG;IACzB,KAAK;CACN,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { EndpointActionParamsContext, EndpointsPort, EventSourcingLibraryType, EventStorePort, InstrumentCommandExecution, LoggerPort } from '@bett3r-dev/pv3-types';
2
+ import { ObjectSchema } from '@bett3r-dev/jsonschema-definer';
3
+ import { EventDecryptFn } from './eventHandlers';
4
+ export * from './commandHandlers';
5
+ export * from './commandTemplates';
6
+ export * from './eventHandlers';
7
+ export * from './idempotencyChecks';
8
+ export * from './invariants';
9
+ export * from './subscriptions';
10
+ export * from './utils';
11
+ export { getExecutionContext, runWithExecutionContext, executionContext } from './executionContext';
12
+ export type { ExecutionContext } from './executionContext';
13
+ export declare const EventSourcing: <METADATA extends Record<string, any> = any, USER = any>(loggerPort: LoggerPort, eventstore: EventStorePort, endpoints: EndpointsPort<USER>, metadataSchema?: ObjectSchema<METADATA>, contextToMetadata?: (context: Partial<EndpointActionParamsContext<USER>>) => METADATA, instrumentCommandExecution?: InstrumentCommandExecution, decryptEvent?: EventDecryptFn) => EventSourcingLibraryType<METADATA, USER>;
14
+ //# sourceMappingURL=index.d.ts.map