@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,91 @@
|
|
|
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 path from 'path';
|
|
4
|
+
/**
|
|
5
|
+
* Encapsulates discovery and registry operations for decorator-based artifacts.
|
|
6
|
+
*/
|
|
7
|
+
export class TypeDiscoverer {
|
|
8
|
+
/** Shared default discoverer instance. */
|
|
9
|
+
static default = new TypeDiscoverer();
|
|
10
|
+
static _registeredTypes = new Map();
|
|
11
|
+
_glob;
|
|
12
|
+
_importFile;
|
|
13
|
+
/**
|
|
14
|
+
* Initializes a new instance of the {@link TypeDiscoverer} class.
|
|
15
|
+
* @param glob - Optional glob function used to resolve file paths.
|
|
16
|
+
* @param importFile - Optional importer used to load discovered files.
|
|
17
|
+
*/
|
|
18
|
+
constructor(glob, importFile) {
|
|
19
|
+
this._glob = glob ?? TypeDiscoverer.resolveWithGlobPackage;
|
|
20
|
+
this._importFile = importFile ?? TypeDiscoverer.importDiscoveredFile;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Discovers and imports all files matching one or more glob patterns.
|
|
24
|
+
* @param pattern - One or more file glob patterns.
|
|
25
|
+
*/
|
|
26
|
+
async discover(pattern) {
|
|
27
|
+
const patterns = Array.isArray(pattern) ? pattern : [pattern];
|
|
28
|
+
const files = await this._glob(patterns);
|
|
29
|
+
for (const file of files) {
|
|
30
|
+
await this._importFile(path.resolve(file));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Registers a discoverable type for a decorator category.
|
|
35
|
+
* @param decoratorType - The decorator category to register for.
|
|
36
|
+
* @param type - The type constructor to register.
|
|
37
|
+
* @param name - Optional explicit discovery name for the type.
|
|
38
|
+
*/
|
|
39
|
+
register(decoratorType, type, name) {
|
|
40
|
+
const discoveredName = name ?? type.name;
|
|
41
|
+
const typesForDecorator = TypeDiscoverer._registeredTypes.get(decoratorType) ?? new Map();
|
|
42
|
+
typesForDecorator.set(discoveredName, type);
|
|
43
|
+
TypeDiscoverer._registeredTypes.set(decoratorType, typesForDecorator);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Gets all registered types for a decorator category.
|
|
47
|
+
* @param decoratorType - The decorator category to retrieve types for.
|
|
48
|
+
* @returns The registered types.
|
|
49
|
+
*/
|
|
50
|
+
getTypesByDecoratorType(decoratorType) {
|
|
51
|
+
return Array.from((TypeDiscoverer._registeredTypes.get(decoratorType) ?? new Map()).values());
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Gets a registered type by decorator category and name.
|
|
55
|
+
* @param decoratorType - The decorator category to resolve.
|
|
56
|
+
* @param name - The registered name of the type.
|
|
57
|
+
* @returns The matching type, if any.
|
|
58
|
+
*/
|
|
59
|
+
getTypeByDecoratorTypeAndName(decoratorType, name) {
|
|
60
|
+
return TypeDiscoverer._registeredTypes.get(decoratorType)?.get(name);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Clears all registered types.
|
|
64
|
+
* Primarily intended for test isolation.
|
|
65
|
+
*/
|
|
66
|
+
clear() {
|
|
67
|
+
TypeDiscoverer._registeredTypes.clear();
|
|
68
|
+
}
|
|
69
|
+
static async resolveWithGlobPackage(pattern) {
|
|
70
|
+
let globFunction;
|
|
71
|
+
try {
|
|
72
|
+
const globModule = await import('glob');
|
|
73
|
+
globFunction = globModule.glob;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
throw new Error('Could not load a compatible "glob" function for type discovery.');
|
|
77
|
+
}
|
|
78
|
+
if (typeof globFunction !== 'function') {
|
|
79
|
+
throw new Error('The "glob" module was loaded but does not export a function named "glob".');
|
|
80
|
+
}
|
|
81
|
+
const files = await globFunction(pattern);
|
|
82
|
+
if (!Array.isArray(files) || files.some(file => typeof file !== 'string')) {
|
|
83
|
+
throw new Error('Type discovery glob resolution did not return an array of file paths.');
|
|
84
|
+
}
|
|
85
|
+
return files;
|
|
86
|
+
}
|
|
87
|
+
static async importDiscoveredFile(filePath) {
|
|
88
|
+
return await import(filePath);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=TypeDiscoverer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeDiscoverer.js","sourceRoot":"","sources":["../../types/TypeDiscoverer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
/**
|
|
3
|
+
* Provides reflection-based type introspection utilities for decorated Chronicle artifacts.
|
|
4
|
+
*/
|
|
5
|
+
export declare class TypeIntrospector {
|
|
6
|
+
/**
|
|
7
|
+
* Tracks a property name on a type so it can be included in reflection-based introspection.
|
|
8
|
+
* @param target - The class constructor to track the property for.
|
|
9
|
+
* @param propertyName - The property name to track.
|
|
10
|
+
*/
|
|
11
|
+
static trackProperty(target: Function, propertyName: string): void;
|
|
12
|
+
/**
|
|
13
|
+
* Gets all tracked properties for a type.
|
|
14
|
+
* @param target - The class constructor to inspect.
|
|
15
|
+
* @returns The tracked property names.
|
|
16
|
+
*/
|
|
17
|
+
static getTrackedProperties(target: Function): string[];
|
|
18
|
+
/**
|
|
19
|
+
* Gets members and their runtime types for a class.
|
|
20
|
+
* Members are discovered from tracked properties and constructor parameters.
|
|
21
|
+
* @param target - The class constructor to inspect.
|
|
22
|
+
* @returns A map of member name to runtime type.
|
|
23
|
+
*/
|
|
24
|
+
static getMembers(target: Function): Map<string, Function | undefined>;
|
|
25
|
+
private static tryGetDefaultPropertyValues;
|
|
26
|
+
private static getRuntimeTypeFromValue;
|
|
27
|
+
private static getConstructorParameterNames;
|
|
28
|
+
private static extractParameterName;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=TypeIntrospector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeIntrospector.d.ts","sourceRoot":"","sources":["../../types/TypeIntrospector.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAK1B;;GAEG;AACH,qBAAa,gBAAgB;IACzB;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IASlE;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE;IAIvD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IA4BtE,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAc1C,OAAO,CAAC,MAAM,CAAC,uBAAuB;IA2BtC,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAmD3C,OAAO,CAAC,MAAM,CAAC,oBAAoB;CActC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
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 'reflect-metadata';
|
|
4
|
+
/** Metadata key for tracked schema properties on a target type. */
|
|
5
|
+
const TRACKED_PROPERTIES_METADATA_KEY = 'chronicle:typeIntrospection:properties';
|
|
6
|
+
/**
|
|
7
|
+
* Provides reflection-based type introspection utilities for decorated Chronicle artifacts.
|
|
8
|
+
*/
|
|
9
|
+
export class TypeIntrospector {
|
|
10
|
+
/**
|
|
11
|
+
* Tracks a property name on a type so it can be included in reflection-based introspection.
|
|
12
|
+
* @param target - The class constructor to track the property for.
|
|
13
|
+
* @param propertyName - The property name to track.
|
|
14
|
+
*/
|
|
15
|
+
static trackProperty(target, propertyName) {
|
|
16
|
+
const trackedProperties = this.getTrackedProperties(target);
|
|
17
|
+
if (trackedProperties.includes(propertyName)) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
Reflect.defineMetadata(TRACKED_PROPERTIES_METADATA_KEY, [...trackedProperties, propertyName], target);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gets all tracked properties for a type.
|
|
24
|
+
* @param target - The class constructor to inspect.
|
|
25
|
+
* @returns The tracked property names.
|
|
26
|
+
*/
|
|
27
|
+
static getTrackedProperties(target) {
|
|
28
|
+
return Reflect.getMetadata(TRACKED_PROPERTIES_METADATA_KEY, target) ?? [];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Gets members and their runtime types for a class.
|
|
32
|
+
* Members are discovered from tracked properties and constructor parameters.
|
|
33
|
+
* @param target - The class constructor to inspect.
|
|
34
|
+
* @returns A map of member name to runtime type.
|
|
35
|
+
*/
|
|
36
|
+
static getMembers(target) {
|
|
37
|
+
const members = new Map();
|
|
38
|
+
const defaultValues = this.tryGetDefaultPropertyValues(target);
|
|
39
|
+
for (const property of this.getTrackedProperties(target)) {
|
|
40
|
+
let runtimeType = Reflect.getMetadata('design:type', target.prototype, property);
|
|
41
|
+
if (!runtimeType || runtimeType === Object) {
|
|
42
|
+
runtimeType = this.getRuntimeTypeFromValue(defaultValues[property]);
|
|
43
|
+
}
|
|
44
|
+
members.set(property, runtimeType);
|
|
45
|
+
}
|
|
46
|
+
const constructorParameterNames = this.getConstructorParameterNames(target);
|
|
47
|
+
const constructorParameterTypes = Reflect.getMetadata('design:paramtypes', target) ?? [];
|
|
48
|
+
for (let index = 0; index < constructorParameterNames.length; index++) {
|
|
49
|
+
const parameterName = constructorParameterNames[index];
|
|
50
|
+
if (members.has(parameterName)) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
members.set(parameterName, constructorParameterTypes[index]);
|
|
54
|
+
}
|
|
55
|
+
return members;
|
|
56
|
+
}
|
|
57
|
+
static tryGetDefaultPropertyValues(target) {
|
|
58
|
+
try {
|
|
59
|
+
const parameters = Array.from({ length: target.length }, () => undefined);
|
|
60
|
+
const instance = Reflect.construct(target, parameters);
|
|
61
|
+
if (!instance || typeof instance !== 'object') {
|
|
62
|
+
return {};
|
|
63
|
+
}
|
|
64
|
+
return instance;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return {};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
static getRuntimeTypeFromValue(value) {
|
|
71
|
+
if (typeof value === 'string') {
|
|
72
|
+
return String;
|
|
73
|
+
}
|
|
74
|
+
if (typeof value === 'number') {
|
|
75
|
+
return Number;
|
|
76
|
+
}
|
|
77
|
+
if (typeof value === 'boolean') {
|
|
78
|
+
return Boolean;
|
|
79
|
+
}
|
|
80
|
+
if (Array.isArray(value)) {
|
|
81
|
+
return Array;
|
|
82
|
+
}
|
|
83
|
+
if (value && typeof value === 'object') {
|
|
84
|
+
const constructor = value.constructor;
|
|
85
|
+
if (constructor && constructor !== Object) {
|
|
86
|
+
return constructor;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
static getConstructorParameterNames(target) {
|
|
92
|
+
const source = target.toString();
|
|
93
|
+
const constructorKeyword = 'constructor(';
|
|
94
|
+
const constructorStart = source.indexOf(constructorKeyword);
|
|
95
|
+
if (constructorStart < 0) {
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
let index = constructorStart + constructorKeyword.length;
|
|
99
|
+
let depth = 1;
|
|
100
|
+
let parameterSegment = '';
|
|
101
|
+
while (index < source.length && depth > 0) {
|
|
102
|
+
const character = source[index];
|
|
103
|
+
if (character === '(') {
|
|
104
|
+
depth++;
|
|
105
|
+
parameterSegment += character;
|
|
106
|
+
}
|
|
107
|
+
else if (character === ')') {
|
|
108
|
+
depth--;
|
|
109
|
+
if (depth > 0) {
|
|
110
|
+
parameterSegment += character;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
parameterSegment += character;
|
|
115
|
+
}
|
|
116
|
+
index++;
|
|
117
|
+
}
|
|
118
|
+
const names = [];
|
|
119
|
+
let current = '';
|
|
120
|
+
for (const character of parameterSegment) {
|
|
121
|
+
if (character === ',') {
|
|
122
|
+
const candidate = current.trim();
|
|
123
|
+
if (candidate.length > 0) {
|
|
124
|
+
names.push(candidate);
|
|
125
|
+
}
|
|
126
|
+
current = '';
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
current += character;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const lastCandidate = current.trim();
|
|
133
|
+
if (lastCandidate.length > 0) {
|
|
134
|
+
names.push(lastCandidate);
|
|
135
|
+
}
|
|
136
|
+
return names
|
|
137
|
+
.map(name => this.extractParameterName(name))
|
|
138
|
+
.filter(name => name.length > 0);
|
|
139
|
+
}
|
|
140
|
+
static extractParameterName(rawParameter) {
|
|
141
|
+
if (/[{}\[\]]/.test(rawParameter)) {
|
|
142
|
+
return '';
|
|
143
|
+
}
|
|
144
|
+
const withoutRest = rawParameter.startsWith('...') ? rawParameter.substring(3) : rawParameter;
|
|
145
|
+
const equalsIndex = withoutRest.indexOf('=');
|
|
146
|
+
const withoutDefaultValue = equalsIndex >= 0 ? withoutRest.substring(0, equalsIndex) : withoutRest;
|
|
147
|
+
const colonIndex = withoutDefaultValue.indexOf(':');
|
|
148
|
+
const withoutTypeAnnotation = colonIndex >= 0
|
|
149
|
+
? withoutDefaultValue.substring(0, colonIndex)
|
|
150
|
+
: withoutDefaultValue;
|
|
151
|
+
return withoutTypeAnnotation.trim();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=TypeIntrospector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeIntrospector.js","sourceRoot":"","sources":["../../types/TypeIntrospector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
export { DecoratorType } from './DecoratorType';
|
|
4
|
+
export { TypeDiscoverer } from './TypeDiscoverer';
|
|
5
|
+
export { TypeIntrospector } from './TypeIntrospector';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/index.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
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 { ChronicleClient } from './ChronicleClient';
|
|
5
|
+
export type { IChronicleClient } from './IChronicleClient';
|
|
6
|
+
export { ChronicleOptions } from './ChronicleOptions';
|
|
7
|
+
export { EventStore } from './EventStore';
|
|
8
|
+
export type { IEventStore } from './IEventStore';
|
|
9
|
+
export { EventStoreName } from './EventStoreName';
|
|
10
|
+
export { EventStoreNamespaceName } from './EventStoreNamespaceName';
|
|
11
|
+
export { Guid } from '@cratis/fundamentals';
|
|
12
|
+
export { ChronicleInstrumentationName, ChronicleTracer } from './Tracing';
|
|
13
|
+
export { ChronicleMeter, ChronicleMeterName, ChronicleMetrics } from './Metrics';
|
|
14
|
+
|
|
15
|
+
export * from './Events';
|
|
16
|
+
export * from './EventSequences';
|
|
17
|
+
export * from './Reactors';
|
|
18
|
+
export * from './Reducers';
|
|
19
|
+
export * from './ReadModels';
|
|
20
|
+
export * from './Projections';
|
|
21
|
+
export * from './Observation';
|
|
22
|
+
export * from './Schemas';
|
|
23
|
+
export * from './types';
|
|
24
|
+
export * from './artifacts';
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cratis/chronicle",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "TypeScript idiomatic client for Cratis Chronicle",
|
|
5
|
+
"author": "Cratis",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/Cratis/Chronicle.TypeScript.git"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"**/*.ts"
|
|
14
|
+
],
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public",
|
|
17
|
+
"provenance": false
|
|
18
|
+
},
|
|
19
|
+
"type": "module",
|
|
20
|
+
"main": "dist/index.js",
|
|
21
|
+
"types": "dist/index.d.ts",
|
|
22
|
+
"scripts": {
|
|
23
|
+
"compile": "tsc -b",
|
|
24
|
+
"build": "tsc -b",
|
|
25
|
+
"clean": "rm -rf dist"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@bufbuild/protobuf": "^2.12.0",
|
|
29
|
+
"@cratis/chronicle.contracts": "^15.25.2",
|
|
30
|
+
"@cratis/fundamentals": "^7.9.0",
|
|
31
|
+
"@opentelemetry/api": "^1.9.1",
|
|
32
|
+
"reflect-metadata": "^0.2.2"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@types/node": "^25.6.1",
|
|
36
|
+
"typescript": "^6.0.3"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
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 supported decorator categories for discoverable artifact types.
|
|
6
|
+
*/
|
|
7
|
+
export enum DecoratorType {
|
|
8
|
+
/** Event type artifacts discovered through the eventType decorator. */
|
|
9
|
+
EventType = 'eventType',
|
|
10
|
+
|
|
11
|
+
/** Read model artifacts discovered through the readModel decorator. */
|
|
12
|
+
ReadModel = 'readModel',
|
|
13
|
+
|
|
14
|
+
/** Reactor artifacts discovered through the reactor decorator. */
|
|
15
|
+
Reactor = 'reactor',
|
|
16
|
+
|
|
17
|
+
/** Reducer artifacts discovered through the reducer decorator. */
|
|
18
|
+
Reducer = 'reducer',
|
|
19
|
+
|
|
20
|
+
/** Constraint artifacts discovered through the constraint decorator. */
|
|
21
|
+
Constraint = 'constraint',
|
|
22
|
+
|
|
23
|
+
/** Declarative projection artifacts discovered through the projection decorator. */
|
|
24
|
+
Projection = 'projection',
|
|
25
|
+
|
|
26
|
+
/** Model-bound projection artifacts discovered through the modelBound decorator. */
|
|
27
|
+
ModelBoundProjection = 'modelBoundProjection'
|
|
28
|
+
}
|
|
@@ -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 path from 'path';
|
|
5
|
+
import { DecoratorType } from './DecoratorType';
|
|
6
|
+
import { Constructor } from '@cratis/fundamentals';
|
|
7
|
+
|
|
8
|
+
type GlobFunction = (pattern: string | string[]) => Promise<string[]>;
|
|
9
|
+
type FileImporter = (filePath: string) => Promise<unknown>;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Encapsulates discovery and registry operations for decorator-based artifacts.
|
|
13
|
+
*/
|
|
14
|
+
export class TypeDiscoverer {
|
|
15
|
+
/** Shared default discoverer instance. */
|
|
16
|
+
static readonly default = new TypeDiscoverer();
|
|
17
|
+
|
|
18
|
+
private static readonly _registeredTypes: Map<DecoratorType, Map<string, Constructor>> = new Map();
|
|
19
|
+
|
|
20
|
+
private readonly _glob: GlobFunction;
|
|
21
|
+
private readonly _importFile: FileImporter;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Initializes a new instance of the {@link TypeDiscoverer} class.
|
|
25
|
+
* @param glob - Optional glob function used to resolve file paths.
|
|
26
|
+
* @param importFile - Optional importer used to load discovered files.
|
|
27
|
+
*/
|
|
28
|
+
constructor(glob?: GlobFunction, importFile?: FileImporter) {
|
|
29
|
+
this._glob = glob ?? TypeDiscoverer.resolveWithGlobPackage;
|
|
30
|
+
this._importFile = importFile ?? TypeDiscoverer.importDiscoveredFile;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Discovers and imports all files matching one or more glob patterns.
|
|
35
|
+
* @param pattern - One or more file glob patterns.
|
|
36
|
+
*/
|
|
37
|
+
async discover(pattern: string | string[]): Promise<void> {
|
|
38
|
+
const patterns = Array.isArray(pattern) ? pattern : [pattern];
|
|
39
|
+
const files = await this._glob(patterns);
|
|
40
|
+
for (const file of files) {
|
|
41
|
+
await this._importFile(path.resolve(file));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Registers a discoverable type for a decorator category.
|
|
47
|
+
* @param decoratorType - The decorator category to register for.
|
|
48
|
+
* @param type - The type constructor to register.
|
|
49
|
+
* @param name - Optional explicit discovery name for the type.
|
|
50
|
+
*/
|
|
51
|
+
register(decoratorType: DecoratorType, type: Constructor, name?: string): void {
|
|
52
|
+
const discoveredName = name ?? type.name;
|
|
53
|
+
const typesForDecorator = TypeDiscoverer._registeredTypes.get(decoratorType) ?? new Map<string, Constructor>();
|
|
54
|
+
typesForDecorator.set(discoveredName, type);
|
|
55
|
+
TypeDiscoverer._registeredTypes.set(decoratorType, typesForDecorator);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Gets all registered types for a decorator category.
|
|
60
|
+
* @param decoratorType - The decorator category to retrieve types for.
|
|
61
|
+
* @returns The registered types.
|
|
62
|
+
*/
|
|
63
|
+
getTypesByDecoratorType(decoratorType: DecoratorType): Constructor[] {
|
|
64
|
+
return Array.from((TypeDiscoverer._registeredTypes.get(decoratorType) ?? new Map()).values());
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Gets a registered type by decorator category and name.
|
|
69
|
+
* @param decoratorType - The decorator category to resolve.
|
|
70
|
+
* @param name - The registered name of the type.
|
|
71
|
+
* @returns The matching type, if any.
|
|
72
|
+
*/
|
|
73
|
+
getTypeByDecoratorTypeAndName(decoratorType: DecoratorType, name: string): Constructor | undefined {
|
|
74
|
+
return TypeDiscoverer._registeredTypes.get(decoratorType)?.get(name);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Clears all registered types.
|
|
79
|
+
* Primarily intended for test isolation.
|
|
80
|
+
*/
|
|
81
|
+
clear(): void {
|
|
82
|
+
TypeDiscoverer._registeredTypes.clear();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
private static async resolveWithGlobPackage(pattern: string | string[]): Promise<string[]> {
|
|
86
|
+
let globFunction: unknown;
|
|
87
|
+
try {
|
|
88
|
+
const globModule = await import('glob') as { glob?: unknown };
|
|
89
|
+
globFunction = globModule.glob;
|
|
90
|
+
} catch {
|
|
91
|
+
throw new Error('Could not load a compatible "glob" function for type discovery.');
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (typeof globFunction !== 'function') {
|
|
95
|
+
throw new Error('The "glob" module was loaded but does not export a function named "glob".');
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const files = await globFunction(pattern);
|
|
99
|
+
if (!Array.isArray(files) || files.some(file => typeof file !== 'string')) {
|
|
100
|
+
throw new Error('Type discovery glob resolution did not return an array of file paths.');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return files;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
private static async importDiscoveredFile(filePath: string): Promise<unknown> {
|
|
107
|
+
return await import(filePath);
|
|
108
|
+
}
|
|
109
|
+
}
|