@cratis/chronicle 3.0.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/ChronicleClient.ts +4 -3
  2. package/EventStore.ts +20 -3
  3. package/IEventStore.ts +16 -0
  4. package/README.md +40 -28
  5. package/auditing/CausationType.ts +10 -0
  6. package/compliance/ComplianceContracts.ts +84 -0
  7. package/compliance/IPIIManager.ts +17 -0
  8. package/compliance/PIIManager.ts +31 -0
  9. package/compliance/index.ts +2 -0
  10. package/connection/ChronicleConnection.ts +7 -1
  11. package/connection/ChronicleServices.ts +2 -0
  12. package/connection/Guid.ts +18 -0
  13. package/connection/callResults.spec.ts +90 -0
  14. package/connection/callResults.ts +112 -0
  15. package/dist/ChronicleClient.d.ts.map +1 -1
  16. package/dist/ChronicleClient.js +4 -3
  17. package/dist/ChronicleClient.js.map +1 -1
  18. package/dist/EventStore.d.ts +8 -0
  19. package/dist/EventStore.d.ts.map +1 -1
  20. package/dist/EventStore.js +16 -3
  21. package/dist/EventStore.js.map +1 -1
  22. package/dist/IEventStore.d.ts +12 -0
  23. package/dist/IEventStore.d.ts.map +1 -1
  24. package/dist/auditing/CausationType.d.ts +8 -0
  25. package/dist/auditing/CausationType.d.ts.map +1 -1
  26. package/dist/auditing/CausationType.js +8 -0
  27. package/dist/auditing/CausationType.js.map +1 -1
  28. package/dist/compliance/ComplianceContracts.d.ts +40 -0
  29. package/dist/compliance/ComplianceContracts.d.ts.map +1 -1
  30. package/dist/compliance/ComplianceContracts.js +71 -0
  31. package/dist/compliance/ComplianceContracts.js.map +1 -1
  32. package/dist/compliance/IPIIManager.d.ts +15 -0
  33. package/dist/compliance/IPIIManager.d.ts.map +1 -0
  34. package/dist/compliance/IPIIManager.js +4 -0
  35. package/dist/compliance/IPIIManager.js.map +1 -0
  36. package/dist/compliance/PIIManager.d.ts +20 -0
  37. package/dist/compliance/PIIManager.d.ts.map +1 -0
  38. package/dist/compliance/PIIManager.js +30 -0
  39. package/dist/compliance/PIIManager.js.map +1 -0
  40. package/dist/compliance/index.d.ts +2 -0
  41. package/dist/compliance/index.d.ts.map +1 -1
  42. package/dist/compliance/index.js +1 -0
  43. package/dist/compliance/index.js.map +1 -1
  44. package/dist/connection/ChronicleConnection.d.ts +1 -0
  45. package/dist/connection/ChronicleConnection.d.ts.map +1 -1
  46. package/dist/connection/ChronicleConnection.js +6 -1
  47. package/dist/connection/ChronicleConnection.js.map +1 -1
  48. package/dist/connection/ChronicleServices.d.ts +2 -0
  49. package/dist/connection/ChronicleServices.d.ts.map +1 -1
  50. package/dist/connection/Guid.d.ts +5 -0
  51. package/dist/connection/Guid.d.ts.map +1 -1
  52. package/dist/connection/Guid.js +15 -0
  53. package/dist/connection/Guid.js.map +1 -1
  54. package/dist/connection/callResults.d.ts +69 -0
  55. package/dist/connection/callResults.d.ts.map +1 -0
  56. package/dist/connection/callResults.js +74 -0
  57. package/dist/connection/callResults.js.map +1 -0
  58. package/dist/eventSequences/AppendOperationsBroadcaster.d.ts +16 -0
  59. package/dist/eventSequences/AppendOperationsBroadcaster.d.ts.map +1 -0
  60. package/dist/eventSequences/AppendOperationsBroadcaster.js +77 -0
  61. package/dist/eventSequences/AppendOperationsBroadcaster.js.map +1 -0
  62. package/dist/eventSequences/AppendOptions.d.ts +7 -0
  63. package/dist/eventSequences/AppendOptions.d.ts.map +1 -1
  64. package/dist/eventSequences/AppendResult.d.ts +14 -0
  65. package/dist/eventSequences/AppendResult.d.ts.map +1 -1
  66. package/dist/eventSequences/AppendedEventWithResult.d.ts +13 -0
  67. package/dist/eventSequences/AppendedEventWithResult.d.ts.map +1 -0
  68. package/dist/eventSequences/AppendedEventWithResult.js +4 -0
  69. package/dist/eventSequences/AppendedEventWithResult.js.map +1 -0
  70. package/dist/eventSequences/CompleteStreamError.d.ts +17 -0
  71. package/dist/eventSequences/CompleteStreamError.d.ts.map +1 -0
  72. package/dist/eventSequences/CompleteStreamError.js +20 -0
  73. package/dist/eventSequences/CompleteStreamError.js.map +1 -0
  74. package/dist/eventSequences/CompleteStreamResult.d.ts +14 -0
  75. package/dist/eventSequences/CompleteStreamResult.d.ts.map +1 -0
  76. package/dist/eventSequences/CompleteStreamResult.js +4 -0
  77. package/dist/eventSequences/CompleteStreamResult.js.map +1 -0
  78. package/dist/eventSequences/ConcurrencyViolation.d.ts +13 -0
  79. package/dist/eventSequences/ConcurrencyViolation.d.ts.map +1 -0
  80. package/dist/eventSequences/ConcurrencyViolation.js +4 -0
  81. package/dist/eventSequences/ConcurrencyViolation.js.map +1 -0
  82. package/dist/eventSequences/EventForEventSourceId.d.ts +8 -0
  83. package/dist/eventSequences/EventForEventSourceId.d.ts.map +1 -1
  84. package/dist/eventSequences/EventSequence.d.ts +35 -1
  85. package/dist/eventSequences/EventSequence.d.ts.map +1 -1
  86. package/dist/eventSequences/EventSequence.js +350 -19
  87. package/dist/eventSequences/EventSequence.js.map +1 -1
  88. package/dist/eventSequences/IEventSequence.d.ts +85 -1
  89. package/dist/eventSequences/IEventSequence.d.ts.map +1 -1
  90. package/dist/eventSequences/WaitForCompletionResult.d.ts +11 -0
  91. package/dist/eventSequences/WaitForCompletionResult.d.ts.map +1 -0
  92. package/dist/eventSequences/WaitForCompletionResult.js +4 -0
  93. package/dist/eventSequences/WaitForCompletionResult.js.map +1 -0
  94. package/dist/eventSequences/index.d.ts +5 -0
  95. package/dist/eventSequences/index.d.ts.map +1 -1
  96. package/dist/eventSequences/index.js +1 -0
  97. package/dist/eventSequences/index.js.map +1 -1
  98. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.d.ts +3 -0
  99. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.d.ts.map +1 -1
  100. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.js +9 -0
  101. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.js.map +1 -1
  102. package/dist/eventStoreSubscriptions/IEventStoreSubscriptions.d.ts +6 -0
  103. package/dist/eventStoreSubscriptions/IEventStoreSubscriptions.d.ts.map +1 -1
  104. package/dist/eventStoreSubscriptions/contracts.d.ts +18 -0
  105. package/dist/eventStoreSubscriptions/contracts.d.ts.map +1 -1
  106. package/dist/eventStoreSubscriptions/contracts.js +106 -0
  107. package/dist/eventStoreSubscriptions/contracts.js.map +1 -1
  108. package/dist/events/constraints/Constraints.js +4 -4
  109. package/dist/events/constraints/Constraints.js.map +1 -1
  110. package/dist/externalServices/ExternalServiceBuilder.d.ts +42 -0
  111. package/dist/externalServices/ExternalServiceBuilder.d.ts.map +1 -0
  112. package/dist/externalServices/ExternalServiceBuilder.js +110 -0
  113. package/dist/externalServices/ExternalServiceBuilder.js.map +1 -0
  114. package/dist/externalServices/ExternalServices.d.ts +19 -0
  115. package/dist/externalServices/ExternalServices.d.ts.map +1 -0
  116. package/dist/externalServices/ExternalServices.js +30 -0
  117. package/dist/externalServices/ExternalServices.js.map +1 -0
  118. package/dist/externalServices/ExternalServicesContracts.d.ts +137 -0
  119. package/dist/externalServices/ExternalServicesContracts.d.ts.map +1 -0
  120. package/dist/externalServices/ExternalServicesContracts.js +654 -0
  121. package/dist/externalServices/ExternalServicesContracts.js.map +1 -0
  122. package/dist/externalServices/IExternalServiceBuilder.d.ts +67 -0
  123. package/dist/externalServices/IExternalServiceBuilder.d.ts.map +1 -0
  124. package/dist/externalServices/IExternalServiceBuilder.js +4 -0
  125. package/dist/externalServices/IExternalServiceBuilder.js.map +1 -0
  126. package/dist/externalServices/IExternalServices.d.ts +13 -0
  127. package/dist/externalServices/IExternalServices.d.ts.map +1 -0
  128. package/dist/externalServices/IExternalServices.js +4 -0
  129. package/dist/externalServices/IExternalServices.js.map +1 -0
  130. package/dist/externalServices/index.d.ts +5 -0
  131. package/dist/externalServices/index.d.ts.map +1 -0
  132. package/dist/externalServices/index.js +5 -0
  133. package/dist/externalServices/index.js.map +1 -0
  134. package/dist/identities/IIdentityManager.d.ts +17 -0
  135. package/dist/identities/IIdentityManager.d.ts.map +1 -0
  136. package/dist/identities/IIdentityManager.js +4 -0
  137. package/dist/identities/IIdentityManager.js.map +1 -0
  138. package/dist/identities/IdentityManager.d.ts +20 -0
  139. package/dist/identities/IdentityManager.d.ts.map +1 -0
  140. package/dist/identities/IdentityManager.js +31 -0
  141. package/dist/identities/IdentityManager.js.map +1 -0
  142. package/dist/identities/index.d.ts +3 -0
  143. package/dist/identities/index.d.ts.map +1 -0
  144. package/dist/identities/index.js +4 -0
  145. package/dist/identities/index.js.map +1 -0
  146. package/dist/index.d.ts +5 -1
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +5 -1
  149. package/dist/index.js.map +1 -1
  150. package/dist/jobs/IJobs.d.ts +4 -4
  151. package/dist/jobs/IJobs.d.ts.map +1 -1
  152. package/dist/jobs/Jobs.d.ts +4 -4
  153. package/dist/jobs/Jobs.d.ts.map +1 -1
  154. package/dist/jobs/Jobs.js +12 -10
  155. package/dist/jobs/Jobs.js.map +1 -1
  156. package/dist/observation/FailedPartition.d.ts +15 -0
  157. package/dist/observation/FailedPartition.d.ts.map +1 -0
  158. package/dist/observation/FailedPartition.js +4 -0
  159. package/dist/observation/FailedPartition.js.map +1 -0
  160. package/dist/observation/FailedPartitionAttempt.d.ts +15 -0
  161. package/dist/observation/FailedPartitionAttempt.d.ts.map +1 -0
  162. package/dist/observation/FailedPartitionAttempt.js +4 -0
  163. package/dist/observation/FailedPartitionAttempt.js.map +1 -0
  164. package/dist/observation/FailedPartitions.d.ts +24 -0
  165. package/dist/observation/FailedPartitions.d.ts.map +1 -0
  166. package/dist/observation/FailedPartitions.js +39 -0
  167. package/dist/observation/FailedPartitions.js.map +1 -0
  168. package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.d.ts +19 -0
  169. package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.d.ts.map +1 -0
  170. package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.js +4 -0
  171. package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.js.map +1 -0
  172. package/dist/observation/ICanBeNotifiedWhenReplay.d.ts +17 -0
  173. package/dist/observation/ICanBeNotifiedWhenReplay.d.ts.map +1 -0
  174. package/dist/observation/ICanBeNotifiedWhenReplay.js +4 -0
  175. package/dist/observation/ICanBeNotifiedWhenReplay.js.map +1 -0
  176. package/dist/observation/IFailedPartitions.d.ts +18 -0
  177. package/dist/observation/IFailedPartitions.d.ts.map +1 -0
  178. package/dist/observation/IFailedPartitions.js +4 -0
  179. package/dist/observation/IFailedPartitions.js.map +1 -0
  180. package/dist/observation/index.d.ts +6 -0
  181. package/dist/observation/index.d.ts.map +1 -1
  182. package/dist/observation/index.js +1 -0
  183. package/dist/observation/index.js.map +1 -1
  184. package/dist/observation/notifyReplayLifecycle.d.ts +13 -0
  185. package/dist/observation/notifyReplayLifecycle.d.ts.map +1 -0
  186. package/dist/observation/notifyReplayLifecycle.js +54 -0
  187. package/dist/observation/notifyReplayLifecycle.js.map +1 -0
  188. package/dist/observation/toClientFailedPartition.d.ts +9 -0
  189. package/dist/observation/toClientFailedPartition.d.ts.map +1 -0
  190. package/dist/observation/toClientFailedPartition.js +23 -0
  191. package/dist/observation/toClientFailedPartition.js.map +1 -0
  192. package/dist/projections/Projections.d.ts +0 -4
  193. package/dist/projections/Projections.d.ts.map +1 -1
  194. package/dist/projections/Projections.js +25 -103
  195. package/dist/projections/Projections.js.map +1 -1
  196. package/dist/projections/declarative/AddBuilder.d.ts +17 -0
  197. package/dist/projections/declarative/AddBuilder.d.ts.map +1 -0
  198. package/dist/projections/declarative/AddBuilder.js +28 -0
  199. package/dist/projections/declarative/AddBuilder.js.map +1 -0
  200. package/dist/projections/declarative/AddChildBuilder.d.ts +56 -0
  201. package/dist/projections/declarative/AddChildBuilder.d.ts.map +1 -0
  202. package/dist/projections/declarative/AddChildBuilder.js +72 -0
  203. package/dist/projections/declarative/AddChildBuilder.js.map +1 -0
  204. package/dist/projections/declarative/ChildrenBuilder.d.ts +28 -0
  205. package/dist/projections/declarative/ChildrenBuilder.d.ts.map +1 -0
  206. package/dist/projections/declarative/ChildrenBuilder.js +72 -0
  207. package/dist/projections/declarative/ChildrenBuilder.js.map +1 -0
  208. package/dist/projections/declarative/CompositeKeyBuilder.d.ts +16 -0
  209. package/dist/projections/declarative/CompositeKeyBuilder.d.ts.map +1 -0
  210. package/dist/projections/declarative/CompositeKeyBuilder.js +29 -0
  211. package/dist/projections/declarative/CompositeKeyBuilder.js.map +1 -0
  212. package/dist/projections/declarative/FromBuilder.d.ts +8 -6
  213. package/dist/projections/declarative/FromBuilder.d.ts.map +1 -1
  214. package/dist/projections/declarative/FromBuilder.js +44 -14
  215. package/dist/projections/declarative/FromBuilder.js.map +1 -1
  216. package/dist/projections/declarative/ICompositeKeyBuilder.d.ts +5 -0
  217. package/dist/projections/declarative/ICompositeKeyBuilder.d.ts.map +1 -1
  218. package/dist/projections/declarative/JoinBuilder.d.ts +7 -5
  219. package/dist/projections/declarative/JoinBuilder.d.ts.map +1 -1
  220. package/dist/projections/declarative/JoinBuilder.js +50 -16
  221. package/dist/projections/declarative/JoinBuilder.js.map +1 -1
  222. package/dist/projections/declarative/NestedBuilder.d.ts +24 -0
  223. package/dist/projections/declarative/NestedBuilder.d.ts.map +1 -0
  224. package/dist/projections/declarative/NestedBuilder.js +60 -0
  225. package/dist/projections/declarative/NestedBuilder.js.map +1 -0
  226. package/dist/projections/declarative/ProjectionBuilderCore.d.ts +127 -0
  227. package/dist/projections/declarative/ProjectionBuilderCore.d.ts.map +1 -0
  228. package/dist/projections/declarative/ProjectionBuilderCore.js +180 -0
  229. package/dist/projections/declarative/ProjectionBuilderCore.js.map +1 -0
  230. package/dist/projections/declarative/ProjectionBuilderFor.d.ts +6 -32
  231. package/dist/projections/declarative/ProjectionBuilderFor.d.ts.map +1 -1
  232. package/dist/projections/declarative/ProjectionBuilderFor.js +24 -118
  233. package/dist/projections/declarative/ProjectionBuilderFor.js.map +1 -1
  234. package/dist/projections/declarative/SubtractBuilder.d.ts +17 -0
  235. package/dist/projections/declarative/SubtractBuilder.d.ts.map +1 -0
  236. package/dist/projections/declarative/SubtractBuilder.js +28 -0
  237. package/dist/projections/declarative/SubtractBuilder.js.map +1 -0
  238. package/dist/projections/declarative/index.d.ts +9 -0
  239. package/dist/projections/declarative/index.d.ts.map +1 -1
  240. package/dist/projections/declarative/index.js +8 -0
  241. package/dist/projections/declarative/index.js.map +1 -1
  242. package/dist/projections/modelBound/childrenAndNestedBuilder.d.ts +90 -0
  243. package/dist/projections/modelBound/childrenAndNestedBuilder.d.ts.map +1 -0
  244. package/dist/projections/modelBound/childrenAndNestedBuilder.js +290 -0
  245. package/dist/projections/modelBound/childrenAndNestedBuilder.js.map +1 -0
  246. package/dist/reactors/ReactorSideEffects.d.ts +29 -0
  247. package/dist/reactors/ReactorSideEffects.d.ts.map +1 -0
  248. package/dist/reactors/ReactorSideEffects.js +70 -0
  249. package/dist/reactors/ReactorSideEffects.js.map +1 -0
  250. package/dist/reactors/Reactors.d.ts +4 -1
  251. package/dist/reactors/Reactors.d.ts.map +1 -1
  252. package/dist/reactors/Reactors.js +23 -4
  253. package/dist/reactors/Reactors.js.map +1 -1
  254. package/dist/reducers/Reducers.d.ts.map +1 -1
  255. package/dist/reducers/Reducers.js +15 -3
  256. package/dist/reducers/Reducers.js.map +1 -1
  257. package/dist/reducers/reducer.d.ts +9 -1
  258. package/dist/reducers/reducer.d.ts.map +1 -1
  259. package/dist/reducers/reducer.js +4 -2
  260. package/dist/reducers/reducer.js.map +1 -1
  261. package/dist/transactions/IUnitOfWork.d.ts +18 -0
  262. package/dist/transactions/IUnitOfWork.d.ts.map +1 -1
  263. package/dist/transactions/UnitOfWork.d.ts +9 -0
  264. package/dist/transactions/UnitOfWork.d.ts.map +1 -1
  265. package/dist/transactions/UnitOfWork.js +14 -0
  266. package/dist/transactions/UnitOfWork.js.map +1 -1
  267. package/dist/tsconfig.tsbuildinfo +1 -1
  268. package/eventSequences/AppendOperationsBroadcaster.ts +83 -0
  269. package/eventSequences/AppendOptions.ts +8 -0
  270. package/eventSequences/AppendResult.ts +16 -0
  271. package/eventSequences/AppendedEventWithResult.ts +17 -0
  272. package/eventSequences/CompleteStreamError.ts +20 -0
  273. package/eventSequences/CompleteStreamResult.ts +13 -0
  274. package/eventSequences/ConcurrencyViolation.ts +18 -0
  275. package/eventSequences/EventForEventSourceId.ts +12 -0
  276. package/eventSequences/EventSequence.spec.ts +588 -0
  277. package/eventSequences/EventSequence.ts +406 -20
  278. package/eventSequences/IEventSequence.ts +109 -1
  279. package/eventSequences/WaitForCompletionResult.ts +15 -0
  280. package/eventSequences/index.ts +5 -0
  281. package/eventStoreSubscriptions/EventStoreSubscriptions.spec.ts +52 -0
  282. package/eventStoreSubscriptions/EventStoreSubscriptions.ts +19 -1
  283. package/eventStoreSubscriptions/IEventStoreSubscriptions.ts +7 -0
  284. package/eventStoreSubscriptions/contracts.ts +126 -0
  285. package/events/constraints/Constraints.ts +4 -4
  286. package/externalServices/ExternalServiceBuilder.ts +128 -0
  287. package/externalServices/ExternalServices.ts +34 -0
  288. package/externalServices/ExternalServicesContracts.ts +709 -0
  289. package/externalServices/IExternalServiceBuilder.ts +76 -0
  290. package/externalServices/IExternalServices.ts +16 -0
  291. package/externalServices/index.ts +7 -0
  292. package/identities/IIdentityManager.ts +19 -0
  293. package/identities/IdentityManager.ts +32 -0
  294. package/identities/index.ts +5 -0
  295. package/index.ts +6 -0
  296. package/jobs/IJobs.ts +4 -4
  297. package/jobs/Jobs.ts +16 -14
  298. package/observation/FailedPartition.ts +21 -0
  299. package/observation/FailedPartitionAttempt.ts +21 -0
  300. package/observation/FailedPartitions.spec.ts +75 -0
  301. package/observation/FailedPartitions.ts +44 -0
  302. package/observation/ICanBeNotifiedWhenPartitionReplayed.ts +22 -0
  303. package/observation/ICanBeNotifiedWhenReplay.ts +20 -0
  304. package/observation/IFailedPartitions.ts +22 -0
  305. package/observation/index.ts +6 -0
  306. package/observation/notifyReplayLifecycle.spec.ts +98 -0
  307. package/observation/notifyReplayLifecycle.ts +61 -0
  308. package/observation/toClientFailedPartition.ts +26 -0
  309. package/package.json +28 -3
  310. package/projections/Projections.childrenAndNested.spec.ts +188 -0
  311. package/projections/Projections.spec.ts +131 -0
  312. package/projections/Projections.ts +37 -119
  313. package/projections/declarative/AddBuilder.ts +28 -0
  314. package/projections/declarative/AddChildBuilder.ts +97 -0
  315. package/projections/declarative/ChildrenBuilder.spec.ts +157 -0
  316. package/projections/declarative/ChildrenBuilder.ts +90 -0
  317. package/projections/declarative/CompositeKeyBuilder.spec.ts +117 -0
  318. package/projections/declarative/CompositeKeyBuilder.ts +38 -0
  319. package/projections/declarative/FromBuilder.ts +60 -15
  320. package/projections/declarative/ICompositeKeyBuilder.ts +6 -0
  321. package/projections/declarative/JoinBuilder.ts +66 -17
  322. package/projections/declarative/NestedBuilder.ts +76 -0
  323. package/projections/declarative/ProjectionBuilderCore.ts +257 -0
  324. package/projections/declarative/ProjectionBuilderFor.spec.ts +115 -0
  325. package/projections/declarative/ProjectionBuilderFor.ts +29 -168
  326. package/projections/declarative/SubtractBuilder.ts +28 -0
  327. package/projections/declarative/index.ts +9 -0
  328. package/projections/modelBound/childrenAndNestedBuilder.ts +354 -0
  329. package/reactors/ReactorSideEffects.spec.ts +182 -0
  330. package/reactors/ReactorSideEffects.ts +97 -0
  331. package/reactors/Reactors.ts +29 -4
  332. package/reducers/Reducers.spec.ts +87 -0
  333. package/reducers/Reducers.ts +15 -3
  334. package/reducers/reducer.spec.ts +40 -0
  335. package/reducers/reducer.ts +11 -2
  336. package/transactions/IUnitOfWork.ts +21 -0
  337. package/transactions/UnitOfWork.spec.ts +82 -0
  338. package/transactions/UnitOfWork.ts +20 -0
@@ -0,0 +1,39 @@
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
+ import { toClientFailedPartition } from './toClientFailedPartition';
4
+ /**
5
+ * Implements {@link IFailedPartitions} by proxying to the Chronicle Kernel over the client connection.
6
+ */
7
+ export class FailedPartitions {
8
+ _eventStore;
9
+ _namespace;
10
+ _connection;
11
+ /**
12
+ * Creates a new {@link FailedPartitions} instance.
13
+ * @param _eventStore - Event store name.
14
+ * @param _namespace - Event store namespace.
15
+ * @param _connection - Chronicle connection.
16
+ */
17
+ constructor(_eventStore, _namespace, _connection) {
18
+ this._eventStore = _eventStore;
19
+ this._namespace = _namespace;
20
+ this._connection = _connection;
21
+ }
22
+ /** @inheritdoc */
23
+ async getAllFailedPartitions() {
24
+ return this.getFailedPartitions('');
25
+ }
26
+ /** @inheritdoc */
27
+ async getFailedPartitionsFor(observerId) {
28
+ return this.getFailedPartitions(observerId);
29
+ }
30
+ async getFailedPartitions(observerId) {
31
+ const response = await this._connection.failedPartitions.getFailedPartitions({
32
+ EventStore: this._eventStore,
33
+ Namespace: this._namespace,
34
+ ObserverId: observerId
35
+ });
36
+ return (response.items ?? []).map(failedPartition => toClientFailedPartition(failedPartition));
37
+ }
38
+ }
39
+ //# sourceMappingURL=FailedPartitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FailedPartitions.js","sourceRoot":"","sources":["../../observation/FailedPartitions.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAKrG,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAQJ;IACA;IACA;IATrB;;;;;OAKG;IACH,YACqB,WAAmB,EACnB,UAAkB,EAClB,WAAgC;QAFhC,gBAAW,GAAX,WAAW,CAAQ;QACnB,eAAU,GAAV,UAAU,CAAQ;QAClB,gBAAW,GAAX,WAAW,CAAqB;IAClD,CAAC;IAEJ,kBAAkB;IAClB,KAAK,CAAC,sBAAsB;QACxB,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,sBAAsB,CAAC,UAAkB;QAC3C,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;YACzE,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,UAAU,EAAE,UAAU;SACzB,CAAC,CAAC;QAEH,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC;IACnG,CAAC;CACJ"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Defines an optional contract a `@reactor`/`@reducer`-decorated class instance can implement to
3
+ * receive notifications when replay of a specific partition begins and ends.
4
+ */
5
+ export interface ICanBeNotifiedWhenPartitionReplayed {
6
+ /**
7
+ * Called when replay of a partition begins.
8
+ * @param partition - The partition being replayed.
9
+ * @returns A promise that resolves when the callback has completed.
10
+ */
11
+ beginReplayPartition(partition: string): Promise<void>;
12
+ /**
13
+ * Called when replay of a partition ends.
14
+ * @param partition - The partition that was replayed.
15
+ * @returns A promise that resolves when the callback has completed.
16
+ */
17
+ endReplayPartition(partition: string): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=ICanBeNotifiedWhenPartitionReplayed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICanBeNotifiedWhenPartitionReplayed.d.ts","sourceRoot":"","sources":["../../observation/ICanBeNotifiedWhenPartitionReplayed.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAChD;;;;OAIG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;;;OAIG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD"}
@@ -0,0 +1,4 @@
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
+ export {};
4
+ //# sourceMappingURL=ICanBeNotifiedWhenPartitionReplayed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICanBeNotifiedWhenPartitionReplayed.js","sourceRoot":"","sources":["../../observation/ICanBeNotifiedWhenPartitionReplayed.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Defines an optional contract a `@reactor`/`@reducer`-decorated class instance can implement to
3
+ * receive notifications when a full replay of its observation begins and ends.
4
+ */
5
+ export interface ICanBeNotifiedWhenReplay {
6
+ /**
7
+ * Called when a replay begins.
8
+ * @returns A promise that resolves when the callback has completed.
9
+ */
10
+ beginReplay(): Promise<void>;
11
+ /**
12
+ * Called when a replay ends.
13
+ * @returns A promise that resolves when the callback has completed.
14
+ */
15
+ endReplay(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=ICanBeNotifiedWhenReplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICanBeNotifiedWhenReplay.d.ts","sourceRoot":"","sources":["../../observation/ICanBeNotifiedWhenReplay.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACrC;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B"}
@@ -0,0 +1,4 @@
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
+ export {};
4
+ //# sourceMappingURL=ICanBeNotifiedWhenReplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICanBeNotifiedWhenReplay.js","sourceRoot":"","sources":["../../observation/ICanBeNotifiedWhenReplay.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
@@ -0,0 +1,18 @@
1
+ import { FailedPartition } from './FailedPartition';
2
+ /**
3
+ * Defines a system that can work with failed partitions.
4
+ */
5
+ export interface IFailedPartitions {
6
+ /**
7
+ * Gets any failed partitions for any observer (Reactor, Reducer, ++).
8
+ * @returns A collection of {@link FailedPartition}.
9
+ */
10
+ getAllFailedPartitions(): Promise<FailedPartition[]>;
11
+ /**
12
+ * Gets any failed partitions for a specific observer (Reactor, Reducer, ++).
13
+ * @param observerId - The identifier of the observer to get for.
14
+ * @returns A collection of {@link FailedPartition}.
15
+ */
16
+ getFailedPartitionsFor(observerId: string): Promise<FailedPartition[]>;
17
+ }
18
+ //# sourceMappingURL=IFailedPartitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFailedPartitions.d.ts","sourceRoot":"","sources":["../../observation/IFailedPartitions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;;OAGG;IACH,sBAAsB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAErD;;;;OAIG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CAC1E"}
@@ -0,0 +1,4 @@
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
+ export {};
4
+ //# sourceMappingURL=IFailedPartitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFailedPartitions.js","sourceRoot":"","sources":["../../observation/IFailedPartitions.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
@@ -1,3 +1,9 @@
1
1
  export { ObserverId } from './ObserverId';
2
2
  export { ObserverRunningState } from './ObserverRunningState';
3
+ export type { FailedPartition } from './FailedPartition';
4
+ export type { FailedPartitionAttempt } from './FailedPartitionAttempt';
5
+ export type { IFailedPartitions } from './IFailedPartitions';
6
+ export { FailedPartitions } from './FailedPartitions';
7
+ export type { ICanBeNotifiedWhenReplay } from './ICanBeNotifiedWhenReplay';
8
+ export type { ICanBeNotifiedWhenPartitionReplayed } from './ICanBeNotifiedWhenPartitionReplayed';
3
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../observation/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../observation/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,YAAY,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC"}
@@ -2,4 +2,5 @@
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
  export { ObserverId } from './ObserverId';
4
4
  export { ObserverRunningState } from './ObserverRunningState';
5
+ export { FailedPartitions } from './FailedPartitions';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../observation/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../observation/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ReplayState } from '@cratis/chronicle.contracts';
2
+ /**
3
+ * Notifies a reactor/reducer instance of a replay-state transition signaled by the Chronicle Kernel,
4
+ * when the instance optionally implements {@link ICanBeNotifiedWhenReplay} and/or
5
+ * {@link ICanBeNotifiedWhenPartitionReplayed}. A no-op for {@link ReplayState.REPLAY_STATE_None} or
6
+ * when the instance implements neither contract.
7
+ * @param instance - The reactor/reducer instance to notify.
8
+ * @param replayState - The replay-state transition signaled for the current batch.
9
+ * @param partition - The partition the transition applies to, for the partition-scoped states.
10
+ * @returns A promise that resolves when the relevant callback (if any) has completed.
11
+ */
12
+ export declare function notifyReplayLifecycle(instance: unknown, replayState: ReplayState, partition: string): Promise<void>;
13
+ //# sourceMappingURL=notifyReplayLifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifyReplayLifecycle.d.ts","sourceRoot":"","sources":["../../observation/notifyReplayLifecycle.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAsB1D;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBzH"}
@@ -0,0 +1,54 @@
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
+ import { ReplayState } from '@cratis/chronicle.contracts';
4
+ function hasReplayLifecycleHooks(instance) {
5
+ if (typeof instance !== 'object' || instance === null) {
6
+ return false;
7
+ }
8
+ const candidate = instance;
9
+ return typeof candidate.beginReplay === 'function' && typeof candidate.endReplay === 'function';
10
+ }
11
+ function hasPartitionReplayLifecycleHooks(instance) {
12
+ if (typeof instance !== 'object' || instance === null) {
13
+ return false;
14
+ }
15
+ const candidate = instance;
16
+ return typeof candidate.beginReplayPartition === 'function' && typeof candidate.endReplayPartition === 'function';
17
+ }
18
+ /**
19
+ * Notifies a reactor/reducer instance of a replay-state transition signaled by the Chronicle Kernel,
20
+ * when the instance optionally implements {@link ICanBeNotifiedWhenReplay} and/or
21
+ * {@link ICanBeNotifiedWhenPartitionReplayed}. A no-op for {@link ReplayState.REPLAY_STATE_None} or
22
+ * when the instance implements neither contract.
23
+ * @param instance - The reactor/reducer instance to notify.
24
+ * @param replayState - The replay-state transition signaled for the current batch.
25
+ * @param partition - The partition the transition applies to, for the partition-scoped states.
26
+ * @returns A promise that resolves when the relevant callback (if any) has completed.
27
+ */
28
+ export async function notifyReplayLifecycle(instance, replayState, partition) {
29
+ switch (replayState) {
30
+ case ReplayState.BeginReplay:
31
+ if (hasReplayLifecycleHooks(instance)) {
32
+ await instance.beginReplay();
33
+ }
34
+ break;
35
+ case ReplayState.EndReplay:
36
+ if (hasReplayLifecycleHooks(instance)) {
37
+ await instance.endReplay();
38
+ }
39
+ break;
40
+ case ReplayState.BeginReplayPartition:
41
+ if (hasPartitionReplayLifecycleHooks(instance)) {
42
+ await instance.beginReplayPartition(partition);
43
+ }
44
+ break;
45
+ case ReplayState.EndReplayPartition:
46
+ if (hasPartitionReplayLifecycleHooks(instance)) {
47
+ await instance.endReplayPartition(partition);
48
+ }
49
+ break;
50
+ default:
51
+ break;
52
+ }
53
+ }
54
+ //# sourceMappingURL=notifyReplayLifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifyReplayLifecycle.js","sourceRoot":"","sources":["../../observation/notifyReplayLifecycle.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,SAAS,uBAAuB,CAAC,QAAiB;IAC9C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,QAAmC,CAAC;IACtD,OAAO,OAAO,SAAS,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC;AACpG,CAAC;AAED,SAAS,gCAAgC,CAAC,QAAiB;IACvD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,QAAmC,CAAC;IACtD,OAAO,OAAO,SAAS,CAAC,oBAAoB,KAAK,UAAU,IAAI,OAAO,SAAS,CAAC,kBAAkB,KAAK,UAAU,CAAC;AACtH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAiB,EAAE,WAAwB,EAAE,SAAiB;IACtG,QAAQ,WAAW,EAAE,CAAC;QAClB,KAAK,WAAW,CAAC,WAAW;YACxB,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YACjC,CAAC;YACD,MAAM;QACV,KAAK,WAAW,CAAC,SAAS;YACtB,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC/B,CAAC;YACD,MAAM;QACV,KAAK,WAAW,CAAC,oBAAoB;YACjC,IAAI,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,MAAM,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACnD,CAAC;YACD,MAAM;QACV,KAAK,WAAW,CAAC,kBAAkB;YAC/B,IAAI,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,MAAM,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACjD,CAAC;YACD,MAAM;QACV;YACI,MAAM;IACd,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { FailedPartition as ContractsFailedPartition } from '@cratis/chronicle.contracts';
2
+ import { FailedPartition } from './FailedPartition';
3
+ /**
4
+ * Converts a wire {@link ContractsFailedPartition} into the client {@link FailedPartition} shape.
5
+ * @param failedPartition - The wire failed partition to convert.
6
+ * @returns The converted client failed partition.
7
+ */
8
+ export declare function toClientFailedPartition(failedPartition: ContractsFailedPartition): FailedPartition;
9
+ //# sourceMappingURL=toClientFailedPartition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toClientFailedPartition.d.ts","sourceRoot":"","sources":["../../observation/toClientFailedPartition.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,IAAI,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAG/F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,wBAAwB,GAAG,eAAe,CAYlG"}
@@ -0,0 +1,23 @@
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
+ import { fromContractsGuid } from '../connection/Guid';
4
+ import { EventSequenceNumber } from '../eventSequences/EventSequenceNumber';
5
+ /**
6
+ * Converts a wire {@link ContractsFailedPartition} into the client {@link FailedPartition} shape.
7
+ * @param failedPartition - The wire failed partition to convert.
8
+ * @returns The converted client failed partition.
9
+ */
10
+ export function toClientFailedPartition(failedPartition) {
11
+ return {
12
+ id: fromContractsGuid(failedPartition.Id).toString(),
13
+ observerId: failedPartition.ObserverId,
14
+ partition: failedPartition.Partition,
15
+ attempts: (failedPartition.Attempts ?? []).map(attempt => ({
16
+ occurred: new Date(attempt.Occurred?.Value ?? ''),
17
+ sequenceNumber: new EventSequenceNumber(attempt.SequenceNumber ?? 0n),
18
+ messages: attempt.Messages ?? [],
19
+ stackTrace: attempt.StackTrace ?? ''
20
+ }))
21
+ };
22
+ }
23
+ //# sourceMappingURL=toClientFailedPartition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toClientFailedPartition.js","sourceRoot":"","sources":["../../observation/toClientFailedPartition.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAGrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAG5E;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,eAAyC;IAC7E,OAAO;QACH,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QACpD,UAAU,EAAE,eAAe,CAAC,UAAU;QACtC,SAAS,EAAE,eAAe,CAAC,SAAS;QACpC,QAAQ,EAAE,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvD,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;YACjD,cAAc,EAAE,IAAI,mBAAmB,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;YACrE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;SACvC,CAAC,CAAC;KACN,CAAC;AACN,CAAC"}
@@ -29,11 +29,7 @@ export declare class Projections implements IProjections {
29
29
  private inferReadModelIdentifier;
30
30
  private buildModelBoundDefinition;
31
31
  private resolveModelBoundMetadata;
32
- private throwIfUnsupportedModelBoundDecorators;
33
- private ensureFromEntry;
34
32
  private ensureJoinEntry;
35
- private toContractEventType;
36
- private getEventTypeMapKey;
37
33
  /**
38
34
  * Computes a stable, deterministic ISO timestamp from the projection definition content,
39
35
  * excluding the LastUpdated field itself. This ensures the server does not interpret
@@ -1 +1 @@
1
- {"version":3,"file":"Projections.d.ts","sourceRoot":"","sources":["../../projections/Projections.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAOpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAgC9C;;;GAGG;AACH,qBAAa,WAAY,YAAW,YAAY;IAWxC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAbvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAE9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8E;IAEtG;;;OAGG;gBAEkB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,mBAAmB,EAChC,gBAAgB,EAAE,wBAAwB,EAC1C,kBAAkB,EAAE,MAAM;IAG/C,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC/B,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCjB,iBAAiB;IA8B/B,OAAO,CAAC,yBAAyB;IAmCjC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,0BAA0B;IA6BlC,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,yBAAyB;IAsIjC,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,sCAAsC;IA2B9C,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAI1B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;CASnC"}
1
+ {"version":3,"file":"Projections.d.ts","sourceRoot":"","sources":["../../projections/Projections.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAMpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA+B9C;;;GAGG;AACH,qBAAa,WAAY,YAAW,YAAY;IAWxC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAbvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAE9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8E;IAEtG;;;OAGG;gBAEkB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,mBAAmB,EAChC,gBAAgB,EAAE,wBAAwB,EAC1C,kBAAkB,EAAE,MAAM;IAG/C,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC/B,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCjB,iBAAiB;IA8B/B,OAAO,CAAC,yBAAyB;IAmCjC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,0BAA0B;IA6BlC,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,yBAAyB;IAwHjC,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,eAAe;IAuBvB;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;CASnC"}
@@ -6,19 +6,14 @@ import { Guid } from '@cratis/fundamentals';
6
6
  import { toContractsGuid } from '../connection/Guid';
7
7
  import { WellKnownSinks } from '../sinks';
8
8
  import { EventSequenceId } from '../eventSequences/EventSequenceId';
9
- import { getEventTypeFor } from '../events/eventTypeDecorator';
10
9
  import { getReadModelMetadata } from '../readModels';
11
10
  import { TypeIntrospector } from '../types';
12
11
  import { getProjectionMetadata } from './declarative/projection';
13
12
  import { ProjectionBuilderFor } from './declarative/ProjectionBuilderFor';
14
- import { getAddFromMetadata } from './modelBound/addFrom';
13
+ import { applyPropertyMappings, buildChildrenEntry, buildNestedEntry, getEventTypeMapKey, toContractEventType } from './modelBound/childrenAndNestedBuilder';
15
14
  import { getChildrenFromMetadata } from './modelBound/childrenFrom';
16
- import { getClearWithClassMetadata, getClearWithPropertyMetadata } from './modelBound/clearWith';
17
- import { getCountMetadata } from './modelBound/count';
18
- import { getDecrementMetadata } from './modelBound/decrement';
19
15
  import { getFromEveryMetadata } from './modelBound/fromEvery';
20
16
  import { getFromEventMetadata, hasFromEventMetadata } from './modelBound/fromEvent';
21
- import { getIncrementMetadata } from './modelBound/increment';
22
17
  import { getJoinMetadata } from './modelBound/join';
23
18
  import { ProjectionId } from './ProjectionId';
24
19
  import { isNested } from './modelBound/nested';
@@ -26,10 +21,6 @@ import { isNotRewindable } from './modelBound/notRewindable';
26
21
  import { isPassive } from './modelBound/passive';
27
22
  import { getRemovedWithClassMetadata, getRemovedWithPropertyMetadata } from './modelBound/removedWith';
28
23
  import { getRemovedWithJoinClassMetadata, getRemovedWithJoinPropertyMetadata } from './modelBound/removedWithJoin';
29
- import { getSetFromMetadata } from './modelBound/setFrom';
30
- import { getSetFromContextMetadata } from './modelBound/setFromContext';
31
- import { getSetValueMetadata } from './modelBound/setValue';
32
- import { getSubtractFromMetadata } from './modelBound/subtractFrom';
33
24
  /**
34
25
  * Implements {@link IProjections}, managing discovery and registration of projections
35
26
  * with the Chronicle Kernel.
@@ -236,10 +227,12 @@ export class Projections {
236
227
  const joinByEventType = new Map();
237
228
  const removedWithByEventType = new Map();
238
229
  const removedWithJoinByEventType = new Map();
230
+ const childrenByProperty = {};
231
+ const nestedByProperty = {};
239
232
  const fromEvents = getFromEventMetadata(type);
240
233
  for (const fromEvent of fromEvents) {
241
- const eventType = this.toContractEventType(fromEvent.eventType);
242
- const eventKey = this.getEventTypeMapKey(eventType);
234
+ const eventType = toContractEventType(fromEvent.eventType);
235
+ const eventKey = getEventTypeMapKey(eventType);
243
236
  fromByEventType.set(eventKey, {
244
237
  Key: eventType,
245
238
  Value: {
@@ -249,63 +242,50 @@ export class Projections {
249
242
  }
250
243
  });
251
244
  }
252
- const clearWithClass = getClearWithClassMetadata(type);
253
- if (clearWithClass.length > 0) {
254
- throw new Error(`Model-bound projection '${type.name}' uses @clearWith on class level, which is not implemented yet.`);
255
- }
256
245
  const removedWithClass = getRemovedWithClassMetadata(type);
257
246
  for (const removed of removedWithClass) {
258
- const eventType = this.toContractEventType(removed.eventType);
259
- removedWithByEventType.set(this.getEventTypeMapKey(eventType), {
247
+ const eventType = toContractEventType(removed.eventType);
248
+ removedWithByEventType.set(getEventTypeMapKey(eventType), {
260
249
  Key: eventType,
261
250
  Value: { Key: removed.key ?? '$eventSourceId', ParentKey: removed.parentKey ?? '' }
262
251
  });
263
252
  }
264
253
  const removedWithJoinClass = getRemovedWithJoinClassMetadata(type);
265
254
  for (const removed of removedWithJoinClass) {
266
- const eventType = this.toContractEventType(removed.eventType);
267
- removedWithJoinByEventType.set(this.getEventTypeMapKey(eventType), {
255
+ const eventType = toContractEventType(removed.eventType);
256
+ removedWithJoinByEventType.set(getEventTypeMapKey(eventType), {
268
257
  Key: eventType,
269
258
  Value: { Key: removed.key ?? '$eventSourceId' }
270
259
  });
271
260
  }
272
261
  for (const property of properties) {
273
- this.throwIfUnsupportedModelBoundDecorators(type.name, prototype, property);
274
- for (const mapping of getSetFromMetadata(prototype, property)) {
275
- const entry = this.ensureFromEntry(fromByEventType, mapping.eventType);
276
- entry.Value.Properties[property] = mapping.eventPropertyName ?? property;
277
- }
278
- for (const mapping of getSetFromContextMetadata(prototype, property)) {
279
- const entry = this.ensureFromEntry(fromByEventType, mapping.eventType);
280
- entry.Value.Properties[property] = mapping.contextPropertyName ?? property;
281
- }
282
- for (const mapping of getSetValueMetadata(prototype, property)) {
283
- const entry = this.ensureFromEntry(fromByEventType, mapping.eventType);
284
- entry.Value.Properties[property] = JSON.stringify(mapping.value);
285
- }
262
+ applyPropertyMappings(prototype, property, fromByEventType);
286
263
  for (const mapping of getJoinMetadata(prototype, property)) {
287
264
  const entry = this.ensureJoinEntry(joinByEventType, mapping.eventType);
288
265
  entry.Value.On = mapping.on ?? entry.Value.On;
289
266
  entry.Value.Properties[property] = mapping.eventPropertyName ?? property;
290
267
  }
291
- const fromEvery = getFromEveryMetadata(prototype, property);
292
- if (fromEvery) {
293
- // Applied later to projection.All
294
- }
295
268
  for (const removed of getRemovedWithPropertyMetadata(prototype, property)) {
296
- const eventType = this.toContractEventType(removed.eventType);
297
- removedWithByEventType.set(this.getEventTypeMapKey(eventType), {
269
+ const eventType = toContractEventType(removed.eventType);
270
+ removedWithByEventType.set(getEventTypeMapKey(eventType), {
298
271
  Key: eventType,
299
272
  Value: { Key: removed.key ?? '$eventSourceId', ParentKey: removed.parentKey ?? '' }
300
273
  });
301
274
  }
302
275
  for (const removed of getRemovedWithJoinPropertyMetadata(prototype, property)) {
303
- const eventType = this.toContractEventType(removed.eventType);
304
- removedWithJoinByEventType.set(this.getEventTypeMapKey(eventType), {
276
+ const eventType = toContractEventType(removed.eventType);
277
+ removedWithJoinByEventType.set(getEventTypeMapKey(eventType), {
305
278
  Key: eventType,
306
279
  Value: { Key: removed.key ?? '$eventSourceId' }
307
280
  });
308
281
  }
282
+ const childrenFromList = getChildrenFromMetadata(prototype, property);
283
+ if (childrenFromList.length > 0) {
284
+ childrenByProperty[property] = buildChildrenEntry(type, property, childrenFromList);
285
+ }
286
+ if (isNested(prototype, property)) {
287
+ nestedByProperty[property] = buildNestedEntry(type, property);
288
+ }
309
289
  }
310
290
  const allProperties = {};
311
291
  for (const property of properties) {
@@ -325,7 +305,7 @@ export class Projections {
325
305
  InitialModelState: '{}',
326
306
  From: Array.from(fromByEventType.values()),
327
307
  Join: Array.from(joinByEventType.values()),
328
- Children: {},
308
+ Children: childrenByProperty,
329
309
  FromEvery: [],
330
310
  All: {
331
311
  Properties: allProperties,
@@ -337,7 +317,7 @@ export class Projections {
337
317
  LastUpdated: { Value: '' },
338
318
  Tags: [],
339
319
  AutoMap: AutoMap.Enabled,
340
- Nested: {}
320
+ Nested: nestedByProperty
341
321
  };
342
322
  definition.LastUpdated = { Value: this.computeStableLastUpdated(definition) };
343
323
  return definition;
@@ -353,53 +333,9 @@ export class Projections {
353
333
  }
354
334
  return undefined;
355
335
  }
356
- throwIfUnsupportedModelBoundDecorators(typeName, prototype, property) {
357
- if (getAddFromMetadata(prototype, property).length > 0) {
358
- throw new Error(`Model-bound projection '${typeName}' uses @addFrom on '${property}', which is not implemented yet.`);
359
- }
360
- if (getSubtractFromMetadata(prototype, property).length > 0) {
361
- throw new Error(`Model-bound projection '${typeName}' uses @subtractFrom on '${property}', which is not implemented yet.`);
362
- }
363
- if (getIncrementMetadata(prototype, property).length > 0) {
364
- throw new Error(`Model-bound projection '${typeName}' uses @increment on '${property}', which is not implemented yet.`);
365
- }
366
- if (getDecrementMetadata(prototype, property).length > 0) {
367
- throw new Error(`Model-bound projection '${typeName}' uses @decrement on '${property}', which is not implemented yet.`);
368
- }
369
- if (getCountMetadata(prototype, property).length > 0) {
370
- throw new Error(`Model-bound projection '${typeName}' uses @count on '${property}', which is not implemented yet.`);
371
- }
372
- if (getChildrenFromMetadata(prototype, property).length > 0) {
373
- throw new Error(`Model-bound projection '${typeName}' uses @childrenFrom on '${property}', which is not implemented yet.`);
374
- }
375
- if (isNested(prototype, property)) {
376
- throw new Error(`Model-bound projection '${typeName}' uses @nested on '${property}', which is not implemented yet.`);
377
- }
378
- if (getClearWithPropertyMetadata(prototype, property).length > 0) {
379
- throw new Error(`Model-bound projection '${typeName}' uses @clearWith on '${property}', which is not implemented yet.`);
380
- }
381
- }
382
- ensureFromEntry(fromByEventType, eventTypeConstructor) {
383
- const eventType = this.toContractEventType(eventTypeConstructor);
384
- const key = this.getEventTypeMapKey(eventType);
385
- const existing = fromByEventType.get(key);
386
- if (existing) {
387
- return existing;
388
- }
389
- const created = {
390
- Key: eventType,
391
- Value: {
392
- Properties: {},
393
- Key: '$eventSourceId',
394
- ParentKey: ''
395
- }
396
- };
397
- fromByEventType.set(key, created);
398
- return created;
399
- }
400
336
  ensureJoinEntry(joinByEventType, eventTypeConstructor) {
401
- const eventType = this.toContractEventType(eventTypeConstructor);
402
- const key = this.getEventTypeMapKey(eventType);
337
+ const eventType = toContractEventType(eventTypeConstructor);
338
+ const key = getEventTypeMapKey(eventType);
403
339
  const existing = joinByEventType.get(key);
404
340
  if (existing) {
405
341
  return existing;
@@ -415,20 +351,6 @@ export class Projections {
415
351
  joinByEventType.set(key, created);
416
352
  return created;
417
353
  }
418
- toContractEventType(eventTypeConstructor) {
419
- const eventType = getEventTypeFor(eventTypeConstructor);
420
- if (eventType.id.value === '') {
421
- throw new Error(`Event type '${eventTypeConstructor.name}' is not decorated with @eventType().`);
422
- }
423
- return {
424
- Id: eventType.id.value,
425
- Generation: eventType.generation.value,
426
- Tombstone: false
427
- };
428
- }
429
- getEventTypeMapKey(eventType) {
430
- return `${eventType.Id}:${eventType.Generation}:${eventType.Tombstone ? '1' : '0'}`;
431
- }
432
354
  /**
433
355
  * Computes a stable, deterministic ISO timestamp from the projection definition content,
434
356
  * excluding the LastUpdated field itself. This ensures the server does not interpret
@@ -1 +1 @@
1
- {"version":3,"file":"Projections.js","sourceRoot":"","sources":["../../projections/Projections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Projections.js","sourceRoot":"","sources":["../../projections/Projections.ts"],"names":[],"mappings":"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"}