@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,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const pv3_types_1 = require("@bett3r-dev/pv3-types");
4
+ const index_1 = require("./index");
5
+ describe('MemoryDb createMany atomic unique-index reject', () => {
6
+ const setup = async () => {
7
+ const db = (0, index_1.MemoryDb)();
8
+ await db.start();
9
+ const collection = db.getCollection('people');
10
+ await collection.ensureIndex(['email'], { isUnique: true });
11
+ return { db, collection };
12
+ };
13
+ it('rejects with DuplicatedValueInIndexError and leaves the collection unmutated when any doc collides with an existing row on a unique index', async () => {
14
+ // Given a collection holding one row
15
+ const { collection } = await setup();
16
+ await collection.createMany([{ id: '1', email: 'a@a.com' }]);
17
+ const before = await collection.query({});
18
+ // When createMany-ing a batch whose second doc collides on the unique `email` index
19
+ await expect(collection.createMany([
20
+ { id: '2', email: 'b@b.com' },
21
+ { id: '3', email: 'a@a.com' }
22
+ ])).rejects.toBeInstanceOf(pv3_types_1.DuplicatedValueInIndexError);
23
+ // Then NONE of the batch was written — all-or-nothing, including the non-colliding doc '2'
24
+ expect(await collection.query({})).toEqual(before);
25
+ expect(await collection.readById('2')).toBeNull();
26
+ expect(await collection.readById('3')).toBeNull();
27
+ });
28
+ it('inserts every row when the batch does not collide', async () => {
29
+ const { collection } = await setup();
30
+ const result = await collection.createMany([
31
+ { id: '1', email: 'a@a.com' },
32
+ { id: '2', email: 'b@b.com' }
33
+ ]);
34
+ expect(result).toHaveLength(2);
35
+ expect(await collection.readById('1')).toEqual({ id: '1', email: 'a@a.com' });
36
+ expect(await collection.readById('2')).toEqual({ id: '2', email: 'b@b.com' });
37
+ });
38
+ it('does not treat null indexed values as colliding (SQL NULL-distinctness — versionless streams)', async () => {
39
+ // Compound unique index on (stream, version), matching the eventstore.
40
+ const db = (0, index_1.MemoryDb)();
41
+ await db.start();
42
+ const events = db.getCollection('events');
43
+ await events.ensureIndex(['stream', 'version'], { isUnique: true });
44
+ // A versionless stream commits many events all at version === null.
45
+ await events.createMany([{ id: '1', stream: 'S-1', version: null }]);
46
+ await expect(events.createMany([{ id: '2', stream: 'S-1', version: null }]))
47
+ .resolves.toHaveLength(1);
48
+ expect(await events.query({})).toHaveLength(2);
49
+ // Non-null duplicates on the same index still collide.
50
+ await events.createMany([{ id: '3', stream: 'S-1', version: 0 }]);
51
+ await expect(events.createMany([{ id: '4', stream: 'S-1', version: 0 }]))
52
+ .rejects.toBeInstanceOf(pv3_types_1.DuplicatedValueInIndexError);
53
+ });
54
+ });
55
+ describe('MemoryDb transaction isolation (TV1-1976)', () => {
56
+ it("a rolled-back transaction does not clobber a concurrent transaction's committed write", async () => {
57
+ // Given a db and a transaction B whose snapshot is taken (at BEGIN) while the
58
+ // db is still empty, but which acts LATER — the exact window the old
59
+ // whole-_db snapshot/restore clobbered.
60
+ const db = (0, index_1.MemoryDb)();
61
+ await db.start();
62
+ const coll = 'accounts';
63
+ let release = () => { };
64
+ const gate = new Promise((r) => { release = r; });
65
+ const txB = db.initTransaction(async (transaction) => {
66
+ await gate; // B was BEGUN (snapshot empty) but does its write only after A commits.
67
+ await transaction.getCollection(coll).upsert('b', { id: 'b', v: 2 });
68
+ throw new Error('boom'); // force B to roll back
69
+ });
70
+ // When a concurrent transaction A commits a write to a DIFFERENT key while B is paused,
71
+ await db.initTransaction(async (transaction) => {
72
+ await transaction.getCollection(coll).upsert('a', { id: 'a', keep: true });
73
+ });
74
+ // ...and only then B resumes, writes 'b', and rolls back.
75
+ release();
76
+ await expect(txB).rejects.toThrow('boom');
77
+ // Then A's committed write SURVIVES B's rollback (old code wiped it), and B's
78
+ // own write is undone.
79
+ expect(await db.getCollection(coll).readById('a')).toEqual({ id: 'a', keep: true });
80
+ expect(await db.getCollection(coll).readById('b')).toBeNull();
81
+ });
82
+ it('rolls back only its own writes, leaving pre-existing committed rows untouched', async () => {
83
+ // Given a committed baseline row
84
+ const db = (0, index_1.MemoryDb)();
85
+ await db.start();
86
+ const coll = 'accounts';
87
+ await db.getCollection(coll).upsert('base', { id: 'base', v: 0 });
88
+ // When a transaction updates the baseline AND inserts a new row, then rolls back
89
+ await expect(db.initTransaction(async (transaction) => {
90
+ await transaction.getCollection(coll).upsert('base', { id: 'base', v: 99 });
91
+ await transaction.getCollection(coll).upsert('new', { id: 'new', v: 1 });
92
+ throw new Error('rollback');
93
+ })).rejects.toThrow('rollback');
94
+ // Then the baseline is restored to its pre-transaction value and the insert is gone
95
+ expect(await db.getCollection(coll).readById('base')).toEqual({ id: 'base', v: 0 });
96
+ expect(await db.getCollection(coll).readById('new')).toBeNull();
97
+ });
98
+ it('undoes a non-unique arrayPush on rollback (the in-place push must not corrupt its own pre-image)', async () => {
99
+ // Given a committed row with an array field
100
+ const db = (0, index_1.MemoryDb)();
101
+ await db.start();
102
+ const coll = 'docs';
103
+ await db.getCollection(coll).upsert('r1', { id: 'r1', tags: ['a'] });
104
+ // When a transaction arrayPushes a NON-UNIQUE element then rolls back
105
+ await expect(db.initTransaction(async (transaction) => {
106
+ await transaction.getCollection(coll).arrayPush([{ field: 'id', op: 'eq', value: 'r1' }], ['tags'], 'b');
107
+ throw new Error('rollback');
108
+ })).rejects.toThrow('rollback');
109
+ // Then the push is undone — the pre-image is intact. (Regression: the old
110
+ // in-place `array.push` mutated the row's array before the journal captured
111
+ // its pre-image by reference, so the rollback left the pushed 'b' behind.)
112
+ expect(await db.getCollection(coll).readById('r1')).toEqual({ id: 'r1', tags: ['a'] });
113
+ });
114
+ it('a committed non-unique arrayPush still persists the pushed element', async () => {
115
+ // Control: the fresh-array rewrite must not change normal (commit) behavior.
116
+ const db = (0, index_1.MemoryDb)();
117
+ await db.start();
118
+ const coll = 'docs';
119
+ await db.getCollection(coll).upsert('r1', { id: 'r1', tags: ['a'] });
120
+ await db.initTransaction(async (transaction) => {
121
+ await transaction.getCollection(coll).arrayPush([{ field: 'id', op: 'eq', value: 'r1' }], ['tags'], 'b');
122
+ });
123
+ expect(await db.getCollection(coll).readById('r1')).toEqual({ id: 'r1', tags: ['a', 'b'] });
124
+ });
125
+ });
126
+ // A CHARACTERIZATION test: it pins the behavior MemoryDb already has, on purpose. It is green from
127
+ // the moment it is written and it must STAY green — if it ever goes red, somebody "fixed" the
128
+ // non-isolation and (see below) broke the OCC retry while they were at it.
129
+ describe('MemoryDb transactions are ATOMIC, not ISOLATED (TV1-1985)', () => {
130
+ it('a read taken from the POOL sees a write made inside an OPEN, UNCOMMITTED transaction', async () => {
131
+ // Given a db and an open transaction
132
+ const db = (0, index_1.MemoryDb)();
133
+ await db.start();
134
+ const coll = 'accounts';
135
+ // When the transaction writes a row and, BEFORE it commits, the POOL reads the same collection.
136
+ // (`initTransaction` only resolves after the callback returns, so everything read inside the
137
+ // callback is read while the transaction is still open — nothing is committed yet.)
138
+ let readByIdFromPool = 'never read';
139
+ let queriedFromPool = [];
140
+ await db.initTransaction(async (transaction) => {
141
+ await transaction.getCollection(coll).upsert('a', { id: 'a', uncommitted: true });
142
+ readByIdFromPool = await db.getCollection(coll).readById('a');
143
+ queriedFromPool = await db.getCollection(coll).query({});
144
+ });
145
+ // Then the UNCOMMITTED row IS visible from the pool. This is the true, deliberate behavior —
146
+ // NOT a bug to be asserted away. MemoryDb applies transaction writes IN PLACE on the shared
147
+ // `_db` behind an undo-journal Proxy and its commit is a no-op (index.ts:341-421): the journal
148
+ // exists only to restore this transaction's touched keys on ROLLBACK. It therefore buys
149
+ // ATOMICITY, not ISOLATION. index.ts:360-364 records the rejection of the alternative
150
+ // explicitly: a snapshot-clone-then-apply-on-commit (MVCC-style) overlay was turned down
151
+ // because applying writes only at commit defers the UNIQUE-index violation to commit time,
152
+ // which (a) diverges from Postgres, which fails at INSERT, and (b) bypasses the eventstore's
153
+ // `createMany` -> ConcurrencyError remap that the command-handler's optimistic retry is keyed
154
+ // on. Isolate MemoryDb and you break the OCC retry.
155
+ expect(readByIdFromPool).toEqual({ id: 'a', uncommitted: true });
156
+ expect(queriedFromPool).toEqual([{ id: 'a', uncommitted: true }]);
157
+ // The consequence, and the reason this fact is worth an executed assertion: NO MemoryDb-backed
158
+ // test can witness a transaction-ISOLATION bug. `DatabaseEventstore.reduceMultipleStream`
159
+ // silently dropped the transaction it was handed and read from the pool for three months — and
160
+ // because a MemoryDb pool read returns exactly what the transaction wrote, the buggy and the
161
+ // fixed adapter reduce to IDENTICAL state here. The entire default (infra-free) tier could only
162
+ // ever pass VACUOUSLY on that contract; the ticket even produced a false P1 off the confusion.
163
+ // Isolation contracts must therefore be proven in a `.deps.test.ts` over a REAL Postgres:
164
+ // packages/pv3-adapter-eventstore-postgres/__tests__/multiStreamTransaction.deps.test.ts.
165
+ });
166
+ });
167
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/adapters/database/memory/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pagingCursorZero.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagingCursorZero.test.d.ts","sourceRoot":"","sources":["../../../../src/adapters/database/memory/pagingCursorZero.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("./index");
4
+ /**
5
+ * A paging walk over a readmodel whose cursor legitimately takes the value `0`.
6
+ *
7
+ * The cursor is the key column's value, so on a zero-based numeric key page 1's last key IS `0`.
8
+ * The adapter used to guard the cursor with `if ( after )`; `0` being falsy, page 2 was fetched
9
+ * UNCURSORED and returned page 1 again — whose last key is again `0` — so the walk never
10
+ * terminated and re-yielded page 1 forever.
11
+ *
12
+ * The walk below is BOUNDED by MAX_PAGES: a regression FAILS the assertion rather than hanging
13
+ * the suite.
14
+ */
15
+ describe('MemoryDb paging cursor of 0', () => {
16
+ const MAX_PAGES = 10;
17
+ const setup = async () => {
18
+ const db = (0, index_1.MemoryDb)();
19
+ await db.start();
20
+ const collection = db.getCollection('items');
21
+ // Zero-based numeric keys — '0' is a real, reachable cursor value.
22
+ await collection.createMany([
23
+ { id: '0', name: 'zero' },
24
+ { id: '1', name: 'one' },
25
+ { id: '2', name: 'two' }
26
+ ]);
27
+ return collection;
28
+ };
29
+ it('Given a page-1 cursor of 0 when fetching page 2 then page 2 does NOT repeat page 1', async () => {
30
+ const collection = await setup();
31
+ const pageOne = await collection.query({ limit: 1 });
32
+ expect(pageOne.map(r => r.id)).toEqual(['0']);
33
+ // The cursor page 1 hands forward is the literal value 0 — the falsy value that used to be dropped.
34
+ const cursor = Number(pageOne[pageOne.length - 1].id);
35
+ expect(cursor).toBe(0);
36
+ const pageTwo = await collection.query({ limit: 1, after: cursor });
37
+ expect(pageTwo.map(r => r.id)).not.toEqual(pageOne.map(r => r.id));
38
+ expect(pageTwo.map(r => r.id)).toEqual(['1']);
39
+ });
40
+ it('Given a full paged walk from a 0 cursor when draining the collection then it TERMINATES and visits each row exactly once', async () => {
41
+ const collection = await setup();
42
+ const seen = [];
43
+ let cursor = undefined;
44
+ let pages = 0;
45
+ while (pages < MAX_PAGES) {
46
+ const page = await collection.query(cursor === undefined ? { limit: 1 } : { limit: 1, after: cursor });
47
+ if (page.length === 0)
48
+ break;
49
+ pages++;
50
+ seen.push(...page.map(r => r.id));
51
+ cursor = Number(page[page.length - 1].id);
52
+ }
53
+ // Terminated well inside the bound — a re-yielding pager would burn all MAX_PAGES.
54
+ expect(pages).toBe(3);
55
+ // Each row exactly once, in key order — no repeats.
56
+ expect(seen).toEqual(['0', '1', '2']);
57
+ expect(new Set(seen).size).toBe(seen.length);
58
+ });
59
+ });
60
+ //# sourceMappingURL=pagingCursorZero.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagingCursorZero.test.js","sourceRoot":"","sources":["../../../../src/adapters/database/memory/pagingCursorZero.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pagingVanishedCursor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagingVanishedCursor.test.d.ts","sourceRoot":"","sources":["../../../../src/adapters/database/memory/pagingVanishedCursor.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("./index");
4
+ /**
5
+ * A paging walk over a collection whose CURSOR ROW IS DELETED between page 1 and page 2.
6
+ *
7
+ * The adapter resolved the cursor with `sortedKeys.indexOf( after.toString())`. When the cursor
8
+ * key has vanished, `indexOf` returns -1 and the follow-on `slice( -1 + 1 )` === `slice( 0 )`
9
+ * re-yields the WHOLE collection from the beginning — the same non-terminating-pager class as the
10
+ * falsy-cursor bug in `pagingCursorZero.test.ts`, reached by a different route.
11
+ *
12
+ * Correct semantics are taken from the Postgres adapter, the contract oracle: it compiles the
13
+ * cursor to `<key> > $n` (`postgres.utils.ts` `translateSQL`), so deleting the cursor row changes
14
+ * nothing and rows after it still match — SKIP-FORWARD, not empty, and certainly not restart.
15
+ * Mongo agrees ( `{ id: { $gt: after }}` ).
16
+ *
17
+ * The walk below is BOUNDED by MAX_PAGES: a regression FAILS the assertion rather than hanging
18
+ * the suite.
19
+ */
20
+ describe('MemoryDb paging over a vanished cursor', () => {
21
+ const MAX_PAGES = 10;
22
+ const setup = async () => {
23
+ const db = (0, index_1.MemoryDb)();
24
+ await db.start();
25
+ const collection = db.getCollection('items');
26
+ await collection.createMany([
27
+ { id: '1', name: 'one' },
28
+ { id: '2', name: 'two' },
29
+ { id: '3', name: 'three' },
30
+ { id: '4', name: 'four' },
31
+ { id: '5', name: 'five' }
32
+ ]);
33
+ return collection;
34
+ };
35
+ it('Given the cursor row is deleted when fetching the next page then it SKIPS FORWARD to the next key, not back to the start', async () => {
36
+ const collection = await setup();
37
+ const pageOne = await collection.query({ limit: 2 });
38
+ expect(pageOne.map(r => r.id)).toEqual(['1', '2']);
39
+ const cursor = pageOne[pageOne.length - 1].id;
40
+ // The row the cursor names disappears between pages.
41
+ await collection.destroyById(cursor);
42
+ const pageTwo = await collection.query({ limit: 2, after: cursor });
43
+ // Skip-forward: everything ordered after the vanished key, nothing before it.
44
+ expect(pageTwo.map(r => r.id)).toEqual(['3', '4']);
45
+ expect(pageTwo.map(r => r.id)).not.toContain('1');
46
+ });
47
+ it('Given a paged walk whose cursor row vanishes each page then it TERMINATES and never re-yields an earlier row', async () => {
48
+ const collection = await setup();
49
+ // Pages of 2, deleting only the row the cursor NAMES (the page's last). Row '1' is never the
50
+ // cursor, so it stays in the collection for the whole walk — which is what makes a restarting
51
+ // pager observable: broken, every page leads with '1' again, and the walk burns pages until
52
+ // the bound. Deleting the head instead would mask the defect.
53
+ const seen = [];
54
+ let cursor = undefined;
55
+ let pages = 0;
56
+ while (pages < MAX_PAGES) {
57
+ const page = await collection.query(cursor === undefined ? { limit: 2 } : { limit: 2, after: cursor });
58
+ if (page.length === 0)
59
+ break;
60
+ pages++;
61
+ seen.push(...page.map(r => r.id));
62
+ cursor = page[page.length - 1].id;
63
+ await collection.destroyById(cursor);
64
+ }
65
+ // Terminated well inside the bound — a restarting pager burns MAX_PAGES instead.
66
+ expect(pages).toBe(3);
67
+ // Each row exactly once, in key order — no row re-yielded from the start.
68
+ expect(seen).toEqual(['1', '2', '3', '4', '5']);
69
+ expect(new Set(seen).size).toBe(seen.length);
70
+ });
71
+ });
72
+ //# sourceMappingURL=pagingVanishedCursor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagingVanishedCursor.test.js","sourceRoot":"","sources":["../../../../src/adapters/database/memory/pagingVanishedCursor.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import { EndpointsAdapter } from '@bett3r-dev/pv3-types';
2
2
  /**
3
- * Adds the user object to the request context
4
- * @param customTokenAttributes - Object with key as the path to the attribute in the token and value as the name of the attribute in the user object
5
- * @returns
3
+ * Adds the user object to the request context.
4
+ *
5
+ * X-Auth-* headers — set by an API gateway (e.g., Caddy subrequest).
6
+ * The gateway resolves JWT/session and forwards user identity as headers.
7
+ * @param headersToContextMap - Maps request headers to context paths (e.g., { 'x-auth-user-id': 'context.user.id' })
6
8
  */
7
- export declare const AddAuthUserToRequest: (customTokenAttributes: Record<string, string>) => EndpointsAdapter;
9
+ export declare const AddAuthUserToRequest: (headersToContextMap?: Record<string, string>) => EndpointsAdapter;
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/endpoints/addAuthUser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAYzF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0BAA4B,OAAO,MAAM,EAAE,MAAM,CAAC,KAAI,gBAqCtF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/endpoints/addAuthUser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGpG;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,yBACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC1C,gBA2BF,CAAC"}
@@ -2,40 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AddAuthUserToRequest = void 0;
4
4
  const ramda_1 = require("ramda");
5
- const __1 = require("../../..");
6
- const propMapper = (map, object) => {
7
- const result = {};
8
- Object.keys(map).forEach(key => {
9
- result[map[key]] = (0, ramda_1.path)(key.split('.'), object);
10
- });
11
- return result;
12
- };
13
5
  /**
14
- * Adds the user object to the request context
15
- * @param customTokenAttributes - Object with key as the path to the attribute in the token and value as the name of the attribute in the user object
16
- * @returns
6
+ * Adds the user object to the request context.
7
+ *
8
+ * X-Auth-* headers — set by an API gateway (e.g., Caddy subrequest).
9
+ * The gateway resolves JWT/session and forwards user identity as headers.
10
+ * @param headersToContextMap - Maps request headers to context paths (e.g., { 'x-auth-user-id': 'context.user.id' })
17
11
  */
18
- const AddAuthUserToRequest = (customTokenAttributes) => {
12
+ const AddAuthUserToRequest = (headersToContextMap = {}) => {
19
13
  const addUserToContext = async (params) => {
20
- const token = params.context?.req?.headers?.authorization || params.query?.access_token;
21
- if (!token)
22
- return params;
23
- try {
24
- const payload = JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString());
25
- if (!params.context)
26
- params.context = {};
27
- params.context.token = token.slice(token.lastIndexOf(' ') + 1);
28
- params.context.user = propMapper({
29
- 'email': 'email',
30
- 'realm_access.roles': 'roles',
31
- 'app_id': 'id',
32
- ...customTokenAttributes
33
- }, payload);
34
- return Promise.resolve(params);
35
- }
36
- catch (err) {
37
- return Promise.reject((0, __1.createError)((0, __1.AuthenticationError)(), { description: 'Invalid Token' }));
38
- }
14
+ Object.entries(headersToContextMap).forEach(([header, contextPath]) => {
15
+ if (params.context?.req?.headers?.[header]) {
16
+ params = (0, ramda_1.assocPath)(contextPath.split('.'), params.context.req.headers[header], params);
17
+ }
18
+ });
19
+ return params;
39
20
  };
40
21
  const registerEndpoint = (endpoint) => {
41
22
  const originalAction = endpoint.action;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/endpoints/addAuthUser/index.ts"],"names":[],"mappings":";;;AACA,iCAA6B;AAC7B,gCAA4D;AAE5D,MAAM,UAAU,GAAG,CAAE,GAA2B,EAAE,MAA2B,EAAG,EAAE;IAChF,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,IAAI,CAAE,GAAG,CAAE,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE;QAChC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAA,YAAI,EAAE,GAAG,CAAC,KAAK,CAAE,GAAG,CAAE,EAAE,MAAM,CAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;GAIG;AACI,MAAM,oBAAoB,GAAG,CAAE,qBAA6C,EAAqB,EAAE;IACxG,MAAM,gBAAgB,GAAG,KAAK,EAAG,MAA4B,EAAkC,EAAE;QAC/F,MAAM,KAAK,GAAW,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,aAAuB,IAAI,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;QAC1G,IAAK,CAAC,KAAK;YAAG,OAAO,MAAM,CAAC;QAC5B,IAAG;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAE,MAAM,CAAC,IAAI,CAAE,KAAK,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvF,IAAK,CAAC,MAAM,CAAC,OAAO;gBAClB,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAE,KAAK,CAAC,WAAW,CAAE,GAAG,CAAE,GAAG,CAAC,CAAE,CAAC;YACnE,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;gBAC/B,OAAO,EAAE,OAAO;gBAChB,oBAAoB,EAAE,OAAO;gBAC7B,QAAQ,EAAE,IAAI;gBACd,GAAG,qBAAqB;aACzB,EAAE,OAAO,CAAE,CAAC;YACb,OAAO,OAAO,CAAC,OAAO,CAAE,MAAM,CAAE,CAAC;SAClC;QAAC,OAAQ,GAAG,EAAG;YACd,OAAO,OAAO,CAAC,MAAM,CAAE,IAAA,eAAW,EAAE,IAAA,uBAAmB,GAAE,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;SAC/F;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAE,QAAkB,EAAG,EAAE;QAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,QAAQ,CAAC,MAAM,GAAG,CAAE,MAA2C,EAAG,EAAE;YAClE,OAAO,gBAAgB,CAAE,MAAM,CAAE;iBAC9B,IAAI,CAAE,cAAc,CAAE,CAAC;QAC5B,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,KAAK,IAAE,EAAE,GAAC,CAAC;QAClB,IAAI,EAAE,KAAK,IAAE,EAAE,GAAC,CAAC;QACjB,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,oBAAoB,wBAqC/B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/endpoints/addAuthUser/index.ts"],"names":[],"mappings":";;;AACA,iCAAkC;AAElC;;;;;;GAMG;AACI,MAAM,oBAAoB,GAAG,CAClC,mBAAmB,GAA2B,EAAE,EAC9B,EAAE;IACpB,MAAM,gBAAgB,GAAG,KAAK,EAAG,MAA4B,EAAkC,EAAE;QAC/F,MAAM,CAAC,OAAO,CAAE,mBAAmB,CAAE,CAAC,OAAO,CAAC,CAAC,CAAE,MAAM,EAAE,WAAW,CAAE,EAAE,EAAE;YACxE,IAAK,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAE,MAAM,CAAE,EAAE,CAAC;gBAC9C,MAAM,GAAG,IAAA,iBAAS,EAAE,WAAW,CAAC,KAAK,CAAE,GAAG,CAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAI,CAAC,OAAO,CAAE,MAAM,CAAE,EAAE,MAAM,CAAE,CAAC;YAChG,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAE,QAAkB,EAAG,EAAE;QAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,QAAQ,CAAC,MAAM,GAAG,CAAE,MAA2C,EAAG,EAAE;YAClE,OAAO,gBAAgB,CAAE,MAAM,CAAE;iBAC9B,IAAI,CAAE,cAAc,CAAE,CAAC;QAC5B,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QACrB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QACpB,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,oBAAoB,GAApB,oBAAoB,CA6B/B"}
@@ -0,0 +1,32 @@
1
+ import { EndpointActionParams, EndpointsAdapter } from '@bett3r-dev/pv3-types';
2
+ /**
3
+ * A pre-action interceptor. Receives the action params, returns the same
4
+ * (or a transformed) params object. May be sync or async.
5
+ *
6
+ * Typical use is to populate `params.context.user` from whatever credential
7
+ * the deployment supplies (a JWT in `Authorization`, an opaque session
8
+ * cookie, upstream-gateway headers, etc.). All such concerns live in
9
+ * consumer code so this adapter carries no transport, provider, or
10
+ * authentication-library knowledge.
11
+ *
12
+ * Returning the params unmodified is a valid no-op.
13
+ */
14
+ export type RequestInterceptor = (params: EndpointActionParams) => Promise<EndpointActionParams> | EndpointActionParams;
15
+ /**
16
+ * Endpoints adapter that runs a consumer-supplied interceptor before each
17
+ * endpoint's action. The interceptor is the only injection point — this
18
+ * adapter has no opinion about how identity is resolved, where credentials
19
+ * live, or which libraries verify them.
20
+ *
21
+ * When `interceptor` is omitted, the adapter is a no-op (every endpoint
22
+ * action runs unchanged), which lets callers wire the adapter
23
+ * unconditionally even when the dev-only interceptor build failed (e.g.,
24
+ * because optional auth-resolution dependencies aren't installed in a
25
+ * production image).
26
+ *
27
+ * Naming: kept as `AddDevAuthUserToRequest` for backwards compatibility
28
+ * with existing call sites. The semantics are now generic — see
29
+ * `RequestInterceptor`.
30
+ */
31
+ export declare const AddDevAuthUserToRequest: (interceptor?: RequestInterceptor) => EndpointsAdapter;
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/endpoints/addDevAuthUser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,MAAM,EAAE,oBAAoB,KACzB,OAAO,CAAC,oBAAoB,CAAC,GAAG,oBAAoB,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,iBACpB,kBAAkB,KAC/B,gBAiBF,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddDevAuthUserToRequest = void 0;
4
+ /**
5
+ * Endpoints adapter that runs a consumer-supplied interceptor before each
6
+ * endpoint's action. The interceptor is the only injection point — this
7
+ * adapter has no opinion about how identity is resolved, where credentials
8
+ * live, or which libraries verify them.
9
+ *
10
+ * When `interceptor` is omitted, the adapter is a no-op (every endpoint
11
+ * action runs unchanged), which lets callers wire the adapter
12
+ * unconditionally even when the dev-only interceptor build failed (e.g.,
13
+ * because optional auth-resolution dependencies aren't installed in a
14
+ * production image).
15
+ *
16
+ * Naming: kept as `AddDevAuthUserToRequest` for backwards compatibility
17
+ * with existing call sites. The semantics are now generic — see
18
+ * `RequestInterceptor`.
19
+ */
20
+ const AddDevAuthUserToRequest = (interceptor) => {
21
+ const registerEndpoint = (endpoint) => {
22
+ if (!interceptor)
23
+ return endpoint;
24
+ const originalAction = endpoint.action;
25
+ endpoint.action = (params) => {
26
+ return Promise.resolve(interceptor(params)).then(originalAction);
27
+ };
28
+ return endpoint;
29
+ };
30
+ return {
31
+ _adapter: () => { },
32
+ name: 'addDevAuthUser',
33
+ start: async () => { },
34
+ stop: async () => { },
35
+ registerEndpoint
36
+ };
37
+ };
38
+ exports.AddDevAuthUserToRequest = AddDevAuthUserToRequest;
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/endpoints/addDevAuthUser/index.ts"],"names":[],"mappings":";;;AAkBA;;;;;;;;;;;;;;;GAeG;AACI,MAAM,uBAAuB,GAAG,CACrC,WAAgC,EACd,EAAE;IACpB,MAAM,gBAAgB,GAAG,CAAE,QAAkB,EAAG,EAAE;QAChD,IAAK,CAAC,WAAW;YAAG,OAAO,QAAQ,CAAC;QACpC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,QAAQ,CAAC,MAAM,GAAG,CAAE,MAA2C,EAAG,EAAE;YAClE,OAAO,OAAO,CAAC,OAAO,CAAE,WAAW,CAAE,MAAM,CAAE,CAAC,CAAC,IAAI,CAAE,cAAc,CAAE,CAAC;QACxE,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QACrB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QACpB,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,uBAAuB,GAAvB,uBAAuB,CAmBlC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=asyncLocalStorage.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncLocalStorage.test.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/endpoints/asyncLocalStorage/__tests__/asyncLocalStorage.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const executionContext_1 = require("../../../../libraries/eventsourcing/executionContext");
4
+ const __1 = require("..");
5
+ const buildEndpoint = (action) => ({
6
+ name: 'test',
7
+ loggingModule: 'test',
8
+ route: '/test',
9
+ method: 'GET',
10
+ action,
11
+ schemas: {}
12
+ });
13
+ /**
14
+ * The shape every real `extractContext` in this ecosystem has: it enumerates every
15
+ * field it knows about and returns `correlationId` / `causationId` EXPLICITLY as
16
+ * `undefined` when the request carries none. That is exactly what a naive
17
+ * `{ ...outer, ...ctx }` would use to erase an inherited correlation, and why the
18
+ * adapter drops undefined-valued keys before overriding.
19
+ */
20
+ const requestShapedExtractor = (params) => {
21
+ const accountId = params.context?.user?.accountId;
22
+ const userId = params.context?.user?.id;
23
+ const correlationId = params.query?.correlationId;
24
+ const causationId = params.query?.causationId;
25
+ if (!accountId && !userId && !correlationId && !causationId)
26
+ return undefined;
27
+ return {
28
+ accountId: accountId ?? '',
29
+ userId: userId ?? '',
30
+ correlationId,
31
+ causationId
32
+ };
33
+ };
34
+ describe('AsyncLocalStorageContext adapter', () => {
35
+ const adapter = (0, __1.AsyncLocalStorageContext)(requestShapedExtractor);
36
+ const runEndpoint = async (params) => {
37
+ let seen;
38
+ const ep = adapter.registerEndpoint(buildEndpoint(async () => { seen = (0, executionContext_1.getExecutionContext)(); }));
39
+ await ep.action(params);
40
+ return seen;
41
+ };
42
+ it('establishes the extracted context when there is no outer one', async () => {
43
+ const seen = await runEndpoint({ context: { user: { id: 'u1', accountId: 'a1' } }, query: {} });
44
+ expect(seen).toMatchObject({ accountId: 'a1', userId: 'u1' });
45
+ });
46
+ it('runs the action with NO context when the extractor declines', async () => {
47
+ const seen = await runEndpoint({ context: {}, query: {} });
48
+ expect(seen).toBeUndefined();
49
+ });
50
+ it('INHERITS an ambient field the request cannot carry (tags) into a nested endpoint call', async () => {
51
+ // The whole point: an in-process caller (a worker, a policy, another endpoint
52
+ // action) sets ambient context and dispatches through the client library. The
53
+ // request itself has no transport for `tags`, so replacing the store would drop it.
54
+ const seen = await (0, executionContext_1.runWithExecutionContext)({ accountId: 'a1', userId: 'u1', correlationId: 'outer-corr', tags: { channelSyncReason: 'observationGoLive' } }, () => runEndpoint({ context: { user: { id: 'u1', accountId: 'a1' } }, query: {} }));
55
+ expect(seen?.tags).toEqual({ channelSyncReason: 'observationGoLive' });
56
+ });
57
+ it('INHERITS `userAttributes` across a hop, so an authorization tier needs no forgeable header', async () => {
58
+ // The reason this field exists. A hop serializes its identity into `x-auth-*`
59
+ // headers on a synthetic request, and a header is forgeable by anything that can
60
+ // set one. `userAttributes` has no transport at all: it survives the hop purely by
61
+ // this inherit-and-override merge, so a host can carry an authorization-scope map
62
+ // (or an acting principal) in-process without widening the forgeable surface.
63
+ const seen = await (0, executionContext_1.runWithExecutionContext)({
64
+ accountId: 'a1',
65
+ userId: 'u1',
66
+ userAttributes: { scopesByCapability: { 'sales:order-read': 'own' }, executedBy: 'system@a1' }
67
+ }, () => runEndpoint({ context: { user: { id: 'u1', accountId: 'a1' } }, query: {} }));
68
+ expect(seen?.userAttributes).toEqual({
69
+ scopesByCapability: { 'sales:order-read': 'own' },
70
+ executedBy: 'system@a1'
71
+ });
72
+ });
73
+ it('does NOT let an extractor emitting `correlationId: undefined` clobber the inherited correlation', async () => {
74
+ const seen = await (0, executionContext_1.runWithExecutionContext)({ accountId: 'a1', userId: 'u1', correlationId: 'outer-corr', causationId: 'outer-caus' }, () => runEndpoint({ context: { user: { id: 'u1', accountId: 'a1' } }, query: {} }));
75
+ expect(seen?.correlationId).toBe('outer-corr');
76
+ expect(seen?.causationId).toBe('outer-caus');
77
+ });
78
+ it('still lets the REQUEST win for every field it actually defines', async () => {
79
+ const seen = await (0, executionContext_1.runWithExecutionContext)({ accountId: 'outer-account', userId: 'outer-user', correlationId: 'outer-corr', tags: { t: '1' } }, () => runEndpoint({
80
+ context: { user: { id: 'inner-user', accountId: 'inner-account' } },
81
+ query: { correlationId: 'inner-corr' }
82
+ }));
83
+ expect(seen).toMatchObject({
84
+ accountId: 'inner-account',
85
+ userId: 'inner-user',
86
+ correlationId: 'inner-corr',
87
+ tags: { t: '1' }
88
+ });
89
+ });
90
+ it('restores the OUTER context after the nested action resolves', async () => {
91
+ await (0, executionContext_1.runWithExecutionContext)({ accountId: 'a1', userId: 'u1', tags: { t: '1' } }, async () => {
92
+ await runEndpoint({ context: { user: { id: 'u2', accountId: 'a2' } }, query: {} });
93
+ expect((0, executionContext_1.getExecutionContext)()).toEqual({ accountId: 'a1', userId: 'u1', tags: { t: '1' } });
94
+ });
95
+ });
96
+ });
97
+ //# sourceMappingURL=asyncLocalStorage.test.js.map