@cratis/chronicle 3.0.0 → 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.
- package/EventStore.ts +17 -1
- package/IEventStore.ts +16 -0
- package/auditing/CausationType.ts +10 -0
- package/compliance/ComplianceContracts.ts +84 -0
- package/compliance/IPIIManager.ts +17 -0
- package/compliance/PIIManager.ts +31 -0
- package/compliance/index.ts +2 -0
- package/connection/ChronicleConnection.ts +7 -1
- package/connection/ChronicleServices.ts +2 -0
- package/connection/Guid.ts +18 -0
- package/dist/EventStore.d.ts +8 -0
- package/dist/EventStore.d.ts.map +1 -1
- package/dist/EventStore.js +13 -1
- package/dist/EventStore.js.map +1 -1
- package/dist/IEventStore.d.ts +12 -0
- package/dist/IEventStore.d.ts.map +1 -1
- package/dist/auditing/CausationType.d.ts +8 -0
- package/dist/auditing/CausationType.d.ts.map +1 -1
- package/dist/auditing/CausationType.js +8 -0
- package/dist/auditing/CausationType.js.map +1 -1
- package/dist/compliance/ComplianceContracts.d.ts +40 -0
- package/dist/compliance/ComplianceContracts.d.ts.map +1 -1
- package/dist/compliance/ComplianceContracts.js +71 -0
- package/dist/compliance/ComplianceContracts.js.map +1 -1
- package/dist/compliance/IPIIManager.d.ts +15 -0
- package/dist/compliance/IPIIManager.d.ts.map +1 -0
- package/dist/compliance/IPIIManager.js +4 -0
- package/dist/compliance/IPIIManager.js.map +1 -0
- package/dist/compliance/PIIManager.d.ts +20 -0
- package/dist/compliance/PIIManager.d.ts.map +1 -0
- package/dist/compliance/PIIManager.js +30 -0
- package/dist/compliance/PIIManager.js.map +1 -0
- package/dist/compliance/index.d.ts +2 -0
- package/dist/compliance/index.d.ts.map +1 -1
- package/dist/compliance/index.js +1 -0
- package/dist/compliance/index.js.map +1 -1
- package/dist/connection/ChronicleConnection.d.ts +1 -0
- package/dist/connection/ChronicleConnection.d.ts.map +1 -1
- package/dist/connection/ChronicleConnection.js +6 -1
- package/dist/connection/ChronicleConnection.js.map +1 -1
- package/dist/connection/ChronicleServices.d.ts +2 -0
- package/dist/connection/ChronicleServices.d.ts.map +1 -1
- package/dist/connection/Guid.d.ts +5 -0
- package/dist/connection/Guid.d.ts.map +1 -1
- package/dist/connection/Guid.js +15 -0
- package/dist/connection/Guid.js.map +1 -1
- package/dist/eventSequences/AppendOperationsBroadcaster.d.ts +16 -0
- package/dist/eventSequences/AppendOperationsBroadcaster.d.ts.map +1 -0
- package/dist/eventSequences/AppendOperationsBroadcaster.js +77 -0
- package/dist/eventSequences/AppendOperationsBroadcaster.js.map +1 -0
- package/dist/eventSequences/AppendOptions.d.ts +7 -0
- package/dist/eventSequences/AppendOptions.d.ts.map +1 -1
- package/dist/eventSequences/AppendResult.d.ts +14 -0
- package/dist/eventSequences/AppendResult.d.ts.map +1 -1
- package/dist/eventSequences/AppendedEventWithResult.d.ts +13 -0
- package/dist/eventSequences/AppendedEventWithResult.d.ts.map +1 -0
- package/dist/eventSequences/AppendedEventWithResult.js +4 -0
- package/dist/eventSequences/AppendedEventWithResult.js.map +1 -0
- package/dist/eventSequences/CompleteStreamError.d.ts +17 -0
- package/dist/eventSequences/CompleteStreamError.d.ts.map +1 -0
- package/dist/eventSequences/CompleteStreamError.js +20 -0
- package/dist/eventSequences/CompleteStreamError.js.map +1 -0
- package/dist/eventSequences/CompleteStreamResult.d.ts +14 -0
- package/dist/eventSequences/CompleteStreamResult.d.ts.map +1 -0
- package/dist/eventSequences/CompleteStreamResult.js +4 -0
- package/dist/eventSequences/CompleteStreamResult.js.map +1 -0
- package/dist/eventSequences/ConcurrencyViolation.d.ts +13 -0
- package/dist/eventSequences/ConcurrencyViolation.d.ts.map +1 -0
- package/dist/eventSequences/ConcurrencyViolation.js +4 -0
- package/dist/eventSequences/ConcurrencyViolation.js.map +1 -0
- package/dist/eventSequences/EventForEventSourceId.d.ts +8 -0
- package/dist/eventSequences/EventForEventSourceId.d.ts.map +1 -1
- package/dist/eventSequences/EventSequence.d.ts +35 -1
- package/dist/eventSequences/EventSequence.d.ts.map +1 -1
- package/dist/eventSequences/EventSequence.js +350 -19
- package/dist/eventSequences/EventSequence.js.map +1 -1
- package/dist/eventSequences/IEventSequence.d.ts +85 -1
- package/dist/eventSequences/IEventSequence.d.ts.map +1 -1
- package/dist/eventSequences/WaitForCompletionResult.d.ts +11 -0
- package/dist/eventSequences/WaitForCompletionResult.d.ts.map +1 -0
- package/dist/eventSequences/WaitForCompletionResult.js +4 -0
- package/dist/eventSequences/WaitForCompletionResult.js.map +1 -0
- package/dist/eventSequences/index.d.ts +5 -0
- package/dist/eventSequences/index.d.ts.map +1 -1
- package/dist/eventSequences/index.js +1 -0
- package/dist/eventSequences/index.js.map +1 -1
- package/dist/eventStoreSubscriptions/EventStoreSubscriptions.d.ts +3 -0
- package/dist/eventStoreSubscriptions/EventStoreSubscriptions.d.ts.map +1 -1
- package/dist/eventStoreSubscriptions/EventStoreSubscriptions.js +9 -0
- package/dist/eventStoreSubscriptions/EventStoreSubscriptions.js.map +1 -1
- package/dist/eventStoreSubscriptions/IEventStoreSubscriptions.d.ts +6 -0
- package/dist/eventStoreSubscriptions/IEventStoreSubscriptions.d.ts.map +1 -1
- package/dist/eventStoreSubscriptions/contracts.d.ts +18 -0
- package/dist/eventStoreSubscriptions/contracts.d.ts.map +1 -1
- package/dist/eventStoreSubscriptions/contracts.js +106 -0
- package/dist/eventStoreSubscriptions/contracts.js.map +1 -1
- package/dist/events/constraints/Constraints.js +1 -1
- package/dist/events/constraints/Constraints.js.map +1 -1
- package/dist/externalServices/ExternalServiceBuilder.d.ts +42 -0
- package/dist/externalServices/ExternalServiceBuilder.d.ts.map +1 -0
- package/dist/externalServices/ExternalServiceBuilder.js +110 -0
- package/dist/externalServices/ExternalServiceBuilder.js.map +1 -0
- package/dist/externalServices/ExternalServices.d.ts +19 -0
- package/dist/externalServices/ExternalServices.d.ts.map +1 -0
- package/dist/externalServices/ExternalServices.js +30 -0
- package/dist/externalServices/ExternalServices.js.map +1 -0
- package/dist/externalServices/ExternalServicesContracts.d.ts +137 -0
- package/dist/externalServices/ExternalServicesContracts.d.ts.map +1 -0
- package/dist/externalServices/ExternalServicesContracts.js +654 -0
- package/dist/externalServices/ExternalServicesContracts.js.map +1 -0
- package/dist/externalServices/IExternalServiceBuilder.d.ts +67 -0
- package/dist/externalServices/IExternalServiceBuilder.d.ts.map +1 -0
- package/dist/externalServices/IExternalServiceBuilder.js +4 -0
- package/dist/externalServices/IExternalServiceBuilder.js.map +1 -0
- package/dist/externalServices/IExternalServices.d.ts +13 -0
- package/dist/externalServices/IExternalServices.d.ts.map +1 -0
- package/dist/externalServices/IExternalServices.js +4 -0
- package/dist/externalServices/IExternalServices.js.map +1 -0
- package/dist/externalServices/index.d.ts +5 -0
- package/dist/externalServices/index.d.ts.map +1 -0
- package/dist/externalServices/index.js +5 -0
- package/dist/externalServices/index.js.map +1 -0
- package/dist/identities/IIdentityManager.d.ts +17 -0
- package/dist/identities/IIdentityManager.d.ts.map +1 -0
- package/dist/identities/IIdentityManager.js +4 -0
- package/dist/identities/IIdentityManager.js.map +1 -0
- package/dist/identities/IdentityManager.d.ts +20 -0
- package/dist/identities/IdentityManager.d.ts.map +1 -0
- package/dist/identities/IdentityManager.js +31 -0
- package/dist/identities/IdentityManager.js.map +1 -0
- package/dist/identities/index.d.ts +3 -0
- package/dist/identities/index.d.ts.map +1 -0
- package/dist/identities/index.js +4 -0
- package/dist/identities/index.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/observation/FailedPartition.d.ts +15 -0
- package/dist/observation/FailedPartition.d.ts.map +1 -0
- package/dist/observation/FailedPartition.js +4 -0
- package/dist/observation/FailedPartition.js.map +1 -0
- package/dist/observation/FailedPartitionAttempt.d.ts +15 -0
- package/dist/observation/FailedPartitionAttempt.d.ts.map +1 -0
- package/dist/observation/FailedPartitionAttempt.js +4 -0
- package/dist/observation/FailedPartitionAttempt.js.map +1 -0
- package/dist/observation/FailedPartitions.d.ts +24 -0
- package/dist/observation/FailedPartitions.d.ts.map +1 -0
- package/dist/observation/FailedPartitions.js +39 -0
- package/dist/observation/FailedPartitions.js.map +1 -0
- package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.d.ts +19 -0
- package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.d.ts.map +1 -0
- package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.js +4 -0
- package/dist/observation/ICanBeNotifiedWhenPartitionReplayed.js.map +1 -0
- package/dist/observation/ICanBeNotifiedWhenReplay.d.ts +17 -0
- package/dist/observation/ICanBeNotifiedWhenReplay.d.ts.map +1 -0
- package/dist/observation/ICanBeNotifiedWhenReplay.js +4 -0
- package/dist/observation/ICanBeNotifiedWhenReplay.js.map +1 -0
- package/dist/observation/IFailedPartitions.d.ts +18 -0
- package/dist/observation/IFailedPartitions.d.ts.map +1 -0
- package/dist/observation/IFailedPartitions.js +4 -0
- package/dist/observation/IFailedPartitions.js.map +1 -0
- package/dist/observation/index.d.ts +6 -0
- package/dist/observation/index.d.ts.map +1 -1
- package/dist/observation/index.js +1 -0
- package/dist/observation/index.js.map +1 -1
- package/dist/observation/notifyReplayLifecycle.d.ts +13 -0
- package/dist/observation/notifyReplayLifecycle.d.ts.map +1 -0
- package/dist/observation/notifyReplayLifecycle.js +54 -0
- package/dist/observation/notifyReplayLifecycle.js.map +1 -0
- package/dist/observation/toClientFailedPartition.d.ts +9 -0
- package/dist/observation/toClientFailedPartition.d.ts.map +1 -0
- package/dist/observation/toClientFailedPartition.js +23 -0
- package/dist/observation/toClientFailedPartition.js.map +1 -0
- package/dist/projections/Projections.d.ts +0 -4
- package/dist/projections/Projections.d.ts.map +1 -1
- package/dist/projections/Projections.js +25 -103
- package/dist/projections/Projections.js.map +1 -1
- package/dist/projections/declarative/AddBuilder.d.ts +17 -0
- package/dist/projections/declarative/AddBuilder.d.ts.map +1 -0
- package/dist/projections/declarative/AddBuilder.js +28 -0
- package/dist/projections/declarative/AddBuilder.js.map +1 -0
- package/dist/projections/declarative/AddChildBuilder.d.ts +56 -0
- package/dist/projections/declarative/AddChildBuilder.d.ts.map +1 -0
- package/dist/projections/declarative/AddChildBuilder.js +72 -0
- package/dist/projections/declarative/AddChildBuilder.js.map +1 -0
- package/dist/projections/declarative/ChildrenBuilder.d.ts +28 -0
- package/dist/projections/declarative/ChildrenBuilder.d.ts.map +1 -0
- package/dist/projections/declarative/ChildrenBuilder.js +72 -0
- package/dist/projections/declarative/ChildrenBuilder.js.map +1 -0
- package/dist/projections/declarative/CompositeKeyBuilder.d.ts +16 -0
- package/dist/projections/declarative/CompositeKeyBuilder.d.ts.map +1 -0
- package/dist/projections/declarative/CompositeKeyBuilder.js +29 -0
- package/dist/projections/declarative/CompositeKeyBuilder.js.map +1 -0
- package/dist/projections/declarative/FromBuilder.d.ts +8 -6
- package/dist/projections/declarative/FromBuilder.d.ts.map +1 -1
- package/dist/projections/declarative/FromBuilder.js +44 -14
- package/dist/projections/declarative/FromBuilder.js.map +1 -1
- package/dist/projections/declarative/ICompositeKeyBuilder.d.ts +5 -0
- package/dist/projections/declarative/ICompositeKeyBuilder.d.ts.map +1 -1
- package/dist/projections/declarative/JoinBuilder.d.ts +7 -5
- package/dist/projections/declarative/JoinBuilder.d.ts.map +1 -1
- package/dist/projections/declarative/JoinBuilder.js +50 -16
- package/dist/projections/declarative/JoinBuilder.js.map +1 -1
- package/dist/projections/declarative/NestedBuilder.d.ts +24 -0
- package/dist/projections/declarative/NestedBuilder.d.ts.map +1 -0
- package/dist/projections/declarative/NestedBuilder.js +60 -0
- package/dist/projections/declarative/NestedBuilder.js.map +1 -0
- package/dist/projections/declarative/ProjectionBuilderCore.d.ts +127 -0
- package/dist/projections/declarative/ProjectionBuilderCore.d.ts.map +1 -0
- package/dist/projections/declarative/ProjectionBuilderCore.js +180 -0
- package/dist/projections/declarative/ProjectionBuilderCore.js.map +1 -0
- package/dist/projections/declarative/ProjectionBuilderFor.d.ts +6 -32
- package/dist/projections/declarative/ProjectionBuilderFor.d.ts.map +1 -1
- package/dist/projections/declarative/ProjectionBuilderFor.js +24 -118
- package/dist/projections/declarative/ProjectionBuilderFor.js.map +1 -1
- package/dist/projections/declarative/SubtractBuilder.d.ts +17 -0
- package/dist/projections/declarative/SubtractBuilder.d.ts.map +1 -0
- package/dist/projections/declarative/SubtractBuilder.js +28 -0
- package/dist/projections/declarative/SubtractBuilder.js.map +1 -0
- package/dist/projections/declarative/index.d.ts +9 -0
- package/dist/projections/declarative/index.d.ts.map +1 -1
- package/dist/projections/declarative/index.js +8 -0
- package/dist/projections/declarative/index.js.map +1 -1
- package/dist/projections/modelBound/childrenAndNestedBuilder.d.ts +90 -0
- package/dist/projections/modelBound/childrenAndNestedBuilder.d.ts.map +1 -0
- package/dist/projections/modelBound/childrenAndNestedBuilder.js +290 -0
- package/dist/projections/modelBound/childrenAndNestedBuilder.js.map +1 -0
- package/dist/reactors/ReactorSideEffects.d.ts +29 -0
- package/dist/reactors/ReactorSideEffects.d.ts.map +1 -0
- package/dist/reactors/ReactorSideEffects.js +70 -0
- package/dist/reactors/ReactorSideEffects.js.map +1 -0
- package/dist/reactors/Reactors.d.ts +4 -1
- package/dist/reactors/Reactors.d.ts.map +1 -1
- package/dist/reactors/Reactors.js +23 -4
- package/dist/reactors/Reactors.js.map +1 -1
- package/dist/reducers/Reducers.d.ts.map +1 -1
- package/dist/reducers/Reducers.js +15 -3
- package/dist/reducers/Reducers.js.map +1 -1
- package/dist/reducers/reducer.d.ts +9 -1
- package/dist/reducers/reducer.d.ts.map +1 -1
- package/dist/reducers/reducer.js +4 -2
- package/dist/reducers/reducer.js.map +1 -1
- package/dist/transactions/IUnitOfWork.d.ts +18 -0
- package/dist/transactions/IUnitOfWork.d.ts.map +1 -1
- package/dist/transactions/UnitOfWork.d.ts +9 -0
- package/dist/transactions/UnitOfWork.d.ts.map +1 -1
- package/dist/transactions/UnitOfWork.js +14 -0
- package/dist/transactions/UnitOfWork.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eventSequences/AppendOperationsBroadcaster.ts +83 -0
- package/eventSequences/AppendOptions.ts +8 -0
- package/eventSequences/AppendResult.ts +16 -0
- package/eventSequences/AppendedEventWithResult.ts +17 -0
- package/eventSequences/CompleteStreamError.ts +20 -0
- package/eventSequences/CompleteStreamResult.ts +13 -0
- package/eventSequences/ConcurrencyViolation.ts +18 -0
- package/eventSequences/EventForEventSourceId.ts +12 -0
- package/eventSequences/EventSequence.spec.ts +588 -0
- package/eventSequences/EventSequence.ts +406 -20
- package/eventSequences/IEventSequence.ts +109 -1
- package/eventSequences/WaitForCompletionResult.ts +15 -0
- package/eventSequences/index.ts +5 -0
- package/eventStoreSubscriptions/EventStoreSubscriptions.spec.ts +52 -0
- package/eventStoreSubscriptions/EventStoreSubscriptions.ts +19 -1
- package/eventStoreSubscriptions/IEventStoreSubscriptions.ts +7 -0
- package/eventStoreSubscriptions/contracts.ts +126 -0
- package/events/constraints/Constraints.ts +1 -1
- package/externalServices/ExternalServiceBuilder.ts +128 -0
- package/externalServices/ExternalServices.ts +34 -0
- package/externalServices/ExternalServicesContracts.ts +709 -0
- package/externalServices/IExternalServiceBuilder.ts +76 -0
- package/externalServices/IExternalServices.ts +16 -0
- package/externalServices/index.ts +7 -0
- package/identities/IIdentityManager.ts +19 -0
- package/identities/IdentityManager.ts +32 -0
- package/identities/index.ts +5 -0
- package/index.ts +6 -0
- package/observation/FailedPartition.ts +21 -0
- package/observation/FailedPartitionAttempt.ts +21 -0
- package/observation/FailedPartitions.spec.ts +75 -0
- package/observation/FailedPartitions.ts +44 -0
- package/observation/ICanBeNotifiedWhenPartitionReplayed.ts +22 -0
- package/observation/ICanBeNotifiedWhenReplay.ts +20 -0
- package/observation/IFailedPartitions.ts +22 -0
- package/observation/index.ts +6 -0
- package/observation/notifyReplayLifecycle.spec.ts +98 -0
- package/observation/notifyReplayLifecycle.ts +61 -0
- package/observation/toClientFailedPartition.ts +26 -0
- package/package.json +12 -2
- package/projections/Projections.childrenAndNested.spec.ts +188 -0
- package/projections/Projections.spec.ts +131 -0
- package/projections/Projections.ts +37 -119
- package/projections/declarative/AddBuilder.ts +28 -0
- package/projections/declarative/AddChildBuilder.ts +97 -0
- package/projections/declarative/ChildrenBuilder.spec.ts +157 -0
- package/projections/declarative/ChildrenBuilder.ts +90 -0
- package/projections/declarative/CompositeKeyBuilder.spec.ts +117 -0
- package/projections/declarative/CompositeKeyBuilder.ts +38 -0
- package/projections/declarative/FromBuilder.ts +60 -15
- package/projections/declarative/ICompositeKeyBuilder.ts +6 -0
- package/projections/declarative/JoinBuilder.ts +66 -17
- package/projections/declarative/NestedBuilder.ts +76 -0
- package/projections/declarative/ProjectionBuilderCore.ts +257 -0
- package/projections/declarative/ProjectionBuilderFor.spec.ts +115 -0
- package/projections/declarative/ProjectionBuilderFor.ts +29 -168
- package/projections/declarative/SubtractBuilder.ts +28 -0
- package/projections/declarative/index.ts +9 -0
- package/projections/modelBound/childrenAndNestedBuilder.ts +354 -0
- package/reactors/ReactorSideEffects.spec.ts +182 -0
- package/reactors/ReactorSideEffects.ts +97 -0
- package/reactors/Reactors.ts +29 -4
- package/reducers/Reducers.spec.ts +87 -0
- package/reducers/Reducers.ts +15 -3
- package/reducers/reducer.spec.ts +40 -0
- package/reducers/reducer.ts +11 -2
- package/transactions/IUnitOfWork.ts +21 -0
- package/transactions/UnitOfWork.spec.ts +82 -0
- 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>(
|
|
36
|
+
usingCompositeKey<TKeyType>(builderCallback: (builder: ICompositeKeyBuilder<TKeyType, TEvent>) => void): this;
|
|
35
37
|
/** @inheritdoc */
|
|
36
|
-
usingParentCompositeKey<TKeyType>(
|
|
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(
|
|
48
|
+
add(readModelPropertyAccessor: PropertyAccessor<TReadModel>): IAddBuilder<TEvent, this>;
|
|
47
49
|
/** @inheritdoc */
|
|
48
|
-
subtract(
|
|
50
|
+
subtract(readModelPropertyAccessor: PropertyAccessor<TReadModel>): ISubtractBuilder<TEvent, this>;
|
|
49
51
|
/** @inheritdoc */
|
|
50
|
-
count(
|
|
52
|
+
count(readModelPropertyAccessor: PropertyAccessor<TReadModel>): this;
|
|
51
53
|
/** @inheritdoc */
|
|
52
|
-
addChild<TChildModel>(
|
|
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;
|
|
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(
|
|
52
|
-
|
|
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(
|
|
56
|
-
|
|
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(
|
|
86
|
-
|
|
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(
|
|
90
|
-
|
|
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(
|
|
94
|
-
|
|
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(
|
|
98
|
-
|
|
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
|
-
|
|
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":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAoB,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;
|
|
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;
|
|
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>(
|
|
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(
|
|
50
|
+
add(readModelPropertyAccessor: PropertyAccessor<TReadModel>): IAddBuilder<TEvent, this>;
|
|
49
51
|
/** @inheritdoc */
|
|
50
|
-
subtract(
|
|
52
|
+
subtract(readModelPropertyAccessor: PropertyAccessor<TReadModel>): ISubtractBuilder<TEvent, this>;
|
|
51
53
|
/** @inheritdoc */
|
|
52
|
-
count(
|
|
54
|
+
count(readModelPropertyAccessor: PropertyAccessor<TReadModel>): this;
|
|
53
55
|
/** @inheritdoc */
|
|
54
|
-
addChild<TChildModel>(
|
|
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":"AAGA,OAAO,EAAE,gBAAgB,EAAoC,MAAM,sBAAsB,CAAC;
|
|
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
|
-
|
|
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
|
-
|
|
60
|
+
// See usingParentKey - accepted for interface parity with From, no wire effect for Join.
|
|
61
|
+
return this;
|
|
52
62
|
}
|
|
53
63
|
/** @inheritdoc */
|
|
54
|
-
usingCompositeKey(
|
|
55
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
88
|
-
|
|
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(
|
|
92
|
-
|
|
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(
|
|
96
|
-
|
|
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(
|
|
100
|
-
|
|
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
|
-
|
|
138
|
+
return new SetBuilder('$this', (rp, expr) => { this.entry.properties[rp] = expr; }, this);
|
|
105
139
|
}
|
|
106
140
|
}
|
|
107
141
|
//# sourceMappingURL=JoinBuilder.js.map
|