@cratis/chronicle 0.0.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 (647) hide show
  1. package/ChronicleClient.ts +453 -0
  2. package/ChronicleOptions.ts +104 -0
  3. package/EventSequences/AppendError.ts +10 -0
  4. package/EventSequences/AppendOptions.ts +15 -0
  5. package/EventSequences/AppendResult.ts +23 -0
  6. package/EventSequences/ConstraintViolation.ts +16 -0
  7. package/EventSequences/EventLog.ts +21 -0
  8. package/EventSequences/EventSequence.ts +372 -0
  9. package/EventSequences/EventSequenceId.ts +17 -0
  10. package/EventSequences/EventSequenceNumber.ts +38 -0
  11. package/EventSequences/IEventLog.ts +10 -0
  12. package/EventSequences/IEventSequence.ts +47 -0
  13. package/EventSequences/index.ts +13 -0
  14. package/EventStore.ts +132 -0
  15. package/EventStoreName.ts +14 -0
  16. package/EventStoreNamespaceName.ts +17 -0
  17. package/Events/AppendedEvent.ts +19 -0
  18. package/Events/CausationEntry.ts +13 -0
  19. package/Events/Constraints/ConstraintBuilder.ts +86 -0
  20. package/Events/Constraints/ConstraintId.ts +14 -0
  21. package/Events/Constraints/Constraints.ts +117 -0
  22. package/Events/Constraints/IConstraint.ts +18 -0
  23. package/Events/Constraints/IConstraintBuilder.ts +44 -0
  24. package/Events/Constraints/IConstraints.ts +28 -0
  25. package/Events/Constraints/IUniqueConstraintBuilder.ts +52 -0
  26. package/Events/Constraints/UniqueConstraintBuilder.ts +97 -0
  27. package/Events/Constraints/constraint.ts +56 -0
  28. package/Events/Constraints/index.ts +15 -0
  29. package/Events/EventContext.ts +28 -0
  30. package/Events/EventType.ts +41 -0
  31. package/Events/EventTypeGeneration.ts +20 -0
  32. package/Events/EventTypeId.ts +19 -0
  33. package/Events/EventTypes.ts +95 -0
  34. package/Events/IEventTypes.ts +39 -0
  35. package/Events/eventTypeDecorator.ts +147 -0
  36. package/Events/index.ts +14 -0
  37. package/IChronicleClient.ts +39 -0
  38. package/IEventStore.ts +56 -0
  39. package/Metrics.ts +109 -0
  40. package/Observation/ObserverId.ts +14 -0
  41. package/Observation/ObserverRunningState.ts +34 -0
  42. package/Observation/index.ts +5 -0
  43. package/Projections/IProjections.ts +19 -0
  44. package/Projections/ProjectionId.ts +14 -0
  45. package/Projections/Projections.ts +463 -0
  46. package/Projections/declarative/AllSetBuilder.ts +39 -0
  47. package/Projections/declarative/FromBuilder.ts +144 -0
  48. package/Projections/declarative/FromEveryBuilder.ts +46 -0
  49. package/Projections/declarative/IAddBuilder.ts +18 -0
  50. package/Projections/declarative/IAddChildBuilder.ts +25 -0
  51. package/Projections/declarative/IAllSetBuilder.ts +31 -0
  52. package/Projections/declarative/IChildrenBuilder.ts +31 -0
  53. package/Projections/declarative/ICompositeKeyBuilder.ts +22 -0
  54. package/Projections/declarative/IFromBuilder.ts +12 -0
  55. package/Projections/declarative/IFromEveryBuilder.ts +24 -0
  56. package/Projections/declarative/IJoinBuilder.ts +20 -0
  57. package/Projections/declarative/INestedBuilder.ts +19 -0
  58. package/Projections/declarative/IProjectionBuilder.ts +98 -0
  59. package/Projections/declarative/IProjectionBuilderFor.ts +38 -0
  60. package/Projections/declarative/IProjectionFor.ts +18 -0
  61. package/Projections/declarative/IReadModelPropertiesBuilder.ts +132 -0
  62. package/Projections/declarative/IRemovedWithBuilder.ts +25 -0
  63. package/Projections/declarative/IRemovedWithJoinBuilder.ts +25 -0
  64. package/Projections/declarative/ISetBuilder.ts +38 -0
  65. package/Projections/declarative/ISubtractBuilder.ts +18 -0
  66. package/Projections/declarative/JoinBuilder.ts +148 -0
  67. package/Projections/declarative/ProjectionBuilderFor.ts +277 -0
  68. package/Projections/declarative/RemovedWithBuilder.ts +40 -0
  69. package/Projections/declarative/RemovedWithJoinBuilder.ts +43 -0
  70. package/Projections/declarative/SetBuilder.ts +46 -0
  71. package/Projections/declarative/index.ts +26 -0
  72. package/Projections/declarative/projection.ts +59 -0
  73. package/Projections/index.ts +8 -0
  74. package/Projections/modelBound/FromEventMetadata.ts +10 -0
  75. package/Projections/modelBound/FromEventOptions.ts +12 -0
  76. package/Projections/modelBound/addFrom.ts +41 -0
  77. package/Projections/modelBound/childrenFrom.ts +52 -0
  78. package/Projections/modelBound/clearWith.ts +54 -0
  79. package/Projections/modelBound/count.ts +41 -0
  80. package/Projections/modelBound/decrement.ts +41 -0
  81. package/Projections/modelBound/fromEvent.ts +40 -0
  82. package/Projections/modelBound/fromEvery.ts +39 -0
  83. package/Projections/modelBound/increment.ts +41 -0
  84. package/Projections/modelBound/index.ts +38 -0
  85. package/Projections/modelBound/join.ts +44 -0
  86. package/Projections/modelBound/modelBound.ts +59 -0
  87. package/Projections/modelBound/nested.ts +29 -0
  88. package/Projections/modelBound/notRewindable.ts +24 -0
  89. package/Projections/modelBound/removedWith.ts +60 -0
  90. package/Projections/modelBound/removedWithJoin.ts +55 -0
  91. package/Projections/modelBound/setFrom.ts +41 -0
  92. package/Projections/modelBound/setFromContext.ts +41 -0
  93. package/Projections/modelBound/setValue.ts +41 -0
  94. package/Projections/modelBound/subtractFrom.ts +41 -0
  95. package/README.md +69 -0
  96. package/Reactors/IReactors.ts +19 -0
  97. package/Reactors/ReactorId.ts +14 -0
  98. package/Reactors/Reactors.ts +320 -0
  99. package/Reactors/index.ts +8 -0
  100. package/Reactors/reactor.ts +75 -0
  101. package/ReadModels/ReadModelId.ts +14 -0
  102. package/ReadModels/index.ts +6 -0
  103. package/ReadModels/readModel.ts +89 -0
  104. package/Reducers/IReducers.ts +19 -0
  105. package/Reducers/ReducerId.ts +14 -0
  106. package/Reducers/Reducers.ts +322 -0
  107. package/Reducers/index.ts +8 -0
  108. package/Reducers/reducer.ts +87 -0
  109. package/Schemas/JsonSchema.ts +18 -0
  110. package/Schemas/JsonSchemaGenerator.ts +107 -0
  111. package/Schemas/index.ts +6 -0
  112. package/Schemas/jsonSchemaProperty.ts +24 -0
  113. package/Tracing.ts +21 -0
  114. package/artifacts/DefaultClientArtifactsProvider.ts +56 -0
  115. package/artifacts/IClientArtifactsProvider.ts +30 -0
  116. package/artifacts/index.ts +5 -0
  117. package/connection/ChronicleConnection.ts +226 -0
  118. package/connection/ChronicleConnectionString.ts +4 -0
  119. package/connection/ChronicleServices.ts +4 -0
  120. package/connection/ConnectionLifecycle.ts +77 -0
  121. package/connection/DateTimeOffset.ts +4 -0
  122. package/connection/Guid.ts +4 -0
  123. package/connection/TokenProvider.ts +13 -0
  124. package/connection/index.ts +9 -0
  125. package/dist/ChronicleClient.d.ts +55 -0
  126. package/dist/ChronicleClient.d.ts.map +1 -0
  127. package/dist/ChronicleClient.js +396 -0
  128. package/dist/ChronicleClient.js.map +1 -0
  129. package/dist/ChronicleOptions.d.ts +54 -0
  130. package/dist/ChronicleOptions.d.ts.map +1 -0
  131. package/dist/ChronicleOptions.js +75 -0
  132. package/dist/ChronicleOptions.js.map +1 -0
  133. package/dist/EventSequences/AppendError.d.ts +8 -0
  134. package/dist/EventSequences/AppendError.d.ts.map +1 -0
  135. package/dist/EventSequences/AppendError.js +4 -0
  136. package/dist/EventSequences/AppendError.js.map +1 -0
  137. package/dist/EventSequences/AppendOptions.d.ts +11 -0
  138. package/dist/EventSequences/AppendOptions.d.ts.map +1 -0
  139. package/dist/EventSequences/AppendOptions.js +4 -0
  140. package/dist/EventSequences/AppendOptions.js.map +1 -0
  141. package/dist/EventSequences/AppendResult.d.ts +17 -0
  142. package/dist/EventSequences/AppendResult.d.ts.map +1 -0
  143. package/dist/EventSequences/AppendResult.js +4 -0
  144. package/dist/EventSequences/AppendResult.js.map +1 -0
  145. package/dist/EventSequences/ConstraintViolation.d.ts +12 -0
  146. package/dist/EventSequences/ConstraintViolation.d.ts.map +1 -0
  147. package/dist/EventSequences/ConstraintViolation.js +4 -0
  148. package/dist/EventSequences/ConstraintViolation.js.map +1 -0
  149. package/dist/EventSequences/EventLog.d.ts +11 -0
  150. package/dist/EventSequences/EventLog.d.ts.map +1 -0
  151. package/dist/EventSequences/EventLog.js +14 -0
  152. package/dist/EventSequences/EventLog.js.map +1 -0
  153. package/dist/EventSequences/EventSequence.d.ts +27 -0
  154. package/dist/EventSequences/EventSequence.d.ts.map +1 -0
  155. package/dist/EventSequences/EventSequence.js +337 -0
  156. package/dist/EventSequences/EventSequence.js.map +1 -0
  157. package/dist/EventSequences/EventSequenceId.d.ts +12 -0
  158. package/dist/EventSequences/EventSequenceId.d.ts.map +1 -0
  159. package/dist/EventSequences/EventSequenceId.js +18 -0
  160. package/dist/EventSequences/EventSequenceId.js.map +1 -0
  161. package/dist/EventSequences/EventSequenceNumber.d.ts +26 -0
  162. package/dist/EventSequences/EventSequenceNumber.d.ts.map +1 -0
  163. package/dist/EventSequences/EventSequenceNumber.js +36 -0
  164. package/dist/EventSequences/EventSequenceNumber.js.map +1 -0
  165. package/dist/EventSequences/IEventLog.d.ts +8 -0
  166. package/dist/EventSequences/IEventLog.d.ts.map +1 -0
  167. package/dist/EventSequences/IEventLog.js +4 -0
  168. package/dist/EventSequences/IEventLog.js.map +1 -0
  169. package/dist/EventSequences/IEventSequence.d.ts +40 -0
  170. package/dist/EventSequences/IEventSequence.d.ts.map +1 -0
  171. package/dist/EventSequences/IEventSequence.js +4 -0
  172. package/dist/EventSequences/IEventSequence.js.map +1 -0
  173. package/dist/EventSequences/index.d.ts +11 -0
  174. package/dist/EventSequences/index.d.ts.map +1 -0
  175. package/dist/EventSequences/index.js +7 -0
  176. package/dist/EventSequences/index.js.map +1 -0
  177. package/dist/EventStore.d.ts +42 -0
  178. package/dist/EventStore.d.ts.map +1 -0
  179. package/dist/EventStore.js +111 -0
  180. package/dist/EventStore.js.map +1 -0
  181. package/dist/EventStoreName.d.ts +10 -0
  182. package/dist/EventStoreName.d.ts.map +1 -0
  183. package/dist/EventStoreName.js +16 -0
  184. package/dist/EventStoreName.js.map +1 -0
  185. package/dist/EventStoreNamespaceName.d.ts +12 -0
  186. package/dist/EventStoreNamespaceName.d.ts.map +1 -0
  187. package/dist/EventStoreNamespaceName.js +18 -0
  188. package/dist/EventStoreNamespaceName.js.map +1 -0
  189. package/dist/Events/AppendedEvent.d.ts +14 -0
  190. package/dist/Events/AppendedEvent.d.ts.map +1 -0
  191. package/dist/Events/AppendedEvent.js +4 -0
  192. package/dist/Events/AppendedEvent.js.map +1 -0
  193. package/dist/Events/CausationEntry.d.ts +10 -0
  194. package/dist/Events/CausationEntry.d.ts.map +1 -0
  195. package/dist/Events/CausationEntry.js +4 -0
  196. package/dist/Events/CausationEntry.js.map +1 -0
  197. package/dist/Events/Constraints/ConstraintBuilder.d.ts +42 -0
  198. package/dist/Events/Constraints/ConstraintBuilder.d.ts.map +1 -0
  199. package/dist/Events/Constraints/ConstraintBuilder.js +55 -0
  200. package/dist/Events/Constraints/ConstraintBuilder.js.map +1 -0
  201. package/dist/Events/Constraints/ConstraintId.d.ts +10 -0
  202. package/dist/Events/Constraints/ConstraintId.d.ts.map +1 -0
  203. package/dist/Events/Constraints/ConstraintId.js +16 -0
  204. package/dist/Events/Constraints/ConstraintId.js.map +1 -0
  205. package/dist/Events/Constraints/Constraints.d.ts +27 -0
  206. package/dist/Events/Constraints/Constraints.d.ts.map +1 -0
  207. package/dist/Events/Constraints/Constraints.js +104 -0
  208. package/dist/Events/Constraints/Constraints.js.map +1 -0
  209. package/dist/Events/Constraints/IConstraint.d.ts +15 -0
  210. package/dist/Events/Constraints/IConstraint.d.ts.map +1 -0
  211. package/dist/Events/Constraints/IConstraint.js +4 -0
  212. package/dist/Events/Constraints/IConstraint.js.map +1 -0
  213. package/dist/Events/Constraints/IConstraintBuilder.d.ts +37 -0
  214. package/dist/Events/Constraints/IConstraintBuilder.d.ts.map +1 -0
  215. package/dist/Events/Constraints/IConstraintBuilder.js +4 -0
  216. package/dist/Events/Constraints/IConstraintBuilder.js.map +1 -0
  217. package/dist/Events/Constraints/IConstraints.d.ts +23 -0
  218. package/dist/Events/Constraints/IConstraints.d.ts.map +1 -0
  219. package/dist/Events/Constraints/IConstraints.js +4 -0
  220. package/dist/Events/Constraints/IConstraints.js.map +1 -0
  221. package/dist/Events/Constraints/IUniqueConstraintBuilder.d.ts +44 -0
  222. package/dist/Events/Constraints/IUniqueConstraintBuilder.d.ts.map +1 -0
  223. package/dist/Events/Constraints/IUniqueConstraintBuilder.js +4 -0
  224. package/dist/Events/Constraints/IUniqueConstraintBuilder.js.map +1 -0
  225. package/dist/Events/Constraints/UniqueConstraintBuilder.d.ts +42 -0
  226. package/dist/Events/Constraints/UniqueConstraintBuilder.d.ts.map +1 -0
  227. package/dist/Events/Constraints/UniqueConstraintBuilder.js +72 -0
  228. package/dist/Events/Constraints/UniqueConstraintBuilder.js.map +1 -0
  229. package/dist/Events/Constraints/constraint.d.ts +29 -0
  230. package/dist/Events/Constraints/constraint.d.ts.map +1 -0
  231. package/dist/Events/Constraints/constraint.js +39 -0
  232. package/dist/Events/Constraints/constraint.js.map +1 -0
  233. package/dist/Events/Constraints/index.d.ts +13 -0
  234. package/dist/Events/Constraints/index.d.ts.map +1 -0
  235. package/dist/Events/Constraints/index.js +8 -0
  236. package/dist/Events/Constraints/index.js.map +1 -0
  237. package/dist/Events/EventContext.d.ts +20 -0
  238. package/dist/Events/EventContext.d.ts.map +1 -0
  239. package/dist/Events/EventContext.js +4 -0
  240. package/dist/Events/EventContext.js.map +1 -0
  241. package/dist/Events/EventType.d.ts +23 -0
  242. package/dist/Events/EventType.d.ts.map +1 -0
  243. package/dist/Events/EventType.js +40 -0
  244. package/dist/Events/EventType.js.map +1 -0
  245. package/dist/Events/EventTypeGeneration.d.ts +14 -0
  246. package/dist/Events/EventTypeGeneration.d.ts.map +1 -0
  247. package/dist/Events/EventTypeGeneration.js +20 -0
  248. package/dist/Events/EventTypeGeneration.js.map +1 -0
  249. package/dist/Events/EventTypeId.d.ts +14 -0
  250. package/dist/Events/EventTypeId.d.ts.map +1 -0
  251. package/dist/Events/EventTypeId.js +20 -0
  252. package/dist/Events/EventTypeId.js.map +1 -0
  253. package/dist/Events/EventTypes.d.ts +33 -0
  254. package/dist/Events/EventTypes.d.ts.map +1 -0
  255. package/dist/Events/EventTypes.js +83 -0
  256. package/dist/Events/EventTypes.js.map +1 -0
  257. package/dist/Events/IEventTypes.d.ts +32 -0
  258. package/dist/Events/IEventTypes.d.ts.map +1 -0
  259. package/dist/Events/IEventTypes.js +4 -0
  260. package/dist/Events/IEventTypes.js.map +1 -0
  261. package/dist/Events/eventTypeDecorator.d.ts +71 -0
  262. package/dist/Events/eventTypeDecorator.d.ts.map +1 -0
  263. package/dist/Events/eventTypeDecorator.js +86 -0
  264. package/dist/Events/eventTypeDecorator.js.map +1 -0
  265. package/dist/Events/index.d.ts +12 -0
  266. package/dist/Events/index.d.ts.map +1 -0
  267. package/dist/Events/index.js +9 -0
  268. package/dist/Events/index.js.map +1 -0
  269. package/dist/Grpc.d.ts +19 -0
  270. package/dist/Grpc.d.ts.map +1 -0
  271. package/dist/Grpc.js +33 -0
  272. package/dist/Grpc.js.map +1 -0
  273. package/dist/IChronicleClient.d.ts +33 -0
  274. package/dist/IChronicleClient.d.ts.map +1 -0
  275. package/dist/IChronicleClient.js +4 -0
  276. package/dist/IChronicleClient.js.map +1 -0
  277. package/dist/IEventStore.d.ts +44 -0
  278. package/dist/IEventStore.d.ts.map +1 -0
  279. package/dist/IEventStore.js +4 -0
  280. package/dist/IEventStore.js.map +1 -0
  281. package/dist/Metrics.d.ts +70 -0
  282. package/dist/Metrics.d.ts.map +1 -0
  283. package/dist/Metrics.js +100 -0
  284. package/dist/Metrics.js.map +1 -0
  285. package/dist/Observation/ObserverId.d.ts +10 -0
  286. package/dist/Observation/ObserverId.d.ts.map +1 -0
  287. package/dist/Observation/ObserverId.js +16 -0
  288. package/dist/Observation/ObserverId.js.map +1 -0
  289. package/dist/Observation/ObserverRunningState.d.ts +24 -0
  290. package/dist/Observation/ObserverRunningState.d.ts.map +1 -0
  291. package/dist/Observation/ObserverRunningState.js +27 -0
  292. package/dist/Observation/ObserverRunningState.js.map +1 -0
  293. package/dist/Observation/index.d.ts +3 -0
  294. package/dist/Observation/index.d.ts.map +1 -0
  295. package/dist/Observation/index.js +5 -0
  296. package/dist/Observation/index.js.map +1 -0
  297. package/dist/Projections/IProjections.d.ts +16 -0
  298. package/dist/Projections/IProjections.d.ts.map +1 -0
  299. package/dist/Projections/IProjections.js +4 -0
  300. package/dist/Projections/IProjections.js.map +1 -0
  301. package/dist/Projections/ProjectionId.d.ts +10 -0
  302. package/dist/Projections/ProjectionId.d.ts.map +1 -0
  303. package/dist/Projections/ProjectionId.js +16 -0
  304. package/dist/Projections/ProjectionId.js.map +1 -0
  305. package/dist/Projections/Projections.d.ts +36 -0
  306. package/dist/Projections/Projections.d.ts.map +1 -0
  307. package/dist/Projections/Projections.js +390 -0
  308. package/dist/Projections/Projections.js.map +1 -0
  309. package/dist/Projections/declarative/AllSetBuilder.d.ts +20 -0
  310. package/dist/Projections/declarative/AllSetBuilder.d.ts.map +1 -0
  311. package/dist/Projections/declarative/AllSetBuilder.js +37 -0
  312. package/dist/Projections/declarative/AllSetBuilder.js.map +1 -0
  313. package/dist/Projections/declarative/FromBuilder.d.ts +56 -0
  314. package/dist/Projections/declarative/FromBuilder.d.ts.map +1 -0
  315. package/dist/Projections/declarative/FromBuilder.js +105 -0
  316. package/dist/Projections/declarative/FromBuilder.js.map +1 -0
  317. package/dist/Projections/declarative/FromEveryBuilder.d.ts +22 -0
  318. package/dist/Projections/declarative/FromEveryBuilder.d.ts.map +1 -0
  319. package/dist/Projections/declarative/FromEveryBuilder.js +28 -0
  320. package/dist/Projections/declarative/FromEveryBuilder.js.map +1 -0
  321. package/dist/Projections/declarative/IAddBuilder.d.ts +15 -0
  322. package/dist/Projections/declarative/IAddBuilder.d.ts.map +1 -0
  323. package/dist/Projections/declarative/IAddBuilder.js +4 -0
  324. package/dist/Projections/declarative/IAddBuilder.js.map +1 -0
  325. package/dist/Projections/declarative/IAddChildBuilder.d.ts +21 -0
  326. package/dist/Projections/declarative/IAddChildBuilder.d.ts.map +1 -0
  327. package/dist/Projections/declarative/IAddChildBuilder.js +4 -0
  328. package/dist/Projections/declarative/IAddChildBuilder.js.map +1 -0
  329. package/dist/Projections/declarative/IAllSetBuilder.d.ts +26 -0
  330. package/dist/Projections/declarative/IAllSetBuilder.d.ts.map +1 -0
  331. package/dist/Projections/declarative/IAllSetBuilder.js +4 -0
  332. package/dist/Projections/declarative/IAllSetBuilder.js.map +1 -0
  333. package/dist/Projections/declarative/IChildrenBuilder.d.ts +22 -0
  334. package/dist/Projections/declarative/IChildrenBuilder.d.ts.map +1 -0
  335. package/dist/Projections/declarative/IChildrenBuilder.js +4 -0
  336. package/dist/Projections/declarative/IChildrenBuilder.js.map +1 -0
  337. package/dist/Projections/declarative/ICompositeKeyBuilder.d.ts +16 -0
  338. package/dist/Projections/declarative/ICompositeKeyBuilder.d.ts.map +1 -0
  339. package/dist/Projections/declarative/ICompositeKeyBuilder.js +4 -0
  340. package/dist/Projections/declarative/ICompositeKeyBuilder.js.map +1 -0
  341. package/dist/Projections/declarative/IFromBuilder.d.ts +9 -0
  342. package/dist/Projections/declarative/IFromBuilder.d.ts.map +1 -0
  343. package/dist/Projections/declarative/IFromBuilder.js +4 -0
  344. package/dist/Projections/declarative/IFromBuilder.js.map +1 -0
  345. package/dist/Projections/declarative/IFromEveryBuilder.d.ts +20 -0
  346. package/dist/Projections/declarative/IFromEveryBuilder.d.ts.map +1 -0
  347. package/dist/Projections/declarative/IFromEveryBuilder.js +4 -0
  348. package/dist/Projections/declarative/IFromEveryBuilder.js.map +1 -0
  349. package/dist/Projections/declarative/IJoinBuilder.d.ts +16 -0
  350. package/dist/Projections/declarative/IJoinBuilder.d.ts.map +1 -0
  351. package/dist/Projections/declarative/IJoinBuilder.js +4 -0
  352. package/dist/Projections/declarative/IJoinBuilder.js.map +1 -0
  353. package/dist/Projections/declarative/INestedBuilder.d.ts +15 -0
  354. package/dist/Projections/declarative/INestedBuilder.d.ts.map +1 -0
  355. package/dist/Projections/declarative/INestedBuilder.js +4 -0
  356. package/dist/Projections/declarative/INestedBuilder.js.map +1 -0
  357. package/dist/Projections/declarative/IProjectionBuilder.d.ts +80 -0
  358. package/dist/Projections/declarative/IProjectionBuilder.d.ts.map +1 -0
  359. package/dist/Projections/declarative/IProjectionBuilder.js +4 -0
  360. package/dist/Projections/declarative/IProjectionBuilder.js.map +1 -0
  361. package/dist/Projections/declarative/IProjectionBuilderFor.d.ts +31 -0
  362. package/dist/Projections/declarative/IProjectionBuilderFor.d.ts.map +1 -0
  363. package/dist/Projections/declarative/IProjectionBuilderFor.js +4 -0
  364. package/dist/Projections/declarative/IProjectionBuilderFor.js.map +1 -0
  365. package/dist/Projections/declarative/IProjectionFor.d.ts +15 -0
  366. package/dist/Projections/declarative/IProjectionFor.d.ts.map +1 -0
  367. package/dist/Projections/declarative/IProjectionFor.js +4 -0
  368. package/dist/Projections/declarative/IProjectionFor.js.map +1 -0
  369. package/dist/Projections/declarative/IReadModelPropertiesBuilder.d.ts +111 -0
  370. package/dist/Projections/declarative/IReadModelPropertiesBuilder.d.ts.map +1 -0
  371. package/dist/Projections/declarative/IReadModelPropertiesBuilder.js +4 -0
  372. package/dist/Projections/declarative/IReadModelPropertiesBuilder.js.map +1 -0
  373. package/dist/Projections/declarative/IRemovedWithBuilder.d.ts +21 -0
  374. package/dist/Projections/declarative/IRemovedWithBuilder.d.ts.map +1 -0
  375. package/dist/Projections/declarative/IRemovedWithBuilder.js +4 -0
  376. package/dist/Projections/declarative/IRemovedWithBuilder.js.map +1 -0
  377. package/dist/Projections/declarative/IRemovedWithJoinBuilder.d.ts +21 -0
  378. package/dist/Projections/declarative/IRemovedWithJoinBuilder.d.ts.map +1 -0
  379. package/dist/Projections/declarative/IRemovedWithJoinBuilder.js +4 -0
  380. package/dist/Projections/declarative/IRemovedWithJoinBuilder.js.map +1 -0
  381. package/dist/Projections/declarative/ISetBuilder.d.ts +32 -0
  382. package/dist/Projections/declarative/ISetBuilder.d.ts.map +1 -0
  383. package/dist/Projections/declarative/ISetBuilder.js +4 -0
  384. package/dist/Projections/declarative/ISetBuilder.js.map +1 -0
  385. package/dist/Projections/declarative/ISubtractBuilder.d.ts +15 -0
  386. package/dist/Projections/declarative/ISubtractBuilder.d.ts.map +1 -0
  387. package/dist/Projections/declarative/ISubtractBuilder.js +4 -0
  388. package/dist/Projections/declarative/ISubtractBuilder.js.map +1 -0
  389. package/dist/Projections/declarative/JoinBuilder.d.ts +58 -0
  390. package/dist/Projections/declarative/JoinBuilder.d.ts.map +1 -0
  391. package/dist/Projections/declarative/JoinBuilder.js +107 -0
  392. package/dist/Projections/declarative/JoinBuilder.js.map +1 -0
  393. package/dist/Projections/declarative/ProjectionBuilderFor.d.ts +68 -0
  394. package/dist/Projections/declarative/ProjectionBuilderFor.d.ts.map +1 -0
  395. package/dist/Projections/declarative/ProjectionBuilderFor.js +207 -0
  396. package/dist/Projections/declarative/ProjectionBuilderFor.js.map +1 -0
  397. package/dist/Projections/declarative/RemovedWithBuilder.d.ts +22 -0
  398. package/dist/Projections/declarative/RemovedWithBuilder.d.ts.map +1 -0
  399. package/dist/Projections/declarative/RemovedWithBuilder.js +28 -0
  400. package/dist/Projections/declarative/RemovedWithBuilder.js.map +1 -0
  401. package/dist/Projections/declarative/RemovedWithJoinBuilder.d.ts +22 -0
  402. package/dist/Projections/declarative/RemovedWithJoinBuilder.d.ts.map +1 -0
  403. package/dist/Projections/declarative/RemovedWithJoinBuilder.js +31 -0
  404. package/dist/Projections/declarative/RemovedWithJoinBuilder.js.map +1 -0
  405. package/dist/Projections/declarative/SetBuilder.d.ts +23 -0
  406. package/dist/Projections/declarative/SetBuilder.d.ts.map +1 -0
  407. package/dist/Projections/declarative/SetBuilder.js +43 -0
  408. package/dist/Projections/declarative/SetBuilder.js.map +1 -0
  409. package/dist/Projections/declarative/index.d.ts +24 -0
  410. package/dist/Projections/declarative/index.d.ts.map +1 -0
  411. package/dist/Projections/declarative/index.js +8 -0
  412. package/dist/Projections/declarative/index.js.map +1 -0
  413. package/dist/Projections/declarative/projection.d.ts +31 -0
  414. package/dist/Projections/declarative/projection.d.ts.map +1 -0
  415. package/dist/Projections/declarative/projection.js +39 -0
  416. package/dist/Projections/declarative/projection.js.map +1 -0
  417. package/dist/Projections/index.d.ts +6 -0
  418. package/dist/Projections/index.d.ts.map +1 -0
  419. package/dist/Projections/index.js +7 -0
  420. package/dist/Projections/index.js.map +1 -0
  421. package/dist/Projections/modelBound/FromEventMetadata.d.ts +7 -0
  422. package/dist/Projections/modelBound/FromEventMetadata.d.ts.map +1 -0
  423. package/dist/Projections/modelBound/FromEventMetadata.js +4 -0
  424. package/dist/Projections/modelBound/FromEventMetadata.js.map +1 -0
  425. package/dist/Projections/modelBound/FromEventOptions.d.ts +10 -0
  426. package/dist/Projections/modelBound/FromEventOptions.d.ts.map +1 -0
  427. package/dist/Projections/modelBound/FromEventOptions.js +4 -0
  428. package/dist/Projections/modelBound/FromEventOptions.js.map +1 -0
  429. package/dist/Projections/modelBound/addFrom.d.ts +23 -0
  430. package/dist/Projections/modelBound/addFrom.d.ts.map +1 -0
  431. package/dist/Projections/modelBound/addFrom.js +30 -0
  432. package/dist/Projections/modelBound/addFrom.js.map +1 -0
  433. package/dist/Projections/modelBound/childrenFrom.d.ts +29 -0
  434. package/dist/Projections/modelBound/childrenFrom.d.ts.map +1 -0
  435. package/dist/Projections/modelBound/childrenFrom.js +32 -0
  436. package/dist/Projections/modelBound/childrenFrom.js.map +1 -0
  437. package/dist/Projections/modelBound/clearWith.d.ts +28 -0
  438. package/dist/Projections/modelBound/clearWith.d.ts.map +1 -0
  439. package/dist/Projections/modelBound/clearWith.js +45 -0
  440. package/dist/Projections/modelBound/clearWith.js.map +1 -0
  441. package/dist/Projections/modelBound/count.d.ts +23 -0
  442. package/dist/Projections/modelBound/count.d.ts.map +1 -0
  443. package/dist/Projections/modelBound/count.js +30 -0
  444. package/dist/Projections/modelBound/count.js.map +1 -0
  445. package/dist/Projections/modelBound/decrement.d.ts +23 -0
  446. package/dist/Projections/modelBound/decrement.d.ts.map +1 -0
  447. package/dist/Projections/modelBound/decrement.js +30 -0
  448. package/dist/Projections/modelBound/decrement.js.map +1 -0
  449. package/dist/Projections/modelBound/fromEvent.d.ts +23 -0
  450. package/dist/Projections/modelBound/fromEvent.d.ts.map +1 -0
  451. package/dist/Projections/modelBound/fromEvent.js +34 -0
  452. package/dist/Projections/modelBound/fromEvent.js.map +1 -0
  453. package/dist/Projections/modelBound/fromEvery.d.ts +23 -0
  454. package/dist/Projections/modelBound/fromEvery.d.ts.map +1 -0
  455. package/dist/Projections/modelBound/fromEvery.js +28 -0
  456. package/dist/Projections/modelBound/fromEvery.js.map +1 -0
  457. package/dist/Projections/modelBound/increment.d.ts +23 -0
  458. package/dist/Projections/modelBound/increment.d.ts.map +1 -0
  459. package/dist/Projections/modelBound/increment.js +30 -0
  460. package/dist/Projections/modelBound/increment.js.map +1 -0
  461. package/dist/Projections/modelBound/index.d.ts +36 -0
  462. package/dist/Projections/modelBound/index.d.ts.map +1 -0
  463. package/dist/Projections/modelBound/index.js +21 -0
  464. package/dist/Projections/modelBound/index.js.map +1 -0
  465. package/dist/Projections/modelBound/join.d.ts +26 -0
  466. package/dist/Projections/modelBound/join.d.ts.map +1 -0
  467. package/dist/Projections/modelBound/join.js +31 -0
  468. package/dist/Projections/modelBound/join.js.map +1 -0
  469. package/dist/Projections/modelBound/modelBound.d.ts +31 -0
  470. package/dist/Projections/modelBound/modelBound.d.ts.map +1 -0
  471. package/dist/Projections/modelBound/modelBound.js +39 -0
  472. package/dist/Projections/modelBound/modelBound.js.map +1 -0
  473. package/dist/Projections/modelBound/nested.d.ts +16 -0
  474. package/dist/Projections/modelBound/nested.d.ts.map +1 -0
  475. package/dist/Projections/modelBound/nested.js +26 -0
  476. package/dist/Projections/modelBound/nested.js.map +1 -0
  477. package/dist/Projections/modelBound/notRewindable.d.ts +14 -0
  478. package/dist/Projections/modelBound/notRewindable.d.ts.map +1 -0
  479. package/dist/Projections/modelBound/notRewindable.js +21 -0
  480. package/dist/Projections/modelBound/notRewindable.js.map +1 -0
  481. package/dist/Projections/modelBound/removedWith.d.ts +34 -0
  482. package/dist/Projections/modelBound/removedWith.d.ts.map +1 -0
  483. package/dist/Projections/modelBound/removedWith.js +47 -0
  484. package/dist/Projections/modelBound/removedWith.js.map +1 -0
  485. package/dist/Projections/modelBound/removedWithJoin.d.ts +29 -0
  486. package/dist/Projections/modelBound/removedWithJoin.d.ts.map +1 -0
  487. package/dist/Projections/modelBound/removedWithJoin.js +44 -0
  488. package/dist/Projections/modelBound/removedWithJoin.js.map +1 -0
  489. package/dist/Projections/modelBound/setFrom.d.ts +23 -0
  490. package/dist/Projections/modelBound/setFrom.d.ts.map +1 -0
  491. package/dist/Projections/modelBound/setFrom.js +30 -0
  492. package/dist/Projections/modelBound/setFrom.js.map +1 -0
  493. package/dist/Projections/modelBound/setFromContext.d.ts +23 -0
  494. package/dist/Projections/modelBound/setFromContext.d.ts.map +1 -0
  495. package/dist/Projections/modelBound/setFromContext.js +30 -0
  496. package/dist/Projections/modelBound/setFromContext.js.map +1 -0
  497. package/dist/Projections/modelBound/setValue.d.ts +23 -0
  498. package/dist/Projections/modelBound/setValue.d.ts.map +1 -0
  499. package/dist/Projections/modelBound/setValue.js +30 -0
  500. package/dist/Projections/modelBound/setValue.js.map +1 -0
  501. package/dist/Projections/modelBound/subtractFrom.d.ts +23 -0
  502. package/dist/Projections/modelBound/subtractFrom.d.ts.map +1 -0
  503. package/dist/Projections/modelBound/subtractFrom.js +30 -0
  504. package/dist/Projections/modelBound/subtractFrom.js.map +1 -0
  505. package/dist/Reactors/IReactors.d.ts +16 -0
  506. package/dist/Reactors/IReactors.d.ts.map +1 -0
  507. package/dist/Reactors/IReactors.js +4 -0
  508. package/dist/Reactors/IReactors.js.map +1 -0
  509. package/dist/Reactors/ReactorId.d.ts +10 -0
  510. package/dist/Reactors/ReactorId.d.ts.map +1 -0
  511. package/dist/Reactors/ReactorId.js +16 -0
  512. package/dist/Reactors/ReactorId.js.map +1 -0
  513. package/dist/Reactors/Reactors.d.ts +38 -0
  514. package/dist/Reactors/Reactors.d.ts.map +1 -0
  515. package/dist/Reactors/Reactors.js +279 -0
  516. package/dist/Reactors/Reactors.js.map +1 -0
  517. package/dist/Reactors/index.d.ts +6 -0
  518. package/dist/Reactors/index.d.ts.map +1 -0
  519. package/dist/Reactors/index.js +6 -0
  520. package/dist/Reactors/index.js.map +1 -0
  521. package/dist/Reactors/reactor.d.ts +47 -0
  522. package/dist/Reactors/reactor.d.ts.map +1 -0
  523. package/dist/Reactors/reactor.js +55 -0
  524. package/dist/Reactors/reactor.js.map +1 -0
  525. package/dist/ReadModels/ReadModelId.d.ts +10 -0
  526. package/dist/ReadModels/ReadModelId.d.ts.map +1 -0
  527. package/dist/ReadModels/ReadModelId.js +16 -0
  528. package/dist/ReadModels/ReadModelId.js.map +1 -0
  529. package/dist/ReadModels/index.d.ts +4 -0
  530. package/dist/ReadModels/index.d.ts.map +1 -0
  531. package/dist/ReadModels/index.js +5 -0
  532. package/dist/ReadModels/index.js.map +1 -0
  533. package/dist/ReadModels/readModel.d.ts +33 -0
  534. package/dist/ReadModels/readModel.d.ts.map +1 -0
  535. package/dist/ReadModels/readModel.js +64 -0
  536. package/dist/ReadModels/readModel.js.map +1 -0
  537. package/dist/Reducers/IReducers.d.ts +16 -0
  538. package/dist/Reducers/IReducers.d.ts.map +1 -0
  539. package/dist/Reducers/IReducers.js +4 -0
  540. package/dist/Reducers/IReducers.js.map +1 -0
  541. package/dist/Reducers/ReducerId.d.ts +10 -0
  542. package/dist/Reducers/ReducerId.d.ts.map +1 -0
  543. package/dist/Reducers/ReducerId.js +16 -0
  544. package/dist/Reducers/ReducerId.js.map +1 -0
  545. package/dist/Reducers/Reducers.d.ts +38 -0
  546. package/dist/Reducers/Reducers.d.ts.map +1 -0
  547. package/dist/Reducers/Reducers.js +279 -0
  548. package/dist/Reducers/Reducers.js.map +1 -0
  549. package/dist/Reducers/index.d.ts +6 -0
  550. package/dist/Reducers/index.d.ts.map +1 -0
  551. package/dist/Reducers/index.js +6 -0
  552. package/dist/Reducers/index.js.map +1 -0
  553. package/dist/Reducers/reducer.d.ts +51 -0
  554. package/dist/Reducers/reducer.d.ts.map +1 -0
  555. package/dist/Reducers/reducer.js +59 -0
  556. package/dist/Reducers/reducer.js.map +1 -0
  557. package/dist/Schemas/JsonSchema.d.ts +16 -0
  558. package/dist/Schemas/JsonSchema.d.ts.map +1 -0
  559. package/dist/Schemas/JsonSchema.js +4 -0
  560. package/dist/Schemas/JsonSchema.js.map +1 -0
  561. package/dist/Schemas/JsonSchemaGenerator.d.ts +26 -0
  562. package/dist/Schemas/JsonSchemaGenerator.d.ts.map +1 -0
  563. package/dist/Schemas/JsonSchemaGenerator.js +90 -0
  564. package/dist/Schemas/JsonSchemaGenerator.js.map +1 -0
  565. package/dist/Schemas/index.d.ts +4 -0
  566. package/dist/Schemas/index.d.ts.map +1 -0
  567. package/dist/Schemas/index.js +5 -0
  568. package/dist/Schemas/index.js.map +1 -0
  569. package/dist/Schemas/jsonSchemaProperty.d.ts +13 -0
  570. package/dist/Schemas/jsonSchemaProperty.d.ts.map +1 -0
  571. package/dist/Schemas/jsonSchemaProperty.js +22 -0
  572. package/dist/Schemas/jsonSchemaProperty.js.map +1 -0
  573. package/dist/Tracing.d.ts +16 -0
  574. package/dist/Tracing.d.ts.map +1 -0
  575. package/dist/Tracing.js +19 -0
  576. package/dist/Tracing.js.map +1 -0
  577. package/dist/artifacts/DefaultClientArtifactsProvider.d.ts +31 -0
  578. package/dist/artifacts/DefaultClientArtifactsProvider.d.ts.map +1 -0
  579. package/dist/artifacts/DefaultClientArtifactsProvider.js +48 -0
  580. package/dist/artifacts/DefaultClientArtifactsProvider.js.map +1 -0
  581. package/dist/artifacts/IClientArtifactsProvider.d.ts +21 -0
  582. package/dist/artifacts/IClientArtifactsProvider.d.ts.map +1 -0
  583. package/dist/artifacts/IClientArtifactsProvider.js +4 -0
  584. package/dist/artifacts/IClientArtifactsProvider.js.map +1 -0
  585. package/dist/artifacts/index.d.ts +3 -0
  586. package/dist/artifacts/index.d.ts.map +1 -0
  587. package/dist/artifacts/index.js +4 -0
  588. package/dist/artifacts/index.js.map +1 -0
  589. package/dist/connection/ChronicleConnection.d.ts +117 -0
  590. package/dist/connection/ChronicleConnection.d.ts.map +1 -0
  591. package/dist/connection/ChronicleConnection.js +194 -0
  592. package/dist/connection/ChronicleConnection.js.map +1 -0
  593. package/dist/connection/ChronicleConnectionString.d.ts +2 -0
  594. package/dist/connection/ChronicleConnectionString.d.ts.map +1 -0
  595. package/dist/connection/ChronicleConnectionString.js +4 -0
  596. package/dist/connection/ChronicleConnectionString.js.map +1 -0
  597. package/dist/connection/ChronicleServices.d.ts +2 -0
  598. package/dist/connection/ChronicleServices.d.ts.map +1 -0
  599. package/dist/connection/ChronicleServices.js +4 -0
  600. package/dist/connection/ChronicleServices.js.map +1 -0
  601. package/dist/connection/ConnectionLifecycle.d.ts +41 -0
  602. package/dist/connection/ConnectionLifecycle.d.ts.map +1 -0
  603. package/dist/connection/ConnectionLifecycle.js +66 -0
  604. package/dist/connection/ConnectionLifecycle.js.map +1 -0
  605. package/dist/connection/DateTimeOffset.d.ts +2 -0
  606. package/dist/connection/DateTimeOffset.d.ts.map +1 -0
  607. package/dist/connection/DateTimeOffset.js +4 -0
  608. package/dist/connection/DateTimeOffset.js.map +1 -0
  609. package/dist/connection/Guid.d.ts +2 -0
  610. package/dist/connection/Guid.d.ts.map +1 -0
  611. package/dist/connection/Guid.js +4 -0
  612. package/dist/connection/Guid.js.map +1 -0
  613. package/dist/connection/TokenProvider.d.ts +5 -0
  614. package/dist/connection/TokenProvider.d.ts.map +1 -0
  615. package/dist/connection/TokenProvider.js +4 -0
  616. package/dist/connection/TokenProvider.js.map +1 -0
  617. package/dist/connection/index.d.ts +7 -0
  618. package/dist/connection/index.d.ts.map +1 -0
  619. package/dist/connection/index.js +7 -0
  620. package/dist/connection/index.js.map +1 -0
  621. package/dist/index.d.ts +21 -0
  622. package/dist/index.d.ts.map +1 -0
  623. package/dist/index.js +21 -0
  624. package/dist/index.js.map +1 -0
  625. package/dist/tsconfig.tsbuildinfo +1 -0
  626. package/dist/types/DecoratorType.d.ts +20 -0
  627. package/dist/types/DecoratorType.d.ts.map +1 -0
  628. package/dist/types/DecoratorType.js +23 -0
  629. package/dist/types/DecoratorType.js.map +1 -0
  630. package/dist/types/TypeDiscoverer.d.ts +54 -0
  631. package/dist/types/TypeDiscoverer.d.ts.map +1 -0
  632. package/dist/types/TypeDiscoverer.js +91 -0
  633. package/dist/types/TypeDiscoverer.js.map +1 -0
  634. package/dist/types/TypeIntrospector.d.ts +30 -0
  635. package/dist/types/TypeIntrospector.d.ts.map +1 -0
  636. package/dist/types/TypeIntrospector.js +154 -0
  637. package/dist/types/TypeIntrospector.js.map +1 -0
  638. package/dist/types/index.d.ts +4 -0
  639. package/dist/types/index.d.ts.map +1 -0
  640. package/dist/types/index.js +6 -0
  641. package/dist/types/index.js.map +1 -0
  642. package/index.ts +24 -0
  643. package/package.json +38 -0
  644. package/types/DecoratorType.ts +28 -0
  645. package/types/TypeDiscoverer.ts +109 -0
  646. package/types/TypeIntrospector.ts +176 -0
  647. package/types/index.ts +6 -0
@@ -0,0 +1,148 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { PropertyAccessor, PropertyPathResolverProxyHandler } from '@cratis/fundamentals';
5
+ import { IAddBuilder } from './IAddBuilder';
6
+ import { IAddChildBuilder } from './IAddChildBuilder';
7
+ import { ICompositeKeyBuilder } from './ICompositeKeyBuilder';
8
+ import { IJoinBuilder } from './IJoinBuilder';
9
+ import { ISetBuilder } from './ISetBuilder';
10
+ import { ISubtractBuilder } from './ISubtractBuilder';
11
+ import { SetBuilder } from './SetBuilder';
12
+
13
+ /**
14
+ * Accumulated property mapping for a join clause.
15
+ */
16
+ export interface JoinEntry {
17
+ on: string;
18
+ properties: Record<string, string>;
19
+ key: string;
20
+ }
21
+
22
+ /**
23
+ * Concrete implementation of {@link IJoinBuilder}.
24
+ * @template TReadModel - The read model type.
25
+ * @template TEvent - The event type.
26
+ */
27
+ export class JoinBuilder<TReadModel, TEvent> implements IJoinBuilder<TReadModel, TEvent> {
28
+ readonly entry: JoinEntry = {
29
+ on: '',
30
+ properties: {},
31
+ key: '$eventSourceId'
32
+ };
33
+
34
+ /** @inheritdoc */
35
+ on(readModelPropertyAccessor: PropertyAccessor<TReadModel>): this {
36
+ const handler = new PropertyPathResolverProxyHandler();
37
+ const proxy = new Proxy({}, handler);
38
+ readModelPropertyAccessor(proxy as TReadModel);
39
+ this.entry.on = handler.property;
40
+ return this;
41
+ }
42
+
43
+ /** @inheritdoc */
44
+ set(readModelPropertyAccessor: PropertyAccessor<TReadModel>): ISetBuilder<TEvent, IJoinBuilder<TReadModel, TEvent>> {
45
+ const handler = new PropertyPathResolverProxyHandler();
46
+ const proxy = new Proxy({}, handler);
47
+ readModelPropertyAccessor(proxy as TReadModel);
48
+ const readModelProperty = handler.property;
49
+
50
+ return new SetBuilder<TEvent, IJoinBuilder<TReadModel, TEvent>>(
51
+ readModelProperty,
52
+ (property, expression) => { this.entry.properties[property] = expression; },
53
+ this
54
+ );
55
+ }
56
+
57
+ /** @inheritdoc */
58
+ usingKey(keyAccessor: PropertyAccessor<TEvent>): this {
59
+ const handler = new PropertyPathResolverProxyHandler();
60
+ const proxy = new Proxy({}, handler);
61
+ keyAccessor(proxy as TEvent);
62
+ this.entry.key = handler.property;
63
+ return this;
64
+ }
65
+
66
+ /** @inheritdoc */
67
+ usingKeyFromContext(contextPropertyName: string): this {
68
+ this.entry.key = `$context.${contextPropertyName}`;
69
+ return this;
70
+ }
71
+
72
+ /** @inheritdoc */
73
+ usingParentKey(_keyAccessor: PropertyAccessor<TEvent>): this {
74
+ throw new Error('usingParentKey is not supported for join mappings.');
75
+ }
76
+
77
+ /** @inheritdoc */
78
+ usingParentKeyFromContext(_contextPropertyName: string): this {
79
+ throw new Error('usingParentKeyFromContext is not supported for join mappings.');
80
+ }
81
+
82
+ /** @inheritdoc */
83
+ usingCompositeKey<TKeyType>(_builderCallback: (builder: ICompositeKeyBuilder<TKeyType, TEvent>) => void): this {
84
+ throw new Error('usingCompositeKey is not implemented yet.');
85
+ }
86
+
87
+ /** @inheritdoc */
88
+ usingParentCompositeKey<TKeyType>(_builderCallback: (builder: ICompositeKeyBuilder<TKeyType, TEvent>) => void): this {
89
+ throw new Error('usingParentCompositeKey is not supported for join mappings.');
90
+ }
91
+
92
+ /** @inheritdoc */
93
+ usingConstantKey(value: string): this {
94
+ this.entry.key = value;
95
+ return this;
96
+ }
97
+
98
+ /** @inheritdoc */
99
+ usingConstantParentKey(_value: string): this {
100
+ throw new Error('usingConstantParentKey is not supported for join mappings.');
101
+ }
102
+
103
+ /** @inheritdoc */
104
+ increment(readModelPropertyAccessor: PropertyAccessor<TReadModel>): this {
105
+ const handler = new PropertyPathResolverProxyHandler();
106
+ const proxy = new Proxy({}, handler);
107
+ readModelPropertyAccessor(proxy as TReadModel);
108
+ this.entry.properties[handler.property] = '$increment';
109
+ return this;
110
+ }
111
+
112
+ /** @inheritdoc */
113
+ decrement(readModelPropertyAccessor: PropertyAccessor<TReadModel>): this {
114
+ const handler = new PropertyPathResolverProxyHandler();
115
+ const proxy = new Proxy({}, handler);
116
+ readModelPropertyAccessor(proxy as TReadModel);
117
+ this.entry.properties[handler.property] = '$decrement';
118
+ return this;
119
+ }
120
+
121
+ /** @inheritdoc */
122
+ add(_readModelPropertyAccessor: PropertyAccessor<TReadModel>): IAddBuilder<TEvent, this> {
123
+ throw new Error('add is not implemented yet.');
124
+ }
125
+
126
+ /** @inheritdoc */
127
+ subtract(_readModelPropertyAccessor: PropertyAccessor<TReadModel>): ISubtractBuilder<TEvent, this> {
128
+ throw new Error('subtract is not implemented yet.');
129
+ }
130
+
131
+ /** @inheritdoc */
132
+ count(_readModelPropertyAccessor: PropertyAccessor<TReadModel>): this {
133
+ throw new Error('count is not implemented yet.');
134
+ }
135
+
136
+ /** @inheritdoc */
137
+ addChild<TChildModel>(
138
+ _targetPropertyAccessor: PropertyAccessor<TReadModel>,
139
+ _eventPropertyAccessorOrBuilderCallback: PropertyAccessor<TEvent> | ((builder: IAddChildBuilder<TChildModel, TEvent>) => void)
140
+ ): this {
141
+ throw new Error('addChild is not implemented yet.');
142
+ }
143
+
144
+ /** @inheritdoc */
145
+ setThisValue(): ISetBuilder<TEvent, this> {
146
+ throw new Error('setThisValue is not implemented yet.');
147
+ }
148
+ }
@@ -0,0 +1,277 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { AutoMap } from '@cratis/chronicle.contracts';
5
+ import { getEventTypeFor } from '../../Events/eventTypeDecorator';
6
+ import { EventSequenceId } from '../../EventSequences/EventSequenceId';
7
+ import { IChildrenBuilder } from './IChildrenBuilder';
8
+ import { IFromBuilder } from './IFromBuilder';
9
+ import { IFromEveryBuilder } from './IFromEveryBuilder';
10
+ import { IJoinBuilder } from './IJoinBuilder';
11
+ import { INestedBuilder } from './INestedBuilder';
12
+ import { IProjectionBuilderFor } from './IProjectionBuilderFor';
13
+ import { IRemovedWithBuilder } from './IRemovedWithBuilder';
14
+ import { IRemovedWithJoinBuilder } from './IRemovedWithJoinBuilder';
15
+ import { JoinBuilder } from './JoinBuilder';
16
+ import { FromEveryBuilder } from './FromEveryBuilder';
17
+ import { FromBuilder } from './FromBuilder';
18
+ import { RemovedWithBuilder } from './RemovedWithBuilder';
19
+ import { RemovedWithJoinBuilder } from './RemovedWithJoinBuilder';
20
+
21
+ type ContractEventType = { Id: string; Generation: number; Tombstone: boolean };
22
+
23
+ interface FromRecord {
24
+ Key: ContractEventType;
25
+ Value: { Properties: Record<string, string>; Key: string; ParentKey: string };
26
+ }
27
+
28
+ interface RemovedWithRecord {
29
+ Key: ContractEventType;
30
+ Value: { Key: string; ParentKey: string };
31
+ }
32
+
33
+ interface JoinRecord {
34
+ Key: ContractEventType;
35
+ Value: { On: string; Properties: Record<string, string>; Key: string };
36
+ }
37
+
38
+ interface RemovedWithJoinRecord {
39
+ Key: ContractEventType;
40
+ Value: { Key: string };
41
+ }
42
+
43
+ /**
44
+ * Concrete implementation of {@link IProjectionBuilderFor} that accumulates projection
45
+ * configuration and produces a Chronicle-compatible projection definition payload.
46
+ * @template TReadModel - The read model type this projection produces.
47
+ */
48
+ export class ProjectionBuilderFor<TReadModel> implements IProjectionBuilderFor<TReadModel> {
49
+ private _eventSequenceId: string = EventSequenceId.eventLog.value;
50
+ private _containerName: string | undefined;
51
+ private _rewindable: boolean = true;
52
+ private _active: boolean = true;
53
+ private _autoMap: AutoMap = AutoMap.Enabled;
54
+ private _initialState: string = '{}';
55
+ private readonly _from: FromRecord[] = [];
56
+ private readonly _join: JoinRecord[] = [];
57
+ private readonly _removedWith: RemovedWithRecord[] = [];
58
+ private readonly _removedWithJoin: RemovedWithJoinRecord[] = [];
59
+ private _all: { Properties: Record<string, string>; IncludeChildren: boolean; AutoMap: AutoMap } = {
60
+ Properties: {},
61
+ IncludeChildren: false,
62
+ AutoMap: AutoMap.Inherit
63
+ };
64
+
65
+ /** @inheritdoc */
66
+ fromEventSequence(eventSequenceId: string): this {
67
+ this._eventSequenceId = eventSequenceId;
68
+ return this;
69
+ }
70
+
71
+ /** @inheritdoc */
72
+ containerName(name: string): this {
73
+ this._containerName = name;
74
+ return this;
75
+ }
76
+
77
+ /** @inheritdoc */
78
+ notRewindable(): this {
79
+ this._rewindable = false;
80
+ return this;
81
+ }
82
+
83
+ /** @inheritdoc */
84
+ passive(): this {
85
+ this._active = false;
86
+ return this;
87
+ }
88
+
89
+ /** @inheritdoc */
90
+ autoMap(): this {
91
+ this._autoMap = AutoMap.Enabled;
92
+ return this;
93
+ }
94
+
95
+ /** @inheritdoc */
96
+ noAutoMap(): this {
97
+ this._autoMap = AutoMap.Disabled;
98
+ return this;
99
+ }
100
+
101
+ /** @inheritdoc */
102
+ withInitialValues(initialValueProvider: () => TReadModel): this {
103
+ this._initialState = JSON.stringify(initialValueProvider());
104
+ return this;
105
+ }
106
+
107
+ /** @inheritdoc */
108
+ from<TEvent>(
109
+ eventType: new (...args: any[]) => TEvent,
110
+ builderCallback?: (builder: IFromBuilder<TReadModel, TEvent>) => void
111
+ ): this {
112
+ const contractType = this.toContractEventType(eventType);
113
+ const fromBuilder = new FromBuilder<TReadModel, TEvent>();
114
+ builderCallback?.(fromBuilder);
115
+ this._from.push({
116
+ Key: contractType,
117
+ Value: {
118
+ Properties: fromBuilder.entry.properties,
119
+ Key: fromBuilder.entry.key,
120
+ ParentKey: fromBuilder.entry.parentKey
121
+ }
122
+ });
123
+ return this;
124
+ }
125
+
126
+ /** @inheritdoc */
127
+ join<TEvent>(
128
+ eventType: new (...args: any[]) => TEvent,
129
+ builderCallback?: (builder: IJoinBuilder<TReadModel, TEvent>) => void
130
+ ): this {
131
+ const contractType = this.toContractEventType(eventType);
132
+ const joinBuilder = new JoinBuilder<TReadModel, TEvent>();
133
+ builderCallback?.(joinBuilder);
134
+ this._join.push({
135
+ Key: contractType,
136
+ Value: {
137
+ On: joinBuilder.entry.on,
138
+ Properties: joinBuilder.entry.properties,
139
+ Key: joinBuilder.entry.key
140
+ }
141
+ });
142
+ return this;
143
+ }
144
+
145
+ /** @inheritdoc */
146
+ fromEvery(builderCallback: (builder: IFromEveryBuilder<TReadModel>) => void): this {
147
+ const builder = new FromEveryBuilder<TReadModel>();
148
+ builderCallback(builder);
149
+ this._all = {
150
+ Properties: {
151
+ ...this._all.Properties,
152
+ ...builder.entry.properties
153
+ },
154
+ IncludeChildren: builder.entry.includeChildren,
155
+ AutoMap: AutoMap.Inherit
156
+ };
157
+ return this;
158
+ }
159
+
160
+ /** @inheritdoc */
161
+ removedWith<TEvent>(
162
+ eventType: new (...args: any[]) => TEvent,
163
+ builderCallback?: (builder: IRemovedWithBuilder<TReadModel, TEvent>) => void
164
+ ): this {
165
+ const contractType = this.toContractEventType(eventType);
166
+ const removedWithBuilder = new RemovedWithBuilder<TReadModel, TEvent>();
167
+ builderCallback?.(removedWithBuilder);
168
+ this._removedWith.push({
169
+ Key: contractType,
170
+ Value: {
171
+ Key: removedWithBuilder.entry.key,
172
+ ParentKey: removedWithBuilder.entry.parentKey
173
+ }
174
+ });
175
+ return this;
176
+ }
177
+
178
+ /** @inheritdoc */
179
+ removedWithJoin<TEvent>(
180
+ eventType: new (...args: any[]) => TEvent,
181
+ builderCallback?: (builder: IRemovedWithJoinBuilder<TReadModel, TEvent>) => void
182
+ ): this {
183
+ const contractType = this.toContractEventType(eventType);
184
+ const removedWithJoinBuilder = new RemovedWithJoinBuilder<TReadModel, TEvent>();
185
+ builderCallback?.(removedWithJoinBuilder);
186
+ this._removedWithJoin.push({
187
+ Key: contractType,
188
+ Value: {
189
+ Key: removedWithJoinBuilder.entry.key
190
+ }
191
+ });
192
+ return this;
193
+ }
194
+
195
+ /** @inheritdoc */
196
+ children<TChildModel>(
197
+ _targetPropertyAccessor: any,
198
+ _builderCallback: (builder: IChildrenBuilder<TReadModel, TChildModel>) => void
199
+ ): this {
200
+ throw new Error('children is not implemented yet.');
201
+ }
202
+
203
+ /** @inheritdoc */
204
+ nested<TNestedModel>(
205
+ _targetPropertyAccessor: any,
206
+ _builderCallback: (builder: INestedBuilder<TReadModel, TNestedModel>) => void
207
+ ): this {
208
+ throw new Error('nested is not implemented yet.');
209
+ }
210
+
211
+ /**
212
+ * Builds the contract-compatible projection definition payload.
213
+ * @param identifier - The projection identifier.
214
+ * @param readModelName - The read model container name.
215
+ * @returns The projection definition object ready to send to the kernel.
216
+ */
217
+ build(identifier: string, readModelName: string): Record<string, unknown> {
218
+ return {
219
+ EventSequenceId: this._eventSequenceId,
220
+ Identifier: identifier,
221
+ ReadModel: this._containerName ?? readModelName,
222
+ IsActive: this._active,
223
+ IsRewindable: this._rewindable,
224
+ InitialModelState: this._initialState,
225
+ From: this._from,
226
+ Join: this._join,
227
+ Children: {},
228
+ FromEvery: [],
229
+ All: this._all,
230
+ FromEventProperty: undefined,
231
+ RemovedWith: this._removedWith,
232
+ RemovedWithJoin: this._removedWithJoin,
233
+ LastUpdated: { Value: new Date().toISOString() },
234
+ Tags: [],
235
+ AutoMap: this._autoMap,
236
+ Nested: {}
237
+ };
238
+ }
239
+
240
+ /**
241
+ * Gets the set of read model properties referenced by configured mappings.
242
+ * @returns Unique read model property names used by from/join/fromEvery mappings.
243
+ */
244
+ getMappedReadModelProperties(): string[] {
245
+ const mappedProperties = new Set<string>();
246
+
247
+ for (const from of this._from) {
248
+ for (const property of Object.keys(from.Value.Properties)) {
249
+ mappedProperties.add(property);
250
+ }
251
+ }
252
+
253
+ for (const join of this._join) {
254
+ for (const property of Object.keys(join.Value.Properties)) {
255
+ mappedProperties.add(property);
256
+ }
257
+ }
258
+
259
+ for (const property of Object.keys(this._all.Properties)) {
260
+ mappedProperties.add(property);
261
+ }
262
+
263
+ return Array.from(mappedProperties.values());
264
+ }
265
+
266
+ private toContractEventType(eventTypeConstructor: Function): ContractEventType {
267
+ const eventType = getEventTypeFor(eventTypeConstructor);
268
+ if (eventType.id.value === '') {
269
+ throw new Error(`Event type '${eventTypeConstructor.name}' is not decorated with @eventType().`);
270
+ }
271
+ return {
272
+ Id: eventType.id.value,
273
+ Generation: eventType.generation.value,
274
+ Tombstone: false
275
+ };
276
+ }
277
+ }
@@ -0,0 +1,40 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { PropertyAccessor, PropertyPathResolverProxyHandler } from '@cratis/fundamentals';
5
+ import { IRemovedWithBuilder } from './IRemovedWithBuilder';
6
+
7
+ /**
8
+ * Accumulated removal configuration for a removedWith clause.
9
+ */
10
+ export interface RemovedWithEntry {
11
+ key: string;
12
+ parentKey: string;
13
+ }
14
+
15
+ /**
16
+ * Concrete implementation of {@link IRemovedWithBuilder}.
17
+ * @template TReadModel - The read model type.
18
+ * @template TEvent - The event type.
19
+ */
20
+ export class RemovedWithBuilder<TReadModel, TEvent> implements IRemovedWithBuilder<TReadModel, TEvent> {
21
+ readonly entry: RemovedWithEntry = {
22
+ key: '$eventSourceId',
23
+ parentKey: ''
24
+ };
25
+
26
+ /** @inheritdoc */
27
+ usingKey(keyAccessor: PropertyAccessor<TEvent>): this {
28
+ const handler = new PropertyPathResolverProxyHandler();
29
+ const proxy = new Proxy({}, handler);
30
+ keyAccessor(proxy as TEvent);
31
+ this.entry.key = handler.property;
32
+ return this;
33
+ }
34
+
35
+ /** @inheritdoc */
36
+ usingKeyFromContext(contextPropertyName: string): this {
37
+ this.entry.key = `$context.${contextPropertyName}`;
38
+ return this;
39
+ }
40
+ }
@@ -0,0 +1,43 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { PropertyAccessor, PropertyPathResolverProxyHandler } from '@cratis/fundamentals';
5
+ import { IRemovedWithJoinBuilder } from './IRemovedWithJoinBuilder';
6
+
7
+ /**
8
+ * Accumulated removal configuration for a removedWithJoin clause.
9
+ */
10
+ export interface RemovedWithJoinEntry {
11
+ on: string;
12
+ key: string;
13
+ }
14
+
15
+ /**
16
+ * Concrete implementation of {@link IRemovedWithJoinBuilder}.
17
+ * @template TReadModel - The read model type.
18
+ * @template TEvent - The event type.
19
+ */
20
+ export class RemovedWithJoinBuilder<TReadModel, TEvent> implements IRemovedWithJoinBuilder<TReadModel, TEvent> {
21
+ readonly entry: RemovedWithJoinEntry = {
22
+ on: '',
23
+ key: '$eventSourceId'
24
+ };
25
+
26
+ /** @inheritdoc */
27
+ on(readModelPropertyAccessor: PropertyAccessor<TReadModel>): this {
28
+ const handler = new PropertyPathResolverProxyHandler();
29
+ const proxy = new Proxy({}, handler);
30
+ readModelPropertyAccessor(proxy as TReadModel);
31
+ this.entry.on = handler.property;
32
+ return this;
33
+ }
34
+
35
+ /** @inheritdoc */
36
+ usingKey(keyAccessor: PropertyAccessor<TEvent>): this {
37
+ const handler = new PropertyPathResolverProxyHandler();
38
+ const proxy = new Proxy({}, handler);
39
+ keyAccessor(proxy as TEvent);
40
+ this.entry.key = handler.property;
41
+ return this;
42
+ }
43
+ }
@@ -0,0 +1,46 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { PropertyAccessor, PropertyPathResolverProxyHandler } from '@cratis/fundamentals';
5
+ import { ISetBuilder } from './ISetBuilder';
6
+
7
+ /**
8
+ * Concrete implementation of {@link ISetBuilder} that records the property mapping
9
+ * into the owning from/join builder.
10
+ * @template TEvent - The event type.
11
+ * @template TParentBuilder - The parent builder type.
12
+ */
13
+ export class SetBuilder<TEvent, TParentBuilder> implements ISetBuilder<TEvent, TParentBuilder> {
14
+ constructor(
15
+ private readonly _readModelProperty: string,
16
+ private readonly _setProperty: (readModelProp: string, expression: string) => void,
17
+ private readonly _parent: TParentBuilder
18
+ ) {}
19
+
20
+ /** @inheritdoc */
21
+ to(eventPropertyAccessor: PropertyAccessor<TEvent>): TParentBuilder {
22
+ const handler = new PropertyPathResolverProxyHandler();
23
+ const proxy = new Proxy({}, handler);
24
+ eventPropertyAccessor(proxy as TEvent);
25
+ this._setProperty(this._readModelProperty, handler.property);
26
+ return this._parent;
27
+ }
28
+
29
+ /** @inheritdoc */
30
+ toValue<TProperty>(value: TProperty): TParentBuilder {
31
+ this._setProperty(this._readModelProperty, JSON.stringify(value));
32
+ return this._parent;
33
+ }
34
+
35
+ /** @inheritdoc */
36
+ toEventContextProperty(contextPropertyName: string): TParentBuilder {
37
+ this._setProperty(this._readModelProperty, `$context.${contextPropertyName}`);
38
+ return this._parent;
39
+ }
40
+
41
+ /** @inheritdoc */
42
+ toEventSourceId(): TParentBuilder {
43
+ this._setProperty(this._readModelProperty, '$eventSourceId');
44
+ return this._parent;
45
+ }
46
+ }
@@ -0,0 +1,26 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ export { projection, getProjectionMetadata, isProjection } from './projection';
5
+ export type { ProjectionMetadata } from './projection';
6
+ export { ProjectionBuilderFor } from './ProjectionBuilderFor';
7
+ export { FromBuilder } from './FromBuilder';
8
+ export { SetBuilder } from './SetBuilder';
9
+ export { RemovedWithBuilder } from './RemovedWithBuilder';
10
+ export type { IProjectionFor } from './IProjectionFor';
11
+ export type { IProjectionBuilderFor } from './IProjectionBuilderFor';
12
+ export type { IProjectionBuilder } from './IProjectionBuilder';
13
+ export type { IFromBuilder } from './IFromBuilder';
14
+ export type { IJoinBuilder } from './IJoinBuilder';
15
+ export type { IFromEveryBuilder } from './IFromEveryBuilder';
16
+ export type { IReadModelPropertiesBuilder } from './IReadModelPropertiesBuilder';
17
+ export type { ICompositeKeyBuilder } from './ICompositeKeyBuilder';
18
+ export type { ISetBuilder } from './ISetBuilder';
19
+ export type { IAllSetBuilder } from './IAllSetBuilder';
20
+ export type { IAddBuilder } from './IAddBuilder';
21
+ export type { ISubtractBuilder } from './ISubtractBuilder';
22
+ export type { IAddChildBuilder } from './IAddChildBuilder';
23
+ export type { IChildrenBuilder } from './IChildrenBuilder';
24
+ export type { INestedBuilder } from './INestedBuilder';
25
+ export type { IRemovedWithBuilder } from './IRemovedWithBuilder';
26
+ export type { IRemovedWithJoinBuilder } from './IRemovedWithJoinBuilder';
@@ -0,0 +1,59 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import 'reflect-metadata';
5
+ import { Constructor } from '@cratis/fundamentals';
6
+ import { ProjectionId } from '../ProjectionId';
7
+ import { DecoratorType, TypeDiscoverer } from '../../types';
8
+
9
+ /** Metadata key used to store declarative projection information on a class. */
10
+ const PROJECTION_METADATA_KEY = 'chronicle:projection';
11
+
12
+ /**
13
+ * Metadata stored on a declarative projection class.
14
+ */
15
+ export interface ProjectionMetadata {
16
+ /** The unique identifier for the projection. */
17
+ readonly id: ProjectionId;
18
+
19
+ /** The optional explicit event sequence identifier. */
20
+ readonly eventSequenceId: string | undefined;
21
+ }
22
+
23
+ /**
24
+ * TypeScript decorator that marks a class as a declarative projection.
25
+ * @param id - The unique identifier for the projection. Defaults to the class name if omitted.
26
+ * @param eventSequenceId - Optional explicit event sequence identifier.
27
+ * @returns A class decorator.
28
+ */
29
+ export function projection(id: string = '', eventSequenceId?: string): ClassDecorator {
30
+ return (target: object) => {
31
+ const constructor = target as Function;
32
+ const projectionId = new ProjectionId(id || constructor.name);
33
+ const metadata: ProjectionMetadata = { id: projectionId, eventSequenceId };
34
+ Reflect.defineMetadata(PROJECTION_METADATA_KEY, metadata, target);
35
+ TypeDiscoverer.default.register(
36
+ DecoratorType.Projection,
37
+ constructor as Constructor,
38
+ projectionId.value
39
+ );
40
+ };
41
+ }
42
+
43
+ /**
44
+ * Gets the {@link ProjectionMetadata} associated with a class decorated with {@link projection}.
45
+ * @param target - The class constructor to retrieve metadata for.
46
+ * @returns The associated metadata, or undefined if not decorated.
47
+ */
48
+ export function getProjectionMetadata(target: Function): ProjectionMetadata | undefined {
49
+ return Reflect.getMetadata(PROJECTION_METADATA_KEY, target);
50
+ }
51
+
52
+ /**
53
+ * Checks whether a class has been decorated with {@link projection}.
54
+ * @param target - The class constructor to check.
55
+ * @returns True if the class has a projection decorator; false otherwise.
56
+ */
57
+ export function isProjection(target: Function): boolean {
58
+ return Reflect.hasMetadata(PROJECTION_METADATA_KEY, target);
59
+ }
@@ -0,0 +1,8 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ export { ProjectionId } from './ProjectionId';
5
+ export type { IProjections } from './IProjections';
6
+ export { Projections } from './Projections';
7
+ export * from './declarative';
8
+ export * from './modelBound';
@@ -0,0 +1,10 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { FromEventOptions } from './FromEventOptions';
5
+
6
+ /** Metadata stored by the fromEvent decorator on a class. */
7
+ export interface FromEventMetadata extends FromEventOptions {
8
+ /** The event constructor associated with this annotation. */
9
+ readonly eventType: Function;
10
+ }
@@ -0,0 +1,12 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ /** Options for the fromEvent class decorator. */
5
+ export interface FromEventOptions {
6
+ /** The event property name to use as the key to identify the read model instance. */
7
+ readonly key?: string;
8
+ /** The event property name to use as the parent key for child relationships. */
9
+ readonly parentKey?: string;
10
+ /** A constant string value to use as the key. All events will update the same instance. */
11
+ readonly constantKey?: string;
12
+ }