@cratis/chronicle 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ChronicleClient.ts +453 -0
- package/ChronicleOptions.ts +104 -0
- package/EventSequences/AppendError.ts +10 -0
- package/EventSequences/AppendOptions.ts +15 -0
- package/EventSequences/AppendResult.ts +23 -0
- package/EventSequences/ConstraintViolation.ts +16 -0
- package/EventSequences/EventLog.ts +21 -0
- package/EventSequences/EventSequence.ts +372 -0
- package/EventSequences/EventSequenceId.ts +17 -0
- package/EventSequences/EventSequenceNumber.ts +38 -0
- package/EventSequences/IEventLog.ts +10 -0
- package/EventSequences/IEventSequence.ts +47 -0
- package/EventSequences/index.ts +13 -0
- package/EventStore.ts +132 -0
- package/EventStoreName.ts +14 -0
- package/EventStoreNamespaceName.ts +17 -0
- package/Events/AppendedEvent.ts +19 -0
- package/Events/CausationEntry.ts +13 -0
- package/Events/Constraints/ConstraintBuilder.ts +86 -0
- package/Events/Constraints/ConstraintId.ts +14 -0
- package/Events/Constraints/Constraints.ts +117 -0
- package/Events/Constraints/IConstraint.ts +18 -0
- package/Events/Constraints/IConstraintBuilder.ts +44 -0
- package/Events/Constraints/IConstraints.ts +28 -0
- package/Events/Constraints/IUniqueConstraintBuilder.ts +52 -0
- package/Events/Constraints/UniqueConstraintBuilder.ts +97 -0
- package/Events/Constraints/constraint.ts +56 -0
- package/Events/Constraints/index.ts +15 -0
- package/Events/EventContext.ts +28 -0
- package/Events/EventType.ts +41 -0
- package/Events/EventTypeGeneration.ts +20 -0
- package/Events/EventTypeId.ts +19 -0
- package/Events/EventTypes.ts +95 -0
- package/Events/IEventTypes.ts +39 -0
- package/Events/eventTypeDecorator.ts +147 -0
- package/Events/index.ts +14 -0
- package/IChronicleClient.ts +39 -0
- package/IEventStore.ts +56 -0
- package/Metrics.ts +109 -0
- package/Observation/ObserverId.ts +14 -0
- package/Observation/ObserverRunningState.ts +34 -0
- package/Observation/index.ts +5 -0
- package/Projections/IProjections.ts +19 -0
- package/Projections/ProjectionId.ts +14 -0
- package/Projections/Projections.ts +463 -0
- package/Projections/declarative/AllSetBuilder.ts +39 -0
- package/Projections/declarative/FromBuilder.ts +144 -0
- package/Projections/declarative/FromEveryBuilder.ts +46 -0
- package/Projections/declarative/IAddBuilder.ts +18 -0
- package/Projections/declarative/IAddChildBuilder.ts +25 -0
- package/Projections/declarative/IAllSetBuilder.ts +31 -0
- package/Projections/declarative/IChildrenBuilder.ts +31 -0
- package/Projections/declarative/ICompositeKeyBuilder.ts +22 -0
- package/Projections/declarative/IFromBuilder.ts +12 -0
- package/Projections/declarative/IFromEveryBuilder.ts +24 -0
- package/Projections/declarative/IJoinBuilder.ts +20 -0
- package/Projections/declarative/INestedBuilder.ts +19 -0
- package/Projections/declarative/IProjectionBuilder.ts +98 -0
- package/Projections/declarative/IProjectionBuilderFor.ts +38 -0
- package/Projections/declarative/IProjectionFor.ts +18 -0
- package/Projections/declarative/IReadModelPropertiesBuilder.ts +132 -0
- package/Projections/declarative/IRemovedWithBuilder.ts +25 -0
- package/Projections/declarative/IRemovedWithJoinBuilder.ts +25 -0
- package/Projections/declarative/ISetBuilder.ts +38 -0
- package/Projections/declarative/ISubtractBuilder.ts +18 -0
- package/Projections/declarative/JoinBuilder.ts +148 -0
- package/Projections/declarative/ProjectionBuilderFor.ts +277 -0
- package/Projections/declarative/RemovedWithBuilder.ts +40 -0
- package/Projections/declarative/RemovedWithJoinBuilder.ts +43 -0
- package/Projections/declarative/SetBuilder.ts +46 -0
- package/Projections/declarative/index.ts +26 -0
- package/Projections/declarative/projection.ts +59 -0
- package/Projections/index.ts +8 -0
- package/Projections/modelBound/FromEventMetadata.ts +10 -0
- package/Projections/modelBound/FromEventOptions.ts +12 -0
- package/Projections/modelBound/addFrom.ts +41 -0
- package/Projections/modelBound/childrenFrom.ts +52 -0
- package/Projections/modelBound/clearWith.ts +54 -0
- package/Projections/modelBound/count.ts +41 -0
- package/Projections/modelBound/decrement.ts +41 -0
- package/Projections/modelBound/fromEvent.ts +40 -0
- package/Projections/modelBound/fromEvery.ts +39 -0
- package/Projections/modelBound/increment.ts +41 -0
- package/Projections/modelBound/index.ts +38 -0
- package/Projections/modelBound/join.ts +44 -0
- package/Projections/modelBound/modelBound.ts +59 -0
- package/Projections/modelBound/nested.ts +29 -0
- package/Projections/modelBound/notRewindable.ts +24 -0
- package/Projections/modelBound/removedWith.ts +60 -0
- package/Projections/modelBound/removedWithJoin.ts +55 -0
- package/Projections/modelBound/setFrom.ts +41 -0
- package/Projections/modelBound/setFromContext.ts +41 -0
- package/Projections/modelBound/setValue.ts +41 -0
- package/Projections/modelBound/subtractFrom.ts +41 -0
- package/README.md +69 -0
- package/Reactors/IReactors.ts +19 -0
- package/Reactors/ReactorId.ts +14 -0
- package/Reactors/Reactors.ts +320 -0
- package/Reactors/index.ts +8 -0
- package/Reactors/reactor.ts +75 -0
- package/ReadModels/ReadModelId.ts +14 -0
- package/ReadModels/index.ts +6 -0
- package/ReadModels/readModel.ts +89 -0
- package/Reducers/IReducers.ts +19 -0
- package/Reducers/ReducerId.ts +14 -0
- package/Reducers/Reducers.ts +322 -0
- package/Reducers/index.ts +8 -0
- package/Reducers/reducer.ts +87 -0
- package/Schemas/JsonSchema.ts +18 -0
- package/Schemas/JsonSchemaGenerator.ts +107 -0
- package/Schemas/index.ts +6 -0
- package/Schemas/jsonSchemaProperty.ts +24 -0
- package/Tracing.ts +21 -0
- package/artifacts/DefaultClientArtifactsProvider.ts +56 -0
- package/artifacts/IClientArtifactsProvider.ts +30 -0
- package/artifacts/index.ts +5 -0
- package/connection/ChronicleConnection.ts +226 -0
- package/connection/ChronicleConnectionString.ts +4 -0
- package/connection/ChronicleServices.ts +4 -0
- package/connection/ConnectionLifecycle.ts +77 -0
- package/connection/DateTimeOffset.ts +4 -0
- package/connection/Guid.ts +4 -0
- package/connection/TokenProvider.ts +13 -0
- package/connection/index.ts +9 -0
- package/dist/ChronicleClient.d.ts +55 -0
- package/dist/ChronicleClient.d.ts.map +1 -0
- package/dist/ChronicleClient.js +396 -0
- package/dist/ChronicleClient.js.map +1 -0
- package/dist/ChronicleOptions.d.ts +54 -0
- package/dist/ChronicleOptions.d.ts.map +1 -0
- package/dist/ChronicleOptions.js +75 -0
- package/dist/ChronicleOptions.js.map +1 -0
- package/dist/EventSequences/AppendError.d.ts +8 -0
- package/dist/EventSequences/AppendError.d.ts.map +1 -0
- package/dist/EventSequences/AppendError.js +4 -0
- package/dist/EventSequences/AppendError.js.map +1 -0
- package/dist/EventSequences/AppendOptions.d.ts +11 -0
- package/dist/EventSequences/AppendOptions.d.ts.map +1 -0
- package/dist/EventSequences/AppendOptions.js +4 -0
- package/dist/EventSequences/AppendOptions.js.map +1 -0
- package/dist/EventSequences/AppendResult.d.ts +17 -0
- package/dist/EventSequences/AppendResult.d.ts.map +1 -0
- package/dist/EventSequences/AppendResult.js +4 -0
- package/dist/EventSequences/AppendResult.js.map +1 -0
- package/dist/EventSequences/ConstraintViolation.d.ts +12 -0
- package/dist/EventSequences/ConstraintViolation.d.ts.map +1 -0
- package/dist/EventSequences/ConstraintViolation.js +4 -0
- package/dist/EventSequences/ConstraintViolation.js.map +1 -0
- package/dist/EventSequences/EventLog.d.ts +11 -0
- package/dist/EventSequences/EventLog.d.ts.map +1 -0
- package/dist/EventSequences/EventLog.js +14 -0
- package/dist/EventSequences/EventLog.js.map +1 -0
- package/dist/EventSequences/EventSequence.d.ts +27 -0
- package/dist/EventSequences/EventSequence.d.ts.map +1 -0
- package/dist/EventSequences/EventSequence.js +337 -0
- package/dist/EventSequences/EventSequence.js.map +1 -0
- package/dist/EventSequences/EventSequenceId.d.ts +12 -0
- package/dist/EventSequences/EventSequenceId.d.ts.map +1 -0
- package/dist/EventSequences/EventSequenceId.js +18 -0
- package/dist/EventSequences/EventSequenceId.js.map +1 -0
- package/dist/EventSequences/EventSequenceNumber.d.ts +26 -0
- package/dist/EventSequences/EventSequenceNumber.d.ts.map +1 -0
- package/dist/EventSequences/EventSequenceNumber.js +36 -0
- package/dist/EventSequences/EventSequenceNumber.js.map +1 -0
- package/dist/EventSequences/IEventLog.d.ts +8 -0
- package/dist/EventSequences/IEventLog.d.ts.map +1 -0
- package/dist/EventSequences/IEventLog.js +4 -0
- package/dist/EventSequences/IEventLog.js.map +1 -0
- package/dist/EventSequences/IEventSequence.d.ts +40 -0
- package/dist/EventSequences/IEventSequence.d.ts.map +1 -0
- package/dist/EventSequences/IEventSequence.js +4 -0
- package/dist/EventSequences/IEventSequence.js.map +1 -0
- package/dist/EventSequences/index.d.ts +11 -0
- package/dist/EventSequences/index.d.ts.map +1 -0
- package/dist/EventSequences/index.js +7 -0
- package/dist/EventSequences/index.js.map +1 -0
- package/dist/EventStore.d.ts +42 -0
- package/dist/EventStore.d.ts.map +1 -0
- package/dist/EventStore.js +111 -0
- package/dist/EventStore.js.map +1 -0
- package/dist/EventStoreName.d.ts +10 -0
- package/dist/EventStoreName.d.ts.map +1 -0
- package/dist/EventStoreName.js +16 -0
- package/dist/EventStoreName.js.map +1 -0
- package/dist/EventStoreNamespaceName.d.ts +12 -0
- package/dist/EventStoreNamespaceName.d.ts.map +1 -0
- package/dist/EventStoreNamespaceName.js +18 -0
- package/dist/EventStoreNamespaceName.js.map +1 -0
- package/dist/Events/AppendedEvent.d.ts +14 -0
- package/dist/Events/AppendedEvent.d.ts.map +1 -0
- package/dist/Events/AppendedEvent.js +4 -0
- package/dist/Events/AppendedEvent.js.map +1 -0
- package/dist/Events/CausationEntry.d.ts +10 -0
- package/dist/Events/CausationEntry.d.ts.map +1 -0
- package/dist/Events/CausationEntry.js +4 -0
- package/dist/Events/CausationEntry.js.map +1 -0
- package/dist/Events/Constraints/ConstraintBuilder.d.ts +42 -0
- package/dist/Events/Constraints/ConstraintBuilder.d.ts.map +1 -0
- package/dist/Events/Constraints/ConstraintBuilder.js +55 -0
- package/dist/Events/Constraints/ConstraintBuilder.js.map +1 -0
- package/dist/Events/Constraints/ConstraintId.d.ts +10 -0
- package/dist/Events/Constraints/ConstraintId.d.ts.map +1 -0
- package/dist/Events/Constraints/ConstraintId.js +16 -0
- package/dist/Events/Constraints/ConstraintId.js.map +1 -0
- package/dist/Events/Constraints/Constraints.d.ts +27 -0
- package/dist/Events/Constraints/Constraints.d.ts.map +1 -0
- package/dist/Events/Constraints/Constraints.js +104 -0
- package/dist/Events/Constraints/Constraints.js.map +1 -0
- package/dist/Events/Constraints/IConstraint.d.ts +15 -0
- package/dist/Events/Constraints/IConstraint.d.ts.map +1 -0
- package/dist/Events/Constraints/IConstraint.js +4 -0
- package/dist/Events/Constraints/IConstraint.js.map +1 -0
- package/dist/Events/Constraints/IConstraintBuilder.d.ts +37 -0
- package/dist/Events/Constraints/IConstraintBuilder.d.ts.map +1 -0
- package/dist/Events/Constraints/IConstraintBuilder.js +4 -0
- package/dist/Events/Constraints/IConstraintBuilder.js.map +1 -0
- package/dist/Events/Constraints/IConstraints.d.ts +23 -0
- package/dist/Events/Constraints/IConstraints.d.ts.map +1 -0
- package/dist/Events/Constraints/IConstraints.js +4 -0
- package/dist/Events/Constraints/IConstraints.js.map +1 -0
- package/dist/Events/Constraints/IUniqueConstraintBuilder.d.ts +44 -0
- package/dist/Events/Constraints/IUniqueConstraintBuilder.d.ts.map +1 -0
- package/dist/Events/Constraints/IUniqueConstraintBuilder.js +4 -0
- package/dist/Events/Constraints/IUniqueConstraintBuilder.js.map +1 -0
- package/dist/Events/Constraints/UniqueConstraintBuilder.d.ts +42 -0
- package/dist/Events/Constraints/UniqueConstraintBuilder.d.ts.map +1 -0
- package/dist/Events/Constraints/UniqueConstraintBuilder.js +72 -0
- package/dist/Events/Constraints/UniqueConstraintBuilder.js.map +1 -0
- package/dist/Events/Constraints/constraint.d.ts +29 -0
- package/dist/Events/Constraints/constraint.d.ts.map +1 -0
- package/dist/Events/Constraints/constraint.js +39 -0
- package/dist/Events/Constraints/constraint.js.map +1 -0
- package/dist/Events/Constraints/index.d.ts +13 -0
- package/dist/Events/Constraints/index.d.ts.map +1 -0
- package/dist/Events/Constraints/index.js +8 -0
- package/dist/Events/Constraints/index.js.map +1 -0
- package/dist/Events/EventContext.d.ts +20 -0
- package/dist/Events/EventContext.d.ts.map +1 -0
- package/dist/Events/EventContext.js +4 -0
- package/dist/Events/EventContext.js.map +1 -0
- package/dist/Events/EventType.d.ts +23 -0
- package/dist/Events/EventType.d.ts.map +1 -0
- package/dist/Events/EventType.js +40 -0
- package/dist/Events/EventType.js.map +1 -0
- package/dist/Events/EventTypeGeneration.d.ts +14 -0
- package/dist/Events/EventTypeGeneration.d.ts.map +1 -0
- package/dist/Events/EventTypeGeneration.js +20 -0
- package/dist/Events/EventTypeGeneration.js.map +1 -0
- package/dist/Events/EventTypeId.d.ts +14 -0
- package/dist/Events/EventTypeId.d.ts.map +1 -0
- package/dist/Events/EventTypeId.js +20 -0
- package/dist/Events/EventTypeId.js.map +1 -0
- package/dist/Events/EventTypes.d.ts +33 -0
- package/dist/Events/EventTypes.d.ts.map +1 -0
- package/dist/Events/EventTypes.js +83 -0
- package/dist/Events/EventTypes.js.map +1 -0
- package/dist/Events/IEventTypes.d.ts +32 -0
- package/dist/Events/IEventTypes.d.ts.map +1 -0
- package/dist/Events/IEventTypes.js +4 -0
- package/dist/Events/IEventTypes.js.map +1 -0
- package/dist/Events/eventTypeDecorator.d.ts +71 -0
- package/dist/Events/eventTypeDecorator.d.ts.map +1 -0
- package/dist/Events/eventTypeDecorator.js +86 -0
- package/dist/Events/eventTypeDecorator.js.map +1 -0
- package/dist/Events/index.d.ts +12 -0
- package/dist/Events/index.d.ts.map +1 -0
- package/dist/Events/index.js +9 -0
- package/dist/Events/index.js.map +1 -0
- package/dist/Grpc.d.ts +19 -0
- package/dist/Grpc.d.ts.map +1 -0
- package/dist/Grpc.js +33 -0
- package/dist/Grpc.js.map +1 -0
- package/dist/IChronicleClient.d.ts +33 -0
- package/dist/IChronicleClient.d.ts.map +1 -0
- package/dist/IChronicleClient.js +4 -0
- package/dist/IChronicleClient.js.map +1 -0
- package/dist/IEventStore.d.ts +44 -0
- package/dist/IEventStore.d.ts.map +1 -0
- package/dist/IEventStore.js +4 -0
- package/dist/IEventStore.js.map +1 -0
- package/dist/Metrics.d.ts +70 -0
- package/dist/Metrics.d.ts.map +1 -0
- package/dist/Metrics.js +100 -0
- package/dist/Metrics.js.map +1 -0
- package/dist/Observation/ObserverId.d.ts +10 -0
- package/dist/Observation/ObserverId.d.ts.map +1 -0
- package/dist/Observation/ObserverId.js +16 -0
- package/dist/Observation/ObserverId.js.map +1 -0
- package/dist/Observation/ObserverRunningState.d.ts +24 -0
- package/dist/Observation/ObserverRunningState.d.ts.map +1 -0
- package/dist/Observation/ObserverRunningState.js +27 -0
- package/dist/Observation/ObserverRunningState.js.map +1 -0
- package/dist/Observation/index.d.ts +3 -0
- package/dist/Observation/index.d.ts.map +1 -0
- package/dist/Observation/index.js +5 -0
- package/dist/Observation/index.js.map +1 -0
- package/dist/Projections/IProjections.d.ts +16 -0
- package/dist/Projections/IProjections.d.ts.map +1 -0
- package/dist/Projections/IProjections.js +4 -0
- package/dist/Projections/IProjections.js.map +1 -0
- package/dist/Projections/ProjectionId.d.ts +10 -0
- package/dist/Projections/ProjectionId.d.ts.map +1 -0
- package/dist/Projections/ProjectionId.js +16 -0
- package/dist/Projections/ProjectionId.js.map +1 -0
- package/dist/Projections/Projections.d.ts +36 -0
- package/dist/Projections/Projections.d.ts.map +1 -0
- package/dist/Projections/Projections.js +390 -0
- package/dist/Projections/Projections.js.map +1 -0
- package/dist/Projections/declarative/AllSetBuilder.d.ts +20 -0
- package/dist/Projections/declarative/AllSetBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/AllSetBuilder.js +37 -0
- package/dist/Projections/declarative/AllSetBuilder.js.map +1 -0
- package/dist/Projections/declarative/FromBuilder.d.ts +56 -0
- package/dist/Projections/declarative/FromBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/FromBuilder.js +105 -0
- package/dist/Projections/declarative/FromBuilder.js.map +1 -0
- package/dist/Projections/declarative/FromEveryBuilder.d.ts +22 -0
- package/dist/Projections/declarative/FromEveryBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/FromEveryBuilder.js +28 -0
- package/dist/Projections/declarative/FromEveryBuilder.js.map +1 -0
- package/dist/Projections/declarative/IAddBuilder.d.ts +15 -0
- package/dist/Projections/declarative/IAddBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IAddBuilder.js +4 -0
- package/dist/Projections/declarative/IAddBuilder.js.map +1 -0
- package/dist/Projections/declarative/IAddChildBuilder.d.ts +21 -0
- package/dist/Projections/declarative/IAddChildBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IAddChildBuilder.js +4 -0
- package/dist/Projections/declarative/IAddChildBuilder.js.map +1 -0
- package/dist/Projections/declarative/IAllSetBuilder.d.ts +26 -0
- package/dist/Projections/declarative/IAllSetBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IAllSetBuilder.js +4 -0
- package/dist/Projections/declarative/IAllSetBuilder.js.map +1 -0
- package/dist/Projections/declarative/IChildrenBuilder.d.ts +22 -0
- package/dist/Projections/declarative/IChildrenBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IChildrenBuilder.js +4 -0
- package/dist/Projections/declarative/IChildrenBuilder.js.map +1 -0
- package/dist/Projections/declarative/ICompositeKeyBuilder.d.ts +16 -0
- package/dist/Projections/declarative/ICompositeKeyBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/ICompositeKeyBuilder.js +4 -0
- package/dist/Projections/declarative/ICompositeKeyBuilder.js.map +1 -0
- package/dist/Projections/declarative/IFromBuilder.d.ts +9 -0
- package/dist/Projections/declarative/IFromBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IFromBuilder.js +4 -0
- package/dist/Projections/declarative/IFromBuilder.js.map +1 -0
- package/dist/Projections/declarative/IFromEveryBuilder.d.ts +20 -0
- package/dist/Projections/declarative/IFromEveryBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IFromEveryBuilder.js +4 -0
- package/dist/Projections/declarative/IFromEveryBuilder.js.map +1 -0
- package/dist/Projections/declarative/IJoinBuilder.d.ts +16 -0
- package/dist/Projections/declarative/IJoinBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IJoinBuilder.js +4 -0
- package/dist/Projections/declarative/IJoinBuilder.js.map +1 -0
- package/dist/Projections/declarative/INestedBuilder.d.ts +15 -0
- package/dist/Projections/declarative/INestedBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/INestedBuilder.js +4 -0
- package/dist/Projections/declarative/INestedBuilder.js.map +1 -0
- package/dist/Projections/declarative/IProjectionBuilder.d.ts +80 -0
- package/dist/Projections/declarative/IProjectionBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IProjectionBuilder.js +4 -0
- package/dist/Projections/declarative/IProjectionBuilder.js.map +1 -0
- package/dist/Projections/declarative/IProjectionBuilderFor.d.ts +31 -0
- package/dist/Projections/declarative/IProjectionBuilderFor.d.ts.map +1 -0
- package/dist/Projections/declarative/IProjectionBuilderFor.js +4 -0
- package/dist/Projections/declarative/IProjectionBuilderFor.js.map +1 -0
- package/dist/Projections/declarative/IProjectionFor.d.ts +15 -0
- package/dist/Projections/declarative/IProjectionFor.d.ts.map +1 -0
- package/dist/Projections/declarative/IProjectionFor.js +4 -0
- package/dist/Projections/declarative/IProjectionFor.js.map +1 -0
- package/dist/Projections/declarative/IReadModelPropertiesBuilder.d.ts +111 -0
- package/dist/Projections/declarative/IReadModelPropertiesBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IReadModelPropertiesBuilder.js +4 -0
- package/dist/Projections/declarative/IReadModelPropertiesBuilder.js.map +1 -0
- package/dist/Projections/declarative/IRemovedWithBuilder.d.ts +21 -0
- package/dist/Projections/declarative/IRemovedWithBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IRemovedWithBuilder.js +4 -0
- package/dist/Projections/declarative/IRemovedWithBuilder.js.map +1 -0
- package/dist/Projections/declarative/IRemovedWithJoinBuilder.d.ts +21 -0
- package/dist/Projections/declarative/IRemovedWithJoinBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/IRemovedWithJoinBuilder.js +4 -0
- package/dist/Projections/declarative/IRemovedWithJoinBuilder.js.map +1 -0
- package/dist/Projections/declarative/ISetBuilder.d.ts +32 -0
- package/dist/Projections/declarative/ISetBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/ISetBuilder.js +4 -0
- package/dist/Projections/declarative/ISetBuilder.js.map +1 -0
- package/dist/Projections/declarative/ISubtractBuilder.d.ts +15 -0
- package/dist/Projections/declarative/ISubtractBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/ISubtractBuilder.js +4 -0
- package/dist/Projections/declarative/ISubtractBuilder.js.map +1 -0
- package/dist/Projections/declarative/JoinBuilder.d.ts +58 -0
- package/dist/Projections/declarative/JoinBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/JoinBuilder.js +107 -0
- package/dist/Projections/declarative/JoinBuilder.js.map +1 -0
- package/dist/Projections/declarative/ProjectionBuilderFor.d.ts +68 -0
- package/dist/Projections/declarative/ProjectionBuilderFor.d.ts.map +1 -0
- package/dist/Projections/declarative/ProjectionBuilderFor.js +207 -0
- package/dist/Projections/declarative/ProjectionBuilderFor.js.map +1 -0
- package/dist/Projections/declarative/RemovedWithBuilder.d.ts +22 -0
- package/dist/Projections/declarative/RemovedWithBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/RemovedWithBuilder.js +28 -0
- package/dist/Projections/declarative/RemovedWithBuilder.js.map +1 -0
- package/dist/Projections/declarative/RemovedWithJoinBuilder.d.ts +22 -0
- package/dist/Projections/declarative/RemovedWithJoinBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/RemovedWithJoinBuilder.js +31 -0
- package/dist/Projections/declarative/RemovedWithJoinBuilder.js.map +1 -0
- package/dist/Projections/declarative/SetBuilder.d.ts +23 -0
- package/dist/Projections/declarative/SetBuilder.d.ts.map +1 -0
- package/dist/Projections/declarative/SetBuilder.js +43 -0
- package/dist/Projections/declarative/SetBuilder.js.map +1 -0
- package/dist/Projections/declarative/index.d.ts +24 -0
- package/dist/Projections/declarative/index.d.ts.map +1 -0
- package/dist/Projections/declarative/index.js +8 -0
- package/dist/Projections/declarative/index.js.map +1 -0
- package/dist/Projections/declarative/projection.d.ts +31 -0
- package/dist/Projections/declarative/projection.d.ts.map +1 -0
- package/dist/Projections/declarative/projection.js +39 -0
- package/dist/Projections/declarative/projection.js.map +1 -0
- package/dist/Projections/index.d.ts +6 -0
- package/dist/Projections/index.d.ts.map +1 -0
- package/dist/Projections/index.js +7 -0
- package/dist/Projections/index.js.map +1 -0
- package/dist/Projections/modelBound/FromEventMetadata.d.ts +7 -0
- package/dist/Projections/modelBound/FromEventMetadata.d.ts.map +1 -0
- package/dist/Projections/modelBound/FromEventMetadata.js +4 -0
- package/dist/Projections/modelBound/FromEventMetadata.js.map +1 -0
- package/dist/Projections/modelBound/FromEventOptions.d.ts +10 -0
- package/dist/Projections/modelBound/FromEventOptions.d.ts.map +1 -0
- package/dist/Projections/modelBound/FromEventOptions.js +4 -0
- package/dist/Projections/modelBound/FromEventOptions.js.map +1 -0
- package/dist/Projections/modelBound/addFrom.d.ts +23 -0
- package/dist/Projections/modelBound/addFrom.d.ts.map +1 -0
- package/dist/Projections/modelBound/addFrom.js +30 -0
- package/dist/Projections/modelBound/addFrom.js.map +1 -0
- package/dist/Projections/modelBound/childrenFrom.d.ts +29 -0
- package/dist/Projections/modelBound/childrenFrom.d.ts.map +1 -0
- package/dist/Projections/modelBound/childrenFrom.js +32 -0
- package/dist/Projections/modelBound/childrenFrom.js.map +1 -0
- package/dist/Projections/modelBound/clearWith.d.ts +28 -0
- package/dist/Projections/modelBound/clearWith.d.ts.map +1 -0
- package/dist/Projections/modelBound/clearWith.js +45 -0
- package/dist/Projections/modelBound/clearWith.js.map +1 -0
- package/dist/Projections/modelBound/count.d.ts +23 -0
- package/dist/Projections/modelBound/count.d.ts.map +1 -0
- package/dist/Projections/modelBound/count.js +30 -0
- package/dist/Projections/modelBound/count.js.map +1 -0
- package/dist/Projections/modelBound/decrement.d.ts +23 -0
- package/dist/Projections/modelBound/decrement.d.ts.map +1 -0
- package/dist/Projections/modelBound/decrement.js +30 -0
- package/dist/Projections/modelBound/decrement.js.map +1 -0
- package/dist/Projections/modelBound/fromEvent.d.ts +23 -0
- package/dist/Projections/modelBound/fromEvent.d.ts.map +1 -0
- package/dist/Projections/modelBound/fromEvent.js +34 -0
- package/dist/Projections/modelBound/fromEvent.js.map +1 -0
- package/dist/Projections/modelBound/fromEvery.d.ts +23 -0
- package/dist/Projections/modelBound/fromEvery.d.ts.map +1 -0
- package/dist/Projections/modelBound/fromEvery.js +28 -0
- package/dist/Projections/modelBound/fromEvery.js.map +1 -0
- package/dist/Projections/modelBound/increment.d.ts +23 -0
- package/dist/Projections/modelBound/increment.d.ts.map +1 -0
- package/dist/Projections/modelBound/increment.js +30 -0
- package/dist/Projections/modelBound/increment.js.map +1 -0
- package/dist/Projections/modelBound/index.d.ts +36 -0
- package/dist/Projections/modelBound/index.d.ts.map +1 -0
- package/dist/Projections/modelBound/index.js +21 -0
- package/dist/Projections/modelBound/index.js.map +1 -0
- package/dist/Projections/modelBound/join.d.ts +26 -0
- package/dist/Projections/modelBound/join.d.ts.map +1 -0
- package/dist/Projections/modelBound/join.js +31 -0
- package/dist/Projections/modelBound/join.js.map +1 -0
- package/dist/Projections/modelBound/modelBound.d.ts +31 -0
- package/dist/Projections/modelBound/modelBound.d.ts.map +1 -0
- package/dist/Projections/modelBound/modelBound.js +39 -0
- package/dist/Projections/modelBound/modelBound.js.map +1 -0
- package/dist/Projections/modelBound/nested.d.ts +16 -0
- package/dist/Projections/modelBound/nested.d.ts.map +1 -0
- package/dist/Projections/modelBound/nested.js +26 -0
- package/dist/Projections/modelBound/nested.js.map +1 -0
- package/dist/Projections/modelBound/notRewindable.d.ts +14 -0
- package/dist/Projections/modelBound/notRewindable.d.ts.map +1 -0
- package/dist/Projections/modelBound/notRewindable.js +21 -0
- package/dist/Projections/modelBound/notRewindable.js.map +1 -0
- package/dist/Projections/modelBound/removedWith.d.ts +34 -0
- package/dist/Projections/modelBound/removedWith.d.ts.map +1 -0
- package/dist/Projections/modelBound/removedWith.js +47 -0
- package/dist/Projections/modelBound/removedWith.js.map +1 -0
- package/dist/Projections/modelBound/removedWithJoin.d.ts +29 -0
- package/dist/Projections/modelBound/removedWithJoin.d.ts.map +1 -0
- package/dist/Projections/modelBound/removedWithJoin.js +44 -0
- package/dist/Projections/modelBound/removedWithJoin.js.map +1 -0
- package/dist/Projections/modelBound/setFrom.d.ts +23 -0
- package/dist/Projections/modelBound/setFrom.d.ts.map +1 -0
- package/dist/Projections/modelBound/setFrom.js +30 -0
- package/dist/Projections/modelBound/setFrom.js.map +1 -0
- package/dist/Projections/modelBound/setFromContext.d.ts +23 -0
- package/dist/Projections/modelBound/setFromContext.d.ts.map +1 -0
- package/dist/Projections/modelBound/setFromContext.js +30 -0
- package/dist/Projections/modelBound/setFromContext.js.map +1 -0
- package/dist/Projections/modelBound/setValue.d.ts +23 -0
- package/dist/Projections/modelBound/setValue.d.ts.map +1 -0
- package/dist/Projections/modelBound/setValue.js +30 -0
- package/dist/Projections/modelBound/setValue.js.map +1 -0
- package/dist/Projections/modelBound/subtractFrom.d.ts +23 -0
- package/dist/Projections/modelBound/subtractFrom.d.ts.map +1 -0
- package/dist/Projections/modelBound/subtractFrom.js +30 -0
- package/dist/Projections/modelBound/subtractFrom.js.map +1 -0
- package/dist/Reactors/IReactors.d.ts +16 -0
- package/dist/Reactors/IReactors.d.ts.map +1 -0
- package/dist/Reactors/IReactors.js +4 -0
- package/dist/Reactors/IReactors.js.map +1 -0
- package/dist/Reactors/ReactorId.d.ts +10 -0
- package/dist/Reactors/ReactorId.d.ts.map +1 -0
- package/dist/Reactors/ReactorId.js +16 -0
- package/dist/Reactors/ReactorId.js.map +1 -0
- package/dist/Reactors/Reactors.d.ts +38 -0
- package/dist/Reactors/Reactors.d.ts.map +1 -0
- package/dist/Reactors/Reactors.js +279 -0
- package/dist/Reactors/Reactors.js.map +1 -0
- package/dist/Reactors/index.d.ts +6 -0
- package/dist/Reactors/index.d.ts.map +1 -0
- package/dist/Reactors/index.js +6 -0
- package/dist/Reactors/index.js.map +1 -0
- package/dist/Reactors/reactor.d.ts +47 -0
- package/dist/Reactors/reactor.d.ts.map +1 -0
- package/dist/Reactors/reactor.js +55 -0
- package/dist/Reactors/reactor.js.map +1 -0
- package/dist/ReadModels/ReadModelId.d.ts +10 -0
- package/dist/ReadModels/ReadModelId.d.ts.map +1 -0
- package/dist/ReadModels/ReadModelId.js +16 -0
- package/dist/ReadModels/ReadModelId.js.map +1 -0
- package/dist/ReadModels/index.d.ts +4 -0
- package/dist/ReadModels/index.d.ts.map +1 -0
- package/dist/ReadModels/index.js +5 -0
- package/dist/ReadModels/index.js.map +1 -0
- package/dist/ReadModels/readModel.d.ts +33 -0
- package/dist/ReadModels/readModel.d.ts.map +1 -0
- package/dist/ReadModels/readModel.js +64 -0
- package/dist/ReadModels/readModel.js.map +1 -0
- package/dist/Reducers/IReducers.d.ts +16 -0
- package/dist/Reducers/IReducers.d.ts.map +1 -0
- package/dist/Reducers/IReducers.js +4 -0
- package/dist/Reducers/IReducers.js.map +1 -0
- package/dist/Reducers/ReducerId.d.ts +10 -0
- package/dist/Reducers/ReducerId.d.ts.map +1 -0
- package/dist/Reducers/ReducerId.js +16 -0
- package/dist/Reducers/ReducerId.js.map +1 -0
- package/dist/Reducers/Reducers.d.ts +38 -0
- package/dist/Reducers/Reducers.d.ts.map +1 -0
- package/dist/Reducers/Reducers.js +279 -0
- package/dist/Reducers/Reducers.js.map +1 -0
- package/dist/Reducers/index.d.ts +6 -0
- package/dist/Reducers/index.d.ts.map +1 -0
- package/dist/Reducers/index.js +6 -0
- package/dist/Reducers/index.js.map +1 -0
- package/dist/Reducers/reducer.d.ts +51 -0
- package/dist/Reducers/reducer.d.ts.map +1 -0
- package/dist/Reducers/reducer.js +59 -0
- package/dist/Reducers/reducer.js.map +1 -0
- package/dist/Schemas/JsonSchema.d.ts +16 -0
- package/dist/Schemas/JsonSchema.d.ts.map +1 -0
- package/dist/Schemas/JsonSchema.js +4 -0
- package/dist/Schemas/JsonSchema.js.map +1 -0
- package/dist/Schemas/JsonSchemaGenerator.d.ts +26 -0
- package/dist/Schemas/JsonSchemaGenerator.d.ts.map +1 -0
- package/dist/Schemas/JsonSchemaGenerator.js +90 -0
- package/dist/Schemas/JsonSchemaGenerator.js.map +1 -0
- package/dist/Schemas/index.d.ts +4 -0
- package/dist/Schemas/index.d.ts.map +1 -0
- package/dist/Schemas/index.js +5 -0
- package/dist/Schemas/index.js.map +1 -0
- package/dist/Schemas/jsonSchemaProperty.d.ts +13 -0
- package/dist/Schemas/jsonSchemaProperty.d.ts.map +1 -0
- package/dist/Schemas/jsonSchemaProperty.js +22 -0
- package/dist/Schemas/jsonSchemaProperty.js.map +1 -0
- package/dist/Tracing.d.ts +16 -0
- package/dist/Tracing.d.ts.map +1 -0
- package/dist/Tracing.js +19 -0
- package/dist/Tracing.js.map +1 -0
- package/dist/artifacts/DefaultClientArtifactsProvider.d.ts +31 -0
- package/dist/artifacts/DefaultClientArtifactsProvider.d.ts.map +1 -0
- package/dist/artifacts/DefaultClientArtifactsProvider.js +48 -0
- package/dist/artifacts/DefaultClientArtifactsProvider.js.map +1 -0
- package/dist/artifacts/IClientArtifactsProvider.d.ts +21 -0
- package/dist/artifacts/IClientArtifactsProvider.d.ts.map +1 -0
- package/dist/artifacts/IClientArtifactsProvider.js +4 -0
- package/dist/artifacts/IClientArtifactsProvider.js.map +1 -0
- package/dist/artifacts/index.d.ts +3 -0
- package/dist/artifacts/index.d.ts.map +1 -0
- package/dist/artifacts/index.js +4 -0
- package/dist/artifacts/index.js.map +1 -0
- package/dist/connection/ChronicleConnection.d.ts +117 -0
- package/dist/connection/ChronicleConnection.d.ts.map +1 -0
- package/dist/connection/ChronicleConnection.js +194 -0
- package/dist/connection/ChronicleConnection.js.map +1 -0
- package/dist/connection/ChronicleConnectionString.d.ts +2 -0
- package/dist/connection/ChronicleConnectionString.d.ts.map +1 -0
- package/dist/connection/ChronicleConnectionString.js +4 -0
- package/dist/connection/ChronicleConnectionString.js.map +1 -0
- package/dist/connection/ChronicleServices.d.ts +2 -0
- package/dist/connection/ChronicleServices.d.ts.map +1 -0
- package/dist/connection/ChronicleServices.js +4 -0
- package/dist/connection/ChronicleServices.js.map +1 -0
- package/dist/connection/ConnectionLifecycle.d.ts +41 -0
- package/dist/connection/ConnectionLifecycle.d.ts.map +1 -0
- package/dist/connection/ConnectionLifecycle.js +66 -0
- package/dist/connection/ConnectionLifecycle.js.map +1 -0
- package/dist/connection/DateTimeOffset.d.ts +2 -0
- package/dist/connection/DateTimeOffset.d.ts.map +1 -0
- package/dist/connection/DateTimeOffset.js +4 -0
- package/dist/connection/DateTimeOffset.js.map +1 -0
- package/dist/connection/Guid.d.ts +2 -0
- package/dist/connection/Guid.d.ts.map +1 -0
- package/dist/connection/Guid.js +4 -0
- package/dist/connection/Guid.js.map +1 -0
- package/dist/connection/TokenProvider.d.ts +5 -0
- package/dist/connection/TokenProvider.d.ts.map +1 -0
- package/dist/connection/TokenProvider.js +4 -0
- package/dist/connection/TokenProvider.js.map +1 -0
- package/dist/connection/index.d.ts +7 -0
- package/dist/connection/index.d.ts.map +1 -0
- package/dist/connection/index.js +7 -0
- package/dist/connection/index.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/DecoratorType.d.ts +20 -0
- package/dist/types/DecoratorType.d.ts.map +1 -0
- package/dist/types/DecoratorType.js +23 -0
- package/dist/types/DecoratorType.js.map +1 -0
- package/dist/types/TypeDiscoverer.d.ts +54 -0
- package/dist/types/TypeDiscoverer.d.ts.map +1 -0
- package/dist/types/TypeDiscoverer.js +91 -0
- package/dist/types/TypeDiscoverer.js.map +1 -0
- package/dist/types/TypeIntrospector.d.ts +30 -0
- package/dist/types/TypeIntrospector.d.ts.map +1 -0
- package/dist/types/TypeIntrospector.js +154 -0
- package/dist/types/TypeIntrospector.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/index.ts +24 -0
- package/package.json +38 -0
- package/types/DecoratorType.ts +28 -0
- package/types/TypeDiscoverer.ts +109 -0
- package/types/TypeIntrospector.ts +176 -0
- package/types/index.ts +6 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { Constructor } from '@cratis/fundamentals';
|
|
5
|
+
import { IClientArtifactsProvider } from '../artifacts';
|
|
6
|
+
import { ChronicleConnection } from '../connection';
|
|
7
|
+
import { EventTypeId } from './EventTypeId';
|
|
8
|
+
import { IEventTypes } from './IEventTypes';
|
|
9
|
+
import { getEventTypeMetadata, getEventTypeJsonSchemaFor } from './eventTypeDecorator';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Implements {@link IEventTypes}, managing discovery and registration of event types
|
|
13
|
+
* with the Chronicle Kernel.
|
|
14
|
+
*/
|
|
15
|
+
export class EventTypes implements IEventTypes {
|
|
16
|
+
private readonly _types = new Map<string, Constructor>();
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new {@link EventTypes} instance.
|
|
20
|
+
* @param _eventStore - The name of the event store these types belong to.
|
|
21
|
+
* @param _connection - The connection used to communicate with the Kernel.
|
|
22
|
+
* @param _clientArtifacts - Provider for discovered client artifact types.
|
|
23
|
+
*/
|
|
24
|
+
constructor(
|
|
25
|
+
private readonly _eventStore: string,
|
|
26
|
+
private readonly _connection: ChronicleConnection,
|
|
27
|
+
private readonly _clientArtifacts: IClientArtifactsProvider
|
|
28
|
+
) {}
|
|
29
|
+
|
|
30
|
+
/** @inheritdoc */
|
|
31
|
+
get all(): Constructor[] {
|
|
32
|
+
return [...this._types.values()];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** @inheritdoc */
|
|
36
|
+
async discover(): Promise<void> {
|
|
37
|
+
this._types.clear();
|
|
38
|
+
for (const type of this._clientArtifacts.eventTypes) {
|
|
39
|
+
const metadata = getEventTypeMetadata(type);
|
|
40
|
+
if (metadata) {
|
|
41
|
+
this._types.set(metadata.eventType.id.value, type);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** @inheritdoc */
|
|
47
|
+
async register(): Promise<void> {
|
|
48
|
+
if (this._types.size === 0) {
|
|
49
|
+
await this.discover();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const registrations = [...this._types.entries()].map(([, type]) => {
|
|
53
|
+
const metadata = getEventTypeMetadata(type)!;
|
|
54
|
+
const schema = getEventTypeJsonSchemaFor(type);
|
|
55
|
+
return {
|
|
56
|
+
Type: {
|
|
57
|
+
Id: metadata.eventType.id.value,
|
|
58
|
+
Generation: metadata.eventType.generation.value,
|
|
59
|
+
Tombstone: false
|
|
60
|
+
},
|
|
61
|
+
Schema: JSON.stringify(schema),
|
|
62
|
+
Generations: [{
|
|
63
|
+
Generation: metadata.eventType.generation.value,
|
|
64
|
+
Schema: JSON.stringify(schema)
|
|
65
|
+
}],
|
|
66
|
+
Migrations: [],
|
|
67
|
+
EventStore: this._eventStore
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
if (registrations.length === 0) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
await this._connection.eventTypes.register({
|
|
76
|
+
EventStore: this._eventStore,
|
|
77
|
+
Types: registrations,
|
|
78
|
+
DisableValidation: false
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** @inheritdoc */
|
|
83
|
+
hasFor(id: EventTypeId): boolean {
|
|
84
|
+
return this._types.has(id.value);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** @inheritdoc */
|
|
88
|
+
getTypeFor(id: EventTypeId): Constructor {
|
|
89
|
+
const type = this._types.get(id.value);
|
|
90
|
+
if (!type) {
|
|
91
|
+
throw new Error(`No event type registered for id '${id.value}'.`);
|
|
92
|
+
}
|
|
93
|
+
return type;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { Constructor } from '@cratis/fundamentals';
|
|
5
|
+
import { EventTypeId } from './EventTypeId';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Defines a system to work with event types, including discovery and registration with the Kernel.
|
|
9
|
+
*/
|
|
10
|
+
export interface IEventTypes {
|
|
11
|
+
/** Gets all registered event type constructors. */
|
|
12
|
+
readonly all: Constructor[];
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Discovers all event types from the registered client artifacts.
|
|
16
|
+
* @returns A promise that resolves when discovery is complete.
|
|
17
|
+
*/
|
|
18
|
+
discover(): Promise<void>;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Registers all discovered event types with the Chronicle Kernel.
|
|
22
|
+
* @returns A promise that resolves when registration is complete.
|
|
23
|
+
*/
|
|
24
|
+
register(): Promise<void>;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Checks whether an event type constructor exists for the given identifier.
|
|
28
|
+
* @param id - The event type identifier to look up.
|
|
29
|
+
* @returns True if a matching type exists; otherwise false.
|
|
30
|
+
*/
|
|
31
|
+
hasFor(id: EventTypeId): boolean;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Gets the event type constructor for the given identifier.
|
|
35
|
+
* @param id - The event type identifier to look up.
|
|
36
|
+
* @returns The constructor for the event type.
|
|
37
|
+
*/
|
|
38
|
+
getTypeFor(id: EventTypeId): Constructor;
|
|
39
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import 'reflect-metadata';
|
|
5
|
+
import { Constructor } from '@cratis/fundamentals';
|
|
6
|
+
import { EventType } from './EventType';
|
|
7
|
+
import { EventTypeId } from './EventTypeId';
|
|
8
|
+
import { EventTypeGeneration } from './EventTypeGeneration';
|
|
9
|
+
import { DecoratorType, TypeDiscoverer, TypeIntrospector } from '../types';
|
|
10
|
+
import { JsonSchema, JsonSchemaGenerator } from '../Schemas';
|
|
11
|
+
|
|
12
|
+
/** Metadata key used to store event type information on a class. */
|
|
13
|
+
const EVENT_TYPE_METADATA_KEY = 'chronicle:eventType';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Metadata stored for an event type class.
|
|
17
|
+
*/
|
|
18
|
+
export interface EventTypeMetadata {
|
|
19
|
+
/** The event type descriptor for the event class. */
|
|
20
|
+
readonly eventType: EventType;
|
|
21
|
+
|
|
22
|
+
/** The reflected members and their runtime types. */
|
|
23
|
+
readonly members: ReadonlyMap<string, Function | undefined>;
|
|
24
|
+
|
|
25
|
+
/** The generated schema for the event class. */
|
|
26
|
+
readonly schema: JsonSchema;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* TypeScript decorator that marks a class as an event type and associates it with a specific
|
|
31
|
+
* {@link EventType} identifier and generation. This is the TypeScript equivalent of the
|
|
32
|
+
* C# `[EventType]` attribute.
|
|
33
|
+
*
|
|
34
|
+
* Overloads:
|
|
35
|
+
* - `@eventType()` -> uses class name as id, generation 1, tombstone false.
|
|
36
|
+
* - `@eventType(generation)` -> uses class name as id and provided generation.
|
|
37
|
+
* - `@eventType(tombstone)` -> uses class name as id/generation and provided tombstone.
|
|
38
|
+
* - `@eventType(generation, tombstone)` -> uses class name as id.
|
|
39
|
+
* - `@eventType(id, generation, tombstone)` -> full explicit form.
|
|
40
|
+
*
|
|
41
|
+
* @param idOrGenerationOrTombstone - Optional id, generation, or tombstone based on overload.
|
|
42
|
+
* @param generationOrTombstone - Optional generation or tombstone based on overload.
|
|
43
|
+
* @param tombstone - Optional explicit tombstone for the explicit id overload.
|
|
44
|
+
* @returns A class decorator.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* @eventType()
|
|
49
|
+
* class EmployeeHired {
|
|
50
|
+
* constructor(readonly firstName: string, readonly lastName: string) {}
|
|
51
|
+
* }
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export function eventType(): ClassDecorator;
|
|
55
|
+
export function eventType(id: string): ClassDecorator;
|
|
56
|
+
export function eventType(id: string, generation: number): ClassDecorator;
|
|
57
|
+
export function eventType(id: string, generation: number, tombstone: boolean): ClassDecorator;
|
|
58
|
+
export function eventType(generation: number): ClassDecorator;
|
|
59
|
+
export function eventType(generation: number, tombstone: boolean): ClassDecorator;
|
|
60
|
+
export function eventType(tombstone: boolean): ClassDecorator;
|
|
61
|
+
export function eventType(
|
|
62
|
+
idOrGenerationOrTombstone?: string | number | boolean,
|
|
63
|
+
generationOrTombstone?: number | boolean,
|
|
64
|
+
tombstone: boolean = false
|
|
65
|
+
): ClassDecorator {
|
|
66
|
+
let id = '';
|
|
67
|
+
let generation = EventTypeGeneration.firstValue;
|
|
68
|
+
let isTombstone = false;
|
|
69
|
+
|
|
70
|
+
if (typeof idOrGenerationOrTombstone === 'string') {
|
|
71
|
+
id = idOrGenerationOrTombstone;
|
|
72
|
+
if (typeof generationOrTombstone === 'number') {
|
|
73
|
+
generation = generationOrTombstone;
|
|
74
|
+
}
|
|
75
|
+
if (typeof generationOrTombstone === 'boolean') {
|
|
76
|
+
isTombstone = generationOrTombstone;
|
|
77
|
+
} else {
|
|
78
|
+
isTombstone = tombstone;
|
|
79
|
+
}
|
|
80
|
+
} else if (typeof idOrGenerationOrTombstone === 'number') {
|
|
81
|
+
generation = idOrGenerationOrTombstone;
|
|
82
|
+
if (typeof generationOrTombstone === 'boolean') {
|
|
83
|
+
isTombstone = generationOrTombstone;
|
|
84
|
+
}
|
|
85
|
+
} else if (typeof idOrGenerationOrTombstone === 'boolean') {
|
|
86
|
+
isTombstone = idOrGenerationOrTombstone;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return (target: object) => {
|
|
90
|
+
const constructor = target as Function;
|
|
91
|
+
const eventTypeId = new EventTypeId(id || constructor.name);
|
|
92
|
+
const eventTypeInstance = new EventType(eventTypeId, new EventTypeGeneration(generation), isTombstone);
|
|
93
|
+
const members = TypeIntrospector.getMembers(constructor);
|
|
94
|
+
const metadata: EventTypeMetadata = {
|
|
95
|
+
eventType: eventTypeInstance,
|
|
96
|
+
members,
|
|
97
|
+
schema: JsonSchemaGenerator.generate(constructor, members)
|
|
98
|
+
};
|
|
99
|
+
Reflect.defineMetadata(EVENT_TYPE_METADATA_KEY, metadata, target);
|
|
100
|
+
TypeDiscoverer.default.register(
|
|
101
|
+
DecoratorType.EventType,
|
|
102
|
+
constructor as Constructor,
|
|
103
|
+
eventTypeId.value
|
|
104
|
+
);
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Gets the {@link EventType} associated with a class decorated with {@link eventType}.
|
|
110
|
+
* @param target - The class constructor to retrieve the event type for.
|
|
111
|
+
* @returns The associated EventType, or EventType.unknown if not decorated.
|
|
112
|
+
*/
|
|
113
|
+
export function getEventTypeFor(target: Function): EventType {
|
|
114
|
+
return getEventTypeMetadata(target)?.eventType ?? EventType.unknown;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Checks whether a class has been decorated with {@link eventType}.
|
|
119
|
+
* @param target - The class constructor to check.
|
|
120
|
+
* @returns True if the class has an event type decorator; false otherwise.
|
|
121
|
+
*/
|
|
122
|
+
export function hasEventType(target: Function): boolean {
|
|
123
|
+
return getEventTypeMetadata(target) !== undefined;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Gets the metadata associated with a class decorated with {@link eventType}.
|
|
128
|
+
* @param target - The class constructor to retrieve metadata for.
|
|
129
|
+
* @returns The associated metadata, or undefined if not decorated.
|
|
130
|
+
*/
|
|
131
|
+
export function getEventTypeMetadata(target: Function): EventTypeMetadata | undefined {
|
|
132
|
+
return Reflect.getMetadata(EVENT_TYPE_METADATA_KEY, target);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Generates a JSON schema for the provided event type class.
|
|
137
|
+
* @param target - The event class constructor to generate schema for.
|
|
138
|
+
* @returns The generated JSON schema.
|
|
139
|
+
*/
|
|
140
|
+
export function getEventTypeJsonSchemaFor(target: Function): JsonSchema {
|
|
141
|
+
const metadata = getEventTypeMetadata(target);
|
|
142
|
+
if (metadata) {
|
|
143
|
+
return metadata.schema;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return JsonSchemaGenerator.createEmptySchema(target.name);
|
|
147
|
+
}
|
package/Events/index.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
export { EventType } from './EventType';
|
|
5
|
+
export { EventTypeId } from './EventTypeId';
|
|
6
|
+
export { EventTypeGeneration } from './EventTypeGeneration';
|
|
7
|
+
export { eventType, getEventTypeFor, hasEventType, getEventTypeMetadata, getEventTypeJsonSchemaFor } from './eventTypeDecorator';
|
|
8
|
+
export type { EventTypeMetadata } from './eventTypeDecorator';
|
|
9
|
+
export type { EventContext } from './EventContext';
|
|
10
|
+
export type { CausationEntry } from './CausationEntry';
|
|
11
|
+
export type { AppendedEvent } from './AppendedEvent';
|
|
12
|
+
export type { IEventTypes } from './IEventTypes';
|
|
13
|
+
export { EventTypes } from './EventTypes';
|
|
14
|
+
export * from './Constraints';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { ChronicleOptions } from './ChronicleOptions';
|
|
5
|
+
import { EventStoreName } from './EventStoreName';
|
|
6
|
+
import { EventStoreNamespaceName } from './EventStoreNamespaceName';
|
|
7
|
+
import { IEventStore } from './IEventStore';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Defines the Cratis Chronicle client API surface.
|
|
11
|
+
*
|
|
12
|
+
* The Chronicle client is the primary entry point for interacting with the
|
|
13
|
+
* Chronicle Kernel. Use it to obtain event stores, which in turn provide access
|
|
14
|
+
* to event sequences for appending and observing events.
|
|
15
|
+
*/
|
|
16
|
+
export interface IChronicleClient {
|
|
17
|
+
/** The options used to configure the client. */
|
|
18
|
+
readonly options: ChronicleOptions;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Gets or creates an event store by name and optional namespace.
|
|
22
|
+
* If no namespace is provided, the default namespace is used.
|
|
23
|
+
* @param name - The name of the event store.
|
|
24
|
+
* @param namespace - Optional namespace name within the event store.
|
|
25
|
+
* @returns The event store.
|
|
26
|
+
*/
|
|
27
|
+
getEventStore(name: string | EventStoreName, namespace?: string | EventStoreNamespaceName): Promise<IEventStore>;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Lists all event stores registered with the Chronicle Kernel.
|
|
31
|
+
* @returns An array of event store names.
|
|
32
|
+
*/
|
|
33
|
+
getEventStores(): Promise<EventStoreName[]>;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Disposes of the client and releases all underlying resources.
|
|
37
|
+
*/
|
|
38
|
+
dispose(): void;
|
|
39
|
+
}
|
package/IEventStore.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { IEventLog } from './EventSequences/IEventLog';
|
|
5
|
+
import { IEventSequence } from './EventSequences/IEventSequence';
|
|
6
|
+
import { EventSequenceId } from './EventSequences/EventSequenceId';
|
|
7
|
+
import { EventStoreName } from './EventStoreName';
|
|
8
|
+
import { EventStoreNamespaceName } from './EventStoreNamespaceName';
|
|
9
|
+
import { IEventTypes } from './Events/IEventTypes';
|
|
10
|
+
import { IConstraints } from './Events/Constraints/IConstraints';
|
|
11
|
+
import { IProjections } from './Projections/IProjections';
|
|
12
|
+
import { IReactors } from './Reactors/IReactors';
|
|
13
|
+
import { IReducers } from './Reducers/IReducers';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Defines the API surface for an event store.
|
|
17
|
+
* An event store is a logical grouping of event sequences within a namespace.
|
|
18
|
+
*/
|
|
19
|
+
export interface IEventStore {
|
|
20
|
+
/** The name of the event store. */
|
|
21
|
+
readonly name: EventStoreName;
|
|
22
|
+
|
|
23
|
+
/** The namespace of the event store. */
|
|
24
|
+
readonly namespace: EventStoreNamespaceName;
|
|
25
|
+
|
|
26
|
+
/** The primary event log sequence for this event store. */
|
|
27
|
+
readonly eventLog: IEventLog;
|
|
28
|
+
|
|
29
|
+
/** The event types manager for this event store. */
|
|
30
|
+
readonly eventTypes: IEventTypes;
|
|
31
|
+
|
|
32
|
+
/** The constraints manager for this event store. */
|
|
33
|
+
readonly constraints: IConstraints;
|
|
34
|
+
|
|
35
|
+
/** The projections manager for this event store. */
|
|
36
|
+
readonly projections: IProjections;
|
|
37
|
+
|
|
38
|
+
/** The reactors manager for this event store. */
|
|
39
|
+
readonly reactors: IReactors;
|
|
40
|
+
|
|
41
|
+
/** The reducers manager for this event store. */
|
|
42
|
+
readonly reducers: IReducers;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Gets an event sequence by its identifier.
|
|
46
|
+
* @param id - The identifier of the event sequence to retrieve.
|
|
47
|
+
* @returns The event sequence with the given identifier.
|
|
48
|
+
*/
|
|
49
|
+
getEventSequence(id: EventSequenceId): IEventSequence;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Lists the namespaces available in this event store.
|
|
53
|
+
* @returns An array of namespace names.
|
|
54
|
+
*/
|
|
55
|
+
getNamespaces(): Promise<EventStoreNamespaceName[]>;
|
|
56
|
+
}
|
package/Metrics.ts
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { metrics } from '@opentelemetry/api';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The name of the Chronicle metrics instrumentation library.
|
|
8
|
+
* This matches {@link ChronicleInstrumentationName} from Tracing so that all Chronicle
|
|
9
|
+
* telemetry is grouped under a single instrumentation scope in your observability backend.
|
|
10
|
+
*/
|
|
11
|
+
export const ChronicleMeterName = '@cratis/chronicle';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The OpenTelemetry meter used by the Chronicle client for all metric instrumentation.
|
|
15
|
+
*
|
|
16
|
+
* If your application has configured an OpenTelemetry SDK (e.g. via {@link https://www.npmjs.com/package/@opentelemetry/sdk-node}),
|
|
17
|
+
* Chronicle metrics will automatically flow through it.
|
|
18
|
+
* If no SDK is configured, the no-op meter is used and no overhead is incurred.
|
|
19
|
+
*/
|
|
20
|
+
export const ChronicleMeter = metrics.getMeter(ChronicleMeterName);
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Pre-built metric instruments for all Chronicle client operations.
|
|
24
|
+
* These are created once and shared across all invocations.
|
|
25
|
+
*/
|
|
26
|
+
export const ChronicleMetrics = {
|
|
27
|
+
/**
|
|
28
|
+
* Counts the number of individual events appended to an event sequence.
|
|
29
|
+
*
|
|
30
|
+
* Attributes: `chronicle.event_store`, `chronicle.namespace`,
|
|
31
|
+
* `chronicle.event_sequence_id`, `chronicle.event_type_id`
|
|
32
|
+
*/
|
|
33
|
+
eventsAppended: ChronicleMeter.createCounter('chronicle.events.appended', {
|
|
34
|
+
description: 'Number of individual events appended to an event sequence.',
|
|
35
|
+
unit: '{event}'
|
|
36
|
+
}),
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Counts the number of batch-append operations performed on an event sequence.
|
|
40
|
+
* Each call to appendMany counts as one batch regardless of how many events it contains.
|
|
41
|
+
*
|
|
42
|
+
* Attributes: `chronicle.event_store`, `chronicle.namespace`,
|
|
43
|
+
* `chronicle.event_sequence_id`, `chronicle.events_count`
|
|
44
|
+
*/
|
|
45
|
+
batchAppendsPerformed: ChronicleMeter.createCounter('chronicle.events.batch_appends', {
|
|
46
|
+
description: 'Number of batch-append operations performed on an event sequence.',
|
|
47
|
+
unit: '{operation}'
|
|
48
|
+
}),
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Counts the number of event store retrieval operations.
|
|
52
|
+
*
|
|
53
|
+
* Attributes: `chronicle.event_store`, `chronicle.namespace`
|
|
54
|
+
*/
|
|
55
|
+
eventStoreRetrievals: ChronicleMeter.createCounter('chronicle.client.event_store_retrievals', {
|
|
56
|
+
description: 'Number of event store retrieval operations.',
|
|
57
|
+
unit: '{operation}'
|
|
58
|
+
}),
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Measures the duration of append operations in milliseconds.
|
|
62
|
+
*
|
|
63
|
+
* Attributes: `chronicle.event_store`, `chronicle.namespace`,
|
|
64
|
+
* `chronicle.event_sequence_id`, `chronicle.event_type_id`
|
|
65
|
+
*/
|
|
66
|
+
appendDuration: ChronicleMeter.createHistogram('chronicle.events.append_duration', {
|
|
67
|
+
description: 'Duration of individual event append operations.',
|
|
68
|
+
unit: 'ms',
|
|
69
|
+
advice: {
|
|
70
|
+
explicitBucketBoundaries: [1, 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000]
|
|
71
|
+
}
|
|
72
|
+
}),
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Measures the duration of batch-append operations in milliseconds.
|
|
76
|
+
*
|
|
77
|
+
* Attributes: `chronicle.event_store`, `chronicle.namespace`,
|
|
78
|
+
* `chronicle.event_sequence_id`, `chronicle.events_count`
|
|
79
|
+
*/
|
|
80
|
+
appendManyDuration: ChronicleMeter.createHistogram('chronicle.events.append_many_duration', {
|
|
81
|
+
description: 'Duration of batch event append operations.',
|
|
82
|
+
unit: 'ms',
|
|
83
|
+
advice: {
|
|
84
|
+
explicitBucketBoundaries: [1, 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000]
|
|
85
|
+
}
|
|
86
|
+
}),
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Counts the number of append constraint violations encountered.
|
|
90
|
+
*
|
|
91
|
+
* Attributes: `chronicle.event_store`, `chronicle.namespace`,
|
|
92
|
+
* `chronicle.event_sequence_id`
|
|
93
|
+
*/
|
|
94
|
+
constraintViolations: ChronicleMeter.createCounter('chronicle.events.constraint_violations', {
|
|
95
|
+
description: 'Number of constraint violations encountered during event appends.',
|
|
96
|
+
unit: '{violation}'
|
|
97
|
+
}),
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Counts the number of append errors encountered.
|
|
101
|
+
*
|
|
102
|
+
* Attributes: `chronicle.event_store`, `chronicle.namespace`,
|
|
103
|
+
* `chronicle.event_sequence_id`
|
|
104
|
+
*/
|
|
105
|
+
appendErrors: ChronicleMeter.createCounter('chronicle.events.append_errors', {
|
|
106
|
+
description: 'Number of errors encountered during event appends.',
|
|
107
|
+
unit: '{error}'
|
|
108
|
+
})
|
|
109
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Represents the unique identifier of an observer.
|
|
6
|
+
*/
|
|
7
|
+
export class ObserverId {
|
|
8
|
+
constructor(readonly value: string) {}
|
|
9
|
+
|
|
10
|
+
/** @inheritdoc */
|
|
11
|
+
toString(): string {
|
|
12
|
+
return this.value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Represents the running state of an observer.
|
|
6
|
+
*/
|
|
7
|
+
export enum ObserverRunningState {
|
|
8
|
+
/** The observer is in an unknown state. */
|
|
9
|
+
Unknown = 'Unknown',
|
|
10
|
+
|
|
11
|
+
/** The observer is subscribing to the event sequence. */
|
|
12
|
+
Subscribing = 'Subscribing',
|
|
13
|
+
|
|
14
|
+
/** The observer is replaying events from the beginning. */
|
|
15
|
+
Replaying = 'Replaying',
|
|
16
|
+
|
|
17
|
+
/** The observer is resuming after a pause. */
|
|
18
|
+
Resuming = 'Resuming',
|
|
19
|
+
|
|
20
|
+
/** The observer is actively processing events. */
|
|
21
|
+
Active = 'Active',
|
|
22
|
+
|
|
23
|
+
/** The observer is paused and not processing events. */
|
|
24
|
+
Paused = 'Paused',
|
|
25
|
+
|
|
26
|
+
/** The observer has stopped processing events. */
|
|
27
|
+
Stopped = 'Stopped',
|
|
28
|
+
|
|
29
|
+
/** The observer is in a failed state. */
|
|
30
|
+
Failed = 'Failed',
|
|
31
|
+
|
|
32
|
+
/** The observer has been disconnected. */
|
|
33
|
+
Disconnected = 'Disconnected'
|
|
34
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Defines a system to work with projections, including discovery and registration with the Kernel.
|
|
6
|
+
*/
|
|
7
|
+
export interface IProjections {
|
|
8
|
+
/**
|
|
9
|
+
* Discovers all projections from the registered client artifacts.
|
|
10
|
+
* @returns A promise that resolves when discovery is complete.
|
|
11
|
+
*/
|
|
12
|
+
discover(): Promise<void>;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Registers all discovered projections with the Chronicle Kernel.
|
|
16
|
+
* @returns A promise that resolves when registration is complete.
|
|
17
|
+
*/
|
|
18
|
+
register(): Promise<void>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Unique identifier for a projection.
|
|
6
|
+
*/
|
|
7
|
+
export class ProjectionId {
|
|
8
|
+
constructor(readonly value: string) {}
|
|
9
|
+
|
|
10
|
+
/** @inheritdoc */
|
|
11
|
+
toString(): string {
|
|
12
|
+
return this.value;
|
|
13
|
+
}
|
|
14
|
+
}
|