@cratis/chronicle 2.1.1 → 3.1.0

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 (320) hide show
  1. package/EventStore.ts +17 -1
  2. package/IEventStore.ts +16 -0
  3. package/auditing/CausationType.ts +10 -0
  4. package/compliance/ComplianceContracts.ts +84 -0
  5. package/compliance/IPIIManager.ts +17 -0
  6. package/compliance/PIIManager.ts +31 -0
  7. package/compliance/index.ts +2 -0
  8. package/connection/ChronicleConnection.ts +7 -1
  9. package/connection/ChronicleServices.ts +2 -0
  10. package/connection/Guid.ts +18 -0
  11. package/dist/EventStore.d.ts +8 -0
  12. package/dist/EventStore.d.ts.map +1 -1
  13. package/dist/EventStore.js +13 -1
  14. package/dist/EventStore.js.map +1 -1
  15. package/dist/IEventStore.d.ts +12 -0
  16. package/dist/IEventStore.d.ts.map +1 -1
  17. package/dist/auditing/CausationType.d.ts +8 -0
  18. package/dist/auditing/CausationType.d.ts.map +1 -1
  19. package/dist/auditing/CausationType.js +8 -0
  20. package/dist/auditing/CausationType.js.map +1 -1
  21. package/dist/compliance/ComplianceContracts.d.ts +40 -0
  22. package/dist/compliance/ComplianceContracts.d.ts.map +1 -1
  23. package/dist/compliance/ComplianceContracts.js +71 -0
  24. package/dist/compliance/ComplianceContracts.js.map +1 -1
  25. package/dist/compliance/IPIIManager.d.ts +15 -0
  26. package/dist/compliance/IPIIManager.d.ts.map +1 -0
  27. package/dist/compliance/IPIIManager.js +4 -0
  28. package/dist/compliance/IPIIManager.js.map +1 -0
  29. package/dist/compliance/PIIManager.d.ts +20 -0
  30. package/dist/compliance/PIIManager.d.ts.map +1 -0
  31. package/dist/compliance/PIIManager.js +30 -0
  32. package/dist/compliance/PIIManager.js.map +1 -0
  33. package/dist/compliance/index.d.ts +2 -0
  34. package/dist/compliance/index.d.ts.map +1 -1
  35. package/dist/compliance/index.js +1 -0
  36. package/dist/compliance/index.js.map +1 -1
  37. package/dist/connection/ChronicleConnection.d.ts +1 -0
  38. package/dist/connection/ChronicleConnection.d.ts.map +1 -1
  39. package/dist/connection/ChronicleConnection.js +6 -1
  40. package/dist/connection/ChronicleConnection.js.map +1 -1
  41. package/dist/connection/ChronicleServices.d.ts +2 -0
  42. package/dist/connection/ChronicleServices.d.ts.map +1 -1
  43. package/dist/connection/Guid.d.ts +5 -0
  44. package/dist/connection/Guid.d.ts.map +1 -1
  45. package/dist/connection/Guid.js +15 -0
  46. package/dist/connection/Guid.js.map +1 -1
  47. package/dist/eventSequences/AppendOperationsBroadcaster.d.ts +16 -0
  48. package/dist/eventSequences/AppendOperationsBroadcaster.d.ts.map +1 -0
  49. package/dist/eventSequences/AppendOperationsBroadcaster.js +77 -0
  50. package/dist/eventSequences/AppendOperationsBroadcaster.js.map +1 -0
  51. package/dist/eventSequences/AppendOptions.d.ts +7 -0
  52. package/dist/eventSequences/AppendOptions.d.ts.map +1 -1
  53. package/dist/eventSequences/AppendResult.d.ts +14 -0
  54. package/dist/eventSequences/AppendResult.d.ts.map +1 -1
  55. package/dist/eventSequences/AppendedEventWithResult.d.ts +13 -0
  56. package/dist/eventSequences/AppendedEventWithResult.d.ts.map +1 -0
  57. package/dist/eventSequences/AppendedEventWithResult.js +4 -0
  58. package/dist/eventSequences/AppendedEventWithResult.js.map +1 -0
  59. package/dist/eventSequences/CompleteStreamError.d.ts +17 -0
  60. package/dist/eventSequences/CompleteStreamError.d.ts.map +1 -0
  61. package/dist/eventSequences/CompleteStreamError.js +20 -0
  62. package/dist/eventSequences/CompleteStreamError.js.map +1 -0
  63. package/dist/eventSequences/CompleteStreamResult.d.ts +14 -0
  64. package/dist/eventSequences/CompleteStreamResult.d.ts.map +1 -0
  65. package/dist/eventSequences/CompleteStreamResult.js +4 -0
  66. package/dist/eventSequences/CompleteStreamResult.js.map +1 -0
  67. package/dist/eventSequences/ConcurrencyViolation.d.ts +13 -0
  68. package/dist/eventSequences/ConcurrencyViolation.d.ts.map +1 -0
  69. package/dist/eventSequences/ConcurrencyViolation.js +4 -0
  70. package/dist/eventSequences/ConcurrencyViolation.js.map +1 -0
  71. package/dist/eventSequences/EventForEventSourceId.d.ts +8 -0
  72. package/dist/eventSequences/EventForEventSourceId.d.ts.map +1 -1
  73. package/dist/eventSequences/EventSequence.d.ts +35 -1
  74. package/dist/eventSequences/EventSequence.d.ts.map +1 -1
  75. package/dist/eventSequences/EventSequence.js +350 -19
  76. package/dist/eventSequences/EventSequence.js.map +1 -1
  77. package/dist/eventSequences/IEventSequence.d.ts +85 -1
  78. package/dist/eventSequences/IEventSequence.d.ts.map +1 -1
  79. package/dist/eventSequences/WaitForCompletionResult.d.ts +11 -0
  80. package/dist/eventSequences/WaitForCompletionResult.d.ts.map +1 -0
  81. package/dist/eventSequences/WaitForCompletionResult.js +4 -0
  82. package/dist/eventSequences/WaitForCompletionResult.js.map +1 -0
  83. package/dist/eventSequences/index.d.ts +5 -0
  84. package/dist/eventSequences/index.d.ts.map +1 -1
  85. package/dist/eventSequences/index.js +1 -0
  86. package/dist/eventSequences/index.js.map +1 -1
  87. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.d.ts +3 -0
  88. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.d.ts.map +1 -1
  89. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.js +9 -0
  90. package/dist/eventStoreSubscriptions/EventStoreSubscriptions.js.map +1 -1
  91. package/dist/eventStoreSubscriptions/IEventStoreSubscriptions.d.ts +6 -0
  92. package/dist/eventStoreSubscriptions/IEventStoreSubscriptions.d.ts.map +1 -1
  93. package/dist/eventStoreSubscriptions/contracts.d.ts +18 -0
  94. package/dist/eventStoreSubscriptions/contracts.d.ts.map +1 -1
  95. package/dist/eventStoreSubscriptions/contracts.js +106 -0
  96. package/dist/eventStoreSubscriptions/contracts.js.map +1 -1
  97. package/dist/events/constraints/Constraints.js +1 -1
  98. package/dist/events/constraints/Constraints.js.map +1 -1
  99. package/dist/externalServices/ExternalServiceBuilder.d.ts +42 -0
  100. package/dist/externalServices/ExternalServiceBuilder.d.ts.map +1 -0
  101. package/dist/externalServices/ExternalServiceBuilder.js +110 -0
  102. package/dist/externalServices/ExternalServiceBuilder.js.map +1 -0
  103. package/dist/externalServices/ExternalServices.d.ts +19 -0
  104. package/dist/externalServices/ExternalServices.d.ts.map +1 -0
  105. package/dist/externalServices/ExternalServices.js +30 -0
  106. package/dist/externalServices/ExternalServices.js.map +1 -0
  107. package/dist/externalServices/ExternalServicesContracts.d.ts +137 -0
  108. package/dist/externalServices/ExternalServicesContracts.d.ts.map +1 -0
  109. package/dist/externalServices/ExternalServicesContracts.js +654 -0
  110. package/dist/externalServices/ExternalServicesContracts.js.map +1 -0
  111. package/dist/externalServices/IExternalServiceBuilder.d.ts +67 -0
  112. package/dist/externalServices/IExternalServiceBuilder.d.ts.map +1 -0
  113. package/dist/externalServices/IExternalServiceBuilder.js +4 -0
  114. package/dist/externalServices/IExternalServiceBuilder.js.map +1 -0
  115. package/dist/externalServices/IExternalServices.d.ts +13 -0
  116. package/dist/externalServices/IExternalServices.d.ts.map +1 -0
  117. package/dist/externalServices/IExternalServices.js +4 -0
  118. package/dist/externalServices/IExternalServices.js.map +1 -0
  119. package/dist/externalServices/index.d.ts +5 -0
  120. package/dist/externalServices/index.d.ts.map +1 -0
  121. package/dist/externalServices/index.js +5 -0
  122. package/dist/externalServices/index.js.map +1 -0
  123. package/dist/identities/IIdentityManager.d.ts +17 -0
  124. package/dist/identities/IIdentityManager.d.ts.map +1 -0
  125. package/dist/identities/IIdentityManager.js +4 -0
  126. package/dist/identities/IIdentityManager.js.map +1 -0
  127. package/dist/identities/IdentityManager.d.ts +20 -0
  128. package/dist/identities/IdentityManager.d.ts.map +1 -0
  129. package/dist/identities/IdentityManager.js +31 -0
  130. package/dist/identities/IdentityManager.js.map +1 -0
  131. package/dist/identities/index.d.ts +3 -0
  132. package/dist/identities/index.d.ts.map +1 -0
  133. package/dist/identities/index.js +4 -0
  134. package/dist/identities/index.js.map +1 -0
  135. package/dist/index.d.ts +5 -1
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +5 -1
  138. package/dist/index.js.map +1 -1
  139. package/dist/observation/FailedPartition.d.ts +15 -0
  140. package/dist/observation/FailedPartition.d.ts.map +1 -0
  141. package/dist/observation/FailedPartition.js +4 -0
  142. package/dist/observation/FailedPartition.js.map +1 -0
  143. package/dist/observation/FailedPartitionAttempt.d.ts +15 -0
  144. package/dist/observation/FailedPartitionAttempt.d.ts.map +1 -0
  145. package/dist/observation/FailedPartitionAttempt.js +4 -0
  146. package/dist/observation/FailedPartitionAttempt.js.map +1 -0
  147. package/dist/observation/FailedPartitions.d.ts +24 -0
  148. package/dist/observation/FailedPartitions.d.ts.map +1 -0
  149. package/dist/observation/FailedPartitions.js +39 -0
  150. package/dist/observation/FailedPartitions.js.map +1 -0
  151. package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.d.ts +19 -0
  152. package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.d.ts.map +1 -0
  153. package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.js +4 -0
  154. package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.js.map +1 -0
  155. package/dist/observation/ICanBeNotifiedWhenReplay.d.ts +17 -0
  156. package/dist/observation/ICanBeNotifiedWhenReplay.d.ts.map +1 -0
  157. package/dist/observation/ICanBeNotifiedWhenReplay.js +4 -0
  158. package/dist/observation/ICanBeNotifiedWhenReplay.js.map +1 -0
  159. package/dist/observation/IFailedPartitions.d.ts +18 -0
  160. package/dist/observation/IFailedPartitions.d.ts.map +1 -0
  161. package/dist/observation/IFailedPartitions.js +4 -0
  162. package/dist/observation/IFailedPartitions.js.map +1 -0
  163. package/dist/observation/index.d.ts +6 -0
  164. package/dist/observation/index.d.ts.map +1 -1
  165. package/dist/observation/index.js +1 -0
  166. package/dist/observation/index.js.map +1 -1
  167. package/dist/observation/notifyReplayLifecycle.d.ts +13 -0
  168. package/dist/observation/notifyReplayLifecycle.d.ts.map +1 -0
  169. package/dist/observation/notifyReplayLifecycle.js +54 -0
  170. package/dist/observation/notifyReplayLifecycle.js.map +1 -0
  171. package/dist/observation/toClientFailedPartition.d.ts +9 -0
  172. package/dist/observation/toClientFailedPartition.d.ts.map +1 -0
  173. package/dist/observation/toClientFailedPartition.js +23 -0
  174. package/dist/observation/toClientFailedPartition.js.map +1 -0
  175. package/dist/projections/Projections.d.ts +0 -4
  176. package/dist/projections/Projections.d.ts.map +1 -1
  177. package/dist/projections/Projections.js +25 -103
  178. package/dist/projections/Projections.js.map +1 -1
  179. package/dist/projections/declarative/AddBuilder.d.ts +17 -0
  180. package/dist/projections/declarative/AddBuilder.d.ts.map +1 -0
  181. package/dist/projections/declarative/AddBuilder.js +28 -0
  182. package/dist/projections/declarative/AddBuilder.js.map +1 -0
  183. package/dist/projections/declarative/AddChildBuilder.d.ts +56 -0
  184. package/dist/projections/declarative/AddChildBuilder.d.ts.map +1 -0
  185. package/dist/projections/declarative/AddChildBuilder.js +72 -0
  186. package/dist/projections/declarative/AddChildBuilder.js.map +1 -0
  187. package/dist/projections/declarative/ChildrenBuilder.d.ts +28 -0
  188. package/dist/projections/declarative/ChildrenBuilder.d.ts.map +1 -0
  189. package/dist/projections/declarative/ChildrenBuilder.js +72 -0
  190. package/dist/projections/declarative/ChildrenBuilder.js.map +1 -0
  191. package/dist/projections/declarative/CompositeKeyBuilder.d.ts +16 -0
  192. package/dist/projections/declarative/CompositeKeyBuilder.d.ts.map +1 -0
  193. package/dist/projections/declarative/CompositeKeyBuilder.js +29 -0
  194. package/dist/projections/declarative/CompositeKeyBuilder.js.map +1 -0
  195. package/dist/projections/declarative/FromBuilder.d.ts +8 -6
  196. package/dist/projections/declarative/FromBuilder.d.ts.map +1 -1
  197. package/dist/projections/declarative/FromBuilder.js +44 -14
  198. package/dist/projections/declarative/FromBuilder.js.map +1 -1
  199. package/dist/projections/declarative/ICompositeKeyBuilder.d.ts +5 -0
  200. package/dist/projections/declarative/ICompositeKeyBuilder.d.ts.map +1 -1
  201. package/dist/projections/declarative/JoinBuilder.d.ts +7 -5
  202. package/dist/projections/declarative/JoinBuilder.d.ts.map +1 -1
  203. package/dist/projections/declarative/JoinBuilder.js +50 -16
  204. package/dist/projections/declarative/JoinBuilder.js.map +1 -1
  205. package/dist/projections/declarative/NestedBuilder.d.ts +24 -0
  206. package/dist/projections/declarative/NestedBuilder.d.ts.map +1 -0
  207. package/dist/projections/declarative/NestedBuilder.js +60 -0
  208. package/dist/projections/declarative/NestedBuilder.js.map +1 -0
  209. package/dist/projections/declarative/ProjectionBuilderCore.d.ts +127 -0
  210. package/dist/projections/declarative/ProjectionBuilderCore.d.ts.map +1 -0
  211. package/dist/projections/declarative/ProjectionBuilderCore.js +180 -0
  212. package/dist/projections/declarative/ProjectionBuilderCore.js.map +1 -0
  213. package/dist/projections/declarative/ProjectionBuilderFor.d.ts +6 -32
  214. package/dist/projections/declarative/ProjectionBuilderFor.d.ts.map +1 -1
  215. package/dist/projections/declarative/ProjectionBuilderFor.js +24 -118
  216. package/dist/projections/declarative/ProjectionBuilderFor.js.map +1 -1
  217. package/dist/projections/declarative/SubtractBuilder.d.ts +17 -0
  218. package/dist/projections/declarative/SubtractBuilder.d.ts.map +1 -0
  219. package/dist/projections/declarative/SubtractBuilder.js +28 -0
  220. package/dist/projections/declarative/SubtractBuilder.js.map +1 -0
  221. package/dist/projections/declarative/index.d.ts +9 -0
  222. package/dist/projections/declarative/index.d.ts.map +1 -1
  223. package/dist/projections/declarative/index.js +8 -0
  224. package/dist/projections/declarative/index.js.map +1 -1
  225. package/dist/projections/modelBound/childrenAndNestedBuilder.d.ts +90 -0
  226. package/dist/projections/modelBound/childrenAndNestedBuilder.d.ts.map +1 -0
  227. package/dist/projections/modelBound/childrenAndNestedBuilder.js +290 -0
  228. package/dist/projections/modelBound/childrenAndNestedBuilder.js.map +1 -0
  229. package/dist/reactors/ReactorSideEffects.d.ts +29 -0
  230. package/dist/reactors/ReactorSideEffects.d.ts.map +1 -0
  231. package/dist/reactors/ReactorSideEffects.js +70 -0
  232. package/dist/reactors/ReactorSideEffects.js.map +1 -0
  233. package/dist/reactors/Reactors.d.ts +4 -1
  234. package/dist/reactors/Reactors.d.ts.map +1 -1
  235. package/dist/reactors/Reactors.js +23 -4
  236. package/dist/reactors/Reactors.js.map +1 -1
  237. package/dist/reducers/Reducers.d.ts.map +1 -1
  238. package/dist/reducers/Reducers.js +15 -3
  239. package/dist/reducers/Reducers.js.map +1 -1
  240. package/dist/reducers/reducer.d.ts +9 -1
  241. package/dist/reducers/reducer.d.ts.map +1 -1
  242. package/dist/reducers/reducer.js +4 -2
  243. package/dist/reducers/reducer.js.map +1 -1
  244. package/dist/transactions/IUnitOfWork.d.ts +18 -0
  245. package/dist/transactions/IUnitOfWork.d.ts.map +1 -1
  246. package/dist/transactions/UnitOfWork.d.ts +9 -0
  247. package/dist/transactions/UnitOfWork.d.ts.map +1 -1
  248. package/dist/transactions/UnitOfWork.js +14 -0
  249. package/dist/transactions/UnitOfWork.js.map +1 -1
  250. package/dist/tsconfig.tsbuildinfo +1 -1
  251. package/eventSequences/AppendOperationsBroadcaster.ts +83 -0
  252. package/eventSequences/AppendOptions.ts +8 -0
  253. package/eventSequences/AppendResult.ts +16 -0
  254. package/eventSequences/AppendedEventWithResult.ts +17 -0
  255. package/eventSequences/CompleteStreamError.ts +20 -0
  256. package/eventSequences/CompleteStreamResult.ts +13 -0
  257. package/eventSequences/ConcurrencyViolation.ts +18 -0
  258. package/eventSequences/EventForEventSourceId.ts +12 -0
  259. package/eventSequences/EventSequence.spec.ts +588 -0
  260. package/eventSequences/EventSequence.ts +406 -20
  261. package/eventSequences/IEventSequence.ts +109 -1
  262. package/eventSequences/WaitForCompletionResult.ts +15 -0
  263. package/eventSequences/index.ts +5 -0
  264. package/eventStoreSubscriptions/EventStoreSubscriptions.spec.ts +52 -0
  265. package/eventStoreSubscriptions/EventStoreSubscriptions.ts +19 -1
  266. package/eventStoreSubscriptions/IEventStoreSubscriptions.ts +7 -0
  267. package/eventStoreSubscriptions/contracts.ts +126 -0
  268. package/events/constraints/Constraints.ts +1 -1
  269. package/externalServices/ExternalServiceBuilder.ts +128 -0
  270. package/externalServices/ExternalServices.ts +34 -0
  271. package/externalServices/ExternalServicesContracts.ts +709 -0
  272. package/externalServices/IExternalServiceBuilder.ts +76 -0
  273. package/externalServices/IExternalServices.ts +16 -0
  274. package/externalServices/index.ts +7 -0
  275. package/fundamentalsPeerRange.spec.ts +31 -0
  276. package/identities/IIdentityManager.ts +19 -0
  277. package/identities/IdentityManager.ts +32 -0
  278. package/identities/index.ts +5 -0
  279. package/index.ts +6 -0
  280. package/observation/FailedPartition.ts +21 -0
  281. package/observation/FailedPartitionAttempt.ts +21 -0
  282. package/observation/FailedPartitions.spec.ts +75 -0
  283. package/observation/FailedPartitions.ts +44 -0
  284. package/observation/ICanBeNotifiedWhenPartitionReplayed.ts +22 -0
  285. package/observation/ICanBeNotifiedWhenReplay.ts +20 -0
  286. package/observation/IFailedPartitions.ts +22 -0
  287. package/observation/index.ts +6 -0
  288. package/observation/notifyReplayLifecycle.spec.ts +98 -0
  289. package/observation/notifyReplayLifecycle.ts +61 -0
  290. package/observation/toClientFailedPartition.ts +26 -0
  291. package/package.json +16 -3
  292. package/projections/Projections.childrenAndNested.spec.ts +188 -0
  293. package/projections/Projections.spec.ts +131 -0
  294. package/projections/Projections.ts +37 -119
  295. package/projections/declarative/AddBuilder.ts +28 -0
  296. package/projections/declarative/AddChildBuilder.ts +97 -0
  297. package/projections/declarative/ChildrenBuilder.spec.ts +157 -0
  298. package/projections/declarative/ChildrenBuilder.ts +90 -0
  299. package/projections/declarative/CompositeKeyBuilder.spec.ts +117 -0
  300. package/projections/declarative/CompositeKeyBuilder.ts +38 -0
  301. package/projections/declarative/FromBuilder.ts +60 -15
  302. package/projections/declarative/ICompositeKeyBuilder.ts +6 -0
  303. package/projections/declarative/JoinBuilder.ts +66 -17
  304. package/projections/declarative/NestedBuilder.ts +76 -0
  305. package/projections/declarative/ProjectionBuilderCore.ts +257 -0
  306. package/projections/declarative/ProjectionBuilderFor.spec.ts +115 -0
  307. package/projections/declarative/ProjectionBuilderFor.ts +29 -168
  308. package/projections/declarative/SubtractBuilder.ts +28 -0
  309. package/projections/declarative/index.ts +9 -0
  310. package/projections/modelBound/childrenAndNestedBuilder.ts +354 -0
  311. package/reactors/ReactorSideEffects.spec.ts +182 -0
  312. package/reactors/ReactorSideEffects.ts +97 -0
  313. package/reactors/Reactors.ts +29 -4
  314. package/reducers/Reducers.spec.ts +87 -0
  315. package/reducers/Reducers.ts +15 -3
  316. package/reducers/reducer.spec.ts +40 -0
  317. package/reducers/reducer.ts +11 -2
  318. package/transactions/IUnitOfWork.ts +21 -0
  319. package/transactions/UnitOfWork.spec.ts +82 -0
  320. package/transactions/UnitOfWork.ts +20 -0
@@ -0,0 +1,72 @@
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 { PropertyPathResolverProxyHandler } from '@cratis/fundamentals';
4
+ /**
5
+ * Implements {@link IAddChildBuilder} and doubles as a {@link ProxyHandler} so a single probe
6
+ * object can resolve `.addChild()`'s two call shapes at runtime: a plain event-property
7
+ * accessor (`e => e.someProperty`), or a builder callback (`b => b.usingKey(...)`). Known
8
+ * builder members are dispatched to the real implementation below; any other property access
9
+ * (the plain-accessor shape) falls through to the same path-capturing proxy used everywhere
10
+ * else in this file for `PropertyAccessor<T>` resolution.
11
+ * @template TChildModel - The child model type.
12
+ * @template TEvent - The event type.
13
+ */
14
+ export class AddChildBuilder {
15
+ _pathHandler = new PropertyPathResolverProxyHandler();
16
+ _pathProxy = new Proxy({}, this._pathHandler);
17
+ _usedAsBuilder = false;
18
+ _identifiedByProperty;
19
+ _usingKeyProperty;
20
+ /** Whether any builder member (`identifiedBy`/`usingKey`) was invoked on the probe. */
21
+ get usedAsBuilder() {
22
+ return this._usedAsBuilder;
23
+ }
24
+ /** The child model property captured via `identifiedBy()`, if any. */
25
+ get identifiedByProperty() {
26
+ return this._identifiedByProperty;
27
+ }
28
+ /** The event property captured via `usingKey()`, if any. */
29
+ get usingKeyProperty() {
30
+ return this._usingKeyProperty;
31
+ }
32
+ /** The event property path captured when the probe was used as a plain accessor. */
33
+ get capturedEventProperty() {
34
+ return this._pathHandler.property;
35
+ }
36
+ /** @inheritdoc */
37
+ identifiedBy(childPropertyAccessor) {
38
+ this._usedAsBuilder = true;
39
+ const handler = new PropertyPathResolverProxyHandler();
40
+ const proxy = new Proxy({}, handler);
41
+ childPropertyAccessor(proxy);
42
+ this._identifiedByProperty = handler.property;
43
+ return this;
44
+ }
45
+ /** @inheritdoc */
46
+ usingKey(eventPropertyAccessor) {
47
+ this._usedAsBuilder = true;
48
+ const handler = new PropertyPathResolverProxyHandler();
49
+ const proxy = new Proxy({}, handler);
50
+ eventPropertyAccessor(proxy);
51
+ this._usingKeyProperty = handler.property;
52
+ return this;
53
+ }
54
+ /**
55
+ * Proxy `get` trap: known builder members dispatch to the real implementation above;
56
+ * anything else (a plain event property accessed by the accessor overload) falls through
57
+ * to path-capturing so the accessor overload keeps working against the same probe.
58
+ * @param _target - The proxy's (unused) empty target object.
59
+ * @param prop - The accessed property name.
60
+ * @returns The resolved member.
61
+ */
62
+ get(_target, prop) {
63
+ if (prop === 'identifiedBy') {
64
+ return this.identifiedBy.bind(this);
65
+ }
66
+ if (prop === 'usingKey') {
67
+ return this.usingKey.bind(this);
68
+ }
69
+ return Reflect.get(this._pathProxy, prop);
70
+ }
71
+ }
72
+ //# sourceMappingURL=AddChildBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddChildBuilder.js","sourceRoot":"","sources":["../../../projections/declarative/AddChildBuilder.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAoB,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAmB1F;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAe;IACP,YAAY,GAAG,IAAI,gCAAgC,EAAE,CAAC;IACtD,UAAU,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,cAAc,GAAG,KAAK,CAAC;IACvB,qBAAqB,CAAqB;IAC1C,iBAAiB,CAAqB;IAE9C,uFAAuF;IACvF,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,sEAAsE;IACtE,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,4DAA4D;IAC5D,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,oFAAoF;IACpF,IAAI,qBAAqB;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED,kBAAkB;IAClB,YAAY,CAAC,qBAAoD;QAC7D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,gCAAgC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrC,qBAAqB,CAAC,KAAoB,CAAC,CAAC;QAC5C,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC9C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB;IAClB,QAAQ,CAAC,qBAA+C;QACpD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,gCAAgC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrC,qBAAqB,CAAC,KAAe,CAAC,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAC,OAAe,EAAE,IAAqB;QACtC,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAoB,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;CACJ"}
@@ -0,0 +1,28 @@
1
+ import { PropertyAccessor } from '@cratis/fundamentals';
2
+ import { ChildrenDefinitionLike, ProjectionBuilderCore } from './ProjectionBuilderCore';
3
+ import { IChildrenBuilder } from './IChildrenBuilder';
4
+ import { INestedBuilder } from './INestedBuilder';
5
+ /**
6
+ * Concrete implementation of {@link IChildrenBuilder}, building the `ChildrenDefinition` for a
7
+ * children collection sub-projection reached through `.children()`.
8
+ * @template TParentReadModel - The parent read model type.
9
+ * @template TChildReadModel - The child read model type.
10
+ */
11
+ export declare class ChildrenBuilder<TParentReadModel, TChildReadModel> extends ProjectionBuilderCore<TChildReadModel, IChildrenBuilder<TParentReadModel, TChildReadModel>> implements IChildrenBuilder<TParentReadModel, TChildReadModel> {
12
+ private _identifiedBy;
13
+ private _fromEventPropertyPath;
14
+ /** @inheritdoc */
15
+ identifiedBy(propertyAccessor: PropertyAccessor<TChildReadModel>): IChildrenBuilder<TParentReadModel, TChildReadModel>;
16
+ /** @inheritdoc */
17
+ fromEventProperty<TEvent>(propertyAccessor: PropertyAccessor<TEvent>): IChildrenBuilder<TParentReadModel, TChildReadModel>;
18
+ /** @inheritdoc */
19
+ children<TGrandchildModel>(targetPropertyAccessor: PropertyAccessor<TChildReadModel>, builderCallback: (builder: IChildrenBuilder<TChildReadModel, TGrandchildModel>) => void): IChildrenBuilder<TParentReadModel, TChildReadModel>;
20
+ /** @inheritdoc */
21
+ nested<TNestedModel>(targetPropertyAccessor: PropertyAccessor<TChildReadModel>, builderCallback: (builder: INestedBuilder<TChildReadModel, TNestedModel>) => void): IChildrenBuilder<TParentReadModel, TChildReadModel>;
22
+ /**
23
+ * Builds the {@link ChildrenDefinitionLike} representing this children collection.
24
+ * @returns The accumulated children definition.
25
+ */
26
+ buildDefinition(): ChildrenDefinitionLike;
27
+ }
28
+ //# sourceMappingURL=ChildrenBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChildrenBuilder.d.ts","sourceRoot":"","sources":["../../../projections/declarative/ChildrenBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAoC,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD;;;;;GAKG;AACH,qBAAa,eAAe,CAAC,gBAAgB,EAAE,eAAe,CAC1D,SAAQ,qBAAqB,CAAC,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAClG,YAAW,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,CAAC;IAC9D,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,sBAAsB,CAAqB;IAEnD,kBAAkB;IAClB,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,eAAe,CAAC,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,CAAC;IAQtH,kBAAkB;IAClB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,CAAC;IAQ1H,kBAAkB;IAClB,QAAQ,CAAC,gBAAgB,EACrB,sBAAsB,EAAE,gBAAgB,CAAC,eAAe,CAAC,EACzD,eAAe,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,CAAC,KAAK,IAAI,GACxF,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,CAAC;IAWtD,kBAAkB;IAClB,MAAM,CAAC,YAAY,EACf,sBAAsB,EAAE,gBAAgB,CAAC,eAAe,CAAC,EACzD,eAAe,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,eAAe,EAAE,YAAY,CAAC,KAAK,IAAI,GAClF,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,CAAC;IAWtD;;;OAGG;IACH,eAAe,IAAI,sBAAsB;CAgB5C"}
@@ -0,0 +1,72 @@
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 { PropertyPathResolverProxyHandler } from '@cratis/fundamentals';
4
+ import { ProjectionBuilderCore } from './ProjectionBuilderCore';
5
+ import { NestedBuilder } from './NestedBuilder';
6
+ /**
7
+ * Concrete implementation of {@link IChildrenBuilder}, building the `ChildrenDefinition` for a
8
+ * children collection sub-projection reached through `.children()`.
9
+ * @template TParentReadModel - The parent read model type.
10
+ * @template TChildReadModel - The child read model type.
11
+ */
12
+ export class ChildrenBuilder extends ProjectionBuilderCore {
13
+ _identifiedBy;
14
+ _fromEventPropertyPath;
15
+ /** @inheritdoc */
16
+ identifiedBy(propertyAccessor) {
17
+ const handler = new PropertyPathResolverProxyHandler();
18
+ const proxy = new Proxy({}, handler);
19
+ propertyAccessor(proxy);
20
+ this._identifiedBy = handler.property;
21
+ return this;
22
+ }
23
+ /** @inheritdoc */
24
+ fromEventProperty(propertyAccessor) {
25
+ const handler = new PropertyPathResolverProxyHandler();
26
+ const proxy = new Proxy({}, handler);
27
+ propertyAccessor(proxy);
28
+ this._fromEventPropertyPath = handler.property;
29
+ return this;
30
+ }
31
+ /** @inheritdoc */
32
+ children(targetPropertyAccessor, builderCallback) {
33
+ const handler = new PropertyPathResolverProxyHandler();
34
+ const proxy = new Proxy({}, handler);
35
+ targetPropertyAccessor(proxy);
36
+ const builder = new ChildrenBuilder();
37
+ builderCallback(builder);
38
+ this._children[handler.property] = builder.buildDefinition();
39
+ return this;
40
+ }
41
+ /** @inheritdoc */
42
+ nested(targetPropertyAccessor, builderCallback) {
43
+ const handler = new PropertyPathResolverProxyHandler();
44
+ const proxy = new Proxy({}, handler);
45
+ targetPropertyAccessor(proxy);
46
+ const builder = new NestedBuilder();
47
+ builderCallback(builder);
48
+ this._nested[handler.property] = builder.buildDefinition();
49
+ return this;
50
+ }
51
+ /**
52
+ * Builds the {@link ChildrenDefinitionLike} representing this children collection.
53
+ * @returns The accumulated children definition.
54
+ */
55
+ buildDefinition() {
56
+ return {
57
+ IdentifiedBy: this._identifiedBy ?? '$eventSourceId',
58
+ From: this._from,
59
+ Join: this._join,
60
+ Children: this._children,
61
+ All: this._all,
62
+ FromEventProperty: this._fromEventPropertyPath === undefined
63
+ ? undefined
64
+ : { Event: undefined, PropertyExpression: this._fromEventPropertyPath },
65
+ RemovedWith: this._removedWith,
66
+ RemovedWithJoin: this._removedWithJoin,
67
+ AutoMap: this._autoMap,
68
+ Nested: this._nested
69
+ };
70
+ }
71
+ }
72
+ //# sourceMappingURL=ChildrenBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChildrenBuilder.js","sourceRoot":"","sources":["../../../projections/declarative/ChildrenBuilder.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAoB,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAA0B,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGxF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,OAAO,eACT,SAAQ,qBAA2F;IAE3F,aAAa,CAAqB;IAClC,sBAAsB,CAAqB;IAEnD,kBAAkB;IAClB,YAAY,CAAC,gBAAmD;QAC5D,MAAM,OAAO,GAAG,IAAI,gCAAgC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrC,gBAAgB,CAAC,KAAwB,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB;IAClB,iBAAiB,CAAS,gBAA0C;QAChE,MAAM,OAAO,GAAG,IAAI,gCAAgC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrC,gBAAgB,CAAC,KAAe,CAAC,CAAC;QAClC,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB;IAClB,QAAQ,CACJ,sBAAyD,EACzD,eAAuF;QAEvF,MAAM,OAAO,GAAG,IAAI,gCAAgC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrC,sBAAsB,CAAC,KAAwB,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,IAAI,eAAe,EAAqC,CAAC;QACzE,eAAe,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB;IAClB,MAAM,CACF,sBAAyD,EACzD,eAAiF;QAEjF,MAAM,OAAO,GAAG,IAAI,gCAAgC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrC,sBAAsB,CAAC,KAAwB,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,IAAI,aAAa,EAAiC,CAAC;QACnE,eAAe,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,eAAe;QACX,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,aAAa,IAAI,gBAAgB;YACpD,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,KAAK,SAAS;gBACxD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,EAAE;YAC3E,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,MAAM,EAAE,IAAI,CAAC,OAAO;SACvB,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,16 @@
1
+ import { PropertyAccessor } from '@cratis/fundamentals';
2
+ import { ICompositeKeyBuilder } from './ICompositeKeyBuilder';
3
+ /**
4
+ * Concrete implementation of {@link ICompositeKeyBuilder} that builds a `$composite(...)` key
5
+ * expression from multiple event properties mapped onto named parts of a key type.
6
+ * @template TKeyType - The composite key type.
7
+ * @template TEvent - The event type.
8
+ */
9
+ export declare class CompositeKeyBuilder<TKeyType, TEvent> implements ICompositeKeyBuilder<TKeyType, TEvent> {
10
+ private readonly _parts;
11
+ /** @inheritdoc */
12
+ set(targetPropertyAccessor: PropertyAccessor<TKeyType>, sourcePropertyAccessor: PropertyAccessor<TEvent>): ICompositeKeyBuilder<TKeyType, TEvent>;
13
+ /** @inheritdoc */
14
+ build(): string;
15
+ }
16
+ //# sourceMappingURL=CompositeKeyBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompositeKeyBuilder.d.ts","sourceRoot":"","sources":["../../../projections/declarative/CompositeKeyBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAoC,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;GAKG;AACH,qBAAa,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAE,YAAW,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC;IAChG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuD;IAE9E,kBAAkB;IAClB,GAAG,CACC,sBAAsB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClD,sBAAsB,EAAE,gBAAgB,CAAC,MAAM,CAAC,GACjD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC;IAazC,kBAAkB;IAClB,KAAK,IAAI,MAAM;CAIlB"}
@@ -0,0 +1,29 @@
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 { PropertyPathResolverProxyHandler } from '@cratis/fundamentals';
4
+ /**
5
+ * Concrete implementation of {@link ICompositeKeyBuilder} that builds a `$composite(...)` key
6
+ * expression from multiple event properties mapped onto named parts of a key type.
7
+ * @template TKeyType - The composite key type.
8
+ * @template TEvent - The event type.
9
+ */
10
+ export class CompositeKeyBuilder {
11
+ _parts = [];
12
+ /** @inheritdoc */
13
+ set(targetPropertyAccessor, sourcePropertyAccessor) {
14
+ const targetHandler = new PropertyPathResolverProxyHandler();
15
+ const targetProxy = new Proxy({}, targetHandler);
16
+ targetPropertyAccessor(targetProxy);
17
+ const sourceHandler = new PropertyPathResolverProxyHandler();
18
+ const sourceProxy = new Proxy({}, sourceHandler);
19
+ sourcePropertyAccessor(sourceProxy);
20
+ this._parts.push({ property: targetHandler.property, expression: sourceHandler.property });
21
+ return this;
22
+ }
23
+ /** @inheritdoc */
24
+ build() {
25
+ const parts = this._parts.map(part => `${part.property}=${part.expression}`).join(',');
26
+ return `$composite(${parts})`;
27
+ }
28
+ }
29
+ //# sourceMappingURL=CompositeKeyBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompositeKeyBuilder.js","sourceRoot":"","sources":["../../../projections/declarative/CompositeKeyBuilder.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAoB,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAG1F;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IACX,MAAM,GAAoD,EAAE,CAAC;IAE9E,kBAAkB;IAClB,GAAG,CACC,sBAAkD,EAClD,sBAAgD;QAEhD,MAAM,aAAa,GAAG,IAAI,gCAAgC,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACjD,sBAAsB,CAAC,WAAuB,CAAC,CAAC;QAEhD,MAAM,aAAa,GAAG,IAAI,gCAAgC,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACjD,sBAAsB,CAAC,WAAqB,CAAC,CAAC;QAE9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB;IAClB,KAAK;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvF,OAAO,cAAc,KAAK,GAAG,CAAC;IAClC,CAAC;CACJ"}
@@ -1,4 +1,5 @@
1
1
  import { PropertyAccessor } from '@cratis/fundamentals';
2
+ import { ChildAdditionEntry } from './AddChildBuilder';
2
3
  import { IAddBuilder } from './IAddBuilder';
3
4
  import { IAddChildBuilder } from './IAddChildBuilder';
4
5
  import { ICompositeKeyBuilder } from './ICompositeKeyBuilder';
@@ -12,6 +13,7 @@ export interface FromEntry {
12
13
  properties: Record<string, string>;
13
14
  key: string;
14
15
  parentKey: string;
16
+ children: ChildAdditionEntry[];
15
17
  }
16
18
  /**
17
19
  * Concrete implementation of {@link IFromBuilder}.
@@ -31,9 +33,9 @@ export declare class FromBuilder<TReadModel, TEvent> implements IFromBuilder<TRe
31
33
  /** @inheritdoc */
32
34
  usingParentKeyFromContext(contextPropertyName: string): this;
33
35
  /** @inheritdoc */
34
- usingCompositeKey<TKeyType>(_builderCallback: (builder: ICompositeKeyBuilder<TKeyType, TEvent>) => void): this;
36
+ usingCompositeKey<TKeyType>(builderCallback: (builder: ICompositeKeyBuilder<TKeyType, TEvent>) => void): this;
35
37
  /** @inheritdoc */
36
- usingParentCompositeKey<TKeyType>(_builderCallback: (builder: ICompositeKeyBuilder<TKeyType, TEvent>) => void): this;
38
+ usingParentCompositeKey<TKeyType>(builderCallback: (builder: ICompositeKeyBuilder<TKeyType, TEvent>) => void): this;
37
39
  /** @inheritdoc */
38
40
  usingConstantKey(value: string): this;
39
41
  /** @inheritdoc */
@@ -43,13 +45,13 @@ export declare class FromBuilder<TReadModel, TEvent> implements IFromBuilder<TRe
43
45
  /** @inheritdoc */
44
46
  decrement(readModelPropertyAccessor: PropertyAccessor<TReadModel>): this;
45
47
  /** @inheritdoc */
46
- add(_readModelPropertyAccessor: PropertyAccessor<TReadModel>): IAddBuilder<TEvent, this>;
48
+ add(readModelPropertyAccessor: PropertyAccessor<TReadModel>): IAddBuilder<TEvent, this>;
47
49
  /** @inheritdoc */
48
- subtract(_readModelPropertyAccessor: PropertyAccessor<TReadModel>): ISubtractBuilder<TEvent, this>;
50
+ subtract(readModelPropertyAccessor: PropertyAccessor<TReadModel>): ISubtractBuilder<TEvent, this>;
49
51
  /** @inheritdoc */
50
- count(_readModelPropertyAccessor: PropertyAccessor<TReadModel>): this;
52
+ count(readModelPropertyAccessor: PropertyAccessor<TReadModel>): this;
51
53
  /** @inheritdoc */
52
- addChild<TChildModel>(_targetPropertyAccessor: PropertyAccessor<TReadModel>, _eventPropertyAccessorOrBuilderCallback: PropertyAccessor<TEvent> | ((builder: IAddChildBuilder<TChildModel, TEvent>) => void)): this;
54
+ addChild<TChildModel>(targetPropertyAccessor: PropertyAccessor<TReadModel>, eventPropertyAccessorOrBuilderCallback: PropertyAccessor<TEvent> | ((builder: IAddChildBuilder<TChildModel, TEvent>) => void)): this;
53
55
  /** @inheritdoc */
54
56
  setThisValue(): ISetBuilder<TEvent, this>;
55
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FromBuilder.d.ts","sourceRoot":"","sources":["../../../projections/declarative/FromBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAoC,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,WAAW,CAAC,UAAU,EAAE,MAAM,CAAE,YAAW,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;IACpF,QAAQ,CAAC,KAAK,EAAE,SAAS,CAIvB;IAEF,kBAAkB;IAClB,GAAG,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAYnH,kBAAkB;IAClB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI;IAQrD,kBAAkB;IAClB,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI;IAKtD,kBAAkB;IAClB,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI;IAQ3D,kBAAkB;IAClB,yBAAyB,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI;IAK5D,kBAAkB;IAClB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI;IAI9G,kBAAkB;IAClB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI;IAIpH,kBAAkB;IAClB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrC,kBAAkB;IAClB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3C,kBAAkB;IAClB,SAAS,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,IAAI;IAQxE,kBAAkB;IAClB,SAAS,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,IAAI;IAQxE,kBAAkB;IAClB,GAAG,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;IAIxF,kBAAkB;IAClB,QAAQ,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC;IAIlG,kBAAkB;IAClB,KAAK,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,IAAI;IAIrE,kBAAkB;IAClB,QAAQ,CAAC,WAAW,EAChB,uBAAuB,EAAE,gBAAgB,CAAC,UAAU,CAAC,EACrD,uCAAuC,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,GAC/H,IAAI;IAIP,kBAAkB;IAClB,YAAY,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;CAG5C"}
1
+ {"version":3,"file":"FromBuilder.d.ts","sourceRoot":"","sources":["../../../projections/declarative/FromBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  // Copyright (c) Cratis. All rights reserved.
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
  import { PropertyPathResolverProxyHandler } from '@cratis/fundamentals';
4
+ import { AddBuilder } from './AddBuilder';
5
+ import { AddChildBuilder } from './AddChildBuilder';
6
+ import { CompositeKeyBuilder } from './CompositeKeyBuilder';
4
7
  import { SetBuilder } from './SetBuilder';
8
+ import { SubtractBuilder } from './SubtractBuilder';
5
9
  /**
6
10
  * Concrete implementation of {@link IFromBuilder}.
7
11
  * @template TReadModel - The read model type.
@@ -11,7 +15,8 @@ export class FromBuilder {
11
15
  entry = {
12
16
  properties: {},
13
17
  key: '$eventSourceId',
14
- parentKey: ''
18
+ parentKey: '',
19
+ children: []
15
20
  };
16
21
  /** @inheritdoc */
17
22
  set(readModelPropertyAccessor) {
@@ -48,12 +53,18 @@ export class FromBuilder {
48
53
  return this;
49
54
  }
50
55
  /** @inheritdoc */
51
- usingCompositeKey(_builderCallback) {
52
- throw new Error('usingCompositeKey is not implemented yet.');
56
+ usingCompositeKey(builderCallback) {
57
+ const compositeKeyBuilder = new CompositeKeyBuilder();
58
+ builderCallback(compositeKeyBuilder);
59
+ this.entry.key = compositeKeyBuilder.build();
60
+ return this;
53
61
  }
54
62
  /** @inheritdoc */
55
- usingParentCompositeKey(_builderCallback) {
56
- throw new Error('usingParentCompositeKey is not implemented yet.');
63
+ usingParentCompositeKey(builderCallback) {
64
+ const compositeKeyBuilder = new CompositeKeyBuilder();
65
+ builderCallback(compositeKeyBuilder);
66
+ this.entry.parentKey = compositeKeyBuilder.build();
67
+ return this;
57
68
  }
58
69
  /** @inheritdoc */
59
70
  usingConstantKey(value) {
@@ -82,24 +93,43 @@ export class FromBuilder {
82
93
  return this;
83
94
  }
84
95
  /** @inheritdoc */
85
- add(_readModelPropertyAccessor) {
86
- throw new Error('add is not implemented yet.');
96
+ add(readModelPropertyAccessor) {
97
+ const handler = new PropertyPathResolverProxyHandler();
98
+ const proxy = new Proxy({}, handler);
99
+ readModelPropertyAccessor(proxy);
100
+ return new AddBuilder(handler.property, (property, expression) => { this.entry.properties[property] = expression; }, this);
87
101
  }
88
102
  /** @inheritdoc */
89
- subtract(_readModelPropertyAccessor) {
90
- throw new Error('subtract is not implemented yet.');
103
+ subtract(readModelPropertyAccessor) {
104
+ const handler = new PropertyPathResolverProxyHandler();
105
+ const proxy = new Proxy({}, handler);
106
+ readModelPropertyAccessor(proxy);
107
+ return new SubtractBuilder(handler.property, (property, expression) => { this.entry.properties[property] = expression; }, this);
91
108
  }
92
109
  /** @inheritdoc */
93
- count(_readModelPropertyAccessor) {
94
- throw new Error('count is not implemented yet.');
110
+ count(readModelPropertyAccessor) {
111
+ const handler = new PropertyPathResolverProxyHandler();
112
+ const proxy = new Proxy({}, handler);
113
+ readModelPropertyAccessor(proxy);
114
+ this.entry.properties[handler.property] = '$count';
115
+ return this;
95
116
  }
96
117
  /** @inheritdoc */
97
- addChild(_targetPropertyAccessor, _eventPropertyAccessorOrBuilderCallback) {
98
- throw new Error('addChild is not implemented yet.');
118
+ addChild(targetPropertyAccessor, eventPropertyAccessorOrBuilderCallback) {
119
+ const targetHandler = new PropertyPathResolverProxyHandler();
120
+ const targetProxy = new Proxy({}, targetHandler);
121
+ targetPropertyAccessor(targetProxy);
122
+ const probe = new AddChildBuilder();
123
+ const probeProxy = new Proxy({}, probe);
124
+ eventPropertyAccessorOrBuilderCallback(probeProxy);
125
+ this.entry.children.push(probe.usedAsBuilder
126
+ ? { targetProperty: targetHandler.property, identifiedBy: probe.identifiedByProperty, usingKey: probe.usingKeyProperty }
127
+ : { targetProperty: targetHandler.property, fromEventProperty: probe.capturedEventProperty });
128
+ return this;
99
129
  }
100
130
  /** @inheritdoc */
101
131
  setThisValue() {
102
- throw new Error('setThisValue is not implemented yet.');
132
+ return new SetBuilder('$this', (rp, expr) => { this.entry.properties[rp] = expr; }, this);
103
133
  }
104
134
  }
105
135
  //# sourceMappingURL=FromBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FromBuilder.js","sourceRoot":"","sources":["../../../projections/declarative/FromBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FromBuilder.js","sourceRoot":"","sources":["../../../projections/declarative/FromBuilder.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,10 @@ export interface ICompositeKeyBuilder<TKeyType, TEvent> {
12
12
  * @returns This builder for fluent chaining.
13
13
  */
14
14
  set(targetPropertyAccessor: PropertyAccessor<TKeyType>, sourcePropertyAccessor: PropertyAccessor<TEvent>): ICompositeKeyBuilder<TKeyType, TEvent>;
15
+ /**
16
+ * Builds the composite key expression from the configured parts.
17
+ * @returns The `$composite(...)` property expression.
18
+ */
19
+ build(): string;
15
20
  }
16
21
  //# sourceMappingURL=ICompositeKeyBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ICompositeKeyBuilder.d.ts","sourceRoot":"","sources":["../../../projections/declarative/ICompositeKeyBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB,CAAC,QAAQ,EAAE,MAAM;IAClD;;;;;OAKG;IACH,GAAG,CACC,sBAAsB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClD,sBAAsB,EAAE,gBAAgB,CAAC,MAAM,CAAC,GACjD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CAC7C"}
1
+ {"version":3,"file":"ICompositeKeyBuilder.d.ts","sourceRoot":"","sources":["../../../projections/declarative/ICompositeKeyBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB,CAAC,QAAQ,EAAE,MAAM;IAClD;;;;;OAKG;IACH,GAAG,CACC,sBAAsB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClD,sBAAsB,EAAE,gBAAgB,CAAC,MAAM,CAAC,GACjD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE1C;;;OAGG;IACH,KAAK,IAAI,MAAM,CAAC;CACnB"}
@@ -1,4 +1,5 @@
1
1
  import { PropertyAccessor } from '@cratis/fundamentals';
2
+ import { ChildAdditionEntry } from './AddChildBuilder';
2
3
  import { IAddBuilder } from './IAddBuilder';
3
4
  import { IAddChildBuilder } from './IAddChildBuilder';
4
5
  import { ICompositeKeyBuilder } from './ICompositeKeyBuilder';
@@ -12,6 +13,7 @@ export interface JoinEntry {
12
13
  on: string;
13
14
  properties: Record<string, string>;
14
15
  key: string;
16
+ children: ChildAdditionEntry[];
15
17
  }
16
18
  /**
17
19
  * Concrete implementation of {@link IJoinBuilder}.
@@ -33,7 +35,7 @@ export declare class JoinBuilder<TReadModel, TEvent> implements IJoinBuilder<TRe
33
35
  /** @inheritdoc */
34
36
  usingParentKeyFromContext(_contextPropertyName: string): this;
35
37
  /** @inheritdoc */
36
- usingCompositeKey<TKeyType>(_builderCallback: (builder: ICompositeKeyBuilder<TKeyType, TEvent>) => void): this;
38
+ usingCompositeKey<TKeyType>(builderCallback: (builder: ICompositeKeyBuilder<TKeyType, TEvent>) => void): this;
37
39
  /** @inheritdoc */
38
40
  usingParentCompositeKey<TKeyType>(_builderCallback: (builder: ICompositeKeyBuilder<TKeyType, TEvent>) => void): this;
39
41
  /** @inheritdoc */
@@ -45,13 +47,13 @@ export declare class JoinBuilder<TReadModel, TEvent> implements IJoinBuilder<TRe
45
47
  /** @inheritdoc */
46
48
  decrement(readModelPropertyAccessor: PropertyAccessor<TReadModel>): this;
47
49
  /** @inheritdoc */
48
- add(_readModelPropertyAccessor: PropertyAccessor<TReadModel>): IAddBuilder<TEvent, this>;
50
+ add(readModelPropertyAccessor: PropertyAccessor<TReadModel>): IAddBuilder<TEvent, this>;
49
51
  /** @inheritdoc */
50
- subtract(_readModelPropertyAccessor: PropertyAccessor<TReadModel>): ISubtractBuilder<TEvent, this>;
52
+ subtract(readModelPropertyAccessor: PropertyAccessor<TReadModel>): ISubtractBuilder<TEvent, this>;
51
53
  /** @inheritdoc */
52
- count(_readModelPropertyAccessor: PropertyAccessor<TReadModel>): this;
54
+ count(readModelPropertyAccessor: PropertyAccessor<TReadModel>): this;
53
55
  /** @inheritdoc */
54
- addChild<TChildModel>(_targetPropertyAccessor: PropertyAccessor<TReadModel>, _eventPropertyAccessorOrBuilderCallback: PropertyAccessor<TEvent> | ((builder: IAddChildBuilder<TChildModel, TEvent>) => void)): this;
56
+ addChild<TChildModel>(targetPropertyAccessor: PropertyAccessor<TReadModel>, eventPropertyAccessorOrBuilderCallback: PropertyAccessor<TEvent> | ((builder: IAddChildBuilder<TChildModel, TEvent>) => void)): this;
55
57
  /** @inheritdoc */
56
58
  setThisValue(): ISetBuilder<TEvent, this>;
57
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"JoinBuilder.d.ts","sourceRoot":"","sources":["../../../projections/declarative/JoinBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JoinBuilder.d.ts","sourceRoot":"","sources":["../../../projections/declarative/JoinBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  // Copyright (c) Cratis. All rights reserved.
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
  import { PropertyPathResolverProxyHandler } from '@cratis/fundamentals';
4
+ import { AddBuilder } from './AddBuilder';
5
+ import { AddChildBuilder } from './AddChildBuilder';
6
+ import { CompositeKeyBuilder } from './CompositeKeyBuilder';
4
7
  import { SetBuilder } from './SetBuilder';
8
+ import { SubtractBuilder } from './SubtractBuilder';
5
9
  /**
6
10
  * Concrete implementation of {@link IJoinBuilder}.
7
11
  * @template TReadModel - The read model type.
@@ -11,7 +15,8 @@ export class JoinBuilder {
11
15
  entry = {
12
16
  on: '',
13
17
  properties: {},
14
- key: '$eventSourceId'
18
+ key: '$eventSourceId',
19
+ children: []
15
20
  };
16
21
  /** @inheritdoc */
17
22
  on(readModelPropertyAccessor) {
@@ -44,19 +49,28 @@ export class JoinBuilder {
44
49
  }
45
50
  /** @inheritdoc */
46
51
  usingParentKey(_keyAccessor) {
47
- throw new Error('usingParentKey is not supported for join mappings.');
52
+ // A join's wire definition (JoinDefinition) has no ParentKey slot - the C# client
53
+ // accepts this call too (it is inherited from the shared key-builder base) but its
54
+ // JoinBuilder.Build() only ever reads On/Properties/Key, so the value is silently
55
+ // unused there as well. Matching that: accept the call, but it has no effect.
56
+ return this;
48
57
  }
49
58
  /** @inheritdoc */
50
59
  usingParentKeyFromContext(_contextPropertyName) {
51
- throw new Error('usingParentKeyFromContext is not supported for join mappings.');
60
+ // See usingParentKey - accepted for interface parity with From, no wire effect for Join.
61
+ return this;
52
62
  }
53
63
  /** @inheritdoc */
54
- usingCompositeKey(_builderCallback) {
55
- throw new Error('usingCompositeKey is not implemented yet.');
64
+ usingCompositeKey(builderCallback) {
65
+ const compositeKeyBuilder = new CompositeKeyBuilder();
66
+ builderCallback(compositeKeyBuilder);
67
+ this.entry.key = compositeKeyBuilder.build();
68
+ return this;
56
69
  }
57
70
  /** @inheritdoc */
58
71
  usingParentCompositeKey(_builderCallback) {
59
- throw new Error('usingParentCompositeKey is not supported for join mappings.');
72
+ // See usingParentKey - accepted for interface parity with From, no wire effect for Join.
73
+ return this;
60
74
  }
61
75
  /** @inheritdoc */
62
76
  usingConstantKey(value) {
@@ -65,7 +79,8 @@ export class JoinBuilder {
65
79
  }
66
80
  /** @inheritdoc */
67
81
  usingConstantParentKey(_value) {
68
- throw new Error('usingConstantParentKey is not supported for join mappings.');
82
+ // See usingParentKey - accepted for interface parity with From, no wire effect for Join.
83
+ return this;
69
84
  }
70
85
  /** @inheritdoc */
71
86
  increment(readModelPropertyAccessor) {
@@ -84,24 +99,43 @@ export class JoinBuilder {
84
99
  return this;
85
100
  }
86
101
  /** @inheritdoc */
87
- add(_readModelPropertyAccessor) {
88
- throw new Error('add is not implemented yet.');
102
+ add(readModelPropertyAccessor) {
103
+ const handler = new PropertyPathResolverProxyHandler();
104
+ const proxy = new Proxy({}, handler);
105
+ readModelPropertyAccessor(proxy);
106
+ return new AddBuilder(handler.property, (property, expression) => { this.entry.properties[property] = expression; }, this);
89
107
  }
90
108
  /** @inheritdoc */
91
- subtract(_readModelPropertyAccessor) {
92
- throw new Error('subtract is not implemented yet.');
109
+ subtract(readModelPropertyAccessor) {
110
+ const handler = new PropertyPathResolverProxyHandler();
111
+ const proxy = new Proxy({}, handler);
112
+ readModelPropertyAccessor(proxy);
113
+ return new SubtractBuilder(handler.property, (property, expression) => { this.entry.properties[property] = expression; }, this);
93
114
  }
94
115
  /** @inheritdoc */
95
- count(_readModelPropertyAccessor) {
96
- throw new Error('count is not implemented yet.');
116
+ count(readModelPropertyAccessor) {
117
+ const handler = new PropertyPathResolverProxyHandler();
118
+ const proxy = new Proxy({}, handler);
119
+ readModelPropertyAccessor(proxy);
120
+ this.entry.properties[handler.property] = '$count';
121
+ return this;
97
122
  }
98
123
  /** @inheritdoc */
99
- addChild(_targetPropertyAccessor, _eventPropertyAccessorOrBuilderCallback) {
100
- throw new Error('addChild is not implemented yet.');
124
+ addChild(targetPropertyAccessor, eventPropertyAccessorOrBuilderCallback) {
125
+ const targetHandler = new PropertyPathResolverProxyHandler();
126
+ const targetProxy = new Proxy({}, targetHandler);
127
+ targetPropertyAccessor(targetProxy);
128
+ const probe = new AddChildBuilder();
129
+ const probeProxy = new Proxy({}, probe);
130
+ eventPropertyAccessorOrBuilderCallback(probeProxy);
131
+ this.entry.children.push(probe.usedAsBuilder
132
+ ? { targetProperty: targetHandler.property, identifiedBy: probe.identifiedByProperty, usingKey: probe.usingKeyProperty }
133
+ : { targetProperty: targetHandler.property, fromEventProperty: probe.capturedEventProperty });
134
+ return this;
101
135
  }
102
136
  /** @inheritdoc */
103
137
  setThisValue() {
104
- throw new Error('setThisValue is not implemented yet.');
138
+ return new SetBuilder('$this', (rp, expr) => { this.entry.properties[rp] = expr; }, this);
105
139
  }
106
140
  }
107
141
  //# sourceMappingURL=JoinBuilder.js.map